commit 797924598f53f13cc7c178c178de937615c98cad Author: Felisp Date: Sun May 12 20:31:16 2024 +0200 Initall push of the 1.13.5 source diff --git a/.build.yml b/.build.yml new file mode 100644 index 0000000..8008801 --- /dev/null +++ b/.build.yml @@ -0,0 +1,41 @@ +image: debian/stretch +packages: + - git + - openjdk-8-jdk-headless + - wget + - tar + - unzip + - lib32stdc++6 + - lib32z1 + - file + - mesa-utils + - pciutils +environment: + ANDROID_COMPILE_SDK: "28" + ANDROID_BUILD_TOOLS: "28.0.3" + ANDROID_EMULATOR_SDK: "28" + GRADLE_USER_HOME: "/home/build/.gradle" + ANDROID_HOME: "/home/build/.androidhome" +sources: + - https://git.sr.ht/~cowboyprogrammer/feeder +triggers: + - action: email + condition: failure + to: jonas.srht@cowboyprogrammer.org +secrets: + - d9eb6ad0-7288-447a-954b-74e22ef4d054 + - c492e32e-551e-42e8-b8d5-c252fc20b625 + - 8a654fa4-6c85-480f-abee-d3b50d92d5f7 +tasks: + - setup: | + export PATH="${ANDROID_HOME}/emulator/:${ANDROID_HOME}/tools/bin/:${ANDROID_HOME}/tools/:${ANDROID_HOME}/platform-tools/:${PATH}" + env + cd feeder + echo 'org.gradle.jvmargs=-Xmx1g' >> gradle.properties + ci/before + - build: | + cd feeder + ./gradlew build + - deploy: | + cd feeder + ci/deploy_playstore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0f3b38f --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +*.iml +build +.gradle +.idea +local.properties +*.db +*.substvars +.pybuild +*.debhelper +captures +creds.json +report.xml +app/creds.b64 +keystore.b64 +devenv.local +keystore diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..c456522 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,57 @@ +stages: + - build + - validate_deploy + - deploy + +image: registry.gitlab.com/spacecowboy/feeder:builder + +variables: + GIT_SUBMODULE_STRATEGY: recursive + +cache: + key: "uber" + paths: + - .gradle/caches + - .gradle/wrapper + +lint: + stage: build + script: + - source devenv && ./gradlew :app:lint + needs: [] + +test: + stage: build + script: + - source devenv && ./gradlew test :jsonfeed-parser:check + needs: [] + +compile: + stage: build + script: + - source devenv && ./gradlew assembleDebug packageDebugAndroidTest -PdisablePreDex + needs: [] + artifacts: + paths: + - app/build/outputs/ + - build/logs/ + +validate_deployment: + stage: validate_deploy + script: + - source devenv && ./deploy_playstore.sh --dry-run + needs: [] + only: + - master + - tags + +deploy_playstore: + stage: deploy + script: + - source devenv && ./deploy_playstore.sh + needs: ["validate_deployment", "compile", "lint", "test"] + only: + - tags + environment: + name: Play + url: https://play.google.com/store/apps/details?id=com.nononsenseapps.feeder.play diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md new file mode 100644 index 0000000..b479266 --- /dev/null +++ b/.gitlab/issue_templates/Bug.md @@ -0,0 +1,14 @@ + + +## Description + + + +## URL to affected feed + + diff --git a/.gitlab/issue_templates/Feature.md b/.gitlab/issue_templates/Feature.md new file mode 100644 index 0000000..584684e --- /dev/null +++ b/.gitlab/issue_templates/Feature.md @@ -0,0 +1,19 @@ + + +## Description + + diff --git a/.gitlab/merge_request_templates/patch.md b/.gitlab/merge_request_templates/patch.md new file mode 100644 index 0000000..7428411 --- /dev/null +++ b/.gitlab/merge_request_templates/patch.md @@ -0,0 +1,19 @@ + diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..88f62f8 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "rome"] + path = rome + url = https://gitlab.com/spacecowboy/rome.git diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..f9ab62b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,1083 @@ +# 1.13.5 +Jonas Kalderstam (2): + * [b9c97797] Changed so Feeder no longer changes the URL of feeds to + canonical selflink + * [a01dafc7] Updated Swedish translation using Weblate + +Luna Jernberg (1): + * [850f411d] Updated Swedish translation using Weblate + +# 1.13.4 +Agnieszka C (2): + * [098172c1] Updated Polish translation using Weblate + * [d8455440] Updated Polish translation using Weblate + +Gediminas Murauskas (1): + * [8a3df04f] Translated using Weblate (Lithuanian) + +Jonas Kalderstam (1): + * [b164dece] Added missing title for language lt + +PPNplus (1): + * [18a39e63] Added Thai translation using Weblate + +Thien Bui (1): + * [3d4cd189] Updated Vietnamese translation using Weblate + +VfBFan (2): + * [2ae60832] Translated using Weblate (German) + * [368fa8ac] Updated German translation using Weblate + +Weblate (1): + * [35327cea] Added Slovenian translation using Weblate + +daywalk3r666 (2): + * [7a22bd67] Updated German translation using Weblate + * [1ba9b59f] Updated German translation using Weblate + +# 1.13.3 +Agnieszka C (1): + * [029f7af4] Updated Polish translation using Weblate + +Jonas Kalderstam (5): + * [199e8bf6] Improved formatting - should be less empty space and newlines + +Naveen (1): + * [eaae183b] Translated using Weblate (Tamil) + +Nikhil Kadiyan (1): + * [7bed6c84] Translated using Weblate (Hindi) + +# 1.13.2 +Drhaal (1): + * [c4545c2b] Use different colors when swiping to mark article as + read/unread + +J. Lavoie (1): + * [9d750135] Updated German translation using Weblate + +Jonas Kalderstam (8): + * [cadaef03] Raised minimum supported version of Android to M (6.0 - + API23) + * [df11985f] Added support for TLSv1.3 on older versions of Android + * [40549eea] Update README.md with ko-fi link + +Naveen (1): + * [b2422d25] Added Tamil translation using Weblate + +gutierri (1): + * [7426f9d0] Updated Portuguese (Brazil) translation using Weblate + +# 1.13.1 +Axus Wizix (1): + * [2f4d770f] Updated Russian translation using Weblate + +Belmar Begić (1): + * [c8af81d8] Updated Bosnian translation using Weblate + +Jonas Kalderstam (4): + * [533e92d4] Specified the region of bare Portuguese to Portugal + * [73e6cddb] Translated using Weblate (Romanian) + * [2d173196] Fixed dc:creator not showing up as author in RSS feeds + * [0a2452c5] Updated Czech translation using Weblate + +Simona Iacob (1): + * [ec364392] Updated Romanian translation using Weblate + +bruh (1): + * [8652f087] Translated using Weblate (Vietnamese) + +zmni (1): + * [2b3e17bb] Updated Indonesian translation using Weblate + +# 1.13.0 +Drhaal (1): + * [64512d3a] Added option to set article reader on a per feed basis + +El Pirujo (1): + * [966376eb] Updated Spanish translation using Weblate + +Eric (1): + * [fd48664d] Updated Chinese (Simplified) translation using Weblate + +J. Lavoie (1): + * [4995ea75] Updated Italian translation using Weblate + +Oğuz Ersen (1): + * [add0ef71] Updated Turkish translation using Weblate + +Simona Iacob (1): + * [47baaad1] Added Romanian translation using Weblate + +VfBFan (1): + * [e03eabb2] Updated German translation using Weblate + +WaldiS (1): + * [a375332b] Updated Polish translation using Weblate + +phlostically (1): + * [0293dec5] Updated Esperanto translation using Weblate + +ssantos (1): + * [46890329] Translated using Weblate (Portuguese) + +zmni (1): + * [b351658f] Updated Indonesian translation using Weblate + +# 1.12.1 +Belmar Begić (1): + * [666f0e3c] Updated Bosnian translation using Weblate + +J. Lavoie (1): + * [cccbf8a7] Updated German translation using Weblate + +Jonas Kalderstam (1): + * [67f53ebc] Prevent fastlane from conflicting on releases + +Tomáš Tihlařík (1): + * [40adb64f] Updated czech strings + +VfBFan (1): + * [92e2a263] Updated German translation using Weblate + +cld4h (1): + * [95e8f6df] Translated using Weblate (Chinese (Simplified)) + +# 1.12.0 +El Pirujo (1): + * [ddf06c3a] Updated Spanish translation using Weblate + +Eric (1): + * [34e65ed7] Updated Chinese (Simplified) translation using Weblate + +Francesco Bonazzi (2): + * [6d51fd8c] Add support for reading feeds aloud with Android's + TextToSpeech engine + * [770ce381] moved text-to-speech code to model-view class + +Hierax Swiftwing (1): + * [c1e336fe] Translated using Weblate (Serbian) + +J. Lavoie (1): + * [d491cd62] Updated Italian translation using Weblate + +Jonas Kalderstam (5): + * [65a1d9b4] Handle dynamic shortcuts for deleted feeds + * [dccdfa02] Cleaned up TextToSpeech slightly + * [187d22de] Removed unused imports + * [af708e46] Updated Swedish translation using Weblate + * [f67bb187] Added esperanto to list of languages unsupported by play + store + +Nikita Epifanov (1): + * [e2ffcab3] Updated Russian translation using Weblate + +Oğuz Ersen (1): + * [01d03869] Updated Turkish translation using Weblate + +gnu-ewm (2): + * [1bb598ce] Updated Polish translation using Weblate + * [94b80f52] Updated Polish translation using Weblate + +phlostically (1): + * [a3302d9f] Updated Esperanto translation using Weblate + +vachan-maker (1): + * [8260c442] Updated Malayalam translation using Weblate + +zmni (1): + * [ddf53f41] Updated Indonesian translation using Weblate + +# 1.11.3 +Eric (1): + * [b5a50dfb] Updated Chinese (Simplified) translation using Weblate + +Jonas Kalderstam (9): + * [aa9ebbd3] Maybe fixed a nullpointer error + * [6023a40c] Fixed sporadic error while loading images + * [56b7c946] Fixed reader going blank after opening webview and going back + * [da0d2a9f] Updated view models with correct nullability + * [078a486c] Fixed additional fragment view lifecycle issues + +Nikita Epifanov (1): + * [d09adafe] Updated Russian translation using Weblate + +# 1.11.2 +Eric (1): + * [b5a50dfb] Updated Chinese (Simplified) translation using Weblate + +Jonas Kalderstam (5): + * [130137d3] Fixed database test + * [aa9ebbd3] Maybe fixed a nullpointer error + * [6023a40c] Fixed sporadic error while loading images + +Nikita Epifanov (1): + * [d09adafe] Updated Russian translation using Weblate + +# 1.11.1 +Jonas Kalderstam (2): + * [130137d3] Fixed database test + * [aa9ebbd3] Maybe fixed a nullpointer error + +Nikita Epifanov (1): + * [d09adafe] Updated Russian translation using Weblate + +# 1.11.0 +Allan Nordhøy (2): + * [4e05cb55] Updated Norwegian Bokmål translation using Weblate + +Eduardo (1): + * [7d23f022] Updated Portuguese (Brazil) translation using Weblate + +El Pirujo (2): + * [4af3761e] Updated Spanish translation using Weblate + +J. Lavoie (2): + * [65079f61] Updated Italian translation using Weblate + +Jakub Fabijan (1): + * [d49aa9e6] Updated Esperanto translation using Weblate + +Jonas Kalderstam (7): + * [074e85ac] Fixed links not opening after screen rotation + * [2bd413a7] Fixed a leaking service connection + * [72b26b59] Updated Japanese translation using Weblate + * [13b0b601] Added full text parsing option using Readability4J + * [e6a632d9] Updated Swedish translation using Weblate + +Oğuz Ersen (2): + * [e420ef80] Updated Turkish translation using Weblate + +Reza Almanda (1): + * [90cd9031] Updated Indonesian translation using Weblate + +Tomáš Tihlařík (1): + * [ab41bf6e] Update Czech strings.xml + +WaldiS (1): + * [b6ffe8bf] Updated Polish translation using Weblate + +zmni (1): + * [5d763077] Updated Indonesian translation using Weblate + +Ícar N. S (1): + * [d36e6d67] Updated Catalan translation using Weblate + +# 1.10.14 +Jonas Kalderstam (2): + * [3777ebfd] Added error reporting when trying to add a feed fails + +Meiru (1): + * [ab59bc7a] Updated Japanese translation using Weblate + +kak mi (1): + * [0215e61c] Updated Chinese (Simplified) translation using Weblate + +vachan-maker (1): + * [1221c6f3] Updated Malayalam translation using Weblate + +# 1.10.13 +Eduardo Rodrigues (1): + * [7d01b89f] Translated using Weblate (Portuguese (Brazil)) + +Jonas Kalderstam (3): + * [9f191f73] Implemented parallel load of images in Reader view + +Meiru (2): + * [a92e14d8] Updated Japanese translation using Weblate + * [607a0947] Translated using Weblate (Japanese) + +Reza Almanda (1): + * [253fdd6d] Translated using Weblate (Indonesian) + +daywalk3r666 (1): + * [017de69c] Translated using Weblate (German) + +vachan-maker (2): + * [c71b9210] Updated Malayalam translation using Weblate + * [9a5a8f2e] Updated Malayalam translation using Weblate + +zmni (1): + * [b59e249b] Update Indonesian translation + +Ícar N. S (1): + * [c67896b7] Updated Catalan translation using Weblate + +# 1.10.12 +Belmar Begić (1): + * [07443bf7] Updated Bosnian translation using Weblate + +Jakub Fabijan (1): + * [7b225d25] Updated Esperanto translation using Weblate + +Jonas Kalderstam (9): + * [365bd45c] Removed empty translations + +Reza Almanda (1): + * [b088b923] Updated Indonesian translation using Weblate + +# 1.10.11 +Allan Nordhøy (2): + * [c64b4a57] Updated Norwegian Bokmål translation using Weblate + * [853b7f0a] Translated using Weblate (Norwegian Bokmål) + +El Pirujo (1): + * [18a10d55] Translated using Weblate (Spanish) + +George (1): + * [f317a3ee] Translated using Weblate (Greek) + +J. Lavoie (1): + * [53b67002] Translated using Weblate (Italian) + +Jakub Fabijan (1): + * [a084f837] Added Esperanto translation using Weblate + +Jonas Kalderstam (15): + * [9e9c46f5] Replaced Crowdin widget with Weblate widget + * [f5739850] Added contribution notes in README + * [bc00fba3] Updated Russian translation using Weblate + * [80eca008] Updated Norwegian Bokmål translation using Weblate + * [fb557d58] Updated Malayalam translation using Weblate + +Nikita Epifanov (1): + * [eb3bbeff] Translated using Weblate (Russian) + +Oğuz Ersen (1): + * [eafe6fb8] Translated using Weblate (Turkish) + +Riku Viitanen (2): + * [78112ea3] Translated using Weblate (Finnish) + * [6ccbdaa3] Translated using Weblate (Finnish) + +WaldiS (1): + * [d3a99c11] Translated using Weblate (Polish) + +vachan-maker (1): + * [0abb9096] Updated Malayalam translation using Weblate + +Ícar N. S (1): + * [65b7bc99] Translated using Weblate (Catalan) + +# 1.10.10 +Space Cowboy (3): + * [b316df06] New translations from Crowdin + +# 1.10.9 +Jonas Kalderstam (3): + * [5ac2bc2c] Disabled minification due to crash on old Android + * [0add4d20] Added comments to some strings + +Space Cowboy (5): + * [7a715fa4] Updated translations from Crowdin + +# 1.10.8 +Jonas Kalderstam (2): + * [472dc314] Fixed reader going blank after opening a web view + +# 1.10.7 +Jonas Kalderstam (22): + * [27cd9114] Updated translations + * [5fa9116f] Enabled minification for play and release builds + +Muha Aliss (2): + * [45ac6e09] Turkish translation updated + * [387db7cd] Turkish translate checked and updated. + +mezysinc (4): + * [6dd67f76] description in ptbr + * [3de13944] full desc. ptbr + * [4044ee48] Delete .gitkeep + * [589ac044] updated strings ptbr + +# 1.10.6 +Jonas Kalderstam (5): + * [06f7fb81] Added a scrollbar to the Reader + * [05078389] Fixed atom feed html content being unescaped twice + * [e8c5470d] Fixed some additional html escaping cases + +# 1.10.5 +Armand Lynch (2): + * [08b6aa7f] Adds 'mark above as read' option + * [14c07701] Remove code duplication + +Enrico Lovisotto (1): + * [487a250c] Improved Italian translation and added missing items + +Jonas Kalderstam (5): + * [a622d655] Added minification to the app to make it faster to install + * [3ebd53c3] Fixed scroll position being reset in Reader + +Khar Khamal (1): + * [6663bdf2] Update Spanish strings.xml to add one new string and correct + other string + +# 1.10.4 +Jonas Kalderstam (1): + * [51ef23e6] App is now compiled against Android 11 (SDK-30, R) + +# 1.10.3 +Jonas Kalderstam (1): + * [4827e41c] Fixed crash when base64 encoded images were present in feeds + +# 1.10.2 +Fëdor T (1): + * [e9787dee] Updated Russian translation + +Muha Aliss (1): + * [2885b218] Turkish translations added + +# 1.10.1 +Jonas Kalderstam (2): + * [b9b3bd76] Reworded tooltip to reduce confusion + * [a4d8dd3b] Increased synchronization speed + +Khar Khamal (2): + * [756cb108] Update strings.xml for Spanish language + * [ffff95dd] Update strings.xml for Spanish language + +aevw (1): + * [1fd20db4] Updated Portuguese translation + +linsui (1): + * [19b64a13] Update Simplified Chinese translation + +# 1.10.0 +Jonas Kalderstam (5): + * [3a3d3689] Added preference for battery optimization + * [0d17d374] Fixed custom tab not showing as default option for opening + links + * [c8b57882] Added option to preload links in custom tab + +Khar Khamal (1): + * [0fdac915] Update Spanish strings.xml for Custom Tab + +Sudeep Duggal (1): + * [2c211b53] Feeder now opts out of sending usage metrics of WebView to + Google + +Tomáš Tihlařík (1): + * [1709c2fd] Update Czech strings.xml for Custom Tab & Battery options + +emersion (1): + * [e0a9d261] Added support for custom tabs + +linsui (1): + * [751f8665] Update Simplified Chinese translation + +zmni (2): + * [8be9508a] Update Indonesian translation + * [8bc4f4e6] Update Indonesian translation + +# 1.9.9 +Jonas Kalderstam (4): + * [b4827aaa] Fixed text formatting not updating with System night mode + +Khar Khamal (1): + * [37646e21] Fixed typo in Spanish translation + +Tomáš Tihlařík (1): + * [b2cb4a11] Updated Czech translation + +aevw (1): + * [a2ac9334] Added Portuguese (Brazil) translation + +# 1.9.8 +Jonas Kalderstam (2): + * [e3245b9c] Added 'mark as unread' to the webview menu + +Khar Khamal (1): + * [d8b09639] Updated Spanish translation + +Michael Hynes (1): + * [7d1e419b] Added an option to disable floating action button. + +Sam Clie (1): + * [bdedadd5] Fixed typo in Chinese translation + +# 1.9.7 +Tomáš Tihlařík (2): + * [251ffe8d] Updated Czech translation + * [8d92b9ac] Updated Czech translation + +linsui (1): + * [a7b65165] Updated Simplified Chinese Translation + +# 1.9.6 +Jonas Kalderstam (2): + * [47bc0a5c] Fixed possible crash in case you pressed two feed items at + once + +Khar Khamal (2): + * [8aa6649e] Updated Spanish translation + * [2b9180c3] Updated Spanish translation + +Ramzan Sheikh (5): + * [fd7570e7] Modified FeedItemsViewModel to use LiveData for sorting + preference + * [d130f0d0] Added reverse sort option to settings menu + * [cf70edfe] Added sorting option utilities to PrefUtils.kt + * [61128e4f] Modified FeedItemDao and FeedItemsViewModel to allow listing + feeds in reverse order + * [6f002883] Fixed current feed order not changing when sorting setting + changed + +linsui (1): + * [f9fdb071] Updated Simplified Chinese translation + +zmni (1): + * [4b67ce48] Updated Indonesian translation + +# 1.9.5 +Philipp Hutterer (1): + * [9222bf71] Bugfix: decode encoded credentials before request + +zmni (1): + * [60007125] Update Indonesian translation + +# 1.9.4 +Jonas Kalderstam (9): + * [6003e84c] Fixed monospacing of pre-tags + * [fd87f04b] Removed html formatting from titles + * [6f6ed5ca] Added share option for feeds + * [bfa1a293] Fixed parsing some feeds with bad server responses + +# 1.9.3 +Jonas Kalderstam (4): + * [614597d] Fixed sort order to be the minimum of syncing time and publish date + * [5596669] Updated share menu to use modern chooser + * [c59b2f5] Fixed items with no links showing "show in browser" buttons + +Tomáš Tihlařík (1): + * [ada5da8] Updated Czech translation + +# 1.9.2 +Jonas Kalderstam (2): + * [d7eeb89] Fixed incorrect titles shown in delete dialog + +Karol Kosek (1): + * [1d64c7f] Updated Polish translation + +Khar Khamal (1): + * [3a3df99] Updated Spanish translation + +Vadik Sirekanyan (1): + * [85fc6d1] Added option for hiding thumbnails + +# 1.9.1 + * [72f6d12] Disabled R9 minification to avoid crash on Android Kitkat + +# 1.9.0 +Jonas Kalderstam (3): + * [ae1338e] Added additional accessibility strings + * [25e9602] Added dialog for deleting multiple feeds + * [da3089e] Changed sort order to include synchronization time + +Khar Khamal (1): + * [ff491f1] Updated Spanish translations + +# 1.8.30 + * [49e7f76] Replaced day-night theme with manual control over themes + * [d54ccbc] Fixed scrollbar ghosting + * [3614f8a] Added another theme which follows system night mode + * [4022f62] Save navigation state and restore it + * [d72d7fa] Increased speed of app and implemented system-follow theme + * [7df3dc2] Removed conscrypt + * [e9a6dc3] Updated versions of libraries used + +# 1.8.29 +* Added a UserAgent to fix sites blocking requests + See !214 #248 + +# 1.8.28 + +* Fixed a crash when clicking on notification + +# 1.8.27 + +Minor bug fixes and tweaks. + +# 1.8.26 +* Stores feed content primarily in files instead of database + See !209 #227 +* More feeds should now have thumbnails displayed + See !210 #231 + +# 1.8.24 +* Fixed alignment issue in RTL layout + See !208 #224 +* Update Italian (it) translation + Thanks to Emanuele Petriglia + See !207 + +# 1.8.23 +* List should once again remember where you were when you come back + See !206 #219 +* Spanish translation + Thanks to Khar Khamal + See !205 + +# 1.8.22 +* Update Spanish translations + Thanks to Khar Khamal + See !203 + +# 1.8.21 +* Long press items to open a context menu with various actions + See !202 +* List will now auto scroll to top when new items are downloaded if list is already at the top + See !202 + +# 1.8.20 +* Changed 'Report bug' to open the Gitlab issues page instead of an email + See !201 +* Updated Czech translation + Thanks to Tomáš Tihlařík + See !200 !199 + +# 1.8.19 +* Added czech translation + Thanks to Tomas + See !198 +* Added option to toggle Javascript in Webview + See !197 + +# 1.8.18 +* Indonesian translation + Thanks to zmni + See !196 +* Fixed back button handling in web view + See !195 + +# 1.8.17 +* Made feed title clickable in Reader + See !194 #205 +* Fixed crash when notification contained items to be marked as read + See !193 #204 + +# 1.8.16 +* Fixed a null pointer crash if bare
  • tag was encountered + See !192 + +# 1.8.15 +* Improved webview: cookie dialogs should no longer be off screen + See !190 + +# 1.8.14 +* Fixed crash on tablets + See !189 #191 +* Fixed handling of URLs with only user (such as http://user@...) + See !188 + +# 1.8.13 +* Fixed edit dialog starting with the wrong theme + See !187 +* Fixed spelling error in Spanish + See !185 +* Fixed webview resetting night mode + See !185 #172 +* Migrated to single activity; app should feel faster + See !185 +* Fixed thumbnails not showing in Engadget feed + See !183 #186 + +# 1.8.12 +* Fixed webview being obscured by the action bar + See !182 #179 #173 +* Added Spanish translation + Thanks to Khar Khamal + See !180 + +# 1.8.11 + +Removed "mark as read when scrolling". It had a bug when toggling display of read items, and it was very "surprising" to some users. + +Will be back when bug free and off by default. + +# 1.8.10 +* Update Simplified Chinese Translation + Thanks to linsui + See !179 +* Added option to mark items as read as you scroll (defaults to true) + +# 1.8.9 +* Increased http timeouts to 30 seconds from 5 seconds + See !175 +* Changed so time of publication (and not just date) is shown in Article + See !174 #61 + +# 1.8.8 +* Changed plaintext conversion to stop formatting as markdown + See !172 +* Fixed not being able to parse dates in certain feeds + See !170 +* Fixed so feeds without publication dates gets some when synced + See !169 #178 + +# 1.8.7 +* Added support for RTL + Some devices might still not render perfectly though + See !165 #176 +* Fixed youtube previews not showing + See !168 +* Changed plaintext rendering to not include '[image alt text]' in text + See !167 +* Changed so that notification actions do not open the app after pressing Back + See !166 + +# 1.8.6 +* Fixed notification "Open in"-actions not working + See !164 + +# 1.8.5 +* Fixed parsing of feeds without unique guids or links (NixOS) + See !162 +* Changed so feed search finds alternate links in body of documents + See !162 +* Fixed feed results not showing error message on *second* search + See !162 +* Feeder can now be used to *open* links, not just accept *shared* ones + See !161 #174 +* Fixed notifications so that all actions will mark item as read also + See !160 +* Fixed app losing state if in reader and switching to another app and back again + See !159 +* Fixed action bar overlaying web view + See !157 #173 +* Fixed custom feed titles not being displayed + See !154 #168 #167 +* Updated Simplified Chinese Translation + Thanks to linsui + See !153 +* Fixed feeds with no link not working + See !150 #165 +* Fixed some parsing errors on feeds with slash-comments + See #166 + +# 1.8.4 +* Fixed long blog title overlapping date + See !149 #164 +* Fixed crash when loading certain videos + See !148 #163 +* Fixed opening in browser from notification not marking as read or dismissing + See !146 #155 + +# 1.8.3 +* Tweaked colors in themes + See !144 #159 +* Fixed crash when loading bad images +* Fixed scrolling position getting reset during sync in Reader + See !142 #160 +* Fixed crash when loading bad images + See !140 +* Fixed theme-specific place holder image for articles + See !139 + +# 1.8.2 +* Fixed crash when image could not be loaded on pre Lollipop + See !138 #156 +* Added menu item for sending a bug report via email + See !137 + +# 1.8.1 +* Fixed crash when clearing notifications + See !136 #153 +* Update Simplified Chinese + Thanks to linsui + See !134 +* Fixed screenshots in README + Thanks to DJCrashdummy + See !135 + +# 1.8.0 +* Removed option to sync on Hotspots + Fixed automatic synchronization never running on mobile data + Added option to sync when app is opened + Improved caching so less data traffic will be used during sync + Improved sync speed by only parsing feeds with new content + See !131 +* Improved error handling in Add Feed dialog + See !132 +* Simplified Chinese Translation + Thanks to linsui + See !128 + +# 1.7.1 +* Fixed possible crash when marking all items as read + See !127 #145 +* Fixed text for show unread toggle + See !125 + +# 1.7.0 +* Moved notification toggle to options menu + See !123 #125 #66 +* Added a light theme + See !122 #38 +* Fixed size of FAB icon on high density screens + See !119 +* Fixed crash for certain feeds with slash comment meta-data + See !117 #140 +* Added additional sync frequency options (15min and 30min) + Also removed the need for an account and related system permission + See #49 +* Added menu option in reader to mark item as unread + See !111 #134 + +# 1.6.8 +* Fixed crash when supplying bad URL to add feed dialog + See !110 #137 +* Fix typo in German translation + Thanks to Swen Krüger + See !109 + +# 1.6.7 +* Fixed crash on older Android versions when opening a web view + See !108 +* Fixed update of views when pressing 'mark all as read' button + See !107 +* Improved network caching + See !105 +* German translations updated and added + Thanks to Chris + See !106 + +# 1.6.6 + +- Fixed a crash in Reader + +# 1.6.5 +* Added support for username/password in URLs + See !100 #128 +* Fixed https compatibility on older versions of Android + See !102 #113 +* Fixed crash for HorribleSubs.info + See !103 #131 + +# 1.6.4 +* Added paging to lists + See !99 +* Added option for maximum number of items per feed + See !98 #126 + +# 1.6.3 +* Now all links are explicitly opened in new browser tabs + See !97 #117 +* Fixed buggy back stack + See !96 + +# 1.6.2 +* Block cookies from webview + See !95 + +# 1.6.1 +* Fixed parsing of some OPML formats + See !94 #111 + +# 1.6.0 +* Added option of how to open articles. + One of Reader, WebView or Browser. + See !93 #39 #102 +* Fixed resolution of relative links + See !92 #101 + +# 1.5.0 +* Fixed notifications + See !91 #10 #88 +* Changed to allow installation on internal storage + This has always been implied by the limitations of Android but now + it is explicit to avoid issues for people who try to move it to + external storage. + See !78 #79 +* Added special handling for finding Youtube feeds + See !90 #100 +* Fixed HTML encoded titles not being decoded in list + See !89 #91 +* Changed so more feeds display thumbnail images + See !88 #96 +* Fixed various crashes + +# 1.4.3 +* Fixed crash for missing video urls + See !84 #90 +* Improved UI responsiveness but throttling database loaders + See !81 +* Fixed existing tag not being shown in edit feed dialog + See !80 #82 +* Improved rendering of
     tags  
    +    See !77
    +*   Added newline between table columns  
    +    See !77
    +*   Handle ENTER press in add feed dialog  
    +    See !77
    +
    +# 1.4.2
    +*   Stopped rendering script tags
    +    See !75 #85
    +
    +# 1.4.1
    +*   Fixed some translation issues which could cause crashes  
    +    See !74
    +*   Added French translation  
    +    Thanks to Jef Roelandt  
    +    See !73
    +*   Added Polish translation  
    +    Thanks to Grzegorz Szymaszek  
    +    See !72
    +
    +# 1.4.0
    +
    +This version changes the database tables slighly which means your
    +read-status will be gone. Apologies for the inconvenience.
    +
    +*   Feeds are now sorted case-insensitively  
    +    See !71 #77
    +*   Feeds are now displayed using correct encoding  
    +    See !68 #76
    +*   Articles are parsed to find cover images  
    +    See !67
    +*   Relative links are now resolved  
    +    See !67
    +*   Adding feeds will now parse the page in case it's not a feed and try
    +    to find alternate links to feeds. All results are displayed in the
    +    dialog.  
    +    See !67
    +*   Maintain scroll position in articles when switching between apps  
    +    See !66 #71
    +*   Images with relative URLs are now displayed  
    +    See !66 #37 #54
    +*   Added app shortcuts for the latest 3 feeds  
    +    See !65 #60
    +*   Added option to sync once per day  
    +    See !64
    +*   New icons  
    +    See !63
    +*   Added support for JSONFeed  
    +    See !41
    +
    +# 1.3.15
    +*   Fixed an installation crash on Android 5  
    +    See !62 #69
    +
    +# 1.3.14
    +*   Fixed loss of scroll position on redraw in left drawer menu  
    +    See !61 #57
    +
    +# 1.3.13
    +
    +*   Add new feed now finds feed links in web pages
    +
    +    Makes it possible to input a url to a site, such as
    +    `cowboyprogrammer.org`, when adding a new feed.
    +
    +    Previously, the direct address to the RSS/Atom feed was required
    +    (`cowboyprogrammer.org/atom.xml`). This was not ideal because
    +
    +    - not all sites advertise a link to their feeds
    +
    +    - the location of the feed is not standardized so it's not easily
    +      guessable
    +
    +    - viewing the source of a web site to find the alternate link is
    +      very hard to do on mobile
    +
    +    Now, the site you enter is parsed and if it contains alternate
    +    links to feeds, one of those links are loaded parsed
    +    instead. Currently RSS and Atom feeds are identified and Atom is
    +    preferred over RSS.
    +
    +    See !60
    +
    +*   Target Android 26  
    +    See !60
    +
    +# 1.3.12
    +*   Changed so that an empty feed can be dragged to be refreshed  
    +    See !57 #40
    +
    +# 1.3.11
    +*   Added Italian translation  
    +    Thanks to Marco  
    +    See !56
    +
    +# 1.3.10
    +*   Fixed crash when toggling 'Notify for new items' on All Feeds  
    +    See !55 #56
    +
    +# 1.3.9
    +*   Fixed visibility of notify icon on certain devices  
    +    See !53 #55
    +
    +# 1.3.8
    +*   Fixed crash on older versions of Android  
    +    See !51 #53
    +
    +# 1.3.7
    +*   Added a show all option in the sidebar  
    +    See !50 #50
    +
    +# 1.3.6
    +*   Fixed crash when importing/exporting OPML on Android18  
    +    See !49 #51
    +*   Updated russian translation  
    +    Thanks to Anton Shestakov  
    +    See !48
    +
    +# 1.3.5
    +*   Add tests for contributed OMPL files  
    +    See !47 #36
    +*   Move OMPL test to correct package  
    +    See !47
    +*   Handle case when cursor is null  
    +    See !47
    +*   Changed to 'Updated feeds' instead of 'New RSS-items'  
    +    See !46
    +*   Fixed OPML importing  
    +    See !46
    +*   Fixed OPML exporting  
    +    See !46
    +*   Improved performance of list by not loading full text of items  
    +    See !46 #48
    +*   Fixed crash if item had too much text  
    +    See !46 #48
    +*   Reduced size of some text to contain german translation  
    +    See !45 #46
    +*   New german translations courtesy of @dehnhard  
    +    See !45
    +
    +# 1.3.4
    +*   Removed translations of dummy strings  
    +    See !43 #44
    +*   Added russian translation  
    +    Thanks to Anton Shestakov  
    +    See !42
    +*   Fixed sorting of feeds to be alphabetical  
    +    See !38 #41
    +
    +# 1.3.3
    +*   Update feed items if they exist instead of effectively ignoring them  
    +    See !36 #33
    +*   Fallback to feed author if entry author is empty  
    +    See !36 #31
    +*   Update UI after each feed is synced instead of all at the end  
    +    See !36
    +*   Don't crash when column doesn't exist  
    +    See !35
    +*   Catch no such activity exceptions  
    +    See !34 #35
    +*   Don't print style tags in articles  
    +    See !33 #32
    +*   Don't print so many newlines in preview snippets  
    +    See !33
    +*   Don't render markdown links in plaintext snippets  
    +    See !32 #30
    +
    +# 1.3.2
    +*   Fix OPML export  
    +    See !27
    +*   Add missing permission for SDK23 and below  
    +    See !30 #28
    +*   Make read story title even more readable
    +
    +# 1.3.1
    +*   Make read story title even more readable  
    +    See !28
    diff --git a/LICENSE b/LICENSE
    new file mode 100644
    index 0000000..9cecc1d
    --- /dev/null
    +++ b/LICENSE
    @@ -0,0 +1,674 @@
    +                    GNU GENERAL PUBLIC LICENSE
    +                       Version 3, 29 June 2007
    +
    + Copyright (C) 2007 Free Software Foundation, Inc. 
    + Everyone is permitted to copy and distribute verbatim copies
    + of this license document, but changing it is not allowed.
    +
    +                            Preamble
    +
    +  The GNU General Public License is a free, copyleft license for
    +software and other kinds of works.
    +
    +  The licenses for most software and other practical works are designed
    +to take away your freedom to share and change the works.  By contrast,
    +the GNU General Public License is intended to guarantee your freedom to
    +share and change all versions of a program--to make sure it remains free
    +software for all its users.  We, the Free Software Foundation, use the
    +GNU General Public License for most of our software; it applies also to
    +any other work released this way by its authors.  You can apply it to
    +your programs, too.
    +
    +  When we speak of free software, we are referring to freedom, not
    +price.  Our General Public Licenses are designed to make sure that you
    +have the freedom to distribute copies of free software (and charge for
    +them if you wish), that you receive source code or can get it if you
    +want it, that you can change the software or use pieces of it in new
    +free programs, and that you know you can do these things.
    +
    +  To protect your rights, we need to prevent others from denying you
    +these rights or asking you to surrender the rights.  Therefore, you have
    +certain responsibilities if you distribute copies of the software, or if
    +you modify it: responsibilities to respect the freedom of others.
    +
    +  For example, if you distribute copies of such a program, whether
    +gratis or for a fee, you must pass on to the recipients the same
    +freedoms that you received.  You must make sure that they, too, receive
    +or can get the source code.  And you must show them these terms so they
    +know their rights.
    +
    +  Developers that use the GNU GPL protect your rights with two steps:
    +(1) assert copyright on the software, and (2) offer you this License
    +giving you legal permission to copy, distribute and/or modify it.
    +
    +  For the developers' and authors' protection, the GPL clearly explains
    +that there is no warranty for this free software.  For both users' and
    +authors' sake, the GPL requires that modified versions be marked as
    +changed, so that their problems will not be attributed erroneously to
    +authors of previous versions.
    +
    +  Some devices are designed to deny users access to install or run
    +modified versions of the software inside them, although the manufacturer
    +can do so.  This is fundamentally incompatible with the aim of
    +protecting users' freedom to change the software.  The systematic
    +pattern of such abuse occurs in the area of products for individuals to
    +use, which is precisely where it is most unacceptable.  Therefore, we
    +have designed this version of the GPL to prohibit the practice for those
    +products.  If such problems arise substantially in other domains, we
    +stand ready to extend this provision to those domains in future versions
    +of the GPL, as needed to protect the freedom of users.
    +
    +  Finally, every program is threatened constantly by software patents.
    +States should not allow patents to restrict development and use of
    +software on general-purpose computers, but in those that do, we wish to
    +avoid the special danger that patents applied to a free program could
    +make it effectively proprietary.  To prevent this, the GPL assures that
    +patents cannot be used to render the program non-free.
    +
    +  The precise terms and conditions for copying, distribution and
    +modification follow.
    +
    +                       TERMS AND CONDITIONS
    +
    +  0. Definitions.
    +
    +  "This License" refers to version 3 of the GNU General Public License.
    +
    +  "Copyright" also means copyright-like laws that apply to other kinds of
    +works, such as semiconductor masks.
    +
    +  "The Program" refers to any copyrightable work licensed under this
    +License.  Each licensee is addressed as "you".  "Licensees" and
    +"recipients" may be individuals or organizations.
    +
    +  To "modify" a work means to copy from or adapt all or part of the work
    +in a fashion requiring copyright permission, other than the making of an
    +exact copy.  The resulting work is called a "modified version" of the
    +earlier work or a work "based on" the earlier work.
    +
    +  A "covered work" means either the unmodified Program or a work based
    +on the Program.
    +
    +  To "propagate" a work means to do anything with it that, without
    +permission, would make you directly or secondarily liable for
    +infringement under applicable copyright law, except executing it on a
    +computer or modifying a private copy.  Propagation includes copying,
    +distribution (with or without modification), making available to the
    +public, and in some countries other activities as well.
    +
    +  To "convey" a work means any kind of propagation that enables other
    +parties to make or receive copies.  Mere interaction with a user through
    +a computer network, with no transfer of a copy, is not conveying.
    +
    +  An interactive user interface displays "Appropriate Legal Notices"
    +to the extent that it includes a convenient and prominently visible
    +feature that (1) displays an appropriate copyright notice, and (2)
    +tells the user that there is no warranty for the work (except to the
    +extent that warranties are provided), that licensees may convey the
    +work under this License, and how to view a copy of this License.  If
    +the interface presents a list of user commands or options, such as a
    +menu, a prominent item in the list meets this criterion.
    +
    +  1. Source Code.
    +
    +  The "source code" for a work means the preferred form of the work
    +for making modifications to it.  "Object code" means any non-source
    +form of a work.
    +
    +  A "Standard Interface" means an interface that either is an official
    +standard defined by a recognized standards body, or, in the case of
    +interfaces specified for a particular programming language, one that
    +is widely used among developers working in that language.
    +
    +  The "System Libraries" of an executable work include anything, other
    +than the work as a whole, that (a) is included in the normal form of
    +packaging a Major Component, but which is not part of that Major
    +Component, and (b) serves only to enable use of the work with that
    +Major Component, or to implement a Standard Interface for which an
    +implementation is available to the public in source code form.  A
    +"Major Component", in this context, means a major essential component
    +(kernel, window system, and so on) of the specific operating system
    +(if any) on which the executable work runs, or a compiler used to
    +produce the work, or an object code interpreter used to run it.
    +
    +  The "Corresponding Source" for a work in object code form means all
    +the source code needed to generate, install, and (for an executable
    +work) run the object code and to modify the work, including scripts to
    +control those activities.  However, it does not include the work's
    +System Libraries, or general-purpose tools or generally available free
    +programs which are used unmodified in performing those activities but
    +which are not part of the work.  For example, Corresponding Source
    +includes interface definition files associated with source files for
    +the work, and the source code for shared libraries and dynamically
    +linked subprograms that the work is specifically designed to require,
    +such as by intimate data communication or control flow between those
    +subprograms and other parts of the work.
    +
    +  The Corresponding Source need not include anything that users
    +can regenerate automatically from other parts of the Corresponding
    +Source.
    +
    +  The Corresponding Source for a work in source code form is that
    +same work.
    +
    +  2. Basic Permissions.
    +
    +  All rights granted under this License are granted for the term of
    +copyright on the Program, and are irrevocable provided the stated
    +conditions are met.  This License explicitly affirms your unlimited
    +permission to run the unmodified Program.  The output from running a
    +covered work is covered by this License only if the output, given its
    +content, constitutes a covered work.  This License acknowledges your
    +rights of fair use or other equivalent, as provided by copyright law.
    +
    +  You may make, run and propagate covered works that you do not
    +convey, without conditions so long as your license otherwise remains
    +in force.  You may convey covered works to others for the sole purpose
    +of having them make modifications exclusively for you, or provide you
    +with facilities for running those works, provided that you comply with
    +the terms of this License in conveying all material for which you do
    +not control copyright.  Those thus making or running the covered works
    +for you must do so exclusively on your behalf, under your direction
    +and control, on terms that prohibit them from making any copies of
    +your copyrighted material outside their relationship with you.
    +
    +  Conveying under any other circumstances is permitted solely under
    +the conditions stated below.  Sublicensing is not allowed; section 10
    +makes it unnecessary.
    +
    +  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
    +
    +  No covered work shall be deemed part of an effective technological
    +measure under any applicable law fulfilling obligations under article
    +11 of the WIPO copyright treaty adopted on 20 December 1996, or
    +similar laws prohibiting or restricting circumvention of such
    +measures.
    +
    +  When you convey a covered work, you waive any legal power to forbid
    +circumvention of technological measures to the extent such circumvention
    +is effected by exercising rights under this License with respect to
    +the covered work, and you disclaim any intention to limit operation or
    +modification of the work as a means of enforcing, against the work's
    +users, your or third parties' legal rights to forbid circumvention of
    +technological measures.
    +
    +  4. Conveying Verbatim Copies.
    +
    +  You may convey verbatim copies of the Program's source code as you
    +receive it, in any medium, provided that you conspicuously and
    +appropriately publish on each copy an appropriate copyright notice;
    +keep intact all notices stating that this License and any
    +non-permissive terms added in accord with section 7 apply to the code;
    +keep intact all notices of the absence of any warranty; and give all
    +recipients a copy of this License along with the Program.
    +
    +  You may charge any price or no price for each copy that you convey,
    +and you may offer support or warranty protection for a fee.
    +
    +  5. Conveying Modified Source Versions.
    +
    +  You may convey a work based on the Program, or the modifications to
    +produce it from the Program, in the form of source code under the
    +terms of section 4, provided that you also meet all of these conditions:
    +
    +    a) The work must carry prominent notices stating that you modified
    +    it, and giving a relevant date.
    +
    +    b) The work must carry prominent notices stating that it is
    +    released under this License and any conditions added under section
    +    7.  This requirement modifies the requirement in section 4 to
    +    "keep intact all notices".
    +
    +    c) You must license the entire work, as a whole, under this
    +    License to anyone who comes into possession of a copy.  This
    +    License will therefore apply, along with any applicable section 7
    +    additional terms, to the whole of the work, and all its parts,
    +    regardless of how they are packaged.  This License gives no
    +    permission to license the work in any other way, but it does not
    +    invalidate such permission if you have separately received it.
    +
    +    d) If the work has interactive user interfaces, each must display
    +    Appropriate Legal Notices; however, if the Program has interactive
    +    interfaces that do not display Appropriate Legal Notices, your
    +    work need not make them do so.
    +
    +  A compilation of a covered work with other separate and independent
    +works, which are not by their nature extensions of the covered work,
    +and which are not combined with it such as to form a larger program,
    +in or on a volume of a storage or distribution medium, is called an
    +"aggregate" if the compilation and its resulting copyright are not
    +used to limit the access or legal rights of the compilation's users
    +beyond what the individual works permit.  Inclusion of a covered work
    +in an aggregate does not cause this License to apply to the other
    +parts of the aggregate.
    +
    +  6. Conveying Non-Source Forms.
    +
    +  You may convey a covered work in object code form under the terms
    +of sections 4 and 5, provided that you also convey the
    +machine-readable Corresponding Source under the terms of this License,
    +in one of these ways:
    +
    +    a) Convey the object code in, or embodied in, a physical product
    +    (including a physical distribution medium), accompanied by the
    +    Corresponding Source fixed on a durable physical medium
    +    customarily used for software interchange.
    +
    +    b) Convey the object code in, or embodied in, a physical product
    +    (including a physical distribution medium), accompanied by a
    +    written offer, valid for at least three years and valid for as
    +    long as you offer spare parts or customer support for that product
    +    model, to give anyone who possesses the object code either (1) a
    +    copy of the Corresponding Source for all the software in the
    +    product that is covered by this License, on a durable physical
    +    medium customarily used for software interchange, for a price no
    +    more than your reasonable cost of physically performing this
    +    conveying of source, or (2) access to copy the
    +    Corresponding Source from a network server at no charge.
    +
    +    c) Convey individual copies of the object code with a copy of the
    +    written offer to provide the Corresponding Source.  This
    +    alternative is allowed only occasionally and noncommercially, and
    +    only if you received the object code with such an offer, in accord
    +    with subsection 6b.
    +
    +    d) Convey the object code by offering access from a designated
    +    place (gratis or for a charge), and offer equivalent access to the
    +    Corresponding Source in the same way through the same place at no
    +    further charge.  You need not require recipients to copy the
    +    Corresponding Source along with the object code.  If the place to
    +    copy the object code is a network server, the Corresponding Source
    +    may be on a different server (operated by you or a third party)
    +    that supports equivalent copying facilities, provided you maintain
    +    clear directions next to the object code saying where to find the
    +    Corresponding Source.  Regardless of what server hosts the
    +    Corresponding Source, you remain obligated to ensure that it is
    +    available for as long as needed to satisfy these requirements.
    +
    +    e) Convey the object code using peer-to-peer transmission, provided
    +    you inform other peers where the object code and Corresponding
    +    Source of the work are being offered to the general public at no
    +    charge under subsection 6d.
    +
    +  A separable portion of the object code, whose source code is excluded
    +from the Corresponding Source as a System Library, need not be
    +included in conveying the object code work.
    +
    +  A "User Product" is either (1) a "consumer product", which means any
    +tangible personal property which is normally used for personal, family,
    +or household purposes, or (2) anything designed or sold for incorporation
    +into a dwelling.  In determining whether a product is a consumer product,
    +doubtful cases shall be resolved in favor of coverage.  For a particular
    +product received by a particular user, "normally used" refers to a
    +typical or common use of that class of product, regardless of the status
    +of the particular user or of the way in which the particular user
    +actually uses, or expects or is expected to use, the product.  A product
    +is a consumer product regardless of whether the product has substantial
    +commercial, industrial or non-consumer uses, unless such uses represent
    +the only significant mode of use of the product.
    +
    +  "Installation Information" for a User Product means any methods,
    +procedures, authorization keys, or other information required to install
    +and execute modified versions of a covered work in that User Product from
    +a modified version of its Corresponding Source.  The information must
    +suffice to ensure that the continued functioning of the modified object
    +code is in no case prevented or interfered with solely because
    +modification has been made.
    +
    +  If you convey an object code work under this section in, or with, or
    +specifically for use in, a User Product, and the conveying occurs as
    +part of a transaction in which the right of possession and use of the
    +User Product is transferred to the recipient in perpetuity or for a
    +fixed term (regardless of how the transaction is characterized), the
    +Corresponding Source conveyed under this section must be accompanied
    +by the Installation Information.  But this requirement does not apply
    +if neither you nor any third party retains the ability to install
    +modified object code on the User Product (for example, the work has
    +been installed in ROM).
    +
    +  The requirement to provide Installation Information does not include a
    +requirement to continue to provide support service, warranty, or updates
    +for a work that has been modified or installed by the recipient, or for
    +the User Product in which it has been modified or installed.  Access to a
    +network may be denied when the modification itself materially and
    +adversely affects the operation of the network or violates the rules and
    +protocols for communication across the network.
    +
    +  Corresponding Source conveyed, and Installation Information provided,
    +in accord with this section must be in a format that is publicly
    +documented (and with an implementation available to the public in
    +source code form), and must require no special password or key for
    +unpacking, reading or copying.
    +
    +  7. Additional Terms.
    +
    +  "Additional permissions" are terms that supplement the terms of this
    +License by making exceptions from one or more of its conditions.
    +Additional permissions that are applicable to the entire Program shall
    +be treated as though they were included in this License, to the extent
    +that they are valid under applicable law.  If additional permissions
    +apply only to part of the Program, that part may be used separately
    +under those permissions, but the entire Program remains governed by
    +this License without regard to the additional permissions.
    +
    +  When you convey a copy of a covered work, you may at your option
    +remove any additional permissions from that copy, or from any part of
    +it.  (Additional permissions may be written to require their own
    +removal in certain cases when you modify the work.)  You may place
    +additional permissions on material, added by you to a covered work,
    +for which you have or can give appropriate copyright permission.
    +
    +  Notwithstanding any other provision of this License, for material you
    +add to a covered work, you may (if authorized by the copyright holders of
    +that material) supplement the terms of this License with terms:
    +
    +    a) Disclaiming warranty or limiting liability differently from the
    +    terms of sections 15 and 16 of this License; or
    +
    +    b) Requiring preservation of specified reasonable legal notices or
    +    author attributions in that material or in the Appropriate Legal
    +    Notices displayed by works containing it; or
    +
    +    c) Prohibiting misrepresentation of the origin of that material, or
    +    requiring that modified versions of such material be marked in
    +    reasonable ways as different from the original version; or
    +
    +    d) Limiting the use for publicity purposes of names of licensors or
    +    authors of the material; or
    +
    +    e) Declining to grant rights under trademark law for use of some
    +    trade names, trademarks, or service marks; or
    +
    +    f) Requiring indemnification of licensors and authors of that
    +    material by anyone who conveys the material (or modified versions of
    +    it) with contractual assumptions of liability to the recipient, for
    +    any liability that these contractual assumptions directly impose on
    +    those licensors and authors.
    +
    +  All other non-permissive additional terms are considered "further
    +restrictions" within the meaning of section 10.  If the Program as you
    +received it, or any part of it, contains a notice stating that it is
    +governed by this License along with a term that is a further
    +restriction, you may remove that term.  If a license document contains
    +a further restriction but permits relicensing or conveying under this
    +License, you may add to a covered work material governed by the terms
    +of that license document, provided that the further restriction does
    +not survive such relicensing or conveying.
    +
    +  If you add terms to a covered work in accord with this section, you
    +must place, in the relevant source files, a statement of the
    +additional terms that apply to those files, or a notice indicating
    +where to find the applicable terms.
    +
    +  Additional terms, permissive or non-permissive, may be stated in the
    +form of a separately written license, or stated as exceptions;
    +the above requirements apply either way.
    +
    +  8. Termination.
    +
    +  You may not propagate or modify a covered work except as expressly
    +provided under this License.  Any attempt otherwise to propagate or
    +modify it is void, and will automatically terminate your rights under
    +this License (including any patent licenses granted under the third
    +paragraph of section 11).
    +
    +  However, if you cease all violation of this License, then your
    +license from a particular copyright holder is reinstated (a)
    +provisionally, unless and until the copyright holder explicitly and
    +finally terminates your license, and (b) permanently, if the copyright
    +holder fails to notify you of the violation by some reasonable means
    +prior to 60 days after the cessation.
    +
    +  Moreover, your license from a particular copyright holder is
    +reinstated permanently if the copyright holder notifies you of the
    +violation by some reasonable means, this is the first time you have
    +received notice of violation of this License (for any work) from that
    +copyright holder, and you cure the violation prior to 30 days after
    +your receipt of the notice.
    +
    +  Termination of your rights under this section does not terminate the
    +licenses of parties who have received copies or rights from you under
    +this License.  If your rights have been terminated and not permanently
    +reinstated, you do not qualify to receive new licenses for the same
    +material under section 10.
    +
    +  9. Acceptance Not Required for Having Copies.
    +
    +  You are not required to accept this License in order to receive or
    +run a copy of the Program.  Ancillary propagation of a covered work
    +occurring solely as a consequence of using peer-to-peer transmission
    +to receive a copy likewise does not require acceptance.  However,
    +nothing other than this License grants you permission to propagate or
    +modify any covered work.  These actions infringe copyright if you do
    +not accept this License.  Therefore, by modifying or propagating a
    +covered work, you indicate your acceptance of this License to do so.
    +
    +  10. Automatic Licensing of Downstream Recipients.
    +
    +  Each time you convey a covered work, the recipient automatically
    +receives a license from the original licensors, to run, modify and
    +propagate that work, subject to this License.  You are not responsible
    +for enforcing compliance by third parties with this License.
    +
    +  An "entity transaction" is a transaction transferring control of an
    +organization, or substantially all assets of one, or subdividing an
    +organization, or merging organizations.  If propagation of a covered
    +work results from an entity transaction, each party to that
    +transaction who receives a copy of the work also receives whatever
    +licenses to the work the party's predecessor in interest had or could
    +give under the previous paragraph, plus a right to possession of the
    +Corresponding Source of the work from the predecessor in interest, if
    +the predecessor has it or can get it with reasonable efforts.
    +
    +  You may not impose any further restrictions on the exercise of the
    +rights granted or affirmed under this License.  For example, you may
    +not impose a license fee, royalty, or other charge for exercise of
    +rights granted under this License, and you may not initiate litigation
    +(including a cross-claim or counterclaim in a lawsuit) alleging that
    +any patent claim is infringed by making, using, selling, offering for
    +sale, or importing the Program or any portion of it.
    +
    +  11. Patents.
    +
    +  A "contributor" is a copyright holder who authorizes use under this
    +License of the Program or a work on which the Program is based.  The
    +work thus licensed is called the contributor's "contributor version".
    +
    +  A contributor's "essential patent claims" are all patent claims
    +owned or controlled by the contributor, whether already acquired or
    +hereafter acquired, that would be infringed by some manner, permitted
    +by this License, of making, using, or selling its contributor version,
    +but do not include claims that would be infringed only as a
    +consequence of further modification of the contributor version.  For
    +purposes of this definition, "control" includes the right to grant
    +patent sublicenses in a manner consistent with the requirements of
    +this License.
    +
    +  Each contributor grants you a non-exclusive, worldwide, royalty-free
    +patent license under the contributor's essential patent claims, to
    +make, use, sell, offer for sale, import and otherwise run, modify and
    +propagate the contents of its contributor version.
    +
    +  In the following three paragraphs, a "patent license" is any express
    +agreement or commitment, however denominated, not to enforce a patent
    +(such as an express permission to practice a patent or covenant not to
    +sue for patent infringement).  To "grant" such a patent license to a
    +party means to make such an agreement or commitment not to enforce a
    +patent against the party.
    +
    +  If you convey a covered work, knowingly relying on a patent license,
    +and the Corresponding Source of the work is not available for anyone
    +to copy, free of charge and under the terms of this License, through a
    +publicly available network server or other readily accessible means,
    +then you must either (1) cause the Corresponding Source to be so
    +available, or (2) arrange to deprive yourself of the benefit of the
    +patent license for this particular work, or (3) arrange, in a manner
    +consistent with the requirements of this License, to extend the patent
    +license to downstream recipients.  "Knowingly relying" means you have
    +actual knowledge that, but for the patent license, your conveying the
    +covered work in a country, or your recipient's use of the covered work
    +in a country, would infringe one or more identifiable patents in that
    +country that you have reason to believe are valid.
    +
    +  If, pursuant to or in connection with a single transaction or
    +arrangement, you convey, or propagate by procuring conveyance of, a
    +covered work, and grant a patent license to some of the parties
    +receiving the covered work authorizing them to use, propagate, modify
    +or convey a specific copy of the covered work, then the patent license
    +you grant is automatically extended to all recipients of the covered
    +work and works based on it.
    +
    +  A patent license is "discriminatory" if it does not include within
    +the scope of its coverage, prohibits the exercise of, or is
    +conditioned on the non-exercise of one or more of the rights that are
    +specifically granted under this License.  You may not convey a covered
    +work if you are a party to an arrangement with a third party that is
    +in the business of distributing software, under which you make payment
    +to the third party based on the extent of your activity of conveying
    +the work, and under which the third party grants, to any of the
    +parties who would receive the covered work from you, a discriminatory
    +patent license (a) in connection with copies of the covered work
    +conveyed by you (or copies made from those copies), or (b) primarily
    +for and in connection with specific products or compilations that
    +contain the covered work, unless you entered into that arrangement,
    +or that patent license was granted, prior to 28 March 2007.
    +
    +  Nothing in this License shall be construed as excluding or limiting
    +any implied license or other defenses to infringement that may
    +otherwise be available to you under applicable patent law.
    +
    +  12. No Surrender of Others' Freedom.
    +
    +  If conditions are imposed on you (whether by court order, agreement or
    +otherwise) that contradict the conditions of this License, they do not
    +excuse you from the conditions of this License.  If you cannot convey a
    +covered work so as to satisfy simultaneously your obligations under this
    +License and any other pertinent obligations, then as a consequence you may
    +not convey it at all.  For example, if you agree to terms that obligate you
    +to collect a royalty for further conveying from those to whom you convey
    +the Program, the only way you could satisfy both those terms and this
    +License would be to refrain entirely from conveying the Program.
    +
    +  13. Use with the GNU Affero General Public License.
    +
    +  Notwithstanding any other provision of this License, you have
    +permission to link or combine any covered work with a work licensed
    +under version 3 of the GNU Affero General Public License into a single
    +combined work, and to convey the resulting work.  The terms of this
    +License will continue to apply to the part which is the covered work,
    +but the special requirements of the GNU Affero General Public License,
    +section 13, concerning interaction through a network will apply to the
    +combination as such.
    +
    +  14. Revised Versions of this License.
    +
    +  The Free Software Foundation may publish revised and/or new versions of
    +the GNU General Public License from time to time.  Such new versions will
    +be similar in spirit to the present version, but may differ in detail to
    +address new problems or concerns.
    +
    +  Each version is given a distinguishing version number.  If the
    +Program specifies that a certain numbered version of the GNU General
    +Public License "or any later version" applies to it, you have the
    +option of following the terms and conditions either of that numbered
    +version or of any later version published by the Free Software
    +Foundation.  If the Program does not specify a version number of the
    +GNU General Public License, you may choose any version ever published
    +by the Free Software Foundation.
    +
    +  If the Program specifies that a proxy can decide which future
    +versions of the GNU General Public License can be used, that proxy's
    +public statement of acceptance of a version permanently authorizes you
    +to choose that version for the Program.
    +
    +  Later license versions may give you additional or different
    +permissions.  However, no additional obligations are imposed on any
    +author or copyright holder as a result of your choosing to follow a
    +later version.
    +
    +  15. Disclaimer of Warranty.
    +
    +  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
    +APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
    +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
    +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
    +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    +PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
    +IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
    +ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
    +
    +  16. Limitation of Liability.
    +
    +  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
    +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
    +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
    +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
    +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
    +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
    +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
    +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
    +SUCH DAMAGES.
    +
    +  17. Interpretation of Sections 15 and 16.
    +
    +  If the disclaimer of warranty and limitation of liability provided
    +above cannot be given local legal effect according to their terms,
    +reviewing courts shall apply local law that most closely approximates
    +an absolute waiver of all civil liability in connection with the
    +Program, unless a warranty or assumption of liability accompanies a
    +copy of the Program in return for a fee.
    +
    +                     END OF TERMS AND CONDITIONS
    +
    +            How to Apply These Terms to Your New Programs
    +
    +  If you develop a new program, and you want it to be of the greatest
    +possible use to the public, the best way to achieve this is to make it
    +free software which everyone can redistribute and change under these terms.
    +
    +  To do so, attach the following notices to the program.  It is safest
    +to attach them to the start of each source file to most effectively
    +state the exclusion of warranty; and each file should have at least
    +the "copyright" line and a pointer to where the full notice is found.
    +
    +    {one line to give the program's name and a brief idea of what it does.}
    +    Copyright (C) {year}  {name of author}
    +
    +    This program is free software: you can redistribute it and/or modify
    +    it under the terms of the GNU General Public License as published by
    +    the Free Software Foundation, either version 3 of the License, or
    +    (at your option) any later version.
    +
    +    This program is distributed in the hope that it will be useful,
    +    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    +    GNU General Public License for more details.
    +
    +    You should have received a copy of the GNU General Public License
    +    along with this program.  If not, see .
    +
    +Also add information on how to contact you by electronic and paper mail.
    +
    +  If the program does terminal interaction, make it output a short
    +notice like this when it starts in an interactive mode:
    +
    +    {project}  Copyright (C) {year}  {fullname}
    +    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    +    This is free software, and you are welcome to redistribute it
    +    under certain conditions; type `show c' for details.
    +
    +The hypothetical commands `show w' and `show c' should show the appropriate
    +parts of the General Public License.  Of course, your program's commands
    +might be different; for a GUI interface, you would use an "about box".
    +
    +  You should also get your employer (if you work as a programmer) or school,
    +if any, to sign a "copyright disclaimer" for the program, if necessary.
    +For more information on this, and how to apply and follow the GNU GPL, see
    +.
    +
    +  The GNU General Public License does not permit incorporating your program
    +into proprietary programs.  If your program is a subroutine library, you
    +may consider it more useful to permit linking proprietary applications with
    +the library.  If this is what you want to do, use the GNU Lesser General
    +Public License instead of this License.  But first, please read
    +.
    diff --git a/README.md b/README.md
    new file mode 100644
    index 0000000..0e9a65a
    --- /dev/null
    +++ b/README.md
    @@ -0,0 +1,49 @@
    +Feeder
    +=====
    +[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/Y8Y44OYQL)
    +
    +
    +Get it on F-Droid
    +
    +Get it on Google Play
    +
    +
    +Translation status
    +
    +
    +### License
    +
    +**GPLv3**, for more info see *LICENSE*.
    +
    +### Contributions are welcome!
    +
    +If you want to translate Feeder into your native language the easiest way is to go to [Weblate](https://hosted.weblate.org/engage/feeder/) but making a merge request is of course fine if that is something you are comfortable with.
    +
    +In case you want to contribute with fixing bugs or features - you probably know what you need to do. If not just ping me.
    +
    +### Quick install
    +
    +Clone the project:
    +
    +    git clone --recursive https://github.com/spacecowboy/Feeder.git
    +
    +Then build and install the app to your phone which is connected via USB:
    +
    +    ./gradlew installDebug
    +
    +### More details
    +
    +This is a no-nonsense RSS/Atom/JSON feed reader app for Android.
    +
    +### Features
    +
    +* Offline reading
    +* Notification support
    +* OPML Import/Export
    +* Material design
    +
    +### Screenshots
    +
    +
    +
    +
    diff --git a/app/.gitignore b/app/.gitignore
    new file mode 100644
    index 0000000..796b96d
    --- /dev/null
    +++ b/app/.gitignore
    @@ -0,0 +1 @@
    +/build
    diff --git a/app/build.gradle b/app/build.gradle
    new file mode 100644
    index 0000000..db657e1
    --- /dev/null
    +++ b/app/build.gradle
    @@ -0,0 +1,229 @@
    +apply plugin: 'com.android.application'
    +apply plugin: 'kotlin-android'
    +apply plugin: 'kotlin-android-extensions'
    +apply plugin: 'kotlin-kapt'
    +
    +android {
    +  buildToolsVersion "$build_tools_version"
    +
    +  lintOptions {
    +    abortOnError true
    +    explainIssues true
    +    ignoreWarnings true
    +    textReport true
    +    textOutput 'stdout'
    +    // Should try to remove last two here
    +    disable "MissingTranslation", "AppCompatCustomView", "InvalidPackage"
    +    // I really want some to show as errors
    +    error "InlinedApi", "StringEscaping"
    +  }
    +
    +  defaultConfig {
    +    applicationId "com.nononsenseapps.feeder"
    +    versionCode 106
    +    versionName "1.13.5"
    +    compileSdkVersion 30
    +    minSdkVersion 23
    +    targetSdkVersion 30
    +    multiDexEnabled true
    +
    +    vectorDrawables.useSupportLibrary = true
    +
    +    // For espresso tests
    +    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    +
    +    // Export Room schemas
    +    javaCompileOptions {
    +      annotationProcessorOptions {
    +        arguments = [
    +                "room.schemaLocation": "$projectDir/schemas".toString(),
    +                "room.incremental"   : "true"
    +        ]
    +      }
    +    }
    +  }
    +
    +  sourceSets {
    +    // To test Room we need to include the schema dir in resources
    +    androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
    +  }
    +
    +  if (project.hasProperty('STORE_FILE')) {
    +    signingConfigs {
    +      release {
    +        storeFile file(STORE_FILE)
    +        storePassword STORE_PASSWORD
    +        keyAlias KEY_ALIAS
    +        keyPassword KEY_PASSWORD
    +      }
    +    }
    +  }
    +
    +  buildTypes {
    +    debug {
    +      minifyEnabled false
    +      shrinkResources false
    +      applicationIdSuffix ".debug"
    +      pseudoLocalesEnabled true
    +
    +      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    +    }
    +    debugMini {
    +      initWith debug
    +      minifyEnabled true
    +      shrinkResources true
    +      proguardFiles getDefaultProguardFile('proguard-android.txt'),
    +              'proguard-rules.pro'
    +      matchingFallbacks = ['debug']
    +    }
    +    release {
    +      minifyEnabled false
    +      shrinkResources false
    +      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    +
    +      if (project.hasProperty('STORE_FILE')) {
    +        signingConfig signingConfigs.release
    +      }
    +    }
    +    play {
    +      applicationIdSuffix ".play"
    +      // If you re-enable this - fix the issues on Android 4.3
    +      minifyEnabled false
    +      shrinkResources false
    +      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    +
    +      if (project.hasProperty('STORE_FILE')) {
    +        signingConfig signingConfigs.release
    +      }
    +    }
    +  }
    +
    +  testOptions {
    +    unitTests.returnDefaultValues = true
    +  }
    +
    +  kotlinOptions {
    +    jvmTarget = "1.8"
    +  }
    +
    +  packagingOptions {
    +    exclude 'META-INF/DEPENDENCIES'
    +    exclude 'META-INF/LICENSE'
    +    exclude 'META-INF/LICENSE.txt'
    +    exclude 'META-INF/license.txt'
    +    exclude 'META-INF/NOTICE'
    +    exclude 'META-INF/NOTICE.txt'
    +    exclude 'META-INF/notice.txt'
    +    exclude 'META-INF/ASL2.0'
    +    exclude 'META-INF/AL2.0'
    +    exclude 'META-INF/LGPL2.1'
    +  }
    +}
    +
    +configurations.all {
    +  resolutionStrategy {
    +//    failOnVersionConflict()
    +
    +    force "com.squareup.okhttp3:okhttp:$okhttp_version"
    +    force "com.squareup.okio:okio:$okio_version"
    +    force "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    +    force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    +    force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    +    force "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    +    force "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
    +    force "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
    +  }
    +}
    +
    +dependencies {
    +  kapt "androidx.room:room-compiler:$room_version"
    +
    +  // BOMS
    +  api(platform("com.squareup.okhttp3:okhttp-bom:$okhttp_version"))
    +
    +  // Needed pre SDK21
    +  implementation "com.android.support:multidex:$multi_dex_version"
    +
    +  implementation "androidx.room:room-ktx:$room_version"
    +
    +  implementation "androidx.work:work-runtime-ktx:$workmanager_version"
    +
    +  implementation "androidx.core:core-ktx:$androidx_core_version"
    +  implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version"
    +  implementation "androidx.recyclerview:recyclerview:$recyclerview_version"
    +  implementation "androidx.legacy:legacy-support-v4:$legacy_support_version"
    +  implementation "androidx.appcompat:appcompat:$appcompat_version"
    +  implementation "androidx.preference:preference:$preference_version"
    +  implementation "com.google.android.material:material:$material_version"
    +  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
    +  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
    +
    +  // ViewModel and LiveData
    +  implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
    +  implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
    +  implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
    +  implementation "androidx.paging:paging-runtime-ktx:$paging_version"
    +
    +  // Better times
    +  implementation "com.jakewharton.threetenabp:threetenabp:$threetenabp_version"
    +  // HTML parsing
    +  implementation "org.jsoup:jsoup:$jsoup_version"
    +  implementation "org.ccil.cowan.tagsoup:tagsoup:1.2.1"
    +  // RSS
    +  implementation "com.rometools:rome:$rome_version"
    +  implementation "com.rometools:rome-modules:$rome_version"
    +  // JSONFeed
    +  implementation project(":jsonfeed-parser")
    +  // For better fetching
    +  implementation("com.squareup.okhttp3:okhttp:$okhttp_version")
    +  // For supporting TLSv1.3 on pre Android-10
    +  implementation "org.conscrypt:conscrypt-android:$conscrypt_version"
    +  // Image loading
    +  implementation("io.coil-kt:coil-base:1.1.1")
    +  implementation("io.coil-kt:coil-gif:1.1.1")
    +  implementation("io.coil-kt:coil-svg:1.1.1")
    +
    +  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    +  // Coroutines
    +  implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
    +  // For doing coroutines on UI thread
    +  implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
    +  // Dependency injection
    +  implementation "org.kodein.di:kodein-di-generic-jvm:$kodein_version"
    +  implementation "org.kodein.di:kodein-di-framework-android-x:$kodein_version"
    +  // Custom tabs
    +  implementation "com.android.support:customtabs:28.0.0"
    +  // Full text
    +  implementation "net.dankito.readability4j:readability4j:$readability4j_version"
    +  // tests
    +  testImplementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    +  testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
    +  testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines_version"
    +  testImplementation "junit:junit:4.12"
    +  testImplementation "org.mockito:mockito-core:$mockito_version"
    +  testImplementation "io.mockk:mockk:$mockk_version"
    +  testImplementation "com.squareup.okhttp3:mockwebserver:$okhttp_version"
    +
    +  // Needed for unit testing timezone stuff
    +  testImplementation "org.threeten:threetenbp:$threetentest_version"
    +
    +  androidTestImplementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    +  androidTestImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
    +  androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines_version"
    +  androidTestImplementation "io.mockk:mockk-android:1.8.10.kotlin13"
    +  androidTestImplementation "junit:junit:4.12"
    +  androidTestImplementation "com.squareup.okhttp3:mockwebserver:$okhttp_version"
    +
    +  androidTestImplementation "androidx.test:core:$androidx_core_version"
    +  androidTestImplementation "androidx.test:runner:$test_runner_version"
    +  androidTestImplementation "androidx.test:rules:$test_rules_version"
    +  androidTestImplementation "androidx.test.ext:junit:$test_ext_junit_version"
    +  androidTestImplementation "androidx.recyclerview:recyclerview:$recyclerview_version"
    +  androidTestImplementation "androidx.legacy:legacy-support-v4:$legacy_support_version"
    +  androidTestImplementation "androidx.appcompat:appcompat:$appcompat_version"
    +  androidTestImplementation "com.google.android.material:material:$material_version"
    +  androidTestImplementation "androidx.room:room-testing:$room_version"
    +  androidTestImplementation "androidx.test.espresso:espresso-core:$espresso_version"
    +  androidTestImplementation "androidx.test.espresso:espresso-contrib:$espresso_version"
    +  androidTestImplementation "androidx.test.uiautomator:uiautomator:$uiautomator_version"
    +}
    diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
    new file mode 100644
    index 0000000..8fe7f5b
    --- /dev/null
    +++ b/app/proguard-rules.pro
    @@ -0,0 +1,38 @@
    +# Add project specific ProGuard rules here.
    +# By default, the flags in this file are appended to flags specified
    +# in /home/jonas/android-sdk-linux/tools/proguard/proguard-android.txt
    +# You can edit the include path and order by changing the proguardFiles
    +# directive in build.gradle.
    +#
    +# For more details, see
    +#   http://developer.android.com/guide/developing/tools/proguard.html
    +
    +# Add any project specific keep options here:
    +
    +# If your project uses WebView with JS, uncomment the following
    +# and specify the fully qualified class name to the JavaScript interface
    +# class:
    +#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
    +#   public *;
    +#}
    +
    +-dontobfuscate
    +
    +## The following is necessary to avoid R8, which is used by desugaring
    +## lib, from breaking even the debug build
    +# Keep kotlin.Metadata annotations to maintain metadata on kept items.
    +-keepattributes RuntimeVisibleAnnotations
    +-keep class kotlin.Metadata { *; }
    +
    +# Everything in the app is essential
    +-keep class com.nononsenseapps.** { *; }
    +
    +# For Okio
    +# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
    +-dontwarn org.codehaus.mojo.animal_sniffer.*
    +
    +# For Jsoup
    +-keep class org.jsoup.**  { *; }
    +
    +# For Rome
    +-keep class com.rometools.** { *; }
    diff --git a/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/10.json b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/10.json
    new file mode 100644
    index 0000000..843ac39
    --- /dev/null
    +++ b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/10.json
    @@ -0,0 +1,223 @@
    +{
    +  "formatVersion": 1,
    +  "database": {
    +    "version": 10,
    +    "identityHash": "3751990a008660981fd56c7aabd5e0a8",
    +    "entities": [
    +      {
    +        "tableName": "feeds",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `custom_title` TEXT NOT NULL, `url` TEXT NOT NULL, `tag` TEXT NOT NULL, `notify` INTEGER NOT NULL, `image_url` TEXT, `last_sync` INTEGER NOT NULL, `response_hash` INTEGER NOT NULL)",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "customTitle",
    +            "columnName": "custom_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "url",
    +            "columnName": "url",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "tag",
    +            "columnName": "tag",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notify",
    +            "columnName": "notify",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "lastSync",
    +            "columnName": "last_sync",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "responseHash",
    +            "columnName": "response_hash",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feeds_url",
    +            "unique": true,
    +            "columnNames": [
    +              "url"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feeds_url` ON `${TABLE_NAME}` (`url`)"
    +          },
    +          {
    +            "name": "index_feeds_id_url_title",
    +            "unique": true,
    +            "columnNames": [
    +              "id",
    +              "url",
    +              "title"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feeds_id_url_title` ON `${TABLE_NAME}` (`id`, `url`, `title`)"
    +          }
    +        ],
    +        "foreignKeys": []
    +      },
    +      {
    +        "tableName": "feed_items",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `guid` TEXT NOT NULL, `title` TEXT NOT NULL, `plain_title` TEXT NOT NULL, `plain_snippet` TEXT NOT NULL, `image_url` TEXT, `enclosure_link` TEXT, `author` TEXT, `pub_date` TEXT, `link` TEXT, `unread` INTEGER NOT NULL, `notified` INTEGER NOT NULL, `feed_id` INTEGER, FOREIGN KEY(`feed_id`) REFERENCES `feeds`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "guid",
    +            "columnName": "guid",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainTitle",
    +            "columnName": "plain_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainSnippet",
    +            "columnName": "plain_snippet",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "enclosureLink",
    +            "columnName": "enclosure_link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "author",
    +            "columnName": "author",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "pubDate",
    +            "columnName": "pub_date",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "link",
    +            "columnName": "link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "unread",
    +            "columnName": "unread",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notified",
    +            "columnName": "notified",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "feedId",
    +            "columnName": "feed_id",
    +            "affinity": "INTEGER",
    +            "notNull": false
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feed_items_guid_feed_id",
    +            "unique": true,
    +            "columnNames": [
    +              "guid",
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feed_items_guid_feed_id` ON `${TABLE_NAME}` (`guid`, `feed_id`)"
    +          },
    +          {
    +            "name": "index_feed_items_feed_id",
    +            "unique": false,
    +            "columnNames": [
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE INDEX IF NOT EXISTS `index_feed_items_feed_id` ON `${TABLE_NAME}` (`feed_id`)"
    +          }
    +        ],
    +        "foreignKeys": [
    +          {
    +            "table": "feeds",
    +            "onDelete": "CASCADE",
    +            "onUpdate": "NO ACTION",
    +            "columns": [
    +              "feed_id"
    +            ],
    +            "referencedColumns": [
    +              "id"
    +            ]
    +          }
    +        ]
    +      }
    +    ],
    +    "views": [],
    +    "setupQueries": [
    +      "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
    +      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '3751990a008660981fd56c7aabd5e0a8')"
    +    ]
    +  }
    +}
    \ No newline at end of file
    diff --git a/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/11.json b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/11.json
    new file mode 100644
    index 0000000..2a658d6
    --- /dev/null
    +++ b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/11.json
    @@ -0,0 +1,229 @@
    +{
    +  "formatVersion": 1,
    +  "database": {
    +    "version": 11,
    +    "identityHash": "e65228e117d6d836cc934e7bd4bc2965",
    +    "entities": [
    +      {
    +        "tableName": "feeds",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `custom_title` TEXT NOT NULL, `url` TEXT NOT NULL, `tag` TEXT NOT NULL, `notify` INTEGER NOT NULL, `image_url` TEXT, `last_sync` INTEGER NOT NULL, `response_hash` INTEGER NOT NULL)",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "customTitle",
    +            "columnName": "custom_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "url",
    +            "columnName": "url",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "tag",
    +            "columnName": "tag",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notify",
    +            "columnName": "notify",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "lastSync",
    +            "columnName": "last_sync",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "responseHash",
    +            "columnName": "response_hash",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feeds_url",
    +            "unique": true,
    +            "columnNames": [
    +              "url"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feeds_url` ON `${TABLE_NAME}` (`url`)"
    +          },
    +          {
    +            "name": "index_feeds_id_url_title",
    +            "unique": true,
    +            "columnNames": [
    +              "id",
    +              "url",
    +              "title"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feeds_id_url_title` ON `${TABLE_NAME}` (`id`, `url`, `title`)"
    +          }
    +        ],
    +        "foreignKeys": []
    +      },
    +      {
    +        "tableName": "feed_items",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `guid` TEXT NOT NULL, `title` TEXT NOT NULL, `plain_title` TEXT NOT NULL, `plain_snippet` TEXT NOT NULL, `image_url` TEXT, `enclosure_link` TEXT, `author` TEXT, `pub_date` TEXT, `link` TEXT, `unread` INTEGER NOT NULL, `notified` INTEGER NOT NULL, `feed_id` INTEGER, `first_synced_time` INTEGER NOT NULL, FOREIGN KEY(`feed_id`) REFERENCES `feeds`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "guid",
    +            "columnName": "guid",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainTitle",
    +            "columnName": "plain_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainSnippet",
    +            "columnName": "plain_snippet",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "enclosureLink",
    +            "columnName": "enclosure_link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "author",
    +            "columnName": "author",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "pubDate",
    +            "columnName": "pub_date",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "link",
    +            "columnName": "link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "unread",
    +            "columnName": "unread",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notified",
    +            "columnName": "notified",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "feedId",
    +            "columnName": "feed_id",
    +            "affinity": "INTEGER",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "firstSyncedTime",
    +            "columnName": "first_synced_time",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feed_items_guid_feed_id",
    +            "unique": true,
    +            "columnNames": [
    +              "guid",
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feed_items_guid_feed_id` ON `${TABLE_NAME}` (`guid`, `feed_id`)"
    +          },
    +          {
    +            "name": "index_feed_items_feed_id",
    +            "unique": false,
    +            "columnNames": [
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE INDEX IF NOT EXISTS `index_feed_items_feed_id` ON `${TABLE_NAME}` (`feed_id`)"
    +          }
    +        ],
    +        "foreignKeys": [
    +          {
    +            "table": "feeds",
    +            "onDelete": "CASCADE",
    +            "onUpdate": "NO ACTION",
    +            "columns": [
    +              "feed_id"
    +            ],
    +            "referencedColumns": [
    +              "id"
    +            ]
    +          }
    +        ]
    +      }
    +    ],
    +    "views": [],
    +    "setupQueries": [
    +      "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
    +      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'e65228e117d6d836cc934e7bd4bc2965')"
    +    ]
    +  }
    +}
    \ No newline at end of file
    diff --git a/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/12.json b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/12.json
    new file mode 100644
    index 0000000..84e61f9
    --- /dev/null
    +++ b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/12.json
    @@ -0,0 +1,235 @@
    +{
    +  "formatVersion": 1,
    +  "database": {
    +    "version": 12,
    +    "identityHash": "acf17b478a707d7bc42c9bfb01115c6e",
    +    "entities": [
    +      {
    +        "tableName": "feeds",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `custom_title` TEXT NOT NULL, `url` TEXT NOT NULL, `tag` TEXT NOT NULL, `notify` INTEGER NOT NULL, `image_url` TEXT, `last_sync` INTEGER NOT NULL, `response_hash` INTEGER NOT NULL)",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "customTitle",
    +            "columnName": "custom_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "url",
    +            "columnName": "url",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "tag",
    +            "columnName": "tag",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notify",
    +            "columnName": "notify",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "lastSync",
    +            "columnName": "last_sync",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "responseHash",
    +            "columnName": "response_hash",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feeds_url",
    +            "unique": true,
    +            "columnNames": [
    +              "url"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feeds_url` ON `${TABLE_NAME}` (`url`)"
    +          },
    +          {
    +            "name": "index_feeds_id_url_title",
    +            "unique": true,
    +            "columnNames": [
    +              "id",
    +              "url",
    +              "title"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feeds_id_url_title` ON `${TABLE_NAME}` (`id`, `url`, `title`)"
    +          }
    +        ],
    +        "foreignKeys": []
    +      },
    +      {
    +        "tableName": "feed_items",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `guid` TEXT NOT NULL, `title` TEXT NOT NULL, `plain_title` TEXT NOT NULL, `plain_snippet` TEXT NOT NULL, `image_url` TEXT, `enclosure_link` TEXT, `author` TEXT, `pub_date` TEXT, `link` TEXT, `unread` INTEGER NOT NULL, `notified` INTEGER NOT NULL, `feed_id` INTEGER, `first_synced_time` INTEGER NOT NULL, `primary_sort_time` INTEGER NOT NULL, FOREIGN KEY(`feed_id`) REFERENCES `feeds`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "guid",
    +            "columnName": "guid",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainTitle",
    +            "columnName": "plain_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainSnippet",
    +            "columnName": "plain_snippet",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "enclosureLink",
    +            "columnName": "enclosure_link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "author",
    +            "columnName": "author",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "pubDate",
    +            "columnName": "pub_date",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "link",
    +            "columnName": "link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "unread",
    +            "columnName": "unread",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notified",
    +            "columnName": "notified",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "feedId",
    +            "columnName": "feed_id",
    +            "affinity": "INTEGER",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "firstSyncedTime",
    +            "columnName": "first_synced_time",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "primarySortTime",
    +            "columnName": "primary_sort_time",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feed_items_guid_feed_id",
    +            "unique": true,
    +            "columnNames": [
    +              "guid",
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feed_items_guid_feed_id` ON `${TABLE_NAME}` (`guid`, `feed_id`)"
    +          },
    +          {
    +            "name": "index_feed_items_feed_id",
    +            "unique": false,
    +            "columnNames": [
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE INDEX IF NOT EXISTS `index_feed_items_feed_id` ON `${TABLE_NAME}` (`feed_id`)"
    +          }
    +        ],
    +        "foreignKeys": [
    +          {
    +            "table": "feeds",
    +            "onDelete": "CASCADE",
    +            "onUpdate": "NO ACTION",
    +            "columns": [
    +              "feed_id"
    +            ],
    +            "referencedColumns": [
    +              "id"
    +            ]
    +          }
    +        ]
    +      }
    +    ],
    +    "views": [],
    +    "setupQueries": [
    +      "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
    +      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'acf17b478a707d7bc42c9bfb01115c6e')"
    +    ]
    +  }
    +}
    \ No newline at end of file
    diff --git a/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/13.json b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/13.json
    new file mode 100644
    index 0000000..05e5299
    --- /dev/null
    +++ b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/13.json
    @@ -0,0 +1,241 @@
    +{
    +  "formatVersion": 1,
    +  "database": {
    +    "version": 13,
    +    "identityHash": "113988d7df71524c1053ccc8283bea01",
    +    "entities": [
    +      {
    +        "tableName": "feeds",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `custom_title` TEXT NOT NULL, `url` TEXT NOT NULL, `tag` TEXT NOT NULL, `notify` INTEGER NOT NULL, `image_url` TEXT, `last_sync` INTEGER NOT NULL, `response_hash` INTEGER NOT NULL, `fulltext_by_default` INTEGER NOT NULL)",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "customTitle",
    +            "columnName": "custom_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "url",
    +            "columnName": "url",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "tag",
    +            "columnName": "tag",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notify",
    +            "columnName": "notify",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "lastSync",
    +            "columnName": "last_sync",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "responseHash",
    +            "columnName": "response_hash",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "fullTextByDefault",
    +            "columnName": "fulltext_by_default",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feeds_url",
    +            "unique": true,
    +            "columnNames": [
    +              "url"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feeds_url` ON `${TABLE_NAME}` (`url`)"
    +          },
    +          {
    +            "name": "index_feeds_id_url_title",
    +            "unique": true,
    +            "columnNames": [
    +              "id",
    +              "url",
    +              "title"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feeds_id_url_title` ON `${TABLE_NAME}` (`id`, `url`, `title`)"
    +          }
    +        ],
    +        "foreignKeys": []
    +      },
    +      {
    +        "tableName": "feed_items",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `guid` TEXT NOT NULL, `title` TEXT NOT NULL, `plain_title` TEXT NOT NULL, `plain_snippet` TEXT NOT NULL, `image_url` TEXT, `enclosure_link` TEXT, `author` TEXT, `pub_date` TEXT, `link` TEXT, `unread` INTEGER NOT NULL, `notified` INTEGER NOT NULL, `feed_id` INTEGER, `first_synced_time` INTEGER NOT NULL, `primary_sort_time` INTEGER NOT NULL, FOREIGN KEY(`feed_id`) REFERENCES `feeds`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "guid",
    +            "columnName": "guid",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainTitle",
    +            "columnName": "plain_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainSnippet",
    +            "columnName": "plain_snippet",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "enclosureLink",
    +            "columnName": "enclosure_link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "author",
    +            "columnName": "author",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "pubDate",
    +            "columnName": "pub_date",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "link",
    +            "columnName": "link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "unread",
    +            "columnName": "unread",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notified",
    +            "columnName": "notified",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "feedId",
    +            "columnName": "feed_id",
    +            "affinity": "INTEGER",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "firstSyncedTime",
    +            "columnName": "first_synced_time",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "primarySortTime",
    +            "columnName": "primary_sort_time",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feed_items_guid_feed_id",
    +            "unique": true,
    +            "columnNames": [
    +              "guid",
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feed_items_guid_feed_id` ON `${TABLE_NAME}` (`guid`, `feed_id`)"
    +          },
    +          {
    +            "name": "index_feed_items_feed_id",
    +            "unique": false,
    +            "columnNames": [
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE INDEX IF NOT EXISTS `index_feed_items_feed_id` ON `${TABLE_NAME}` (`feed_id`)"
    +          }
    +        ],
    +        "foreignKeys": [
    +          {
    +            "table": "feeds",
    +            "onDelete": "CASCADE",
    +            "onUpdate": "NO ACTION",
    +            "columns": [
    +              "feed_id"
    +            ],
    +            "referencedColumns": [
    +              "id"
    +            ]
    +          }
    +        ]
    +      }
    +    ],
    +    "views": [],
    +    "setupQueries": [
    +      "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
    +      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '113988d7df71524c1053ccc8283bea01')"
    +    ]
    +  }
    +}
    \ No newline at end of file
    diff --git a/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/14.json b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/14.json
    new file mode 100644
    index 0000000..1ccf6b7
    --- /dev/null
    +++ b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/14.json
    @@ -0,0 +1,247 @@
    +{
    +  "formatVersion": 1,
    +  "database": {
    +    "version": 14,
    +    "identityHash": "b9ed9812b00c71906ab4a1b08a0f9eaa",
    +    "entities": [
    +      {
    +        "tableName": "feeds",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `custom_title` TEXT NOT NULL, `url` TEXT NOT NULL, `tag` TEXT NOT NULL, `notify` INTEGER NOT NULL, `image_url` TEXT, `last_sync` INTEGER NOT NULL, `response_hash` INTEGER NOT NULL, `fulltext_by_default` INTEGER NOT NULL, `open_articles_with` TEXT NOT NULL DEFAULT '')",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "customTitle",
    +            "columnName": "custom_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "url",
    +            "columnName": "url",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "tag",
    +            "columnName": "tag",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notify",
    +            "columnName": "notify",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "lastSync",
    +            "columnName": "last_sync",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "responseHash",
    +            "columnName": "response_hash",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "fullTextByDefault",
    +            "columnName": "fulltext_by_default",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "openArticlesWith",
    +            "columnName": "open_articles_with",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feeds_url",
    +            "unique": true,
    +            "columnNames": [
    +              "url"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feeds_url` ON `${TABLE_NAME}` (`url`)"
    +          },
    +          {
    +            "name": "index_feeds_id_url_title",
    +            "unique": true,
    +            "columnNames": [
    +              "id",
    +              "url",
    +              "title"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feeds_id_url_title` ON `${TABLE_NAME}` (`id`, `url`, `title`)"
    +          }
    +        ],
    +        "foreignKeys": []
    +      },
    +      {
    +        "tableName": "feed_items",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `guid` TEXT NOT NULL, `title` TEXT NOT NULL, `plain_title` TEXT NOT NULL, `plain_snippet` TEXT NOT NULL, `image_url` TEXT, `enclosure_link` TEXT, `author` TEXT, `pub_date` TEXT, `link` TEXT, `unread` INTEGER NOT NULL, `notified` INTEGER NOT NULL, `feed_id` INTEGER, `first_synced_time` INTEGER NOT NULL, `primary_sort_time` INTEGER NOT NULL, FOREIGN KEY(`feed_id`) REFERENCES `feeds`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "guid",
    +            "columnName": "guid",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainTitle",
    +            "columnName": "plain_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainSnippet",
    +            "columnName": "plain_snippet",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "enclosureLink",
    +            "columnName": "enclosure_link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "author",
    +            "columnName": "author",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "pubDate",
    +            "columnName": "pub_date",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "link",
    +            "columnName": "link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "unread",
    +            "columnName": "unread",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notified",
    +            "columnName": "notified",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "feedId",
    +            "columnName": "feed_id",
    +            "affinity": "INTEGER",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "firstSyncedTime",
    +            "columnName": "first_synced_time",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "primarySortTime",
    +            "columnName": "primary_sort_time",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feed_items_guid_feed_id",
    +            "unique": true,
    +            "columnNames": [
    +              "guid",
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_feed_items_guid_feed_id` ON `${TABLE_NAME}` (`guid`, `feed_id`)"
    +          },
    +          {
    +            "name": "index_feed_items_feed_id",
    +            "unique": false,
    +            "columnNames": [
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE INDEX IF NOT EXISTS `index_feed_items_feed_id` ON `${TABLE_NAME}` (`feed_id`)"
    +          }
    +        ],
    +        "foreignKeys": [
    +          {
    +            "table": "feeds",
    +            "onDelete": "CASCADE",
    +            "onUpdate": "NO ACTION",
    +            "columns": [
    +              "feed_id"
    +            ],
    +            "referencedColumns": [
    +              "id"
    +            ]
    +          }
    +        ]
    +      }
    +    ],
    +    "views": [],
    +    "setupQueries": [
    +      "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
    +      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'b9ed9812b00c71906ab4a1b08a0f9eaa')"
    +    ]
    +  }
    +}
    diff --git a/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/7.json b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/7.json
    new file mode 100644
    index 0000000..005e5e9
    --- /dev/null
    +++ b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/7.json
    @@ -0,0 +1,216 @@
    +{
    +  "formatVersion": 1,
    +  "database": {
    +    "version": 7,
    +    "identityHash": "5c773fd70806bc703b78e14bfe756ac0",
    +    "entities": [
    +      {
    +        "tableName": "feeds",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `custom_title` TEXT NOT NULL, `url` TEXT NOT NULL, `tag` TEXT NOT NULL, `notify` INTEGER NOT NULL, `image_url` TEXT)",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "customTitle",
    +            "columnName": "custom_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "url",
    +            "columnName": "url",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "tag",
    +            "columnName": "tag",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notify",
    +            "columnName": "notify",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feeds_url",
    +            "unique": true,
    +            "columnNames": [
    +              "url"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX `index_feeds_url` ON `${TABLE_NAME}` (`url`)"
    +          },
    +          {
    +            "name": "index_feeds_id_url_title",
    +            "unique": true,
    +            "columnNames": [
    +              "id",
    +              "url",
    +              "title"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX `index_feeds_id_url_title` ON `${TABLE_NAME}` (`id`, `url`, `title`)"
    +          }
    +        ],
    +        "foreignKeys": []
    +      },
    +      {
    +        "tableName": "feed_items",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `guid` TEXT NOT NULL, `title` TEXT NOT NULL, `description` TEXT NOT NULL, `plain_title` TEXT NOT NULL, `plain_snippet` TEXT NOT NULL, `image_url` TEXT, `enclosure_link` TEXT, `author` TEXT, `pub_date` TEXT, `link` TEXT, `unread` INTEGER NOT NULL, `notified` INTEGER NOT NULL, `feed_id` INTEGER, FOREIGN KEY(`feed_id`) REFERENCES `feeds`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "guid",
    +            "columnName": "guid",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "description",
    +            "columnName": "description",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainTitle",
    +            "columnName": "plain_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainSnippet",
    +            "columnName": "plain_snippet",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "enclosureLink",
    +            "columnName": "enclosure_link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "author",
    +            "columnName": "author",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "pubDate",
    +            "columnName": "pub_date",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "link",
    +            "columnName": "link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "unread",
    +            "columnName": "unread",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notified",
    +            "columnName": "notified",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "feedId",
    +            "columnName": "feed_id",
    +            "affinity": "INTEGER",
    +            "notNull": false
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feed_items_guid_feed_id",
    +            "unique": true,
    +            "columnNames": [
    +              "guid",
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX `index_feed_items_guid_feed_id` ON `${TABLE_NAME}` (`guid`, `feed_id`)"
    +          },
    +          {
    +            "name": "index_feed_items_feed_id",
    +            "unique": false,
    +            "columnNames": [
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE  INDEX `index_feed_items_feed_id` ON `${TABLE_NAME}` (`feed_id`)"
    +          }
    +        ],
    +        "foreignKeys": [
    +          {
    +            "table": "feeds",
    +            "onDelete": "CASCADE",
    +            "onUpdate": "NO ACTION",
    +            "columns": [
    +              "feed_id"
    +            ],
    +            "referencedColumns": [
    +              "id"
    +            ]
    +          }
    +        ]
    +      }
    +    ],
    +    "setupQueries": [
    +      "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
    +      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"5c773fd70806bc703b78e14bfe756ac0\")"
    +    ]
    +  }
    +}
    \ No newline at end of file
    diff --git a/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/8.json b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/8.json
    new file mode 100644
    index 0000000..cf27c3f
    --- /dev/null
    +++ b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/8.json
    @@ -0,0 +1,222 @@
    +{
    +  "formatVersion": 1,
    +  "database": {
    +    "version": 8,
    +    "identityHash": "080c1a6ec37c16dfe668b173edda572b",
    +    "entities": [
    +      {
    +        "tableName": "feeds",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `custom_title` TEXT NOT NULL, `url` TEXT NOT NULL, `tag` TEXT NOT NULL, `notify` INTEGER NOT NULL, `image_url` TEXT, `last_sync` INTEGER NOT NULL)",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "customTitle",
    +            "columnName": "custom_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "url",
    +            "columnName": "url",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "tag",
    +            "columnName": "tag",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notify",
    +            "columnName": "notify",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "lastSync",
    +            "columnName": "last_sync",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feeds_url",
    +            "unique": true,
    +            "columnNames": [
    +              "url"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX `index_feeds_url` ON `${TABLE_NAME}` (`url`)"
    +          },
    +          {
    +            "name": "index_feeds_id_url_title",
    +            "unique": true,
    +            "columnNames": [
    +              "id",
    +              "url",
    +              "title"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX `index_feeds_id_url_title` ON `${TABLE_NAME}` (`id`, `url`, `title`)"
    +          }
    +        ],
    +        "foreignKeys": []
    +      },
    +      {
    +        "tableName": "feed_items",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `guid` TEXT NOT NULL, `title` TEXT NOT NULL, `description` TEXT NOT NULL, `plain_title` TEXT NOT NULL, `plain_snippet` TEXT NOT NULL, `image_url` TEXT, `enclosure_link` TEXT, `author` TEXT, `pub_date` TEXT, `link` TEXT, `unread` INTEGER NOT NULL, `notified` INTEGER NOT NULL, `feed_id` INTEGER, FOREIGN KEY(`feed_id`) REFERENCES `feeds`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "guid",
    +            "columnName": "guid",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "description",
    +            "columnName": "description",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainTitle",
    +            "columnName": "plain_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainSnippet",
    +            "columnName": "plain_snippet",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "enclosureLink",
    +            "columnName": "enclosure_link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "author",
    +            "columnName": "author",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "pubDate",
    +            "columnName": "pub_date",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "link",
    +            "columnName": "link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "unread",
    +            "columnName": "unread",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notified",
    +            "columnName": "notified",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "feedId",
    +            "columnName": "feed_id",
    +            "affinity": "INTEGER",
    +            "notNull": false
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feed_items_guid_feed_id",
    +            "unique": true,
    +            "columnNames": [
    +              "guid",
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX `index_feed_items_guid_feed_id` ON `${TABLE_NAME}` (`guid`, `feed_id`)"
    +          },
    +          {
    +            "name": "index_feed_items_feed_id",
    +            "unique": false,
    +            "columnNames": [
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE  INDEX `index_feed_items_feed_id` ON `${TABLE_NAME}` (`feed_id`)"
    +          }
    +        ],
    +        "foreignKeys": [
    +          {
    +            "table": "feeds",
    +            "onDelete": "CASCADE",
    +            "onUpdate": "NO ACTION",
    +            "columns": [
    +              "feed_id"
    +            ],
    +            "referencedColumns": [
    +              "id"
    +            ]
    +          }
    +        ]
    +      }
    +    ],
    +    "setupQueries": [
    +      "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
    +      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"080c1a6ec37c16dfe668b173edda572b\")"
    +    ]
    +  }
    +}
    \ No newline at end of file
    diff --git a/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/9.json b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/9.json
    new file mode 100644
    index 0000000..68cfd4a
    --- /dev/null
    +++ b/app/schemas/com.nononsenseapps.feeder.db.room.AppDatabase/9.json
    @@ -0,0 +1,228 @@
    +{
    +  "formatVersion": 1,
    +  "database": {
    +    "version": 9,
    +    "identityHash": "6a5fd4757cbb75d7e3ff6effc344326b",
    +    "entities": [
    +      {
    +        "tableName": "feeds",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `custom_title` TEXT NOT NULL, `url` TEXT NOT NULL, `tag` TEXT NOT NULL, `notify` INTEGER NOT NULL, `image_url` TEXT, `last_sync` INTEGER NOT NULL, `response_hash` INTEGER NOT NULL)",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "customTitle",
    +            "columnName": "custom_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "url",
    +            "columnName": "url",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "tag",
    +            "columnName": "tag",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notify",
    +            "columnName": "notify",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "lastSync",
    +            "columnName": "last_sync",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "responseHash",
    +            "columnName": "response_hash",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feeds_url",
    +            "unique": true,
    +            "columnNames": [
    +              "url"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX `index_feeds_url` ON `${TABLE_NAME}` (`url`)"
    +          },
    +          {
    +            "name": "index_feeds_id_url_title",
    +            "unique": true,
    +            "columnNames": [
    +              "id",
    +              "url",
    +              "title"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX `index_feeds_id_url_title` ON `${TABLE_NAME}` (`id`, `url`, `title`)"
    +          }
    +        ],
    +        "foreignKeys": []
    +      },
    +      {
    +        "tableName": "feed_items",
    +        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `guid` TEXT NOT NULL, `title` TEXT NOT NULL, `description` TEXT NOT NULL, `plain_title` TEXT NOT NULL, `plain_snippet` TEXT NOT NULL, `image_url` TEXT, `enclosure_link` TEXT, `author` TEXT, `pub_date` TEXT, `link` TEXT, `unread` INTEGER NOT NULL, `notified` INTEGER NOT NULL, `feed_id` INTEGER, FOREIGN KEY(`feed_id`) REFERENCES `feeds`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
    +        "fields": [
    +          {
    +            "fieldPath": "id",
    +            "columnName": "id",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "guid",
    +            "columnName": "guid",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "title",
    +            "columnName": "title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "description",
    +            "columnName": "description",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainTitle",
    +            "columnName": "plain_title",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "plainSnippet",
    +            "columnName": "plain_snippet",
    +            "affinity": "TEXT",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "imageUrl",
    +            "columnName": "image_url",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "enclosureLink",
    +            "columnName": "enclosure_link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "author",
    +            "columnName": "author",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "pubDate",
    +            "columnName": "pub_date",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "link",
    +            "columnName": "link",
    +            "affinity": "TEXT",
    +            "notNull": false
    +          },
    +          {
    +            "fieldPath": "unread",
    +            "columnName": "unread",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "notified",
    +            "columnName": "notified",
    +            "affinity": "INTEGER",
    +            "notNull": true
    +          },
    +          {
    +            "fieldPath": "feedId",
    +            "columnName": "feed_id",
    +            "affinity": "INTEGER",
    +            "notNull": false
    +          }
    +        ],
    +        "primaryKey": {
    +          "columnNames": [
    +            "id"
    +          ],
    +          "autoGenerate": true
    +        },
    +        "indices": [
    +          {
    +            "name": "index_feed_items_guid_feed_id",
    +            "unique": true,
    +            "columnNames": [
    +              "guid",
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE UNIQUE INDEX `index_feed_items_guid_feed_id` ON `${TABLE_NAME}` (`guid`, `feed_id`)"
    +          },
    +          {
    +            "name": "index_feed_items_feed_id",
    +            "unique": false,
    +            "columnNames": [
    +              "feed_id"
    +            ],
    +            "createSql": "CREATE  INDEX `index_feed_items_feed_id` ON `${TABLE_NAME}` (`feed_id`)"
    +          }
    +        ],
    +        "foreignKeys": [
    +          {
    +            "table": "feeds",
    +            "onDelete": "CASCADE",
    +            "onUpdate": "NO ACTION",
    +            "columns": [
    +              "feed_id"
    +            ],
    +            "referencedColumns": [
    +              "id"
    +            ]
    +          }
    +        ]
    +      }
    +    ],
    +    "setupQueries": [
    +      "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
    +      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"6a5fd4757cbb75d7e3ff6effc344326b\")"
    +    ]
    +  }
    +}
    \ No newline at end of file
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/db/legacy/LegacyDatabaseHandler.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/db/legacy/LegacyDatabaseHandler.kt
    new file mode 100644
    index 0000000..896c41e
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/db/legacy/LegacyDatabaseHandler.kt
    @@ -0,0 +1,144 @@
    +package com.nononsenseapps.feeder.db.legacy
    +
    +import android.content.Context
    +import android.database.sqlite.SQLiteDatabase
    +import android.database.sqlite.SQLiteOpenHelper
    +import com.nononsenseapps.feeder.db.room.DATABASE_NAME
    +
    +const val LEGACY_DATABASE_VERSION = 6
    +const val LEGACY_DATABASE_NAME = DATABASE_NAME
    +
    +class LegacyDatabaseHandler constructor(
    +    context: Context,
    +    name: String = LEGACY_DATABASE_NAME,
    +    version: Int = LEGACY_DATABASE_VERSION
    +) : SQLiteOpenHelper(context, name, null, version) {
    +
    +    override fun onCreate(db: SQLiteDatabase) {
    +    }
    +
    +    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
    +    }
    +
    +    override fun onOpen(db: SQLiteDatabase) {
    +        super.onOpen(db)
    +        if (!db.isReadOnly) {
    +            // Enable foreign key constraints
    +            db.setForeignKeyConstraintsEnabled(true)
    +        }
    +    }
    +}
    +
    +fun createViewsAndTriggers(db: SQLiteDatabase) {
    +    // Create triggers
    +    db.execSQL(CREATE_TAG_TRIGGER)
    +    // Create views if not exists
    +    db.execSQL(CREATE_COUNT_VIEW)
    +    db.execSQL(CREATE_TAGS_VIEW)
    +}
    +
    +// SQL convention says Table name should be "singular"
    +const val FEED_TABLE_NAME = "Feed"
    +
    +// SQL convention says Table name should be "singular"
    +const val FEED_ITEM_TABLE_NAME = "FeedItem"
    +
    +// Naming the id column with an underscore is good to be consistent
    +// with other Android things. This is ALWAYS needed
    +const val COL_ID = "_id"
    +// These fields can be anything you want.
    +const val COL_TITLE = "title"
    +const val COL_CUSTOM_TITLE = "customtitle"
    +const val COL_URL = "url"
    +const val COL_TAG = "tag"
    +const val COL_NOTIFY = "notify"
    +const val COL_GUID = "guid"
    +const val COL_DESCRIPTION = "description"
    +const val COL_PLAINTITLE = "plainTitle"
    +const val COL_PLAINSNIPPET = "plainSnippet"
    +const val COL_IMAGEURL = "imageUrl"
    +const val COL_ENCLOSURELINK = "enclosureLink"
    +const val COL_LINK = "link"
    +const val COL_AUTHOR = "author"
    +const val COL_PUBDATE = "pubdate"
    +const val COL_UNREAD = "unread"
    +const val COL_NOTIFIED = "notified"
    +// These fields corresponds to columns in Feed table
    +const val COL_FEED = "feed"
    +const val COL_FEEDTITLE = "feedtitle"
    +const val COL_FEEDURL = "feedurl"
    +
    +const val CREATE_FEED_TABLE = """
    +    CREATE TABLE $FEED_TABLE_NAME (
    +      $COL_ID INTEGER PRIMARY KEY,
    +      $COL_TITLE TEXT NOT NULL,
    +      $COL_CUSTOM_TITLE TEXT NOT NULL,
    +      $COL_URL TEXT NOT NULL,
    +      $COL_TAG TEXT NOT NULL DEFAULT '',
    +      $COL_NOTIFY INTEGER NOT NULL DEFAULT 0,
    +      $COL_IMAGEURL TEXT,
    +      UNIQUE($COL_URL) ON CONFLICT REPLACE
    +    )"""
    +
    +const val CREATE_COUNT_VIEW = """
    +    CREATE TEMP VIEW IF NOT EXISTS WithUnreadCount
    +    AS SELECT $COL_ID, $COL_TITLE, $COL_URL, $COL_TAG, $COL_CUSTOM_TITLE, $COL_NOTIFY, $COL_IMAGEURL, "unreadcount"
    +       FROM $FEED_TABLE_NAME
    +       LEFT JOIN (SELECT COUNT(1) AS ${"unreadcount"}, $COL_FEED
    +         FROM $FEED_ITEM_TABLE_NAME
    +         WHERE $COL_UNREAD IS 1
    +         GROUP BY $COL_FEED)
    +       ON $FEED_TABLE_NAME.$COL_ID = $COL_FEED"""
    +
    +const val CREATE_TAGS_VIEW = """
    +    CREATE TEMP VIEW IF NOT EXISTS TagsWithUnreadCount
    +    AS SELECT $COL_ID, $COL_TAG, "unreadcount"
    +       FROM $FEED_TABLE_NAME
    +       LEFT JOIN (SELECT COUNT(1) AS ${"unreadcount"}, $COL_TAG AS itemtag
    +         FROM $FEED_ITEM_TABLE_NAME
    +         WHERE $COL_UNREAD IS 1
    +         GROUP BY itemtag)
    +       ON $FEED_TABLE_NAME.$COL_TAG IS itemtag
    +       GROUP BY $COL_TAG"""
    +
    +const val CREATE_FEED_ITEM_TABLE = """
    +    CREATE TABLE $FEED_ITEM_TABLE_NAME (
    +      $COL_ID INTEGER PRIMARY KEY,
    +      $COL_GUID TEXT NOT NULL,
    +      $COL_TITLE TEXT NOT NULL,
    +      $COL_DESCRIPTION TEXT NOT NULL,
    +      $COL_PLAINTITLE TEXT NOT NULL,
    +      $COL_PLAINSNIPPET TEXT NOT NULL,
    +      $COL_IMAGEURL TEXT,
    +      $COL_LINK TEXT,
    +      $COL_ENCLOSURELINK TEXT,
    +      $COL_AUTHOR TEXT,
    +      $COL_PUBDATE TEXT,
    +      $COL_UNREAD INTEGER NOT NULL DEFAULT 1,
    +      $COL_NOTIFIED INTEGER NOT NULL DEFAULT 0,
    +      $COL_FEED INTEGER NOT NULL,
    +      $COL_FEEDTITLE TEXT NOT NULL,
    +      $COL_FEEDURL TEXT NOT NULL,
    +      $COL_TAG TEXT NOT NULL,
    +      FOREIGN KEY($COL_FEED)
    +        REFERENCES $FEED_TABLE_NAME($COL_ID)
    +        ON DELETE CASCADE,
    +      UNIQUE($COL_GUID,$COL_FEED)
    +        ON CONFLICT IGNORE
    +    )"""
    +
    +const val CREATE_TAG_TRIGGER = """
    +    CREATE TEMP TRIGGER IF NOT EXISTS ${"trigger_tag_updater"}
    +      AFTER UPDATE OF $COL_TAG,$COL_TITLE
    +      ON $FEED_TABLE_NAME
    +      WHEN
    +        new.$COL_TAG IS NOT old.$COL_TAG
    +      OR
    +        new.$COL_TITLE IS NOT old.$COL_TITLE
    +      BEGIN
    +        UPDATE $FEED_ITEM_TABLE_NAME
    +          SET $COL_TAG = new.$COL_TAG,
    +              $COL_FEEDTITLE = new.$COL_TITLE
    +          WHERE $COL_FEED IS old.$COL_ID;
    +      END
    +"""
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom10To11.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom10To11.kt
    new file mode 100644
    index 0000000..1ff549f
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom10To11.kt
    @@ -0,0 +1,62 @@
    +package com.nononsenseapps.feeder.db.room
    +
    +import androidx.room.testing.MigrationTestHelper
    +import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.LargeTest
    +import androidx.test.platform.app.InstrumentationRegistry
    +import kotlinx.coroutines.ExperimentalCoroutinesApi
    +import kotlinx.coroutines.FlowPreview
    +import org.junit.Assert.assertEquals
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +
    +@ExperimentalCoroutinesApi
    +@FlowPreview
    +@RunWith(AndroidJUnit4::class)
    +@LargeTest
    +class MigrationFrom10To11 {
    +    private val dbName = "testDb"
    +
    +    @Rule
    +    @JvmField
    +    val testHelper: MigrationTestHelper = MigrationTestHelper(
    +        InstrumentationRegistry.getInstrumentation(),
    +        AppDatabase::class.java.canonicalName,
    +        FrameworkSQLiteOpenHelperFactory()
    +    )
    +
    +    @Test
    +    fun migrate10to11() {
    +        var db = testHelper.createDatabase(dbName, 10)
    +
    +        db.use {
    +            db.execSQL(
    +                """
    +            INSERT INTO feeds(id, title, url, custom_title, tag, notify, last_sync, response_hash)
    +            VALUES(1, 'feed', 'http://url', '', '', 0, 0, 666)
    +                """.trimIndent()
    +            )
    +
    +            db.execSQL(
    +                """
    +            INSERT INTO feed_items(id, guid, title, plain_title, plain_snippet, unread, notified, feed_id)
    +            VALUES(8, 'http://item', 'title', 'ptitle', 'psnippet', 1, 0, 1)
    +                """.trimIndent()
    +            )
    +        }
    +
    +        db = testHelper.runMigrationsAndValidate(dbName, 11, true, MIGRATION_10_11)
    +
    +        db.query(
    +            """
    +            SELECT first_synced_time FROM feed_items
    +            """.trimIndent()
    +        )!!.use {
    +            assert(it.count == 1)
    +            assert(it.moveToFirst())
    +            assertEquals(0L, it.getLong(0))
    +        }
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom11To12.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom11To12.kt
    new file mode 100644
    index 0000000..d48f5ae
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom11To12.kt
    @@ -0,0 +1,62 @@
    +package com.nononsenseapps.feeder.db.room
    +
    +import androidx.room.testing.MigrationTestHelper
    +import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.LargeTest
    +import androidx.test.platform.app.InstrumentationRegistry
    +import kotlinx.coroutines.ExperimentalCoroutinesApi
    +import kotlinx.coroutines.FlowPreview
    +import org.junit.Assert.assertEquals
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +
    +@ExperimentalCoroutinesApi
    +@FlowPreview
    +@RunWith(AndroidJUnit4::class)
    +@LargeTest
    +class MigrationFrom11To12 {
    +    private val dbName = "testDb"
    +
    +    @Rule
    +    @JvmField
    +    val testHelper: MigrationTestHelper = MigrationTestHelper(
    +        InstrumentationRegistry.getInstrumentation(),
    +        AppDatabase::class.java.canonicalName,
    +        FrameworkSQLiteOpenHelperFactory()
    +    )
    +
    +    @Test
    +    fun migrate11to12() {
    +        var db = testHelper.createDatabase(dbName, 11)
    +
    +        db.use {
    +            db.execSQL(
    +                """
    +            INSERT INTO feeds(id, title, url, custom_title, tag, notify, last_sync, response_hash)
    +            VALUES(1, 'feed', 'http://url', '', '', 0, 0, 666)
    +                """.trimIndent()
    +            )
    +
    +            db.execSQL(
    +                """
    +            INSERT INTO feed_items(id, guid, title, plain_title, plain_snippet, unread, notified, feed_id, first_synced_time)
    +            VALUES(8, 'http://item', 'title', 'ptitle', 'psnippet', 1, 0, 1, 0)
    +                """.trimIndent()
    +            )
    +        }
    +
    +        db = testHelper.runMigrationsAndValidate(dbName, 12, true, MIGRATION_11_12)
    +
    +        db.query(
    +            """
    +            SELECT primary_sort_time FROM feed_items
    +            """.trimIndent()
    +        )!!.use {
    +            assert(it.count == 1)
    +            assert(it.moveToFirst())
    +            assertEquals(0L, it.getLong(0))
    +        }
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom12To13.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom12To13.kt
    new file mode 100644
    index 0000000..5f22a21
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom12To13.kt
    @@ -0,0 +1,62 @@
    +package com.nononsenseapps.feeder.db.room
    +
    +import androidx.room.testing.MigrationTestHelper
    +import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.LargeTest
    +import androidx.test.platform.app.InstrumentationRegistry
    +import kotlinx.coroutines.ExperimentalCoroutinesApi
    +import kotlinx.coroutines.FlowPreview
    +import org.junit.Assert.assertEquals
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +
    +@ExperimentalCoroutinesApi
    +@FlowPreview
    +@RunWith(AndroidJUnit4::class)
    +@LargeTest
    +class MigrationFrom12To13 {
    +    private val dbName = "testDb"
    +
    +    @Rule
    +    @JvmField
    +    val testHelper: MigrationTestHelper = MigrationTestHelper(
    +        InstrumentationRegistry.getInstrumentation(),
    +        AppDatabase::class.java.canonicalName,
    +        FrameworkSQLiteOpenHelperFactory()
    +    )
    +
    +    @Test
    +    fun migrate12to13() {
    +        var db = testHelper.createDatabase(dbName, 12)
    +
    +        db.use {
    +            db.execSQL(
    +                """
    +            INSERT INTO feeds(id, title, url, custom_title, tag, notify, last_sync, response_hash)
    +            VALUES(1, 'feed', 'http://url', '', '', 0, 0, 666)
    +                """.trimIndent()
    +            )
    +
    +            db.execSQL(
    +                """
    +            INSERT INTO feed_items(id, guid, title, plain_title, plain_snippet, unread, notified, feed_id, first_synced_time, primary_sort_time)
    +            VALUES(8, 'http://item', 'title', 'ptitle', 'psnippet', 1, 0, 1, 0, 0)
    +                """.trimIndent()
    +            )
    +        }
    +
    +        db = testHelper.runMigrationsAndValidate(dbName, 13, true, MIGRATION_12_13)
    +
    +        db.query(
    +            """
    +            SELECT fulltext_by_default FROM feeds
    +            """.trimIndent()
    +        )!!.use {
    +            assert(it.count == 1)
    +            assert(it.moveToFirst())
    +            assertEquals(0L, it.getLong(0))
    +        }
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom13To14.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom13To14.kt
    new file mode 100644
    index 0000000..5e49e5d
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom13To14.kt
    @@ -0,0 +1,62 @@
    +package com.nononsenseapps.feeder.db.room
    +
    +import androidx.room.testing.MigrationTestHelper
    +import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.LargeTest
    +import androidx.test.platform.app.InstrumentationRegistry
    +import kotlinx.coroutines.ExperimentalCoroutinesApi
    +import kotlinx.coroutines.FlowPreview
    +import org.junit.Assert.assertEquals
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +
    +@ExperimentalCoroutinesApi
    +@FlowPreview
    +@RunWith(AndroidJUnit4::class)
    +@LargeTest
    +class MigrationFrom13To14 {
    +    private val dbName = "testDb"
    +
    +    @Rule
    +    @JvmField
    +    val testHelper: MigrationTestHelper = MigrationTestHelper(
    +        InstrumentationRegistry.getInstrumentation(),
    +        AppDatabase::class.java.canonicalName,
    +        FrameworkSQLiteOpenHelperFactory()
    +    )
    +
    +    @Test
    +    fun migrate13to14() {
    +        var db = testHelper.createDatabase(dbName, 13)
    +
    +        db.use {
    +            db.execSQL(
    +                """
    +            INSERT INTO feeds(id, title, url, custom_title, tag, notify, last_sync, response_hash, fulltext_by_default)
    +            VALUES(1, 'feed', 'http://url', '', '', 0, 0, 666, 0)
    +                """.trimIndent()
    +            )
    +
    +            db.execSQL(
    +                """
    +            INSERT INTO feed_items(id, guid, title, plain_title, plain_snippet, unread, notified, feed_id, first_synced_time, primary_sort_time)
    +            VALUES(8, 'http://item', 'title', 'ptitle', 'psnippet', 1, 0, 1, 0, 0)
    +                """.trimIndent()
    +            )
    +        }
    +
    +        db = testHelper.runMigrationsAndValidate(dbName, 14, true, MIGRATION_13_14)
    +
    +        db.query(
    +            """
    +            SELECT open_articles_with FROM feeds
    +            """.trimIndent()
    +        )!!.use {
    +            assert(it.count == 1)
    +            assert(it.moveToFirst())
    +            assertEquals(0L, it.getLong(0))
    +        }
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom7To8.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom7To8.kt
    new file mode 100644
    index 0000000..299c9b3
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom7To8.kt
    @@ -0,0 +1,53 @@
    +package com.nononsenseapps.feeder.db.room
    +
    +import androidx.room.testing.MigrationTestHelper
    +import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.LargeTest
    +import androidx.test.platform.app.InstrumentationRegistry
    +import org.junit.Assert.assertEquals
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +
    +@RunWith(AndroidJUnit4::class)
    +@LargeTest
    +class MigrationFrom7To8 {
    +    private val dbName = "testDb"
    +
    +    @Rule
    +    @JvmField
    +    val testHelper: MigrationTestHelper = MigrationTestHelper(
    +        InstrumentationRegistry.getInstrumentation(),
    +        AppDatabase::class.java.canonicalName,
    +        FrameworkSQLiteOpenHelperFactory()
    +    )
    +
    +    @Test
    +    fun migrate7to8() {
    +        var db = testHelper.createDatabase(dbName, 7)
    +
    +        db.use {
    +            db.execSQL(
    +                """
    +            INSERT INTO feeds(title, url, custom_title, tag, notify)
    +            VALUES('feed', 'http://url', '', '', 0)
    +                """.trimIndent()
    +            )
    +        }
    +
    +        db = testHelper.runMigrationsAndValidate(dbName, 8, true, MIGRATION_7_8)
    +
    +        db.query(
    +            """
    +            SELECT title, url, last_sync FROM feeds
    +            """.trimIndent()
    +        )!!.use {
    +            assert(it.count == 1)
    +            assert(it.moveToFirst())
    +            assertEquals("feed", it.getString(0))
    +            assertEquals("http://url", it.getString(1))
    +            assertEquals(0L, it.getLong(2))
    +        }
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom8To9.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom8To9.kt
    new file mode 100644
    index 0000000..ecebcf2
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom8To9.kt
    @@ -0,0 +1,53 @@
    +package com.nononsenseapps.feeder.db.room
    +
    +import androidx.room.testing.MigrationTestHelper
    +import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.LargeTest
    +import androidx.test.platform.app.InstrumentationRegistry
    +import org.junit.Assert.assertEquals
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +
    +@RunWith(AndroidJUnit4::class)
    +@LargeTest
    +class MigrationFrom8To9 {
    +    private val dbName = "testDb"
    +
    +    @Rule
    +    @JvmField
    +    val testHelper: MigrationTestHelper = MigrationTestHelper(
    +        InstrumentationRegistry.getInstrumentation(),
    +        AppDatabase::class.java.canonicalName,
    +        FrameworkSQLiteOpenHelperFactory()
    +    )
    +
    +    @Test
    +    fun migrate8to9() {
    +        var db = testHelper.createDatabase(dbName, 8)
    +
    +        db.use {
    +            db.execSQL(
    +                """
    +            INSERT INTO feeds(title, url, custom_title, tag, notify, last_sync)
    +            VALUES('feed', 'http://url', '', '', 0, 0)
    +                """.trimIndent()
    +            )
    +        }
    +
    +        db = testHelper.runMigrationsAndValidate(dbName, 9, true, MIGRATION_8_9)
    +
    +        db.query(
    +            """
    +            SELECT title, url, response_hash FROM feeds
    +            """.trimIndent()
    +        )!!.use {
    +            assert(it.count == 1)
    +            assert(it.moveToFirst())
    +            assertEquals("feed", it.getString(0))
    +            assertEquals("http://url", it.getString(1))
    +            assertEquals(0L, it.getLong(2))
    +        }
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom9To10.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom9To10.kt
    new file mode 100644
    index 0000000..fb84d4b
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFrom9To10.kt
    @@ -0,0 +1,88 @@
    +package com.nononsenseapps.feeder.db.room
    +
    +import androidx.room.testing.MigrationTestHelper
    +import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
    +import androidx.test.core.app.ApplicationProvider
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.LargeTest
    +import androidx.test.platform.app.InstrumentationRegistry
    +import com.nononsenseapps.feeder.FeederApplication
    +import com.nononsenseapps.feeder.blob.blobInputStream
    +import kotlinx.coroutines.ExperimentalCoroutinesApi
    +import kotlinx.coroutines.FlowPreview
    +import org.junit.Assert.assertEquals
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +
    +@ExperimentalCoroutinesApi
    +@FlowPreview
    +@RunWith(AndroidJUnit4::class)
    +@LargeTest
    +class MigrationFrom9To10 {
    +    private val dbName = "testDb"
    +
    +    @Rule
    +    @JvmField
    +    val testHelper: MigrationTestHelper = MigrationTestHelper(
    +        InstrumentationRegistry.getInstrumentation(),
    +        AppDatabase::class.java.canonicalName,
    +        FrameworkSQLiteOpenHelperFactory()
    +    )
    +
    +    @Test
    +    fun migrate9to10() {
    +        var db = testHelper.createDatabase(dbName, 9)
    +
    +        db.use {
    +            db.execSQL(
    +                """
    +            INSERT INTO feeds(id, title, url, custom_title, tag, notify, last_sync, response_hash)
    +            VALUES(1, 'feed', 'http://url', '', '', 0, 0, 666)
    +                """.trimIndent()
    +            )
    +
    +            db.execSQL(
    +                """
    +            INSERT INTO feed_items(id, guid, title, plain_title, plain_snippet, unread, notified, feed_id, description)
    +            VALUES(8, 'http://item', 'title', 'ptitle', 'psnippet', 1, 0, 1, '$bigBody')
    +                """.trimIndent()
    +            )
    +        }
    +
    +        db = testHelper.runMigrationsAndValidate(dbName, 10, true, MIGRATION_9_10)
    +
    +        db.query(
    +            """
    +            SELECT response_hash FROM feeds WHERE id IS 1
    +            """.trimIndent()
    +        )!!.use {
    +            assert(it.count == 1)
    +            assert(it.moveToFirst())
    +            assertEquals(0L, it.getLong(0))
    +        }
    +
    +        db.query(
    +            """
    +            SELECT id, title FROM feed_items
    +            """.trimIndent()
    +        )!!.use {
    +            assert(it.count == 1)
    +            assert(it.moveToFirst())
    +            assertEquals(8L, it.getLong(0))
    +            assertEquals("title", it.getString(1))
    +        }
    +
    +        blobInputStream(
    +            itemId = 8,
    +            filesDir = ApplicationProvider.getApplicationContext().filesDir
    +        ).bufferedReader().useLines {
    +            val lines = it.toList()
    +            assertEquals(1, lines.size)
    +            assertEquals(bigBody.take(999_999), lines.first())
    +        }
    +    }
    +
    +    // 4MB field
    +    private val bigBody: String = "a".repeat(4 * 1024 * 1024)
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFromLegacy5ToLatest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFromLegacy5ToLatest.kt
    new file mode 100644
    index 0000000..304017a
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFromLegacy5ToLatest.kt
    @@ -0,0 +1,297 @@
    +package com.nononsenseapps.feeder.db.room
    +
    +import androidx.room.Room
    +import androidx.room.testing.MigrationTestHelper
    +import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
    +import androidx.test.core.app.ApplicationProvider.getApplicationContext
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.LargeTest
    +import androidx.test.platform.app.InstrumentationRegistry
    +import com.nononsenseapps.feeder.FeederApplication
    +import com.nononsenseapps.feeder.db.legacy.COL_AUTHOR
    +import com.nononsenseapps.feeder.db.legacy.COL_CUSTOM_TITLE
    +import com.nononsenseapps.feeder.db.legacy.COL_DESCRIPTION
    +import com.nononsenseapps.feeder.db.legacy.COL_ENCLOSURELINK
    +import com.nononsenseapps.feeder.db.legacy.COL_FEED
    +import com.nononsenseapps.feeder.db.legacy.COL_FEEDTITLE
    +import com.nononsenseapps.feeder.db.legacy.COL_FEEDURL
    +import com.nononsenseapps.feeder.db.legacy.COL_GUID
    +import com.nononsenseapps.feeder.db.legacy.COL_ID
    +import com.nononsenseapps.feeder.db.legacy.COL_IMAGEURL
    +import com.nononsenseapps.feeder.db.legacy.COL_LINK
    +import com.nononsenseapps.feeder.db.legacy.COL_NOTIFIED
    +import com.nononsenseapps.feeder.db.legacy.COL_NOTIFY
    +import com.nononsenseapps.feeder.db.legacy.COL_PLAINSNIPPET
    +import com.nononsenseapps.feeder.db.legacy.COL_PLAINTITLE
    +import com.nononsenseapps.feeder.db.legacy.COL_PUBDATE
    +import com.nononsenseapps.feeder.db.legacy.COL_TAG
    +import com.nononsenseapps.feeder.db.legacy.COL_TITLE
    +import com.nononsenseapps.feeder.db.legacy.COL_UNREAD
    +import com.nononsenseapps.feeder.db.legacy.COL_URL
    +import com.nononsenseapps.feeder.db.legacy.CREATE_FEED_ITEM_TABLE
    +import com.nononsenseapps.feeder.db.legacy.CREATE_TAGS_VIEW
    +import com.nononsenseapps.feeder.db.legacy.CREATE_TAG_TRIGGER
    +import com.nononsenseapps.feeder.db.legacy.FEED_ITEM_TABLE_NAME
    +import com.nononsenseapps.feeder.db.legacy.FEED_TABLE_NAME
    +import com.nononsenseapps.feeder.db.legacy.LegacyDatabaseHandler
    +import com.nononsenseapps.feeder.util.contentValues
    +import com.nononsenseapps.feeder.util.setInt
    +import com.nononsenseapps.feeder.util.setLong
    +import com.nononsenseapps.feeder.util.setString
    +import kotlinx.coroutines.runBlocking
    +import org.junit.After
    +import org.junit.Assert.assertEquals
    +import org.junit.Assert.assertFalse
    +import org.junit.Assert.assertNull
    +import org.junit.Assert.assertTrue
    +import org.junit.Before
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +import org.threeten.bp.Instant
    +import org.threeten.bp.ZoneOffset
    +import org.threeten.bp.ZonedDateTime
    +import java.net.URL
    +
    +@RunWith(AndroidJUnit4::class)
    +@LargeTest
    +class MigrationFromLegacy5ToLatest {
    +
    +    private val feederApplication: FeederApplication = getApplicationContext()
    +
    +    @Rule
    +    @JvmField
    +    val testHelper: MigrationTestHelper = MigrationTestHelper(
    +        InstrumentationRegistry.getInstrumentation(),
    +        AppDatabase::class.java.canonicalName,
    +        FrameworkSQLiteOpenHelperFactory()
    +    )
    +
    +    private val testDbName = "TestingDatabase"
    +
    +    private val legacyDb: LegacyDatabaseHandler
    +        get() = LegacyDatabaseHandler(
    +            context = feederApplication,
    +            name = testDbName,
    +            version = 5
    +        )
    +
    +    private val roomDb: AppDatabase
    +        get() =
    +            Room.databaseBuilder(
    +                feederApplication,
    +                AppDatabase::class.java,
    +                testDbName
    +            )
    +                .addMigrations(*allMigrations)
    +                .build().also { testHelper.closeWhenFinished(it) }
    +
    +    @Before
    +    fun setup() {
    +        legacyDb.writableDatabase.use { db ->
    +            db.execSQL(
    +                """
    +                CREATE TABLE $FEED_TABLE_NAME (
    +                  $COL_ID INTEGER PRIMARY KEY,
    +                  $COL_TITLE TEXT NOT NULL,
    +                  $COL_CUSTOM_TITLE TEXT NOT NULL,
    +                  $COL_URL TEXT NOT NULL,
    +                  $COL_TAG TEXT NOT NULL DEFAULT '',
    +                  $COL_NOTIFY INTEGER NOT NULL DEFAULT 0,
    +                  UNIQUE($COL_URL) ON CONFLICT REPLACE
    +                )"""
    +            )
    +            db.execSQL(CREATE_FEED_ITEM_TABLE)
    +            db.execSQL(CREATE_TAG_TRIGGER)
    +            db.execSQL(
    +                """
    +                CREATE TEMP VIEW IF NOT EXISTS WithUnreadCount
    +                AS SELECT $COL_ID, $COL_TITLE, $COL_URL, $COL_TAG, $COL_CUSTOM_TITLE, $COL_NOTIFY, "unreadcount"
    +                   FROM $FEED_TABLE_NAME
    +                   LEFT JOIN (SELECT COUNT(1) AS ${"unreadcount"}, $COL_FEED
    +                     FROM $FEED_ITEM_TABLE_NAME
    +                     WHERE $COL_UNREAD IS 1
    +                     GROUP BY $COL_FEED)
    +                   ON $FEED_TABLE_NAME.$COL_ID = $COL_FEED"""
    +            )
    +            db.execSQL(CREATE_TAGS_VIEW)
    +
    +            // Bare minimum non-null feeds
    +            val idA = db.insert(
    +                FEED_TABLE_NAME, null,
    +                contentValues {
    +                    setString(COL_TITLE to "feedA")
    +                    setString(COL_CUSTOM_TITLE to "feedACustom")
    +                    setString(COL_URL to "https://feedA")
    +                    setString(COL_TAG to "")
    +                }
    +            )
    +
    +            // All fields filled
    +            val idB = db.insert(
    +                FEED_TABLE_NAME, null,
    +                contentValues {
    +                    setString(COL_TITLE to "feedB")
    +                    setString(COL_CUSTOM_TITLE to "feedBCustom")
    +                    setString(COL_URL to "https://feedB")
    +                    setString(COL_TAG to "tag")
    +                    setInt(COL_NOTIFY to 1)
    +                }
    +            )
    +
    +            IntRange(0, 1).forEach { index ->
    +                db.insert(
    +                    FEED_ITEM_TABLE_NAME, null,
    +                    contentValues {
    +                        setLong(COL_FEED to idA)
    +                        setString(COL_GUID to "guid$index")
    +                        setString(COL_TITLE to "title$index")
    +                        setString(COL_DESCRIPTION to "desc$index")
    +                        setString(COL_PLAINTITLE to "plain$index")
    +                        setString(COL_PLAINSNIPPET to "snippet$index")
    +                        setString(COL_FEEDTITLE to "feedA")
    +                        setString(COL_FEEDURL to "https://feedA")
    +                        setString(COL_TAG to "")
    +                    }
    +                )
    +
    +                db.insert(
    +                    FEED_ITEM_TABLE_NAME, null,
    +                    contentValues {
    +                        setLong(COL_FEED to idB)
    +                        setString(COL_GUID to "guid$index")
    +                        setString(COL_TITLE to "title$index")
    +                        setString(COL_DESCRIPTION to "desc$index")
    +                        setString(COL_PLAINTITLE to "plain$index")
    +                        setString(COL_PLAINSNIPPET to "snippet$index")
    +                        setString(COL_FEEDTITLE to "feedB")
    +                        setString(COL_FEEDURL to "https://feedB")
    +                        setString(COL_TAG to "tag")
    +                        setInt(COL_NOTIFIED to 1)
    +                        setInt(COL_UNREAD to 0)
    +                        setString(COL_AUTHOR to "author$index")
    +                        setString(COL_ENCLOSURELINK to "https://enclosure$index")
    +                        setString(COL_IMAGEURL to "https://image$index")
    +                        setString(COL_PUBDATE to "2018-02-03T04:05:00Z")
    +                        setString(COL_LINK to "https://link$index")
    +                    }
    +                )
    +            }
    +        }
    +    }
    +
    +    @After
    +    fun tearDown() {
    +        assertTrue(feederApplication.deleteDatabase(testDbName))
    +    }
    +
    +    @Test
    +    fun legacyMigrationTo7MinimalFeed() = runBlocking {
    +        testHelper.runMigrationsAndValidate(
    +            testDbName, 7, true,
    +            MIGRATION_5_7, MIGRATION_7_8
    +        )
    +
    +        roomDb.let { db ->
    +            val feeds = db.feedDao().loadFeeds()
    +
    +            assertEquals("Wrong number of feeds", 2, feeds.size)
    +
    +            val feedA = feeds[0]
    +
    +            assertEquals("feedA", feedA.title)
    +            assertEquals("feedACustom", feedA.customTitle)
    +            assertEquals(URL("https://feedA"), feedA.url)
    +            assertEquals("", feedA.tag)
    +            assertEquals(Instant.EPOCH, feedA.lastSync)
    +            assertFalse(feedA.notify)
    +            assertNull(feedA.imageUrl)
    +        }
    +    }
    +
    +    @Test
    +    fun legacyMigrationTo7CompleteFeed() = runBlocking {
    +        testHelper.runMigrationsAndValidate(
    +            testDbName, 7, true,
    +            MIGRATION_5_7, MIGRATION_7_8
    +        )
    +
    +        roomDb.let { db ->
    +            val feeds = db.feedDao().loadFeeds()
    +
    +            assertEquals("Wrong number of feeds", 2, feeds.size)
    +
    +            val feedB = feeds[1]
    +
    +            assertEquals("feedB", feedB.title)
    +            assertEquals("feedBCustom", feedB.customTitle)
    +            assertEquals(URL("https://feedB"), feedB.url)
    +            assertEquals("tag", feedB.tag)
    +            assertEquals(Instant.EPOCH, feedB.lastSync)
    +            assertTrue(feedB.notify)
    +            assertNull(feedB.imageUrl)
    +        }
    +    }
    +
    +    @Test
    +    fun legacyMigrationTo7MinimalFeedItem() = runBlocking {
    +        testHelper.runMigrationsAndValidate(
    +            testDbName, 7, true,
    +            MIGRATION_5_7, MIGRATION_7_8
    +        )
    +
    +        roomDb.let { db ->
    +            val feed = db.feedDao().loadFeeds()[0]
    +            assertEquals("feedA", feed.title)
    +            val items = db.feedItemDao().loadFeedItemsInFeedDesc(feedId = feed.id)
    +
    +            assertEquals(2, items.size)
    +
    +            items.forEachIndexed { index, it ->
    +                assertEquals(feed.id, it.feedId)
    +                assertEquals("guid$index", it.guid)
    +                assertEquals("title$index", it.title)
    +                assertEquals("plain$index", it.plainTitle)
    +                assertEquals("snippet$index", it.plainSnippet)
    +                assertTrue(it.unread)
    +                assertNull(it.author)
    +                assertNull(it.enclosureLink)
    +                assertNull(it.imageUrl)
    +                assertNull(it.pubDate)
    +                assertNull(it.link)
    +                assertFalse(it.notified)
    +            }
    +        }
    +    }
    +
    +    @Test
    +    fun legacyMigrationTo7CompleteFeedItem() = runBlocking {
    +        testHelper.runMigrationsAndValidate(
    +            testDbName, 7, true,
    +            MIGRATION_5_7, MIGRATION_7_8
    +        )
    +
    +        roomDb.let { db ->
    +            val feed = db.feedDao().loadFeeds()[1]
    +            assertEquals("feedB", feed.title)
    +            val items = db.feedItemDao().loadFeedItemsInFeedDesc(feedId = feed.id)
    +
    +            assertEquals(2, items.size)
    +
    +            items.forEachIndexed { index, it ->
    +                assertEquals(feed.id, it.feedId)
    +                assertEquals("guid$index", it.guid)
    +                assertEquals("title$index", it.title)
    +                assertEquals("plain$index", it.plainTitle)
    +                assertEquals("snippet$index", it.plainSnippet)
    +                assertFalse(it.unread)
    +                assertEquals("author$index", it.author)
    +                assertEquals("https://enclosure$index", it.enclosureLink)
    +                assertEquals("https://image$index", it.imageUrl)
    +                assertEquals(ZonedDateTime.of(2018, 2, 3, 4, 5, 0, 0, ZoneOffset.UTC), it.pubDate)
    +                assertEquals("https://link$index", it.link)
    +                assertTrue(it.notified)
    +            }
    +        }
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFromLegacy6ToLatest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFromLegacy6ToLatest.kt
    new file mode 100644
    index 0000000..679ab57
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/db/room/MigrationFromLegacy6ToLatest.kt
    @@ -0,0 +1,274 @@
    +package com.nononsenseapps.feeder.db.room
    +
    +import androidx.room.Room
    +import androidx.room.testing.MigrationTestHelper
    +import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
    +import androidx.test.core.app.ApplicationProvider.getApplicationContext
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.LargeTest
    +import androidx.test.platform.app.InstrumentationRegistry
    +import com.nononsenseapps.feeder.FeederApplication
    +import com.nononsenseapps.feeder.db.legacy.COL_AUTHOR
    +import com.nononsenseapps.feeder.db.legacy.COL_CUSTOM_TITLE
    +import com.nononsenseapps.feeder.db.legacy.COL_DESCRIPTION
    +import com.nononsenseapps.feeder.db.legacy.COL_ENCLOSURELINK
    +import com.nononsenseapps.feeder.db.legacy.COL_FEED
    +import com.nononsenseapps.feeder.db.legacy.COL_FEEDTITLE
    +import com.nononsenseapps.feeder.db.legacy.COL_FEEDURL
    +import com.nononsenseapps.feeder.db.legacy.COL_GUID
    +import com.nononsenseapps.feeder.db.legacy.COL_IMAGEURL
    +import com.nononsenseapps.feeder.db.legacy.COL_LINK
    +import com.nononsenseapps.feeder.db.legacy.COL_NOTIFIED
    +import com.nononsenseapps.feeder.db.legacy.COL_NOTIFY
    +import com.nononsenseapps.feeder.db.legacy.COL_PLAINSNIPPET
    +import com.nononsenseapps.feeder.db.legacy.COL_PLAINTITLE
    +import com.nononsenseapps.feeder.db.legacy.COL_PUBDATE
    +import com.nononsenseapps.feeder.db.legacy.COL_TAG
    +import com.nononsenseapps.feeder.db.legacy.COL_TITLE
    +import com.nononsenseapps.feeder.db.legacy.COL_UNREAD
    +import com.nononsenseapps.feeder.db.legacy.COL_URL
    +import com.nononsenseapps.feeder.db.legacy.CREATE_FEED_ITEM_TABLE
    +import com.nononsenseapps.feeder.db.legacy.CREATE_FEED_TABLE
    +import com.nononsenseapps.feeder.db.legacy.FEED_ITEM_TABLE_NAME
    +import com.nononsenseapps.feeder.db.legacy.FEED_TABLE_NAME
    +import com.nononsenseapps.feeder.db.legacy.LegacyDatabaseHandler
    +import com.nononsenseapps.feeder.db.legacy.createViewsAndTriggers
    +import com.nononsenseapps.feeder.util.contentValues
    +import com.nononsenseapps.feeder.util.setInt
    +import com.nononsenseapps.feeder.util.setLong
    +import com.nononsenseapps.feeder.util.setString
    +import kotlinx.coroutines.runBlocking
    +import org.junit.After
    +import org.junit.Assert.assertEquals
    +import org.junit.Assert.assertFalse
    +import org.junit.Assert.assertNull
    +import org.junit.Assert.assertTrue
    +import org.junit.Before
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +import org.threeten.bp.Instant
    +import org.threeten.bp.ZoneOffset
    +import org.threeten.bp.ZonedDateTime
    +import java.net.URL
    +
    +@RunWith(AndroidJUnit4::class)
    +@LargeTest
    +class MigrationFromLegacy6ToLatest {
    +
    +    private val feederApplication: FeederApplication = getApplicationContext()
    +
    +    @Rule
    +    @JvmField
    +    val testHelper: MigrationTestHelper = MigrationTestHelper(
    +        InstrumentationRegistry.getInstrumentation(),
    +        AppDatabase::class.java.canonicalName,
    +        FrameworkSQLiteOpenHelperFactory()
    +    )
    +
    +    private val testDbName = "TestingDatabase"
    +
    +    private val legacyDb: LegacyDatabaseHandler
    +        get() = LegacyDatabaseHandler(
    +            context = feederApplication,
    +            name = testDbName,
    +            version = 6
    +        )
    +
    +    private val roomDb: AppDatabase
    +        get() =
    +            Room.databaseBuilder(
    +                feederApplication,
    +                AppDatabase::class.java,
    +                testDbName
    +            )
    +                .addMigrations(*allMigrations)
    +                .build().also { testHelper.closeWhenFinished(it) }
    +
    +    @Before
    +    fun setup() {
    +        legacyDb.writableDatabase.use { db ->
    +            db.execSQL(CREATE_FEED_TABLE)
    +            db.execSQL(CREATE_FEED_ITEM_TABLE)
    +            createViewsAndTriggers(db)
    +
    +            // Bare minimum non-null feeds
    +            val idA = db.insert(
    +                FEED_TABLE_NAME, null,
    +                contentValues {
    +                    setString(COL_TITLE to "feedA")
    +                    setString(COL_CUSTOM_TITLE to "feedACustom")
    +                    setString(COL_URL to "https://feedA")
    +                    setString(COL_TAG to "")
    +                }
    +            )
    +
    +            // All fields filled
    +            val idB = db.insert(
    +                FEED_TABLE_NAME, null,
    +                contentValues {
    +                    setString(COL_TITLE to "feedB")
    +                    setString(COL_CUSTOM_TITLE to "feedBCustom")
    +                    setString(COL_URL to "https://feedB")
    +                    setString(COL_TAG to "tag")
    +                    setString(COL_IMAGEURL to "https://image")
    +                    setInt(COL_NOTIFY to 1)
    +                }
    +            )
    +
    +            IntRange(0, 1).forEach { index ->
    +                db.insert(
    +                    FEED_ITEM_TABLE_NAME, null,
    +                    contentValues {
    +                        setLong(COL_FEED to idA)
    +                        setString(COL_GUID to "guid$index")
    +                        setString(COL_TITLE to "title$index")
    +                        setString(COL_DESCRIPTION to "desc$index")
    +                        setString(COL_PLAINTITLE to "plain$index")
    +                        setString(COL_PLAINSNIPPET to "snippet$index")
    +                        setString(COL_FEEDTITLE to "feedA")
    +                        setString(COL_FEEDURL to "https://feedA")
    +                        setString(COL_TAG to "")
    +                    }
    +                )
    +
    +                db.insert(
    +                    FEED_ITEM_TABLE_NAME, null,
    +                    contentValues {
    +                        setLong(COL_FEED to idB)
    +                        setString(COL_GUID to "guid$index")
    +                        setString(COL_TITLE to "title$index")
    +                        setString(COL_DESCRIPTION to "desc$index")
    +                        setString(COL_PLAINTITLE to "plain$index")
    +                        setString(COL_PLAINSNIPPET to "snippet$index")
    +                        setString(COL_FEEDTITLE to "feedB")
    +                        setString(COL_FEEDURL to "https://feedB")
    +                        setString(COL_TAG to "tag")
    +                        setInt(COL_NOTIFIED to 1)
    +                        setInt(COL_UNREAD to 0)
    +                        setString(COL_AUTHOR to "author$index")
    +                        setString(COL_ENCLOSURELINK to "https://enclosure$index")
    +                        setString(COL_IMAGEURL to "https://image$index")
    +                        setString(COL_PUBDATE to "2018-02-03T04:05:00Z")
    +                        setString(COL_LINK to "https://link$index")
    +                    }
    +                )
    +            }
    +        }
    +    }
    +
    +    @After
    +    fun tearDown() {
    +        assertTrue(feederApplication.deleteDatabase(testDbName))
    +    }
    +
    +    @Test
    +    fun legacyMigrationTo7MinimalFeed() = runBlocking {
    +        testHelper.runMigrationsAndValidate(
    +            testDbName, 7, true,
    +            MIGRATION_6_7
    +        )
    +
    +        roomDb.let { db ->
    +            val feeds = db.feedDao().loadFeeds()
    +
    +            assertEquals("Wrong number of feeds", 2, feeds.size)
    +
    +            val feedA = feeds[0]
    +
    +            assertEquals("feedA", feedA.title)
    +            assertEquals("feedACustom", feedA.customTitle)
    +            assertEquals(URL("https://feedA"), feedA.url)
    +            assertEquals("", feedA.tag)
    +            assertEquals(Instant.EPOCH, feedA.lastSync)
    +            assertFalse(feedA.notify)
    +            assertNull(feedA.imageUrl)
    +        }
    +    }
    +
    +    @Test
    +    fun legacyMigrationTo7CompleteFeed() = runBlocking {
    +        testHelper.runMigrationsAndValidate(
    +            testDbName, 7, true,
    +            MIGRATION_6_7
    +        )
    +
    +        roomDb.let { db ->
    +            val feeds = db.feedDao().loadFeeds()
    +
    +            assertEquals("Wrong number of feeds", 2, feeds.size)
    +
    +            val feedB = feeds[1]
    +
    +            assertEquals("feedB", feedB.title)
    +            assertEquals("feedBCustom", feedB.customTitle)
    +            assertEquals(URL("https://feedB"), feedB.url)
    +            assertEquals("tag", feedB.tag)
    +            assertEquals(Instant.EPOCH, feedB.lastSync)
    +            assertTrue(feedB.notify)
    +            assertEquals(URL("https://image"), feedB.imageUrl)
    +        }
    +    }
    +
    +    @Test
    +    fun legacyMigrationTo7MinimalFeedItem() = runBlocking {
    +        testHelper.runMigrationsAndValidate(
    +            testDbName, 7, true,
    +            MIGRATION_6_7
    +        )
    +
    +        roomDb.let { db ->
    +            val feed = db.feedDao().loadFeeds()[0]
    +            assertEquals("feedA", feed.title)
    +            val items = db.feedItemDao().loadFeedItemsInFeedDesc(feedId = feed.id)
    +
    +            assertEquals(2, items.size)
    +
    +            items.forEachIndexed { index, it ->
    +                assertEquals(feed.id, it.feedId)
    +                assertEquals("guid$index", it.guid)
    +                assertEquals("title$index", it.title)
    +                assertEquals("plain$index", it.plainTitle)
    +                assertEquals("snippet$index", it.plainSnippet)
    +                assertTrue(it.unread)
    +                assertNull(it.author)
    +                assertNull(it.enclosureLink)
    +                assertNull(it.imageUrl)
    +                assertNull(it.pubDate)
    +                assertNull(it.link)
    +                assertFalse(it.notified)
    +            }
    +        }
    +    }
    +
    +    @Test
    +    fun legacyMigrationTo7CompleteFeedItem() = runBlocking {
    +        testHelper.runMigrationsAndValidate(
    +            testDbName, 7, true,
    +            MIGRATION_6_7
    +        )
    +
    +        roomDb.let { db ->
    +            val feed = db.feedDao().loadFeeds()[1]
    +            assertEquals("feedB", feed.title)
    +            val items = db.feedItemDao().loadFeedItemsInFeedDesc(feedId = feed.id)
    +
    +            assertEquals(2, items.size)
    +
    +            items.forEachIndexed { index, it ->
    +                assertEquals(feed.id, it.feedId)
    +                assertEquals("guid$index", it.guid)
    +                assertEquals("title$index", it.title)
    +                assertEquals("plain$index", it.plainTitle)
    +                assertEquals("snippet$index", it.plainSnippet)
    +                assertFalse(it.unread)
    +                assertEquals("author$index", it.author)
    +                assertEquals("https://enclosure$index", it.enclosureLink)
    +                assertEquals("https://image$index", it.imageUrl)
    +                assertEquals(ZonedDateTime.of(2018, 2, 3, 4, 5, 0, 0, ZoneOffset.UTC), it.pubDate)
    +                assertEquals("https://link$index", it.link)
    +                assertTrue(it.notified)
    +            }
    +        }
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/model/FeedItemViewModelTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/model/FeedItemViewModelTest.kt
    new file mode 100644
    index 0000000..1c45748
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/model/FeedItemViewModelTest.kt
    @@ -0,0 +1,256 @@
    +package com.nononsenseapps.feeder.model
    +
    +import android.content.Intent
    +import android.text.Spanned
    +import androidx.lifecycle.LiveData
    +import androidx.lifecycle.Observer
    +import androidx.test.core.app.ApplicationProvider.getApplicationContext
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.rule.ActivityTestRule
    +import com.nononsenseapps.feeder.base.KodeinAwareActivity
    +import com.nononsenseapps.feeder.db.room.Feed
    +import com.nononsenseapps.feeder.db.room.FeedItem
    +import com.nononsenseapps.feeder.db.room.ID_UNSET
    +import com.nononsenseapps.feeder.ui.FeedActivity
    +import com.nononsenseapps.feeder.ui.TestDatabaseRule
    +import com.nononsenseapps.feeder.util.ARG_ID
    +import io.mockk.clearMocks
    +import io.mockk.mockk
    +import io.mockk.verify
    +import kotlinx.coroutines.Dispatchers
    +import kotlinx.coroutines.runBlocking
    +import kotlinx.coroutines.withContext
    +import org.junit.Assert.assertEquals
    +import org.junit.Before
    +import org.junit.Ignore
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +import org.kodein.di.generic.instance
    +import java.net.URL
    +import kotlin.test.fail
    +
    +@RunWith(AndroidJUnit4::class)
    +class FeedItemViewModelTest {
    +    @get:Rule
    +    var activityRule: ActivityTestRule = ActivityTestRule(FeedActivity::class.java, false, false)
    +    @get:Rule
    +    val testDb = TestDatabaseRule(getApplicationContext())
    +
    +    private var feedId: Long = ID_UNSET
    +    private var itemId: Long = ID_UNSET
    +
    +    @Before
    +    fun initDb() = runBlocking {
    +        feedId = testDb.db.feedDao().insertFeed(
    +            Feed(
    +                title = "foo",
    +                url = URL("http://foo")
    +            )
    +        )
    +    }
    +
    +    @Test
    +    fun databaseLoadCallsOnChangeTwiceWhenImages() {
    +        val observer = mockk>(relaxed = true)
    +
    +        itemId = runBlocking {
    +            testDb.insertFeedItemWithBlob(
    +                FeedItem(
    +                    feedId = feedId,
    +                    guid = "foobar",
    +                    title = "title"
    +                ),
    +                description = "description img here"
    +            )
    +        }
    +
    +        activityRule.launchActivity(
    +            Intent().also {
    +                it.putExtra(ARG_ID, itemId)
    +            }
    +        )
    +
    +        runBlocking {
    +            withContext(Dispatchers.Main) {
    +                activityRule.activity.getLiveFeedItemImageText(itemId).observe(activityRule.activity, observer)
    +            }
    +
    +            verify(exactly = 3, timeout = 500) {
    +                observer.onChanged(any())
    +            }
    +        }
    +    }
    +
    +    @Test
    +    fun databaseLoadCallsOnChangeOnceWhenNoImages() {
    +        val observer = mockk>(relaxed = true)
    +
    +        itemId = runBlocking {
    +            testDb.insertFeedItemWithBlob(
    +                FeedItem(
    +                    feedId = feedId,
    +                    guid = "foobar",
    +                    title = "title"
    +                ),
    +                description = "description bold"
    +            )
    +        }
    +
    +        activityRule.launchActivity(
    +            Intent().also {
    +                it.putExtra(ARG_ID, itemId)
    +            }
    +        )
    +
    +        runBlocking {
    +            withContext(Dispatchers.Main) {
    +                activityRule.activity.getLiveFeedItemImageText(itemId).observe(activityRule.activity, observer)
    +            }
    +
    +            verify(exactly = 2, timeout = 500) {
    +                observer.onChanged(any())
    +            }
    +        }
    +    }
    +
    +    @Test
    +    fun databaseLoadCallsOnChangeNeverOnSyncAndNoUpdateOnBody() {
    +        val observer = mockk>(relaxed = true)
    +
    +        var item = FeedItem(
    +            feedId = feedId,
    +            guid = "foobar",
    +            title = "title"
    +        )
    +        val description = "description bold"
    +
    +        itemId = runBlocking {
    +            testDb.insertFeedItemWithBlob(item, description)
    +        }
    +        item = item.copy(id = itemId)
    +
    +        activityRule.launchActivity(
    +            Intent().also {
    +                it.putExtra(ARG_ID, itemId)
    +            }
    +        )
    +
    +        runBlocking {
    +            withContext(Dispatchers.Main) {
    +                activityRule.activity.getLiveFeedItemImageText(itemId).observe(activityRule.activity, observer)
    +            }
    +
    +            verify(exactly = 2, timeout = 500) {
    +                observer.onChanged(any())
    +            }
    +
    +            clearMocks(observer)
    +
    +            assertEquals(1, testDb.db.feedItemDao().updateFeedItem(item.copy(title = "updated title")))
    +
    +            verify(exactly = 0, timeout = 500) {
    +                observer.onChanged(any())
    +            }
    +        }
    +    }
    +
    +    @Test
    +    @Ignore("Not monitoring file")
    +    fun databaseLoadCallsOnChangeOnceOnSyncWithBodyUpdate() {
    +        val observer = mockk>(relaxed = true)
    +
    +        var item = FeedItem(
    +            feedId = feedId,
    +            guid = "foobar",
    +            title = "title"
    +        )
    +        val description = "description bold"
    +
    +        itemId = runBlocking {
    +            testDb.insertFeedItemWithBlob(item, description)
    +        }
    +        item = item.copy(id = itemId)
    +
    +        activityRule.launchActivity(
    +            Intent().also {
    +                it.putExtra(ARG_ID, itemId)
    +            }
    +        )
    +
    +        runBlocking {
    +            withContext(Dispatchers.Main) {
    +                activityRule.activity.getLiveFeedItemImageText(itemId).observe(activityRule.activity, observer)
    +            }
    +
    +            verify(exactly = 2, timeout = 500) {
    +                observer.onChanged(any())
    +            }
    +
    +            clearMocks(observer)
    +
    +            fail("Not monitoring changes to file")
    +            // assertEquals(1, testDb.db.feedItemDao().updateFeedItem(item.copy(description = "updated body")))
    +
    +//            verify(exactly = 1, timeout = 500) {
    +//                observer.onChanged(any())
    +//            }
    +        }
    +    }
    +
    +    @Test
    +    @Ignore("Not monitoring file")
    +    fun databaseLoadCallsOnChangeOnceOnSyncWithBodyUpdateWithImage() {
    +        val observer = mockk>(relaxed = true)
    +
    +        val item = FeedItem(
    +            feedId = feedId,
    +            guid = "foobar",
    +            title = "title"
    +        )
    +        val description = "description img here"
    +
    +        itemId = runBlocking {
    +            testDb.insertFeedItemWithBlob(item, description)
    +        }
    +
    +        activityRule.launchActivity(
    +            Intent().also {
    +                it.putExtra(ARG_ID, itemId)
    +            }
    +        )
    +
    +        runBlocking {
    +            withContext(Dispatchers.Main) {
    +                activityRule.activity.getLiveFeedItemImageText(itemId).observe(activityRule.activity, observer)
    +            }
    +
    +            verify(exactly = 2, timeout = 500) {
    +                observer.onChanged(any())
    +            }
    +
    +            clearMocks(observer)
    +
    +            fail("Not monitoring file")
    +            /*assertEquals(1, testDb.db.feedItemDao().updateFeedItem(item.copy(
    +                    id = itemId,
    +                    description = "updated img here")))*/
    +
    +//            verify(exactly = 1, timeout = 500) {
    +//                observer.onChanged(any())
    +//            }
    +        }
    +    }
    +}
    +
    +suspend fun KodeinAwareActivity.getLiveFeedItemImageText(id: Long): LiveData {
    +    val viewModel: FeedItemViewModel by instance()
    +    return viewModel.getLiveDefaultText(
    +        TextOptions(
    +            id,
    +            maxImageSize(),
    +            false
    +        ),
    +        null
    +    )
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/model/FeedsToSyncTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/model/FeedsToSyncTest.kt
    new file mode 100644
    index 0000000..c5f31af
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/model/FeedsToSyncTest.kt
    @@ -0,0 +1,110 @@
    +package com.nononsenseapps.feeder.model
    +
    +import androidx.test.core.app.ApplicationProvider.getApplicationContext
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import com.nononsenseapps.feeder.db.room.Feed
    +import com.nononsenseapps.feeder.db.room.ID_UNSET
    +import com.nononsenseapps.feeder.ui.TestDatabaseRule
    +import com.nononsenseapps.feeder.util.minusMinutes
    +import kotlinx.coroutines.runBlocking
    +import org.junit.Assert.assertEquals
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +import org.threeten.bp.Instant
    +import java.net.URL
    +
    +@RunWith(AndroidJUnit4::class)
    +class FeedsToSyncTest {
    +    @get:Rule
    +    val testDb = TestDatabaseRule(getApplicationContext())
    +
    +    @Test
    +    fun returnsStaleFeed() = runBlocking {
    +        // with stale feed
    +        val feed = withFeed()
    +
    +        // when
    +        val result = feedsToSync(testDb.db.feedDao(), feedId = feed.id, tag = "")
    +
    +        // then
    +        assertEquals(listOf(feed), result)
    +    }
    +
    +    @Test
    +    fun doesNotReturnFreshFeed() = runBlocking {
    +        val now = Instant.now()
    +        val feed = withFeed(lastSync = now.minusMinutes(1))
    +
    +        // when
    +        val result = feedsToSync(
    +            testDb.db.feedDao(), feedId = feed.id, tag = "",
    +            staleTime = now.minusMinutes(2).toEpochMilli()
    +        )
    +
    +        // then
    +        assertEquals(emptyList(), result)
    +    }
    +
    +    @Test
    +    fun returnsAllStaleFeeds() = runBlocking {
    +        val items = listOf(
    +            withFeed(url = URL("http://one")),
    +            withFeed(url = URL("http://two"))
    +        )
    +
    +        val result = feedsToSync(testDb.db.feedDao(), feedId = ID_UNSET, tag = "")
    +
    +        assertEquals(items, result)
    +    }
    +
    +    @Test
    +    fun doesNotReturnAllFreshFeeds() = runBlocking {
    +        val now = Instant.now()
    +        val items = listOf(
    +            withFeed(url = URL("http://one"), lastSync = now.minusMinutes(1)),
    +            withFeed(url = URL("http://two"), lastSync = now.minusMinutes(3))
    +        )
    +
    +        val result = feedsToSync(testDb.db.feedDao(), feedId = ID_UNSET, tag = "", staleTime = now.minusMinutes(2).toEpochMilli())
    +
    +        assertEquals(listOf(items[1]), result)
    +    }
    +
    +    @Test
    +    fun returnsTaggedStaleFeeds() = runBlocking {
    +        val items = listOf(
    +            withFeed(url = URL("http://one"), tag = "tag"),
    +            withFeed(url = URL("http://two"), tag = "tag")
    +        )
    +
    +        val result = feedsToSync(testDb.db.feedDao(), feedId = ID_UNSET, tag = "")
    +
    +        assertEquals(items, result)
    +    }
    +
    +    @Test
    +    fun doesNotReturnTaggedFreshFeeds() = runBlocking {
    +        val now = Instant.now()
    +        val items = listOf(
    +            withFeed(url = URL("http://one"), lastSync = now.minusMinutes(1), tag = "tag"),
    +            withFeed(url = URL("http://two"), lastSync = now.minusMinutes(3), tag = "tag")
    +        )
    +
    +        val result = feedsToSync(testDb.db.feedDao(), feedId = ID_UNSET, tag = "tag", staleTime = now.minusMinutes(2).toEpochMilli())
    +
    +        assertEquals(listOf(items[1]), result)
    +    }
    +
    +    private suspend fun withFeed(lastSync: Instant = Instant.ofEpochMilli(0), url: URL = URL("http://url"), tag: String = ""): Feed {
    +        val feed = Feed(
    +            lastSync = lastSync,
    +            url = url,
    +            tag = tag
    +        )
    +
    +        val id = testDb.db.feedDao().insertFeed(feed)
    +
    +        return feed.copy(id = id)
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/model/ModelTesting.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/model/ModelTesting.kt
    new file mode 100644
    index 0000000..73a6521
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/model/ModelTesting.kt
    @@ -0,0 +1,23 @@
    +package com.nononsenseapps.feeder.model
    +
    +import androidx.test.core.app.ApplicationProvider.getApplicationContext
    +import com.nononsenseapps.feeder.FeederApplication
    +import com.nononsenseapps.feeder.blob.blobOutputStream
    +import com.nononsenseapps.feeder.db.room.FeedItem
    +import com.nononsenseapps.feeder.ui.TestDatabaseRule
    +
    +suspend fun TestDatabaseRule.insertFeedItemWithBlob(
    +    feedItem: FeedItem,
    +    description: String
    +): Long {
    +    val feedItemId = db.feedItemDao().insertFeedItem(feedItem)
    +
    +    blobOutputStream(
    +        itemId = feedItemId,
    +        filesDir = getApplicationContext().filesDir
    +    ).bufferedWriter().use {
    +        it.write(description)
    +    }
    +
    +    return feedItemId
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/model/RssLocalSyncKtTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/model/RssLocalSyncKtTest.kt
    new file mode 100644
    index 0000000..fa25ea4
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/model/RssLocalSyncKtTest.kt
    @@ -0,0 +1,550 @@
    +package com.nononsenseapps.feeder.model
    +
    +import android.content.Context
    +import androidx.test.core.app.ApplicationProvider.getApplicationContext
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.MediumTest
    +import com.nononsenseapps.feeder.FeederApplication
    +import com.nononsenseapps.feeder.db.room.Feed
    +import com.nononsenseapps.feeder.db.room.ID_UNSET
    +import com.nononsenseapps.feeder.ui.TestDatabaseRule
    +import com.nononsenseapps.feeder.util.minusMinutes
    +import kotlinx.coroutines.ExperimentalCoroutinesApi
    +import kotlinx.coroutines.runBlocking
    +import okhttp3.mockwebserver.Dispatcher
    +import okhttp3.mockwebserver.MockResponse
    +import okhttp3.mockwebserver.MockWebServer
    +import okhttp3.mockwebserver.RecordedRequest
    +import org.junit.After
    +import org.junit.Assert.assertEquals
    +import org.junit.Assert.assertNotEquals
    +import org.junit.Assert.assertNotNull
    +import org.junit.Assert.assertTrue
    +import org.junit.Before
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +import org.kodein.di.android.closestKodein
    +import org.kodein.di.generic.instance
    +import org.threeten.bp.Instant
    +import java.io.InputStream
    +import java.net.URL
    +import java.util.concurrent.TimeUnit
    +import kotlin.test.assertTrue
    +
    +@ExperimentalCoroutinesApi
    +@RunWith(AndroidJUnit4::class)
    +@MediumTest
    +class RssLocalSyncKtTest {
    +    @get:Rule
    +    val testDb = TestDatabaseRule(getApplicationContext())
    +
    +    private val filesDir = getApplicationContext().filesDir
    +
    +    private val kodein by closestKodein(getApplicationContext() as Context)
    +
    +    val server = MockWebServer()
    +
    +    val responses = mutableMapOf()
    +
    +    @After
    +    fun stopServer() {
    +        server.shutdown()
    +    }
    +
    +    @Before
    +    fun setup() {
    +        server.start()
    +    }
    +
    +    suspend fun insertFeed(title: String, url: URL, raw: String, isJson: Boolean = true): Long {
    +        val id = testDb.db.feedDao().insertFeed(
    +            Feed(
    +                title = title,
    +                url = url,
    +                tag = ""
    +            )
    +        )
    +
    +        server.dispatcher = object: Dispatcher() {
    +            override fun dispatch(request: RecordedRequest): MockResponse {
    +                return responses.getOrDefault(request.requestUrl?.toUrl(), MockResponse().setResponseCode(404))
    +            }
    +        }
    +
    +        responses[url] = MockResponse().apply {
    +            setResponseCode(200)
    +            if (isJson) {
    +                setHeader("Content-Type", "application/json")
    +            }
    +            setBody(raw)
    +        }
    +
    +        return id
    +    }
    +
    +    @Test
    +    fun syncCowboyJsonWorks() = runBlocking {
    +        val cowboyJsonId = insertFeed(
    +            "cowboyjson", server.url("/feed.json").toUrl(),
    +            cowboyJson
    +        )
    +
    +        runBlocking {
    +            syncFeeds(
    +                kodein = kodein,
    +                filesDir = filesDir,
    +                feedId = cowboyJsonId
    +            )
    +        }
    +
    +        assertEquals(
    +            "Unexpected number of items in feed",
    +            10,
    +            testDb.db.feedItemDao().loadFeedItemsInFeedDesc(cowboyJsonId).size
    +        )
    +    }
    +
    +    @Test
    +    fun syncCowboyAtomWorks() = runBlocking {
    +        val cowboyAtomId = insertFeed(
    +            "cowboyatom", server.url("/atom.xml").toUrl(),
    +            cowboyAtom, isJson = false
    +        )
    +
    +        runBlocking {
    +            syncFeeds(
    +                kodein = kodein,
    +                filesDir = filesDir,
    +                feedId = cowboyAtomId
    +            )
    +        }
    +
    +        assertEquals(
    +            "Unexpected number of items in feed",
    +            15,
    +            testDb.db.feedItemDao().loadFeedItemsInFeedDesc(cowboyAtomId).size
    +        )
    +    }
    +
    +    @Test
    +    fun syncAllWorks() = runBlocking {
    +        val cowboyJsonId = insertFeed(
    +            "cowboyjson", server.url("/feed.json").toUrl(),
    +            cowboyJson
    +        )
    +        val cowboyAtomId = insertFeed(
    +            "cowboyatom", server.url("/atom.xml").toUrl(),
    +            cowboyAtom, isJson = false
    +        )
    +
    +        runBlocking {
    +            syncFeeds(
    +                kodein = kodein,
    +                filesDir = filesDir,
    +                feedId = ID_UNSET,
    +                parallel = true
    +            )
    +        }
    +
    +        assertEquals(
    +            "Unexpected number of items in feed",
    +            10,
    +            testDb.db.feedItemDao().loadFeedItemsInFeedDesc(cowboyJsonId).size
    +        )
    +
    +        assertEquals(
    +            "Unexpected number of items in feed",
    +            15,
    +            testDb.db.feedItemDao().loadFeedItemsInFeedDesc(cowboyAtomId).size
    +        )
    +    }
    +
    +    @Test
    +    fun responsesAreNotParsedUnlessFeedHashHasChanged() = runBlocking {
    +        val cowboyJsonId = insertFeed(
    +            "cowboyjson", server.url("/feed.json").toUrl(),
    +            cowboyJson
    +        )
    +
    +        runBlocking {
    +            syncFeeds(kodein = kodein, filesDir = filesDir, feedId = cowboyJsonId, forceNetwork = true)
    +            testDb.db.feedDao().loadFeed(cowboyJsonId)!!.let { feed ->
    +                assertTrue("Feed should have been synced", feed.lastSync.toEpochMilli() > 0)
    +                assertTrue("Feed should have a valid response hash", feed.responseHash > 0)
    +                // "Long time" ago, but not unset
    +                testDb.db.feedDao().updateFeed(feed.copy(lastSync = Instant.ofEpochMilli(999L)))
    +            }
    +            syncFeeds(kodein = kodein, filesDir = filesDir, feedId = cowboyJsonId, forceNetwork = true)
    +        }
    +
    +        assertEquals("Feed should have been fetched twice", 2, server.requestCount)
    +
    +        assertNotEquals(
    +            "Cached response should still have updated feed last sync",
    +            999L,
    +            testDb.db.feedDao().loadFeed(cowboyJsonId)!!.lastSync.toEpochMilli()
    +        )
    +    }
    +
    +    @Test
    +    fun feedsSyncedWithin15MinAreIgnored() = runBlocking {
    +        val cowboyJsonId = insertFeed(
    +            "cowboyjson", server.url("/feed.json").toUrl(),
    +            cowboyJson
    +        )
    +
    +        val fourteenMinsAgo = Instant.now().minusMinutes(14)
    +        runBlocking {
    +            syncFeeds(kodein = kodein, filesDir = filesDir, feedId = cowboyJsonId, forceNetwork = true)
    +            testDb.db.feedDao().loadFeed(cowboyJsonId)!!.let { feed ->
    +                assertTrue("Feed should have been synced", feed.lastSync.toEpochMilli() > 0)
    +                assertTrue("Feed should have a valid response hash", feed.responseHash > 0)
    +
    +                testDb.db.feedDao().updateFeed(feed.copy(lastSync = fourteenMinsAgo))
    +            }
    +            syncFeeds(
    +                kodein = kodein, filesDir = filesDir,
    +                feedId = cowboyJsonId, forceNetwork = false, minFeedAgeMinutes = 15
    +            )
    +        }
    +
    +        assertEquals(
    +            "Recently synced feed should not get a second network request",
    +            1, server.requestCount
    +        )
    +
    +        assertEquals(
    +            "Last sync should not have changed",
    +            fourteenMinsAgo,
    +            testDb.db.feedDao().loadFeed(cowboyJsonId)!!.lastSync
    +        )
    +    }
    +
    +    @Test
    +    fun feedsSyncedWithin15MinAreNotIgnoredWhenForcingNetwork() = runBlocking {
    +        val cowboyJsonId = insertFeed(
    +            "cowboyjson", server.url("/feed.json").toUrl(),
    +            cowboyJson
    +        )
    +
    +        val fourteenMinsAgo = Instant.now().minusMinutes(14)
    +        runBlocking {
    +            syncFeeds(kodein = kodein, filesDir = filesDir, feedId = cowboyJsonId, forceNetwork = true)
    +            testDb.db.feedDao().loadFeed(cowboyJsonId)!!.let { feed ->
    +                assertTrue("Feed should have been synced", feed.lastSync.toEpochMilli() > 0)
    +                assertTrue("Feed should have a valid response hash", feed.responseHash > 0)
    +
    +                testDb.db.feedDao().updateFeed(feed.copy(lastSync = fourteenMinsAgo))
    +            }
    +            syncFeeds(
    +                kodein = kodein, filesDir = filesDir,
    +                feedId = cowboyJsonId, forceNetwork = true, minFeedAgeMinutes = 15
    +            )
    +        }
    +
    +        assertEquals("Request should have been sent due to forced network", 2, server.requestCount)
    +
    +        assertNotEquals(
    +            "Last sync should have changed",
    +            fourteenMinsAgo,
    +            testDb.db.feedDao().loadFeed(cowboyJsonId)!!.lastSync
    +        )
    +    }
    +
    +    @Test
    +    fun feedShouldNotBeUpdatedIfRequestFails() = runBlocking {
    +        val response = MockResponse().also {
    +            it.setResponseCode(500)
    +        }
    +        server.enqueue(response)
    +
    +        val url = server.url("/feed.json")
    +
    +        val failingJsonId = testDb.db.feedDao().insertFeed(
    +            Feed(
    +                title = "failJson",
    +                url = URL("$url"),
    +                tag = ""
    +            )
    +        )
    +
    +        runBlocking {
    +            syncFeeds(kodein = kodein, filesDir = filesDir, feedId = failingJsonId)
    +        }
    +
    +        assertEquals(
    +            "Last sync should not have been updated",
    +            Instant.EPOCH,
    +            testDb.db.feedDao().loadFeed(failingJsonId)!!.lastSync
    +        )
    +
    +        // Assert the feed was retrieved
    +        assertEquals("/feed.json", server.takeRequest().path)
    +    }
    +
    +    @Test
    +    fun feedWithNoUniqueLinksGetsSomeGeneratedGUIDsFromTitles() = runBlocking {
    +        val response = MockResponse().also {
    +            it.setResponseCode(200)
    +            it.setBody(String(nixosRss.readBytes()))
    +        }
    +        server.enqueue(response)
    +
    +        val url = server.url("/news-rss.xml")
    +
    +        val feedId = testDb.db.feedDao().insertFeed(
    +            Feed(
    +                title = "NixOS",
    +                url = URL("$url"),
    +                tag = ""
    +            )
    +        )
    +
    +        runBlocking {
    +            syncFeeds(kodein = kodein, filesDir = filesDir, feedId = feedId)
    +        }
    +
    +        // Assert the feed was retrieved
    +        assertEquals("/news-rss.xml", server.takeRequest().path)
    +
    +        val items = testDb.db.feedItemDao().loadFeedItemsInFeedDesc(feedId)
    +        assertEquals(
    +            "Unique IDs should have been generated for items",
    +            99, items.size
    +        )
    +
    +        // Should be unique to item so that it stays the same after updates
    +        assertEquals(
    +            "Unexpected ID",
    +            "NixOS 18.09 released-NixOS 18.09 “Jellyfish” has been released, the tenth stable release branch. See the release notes for details. You can get NixOS 18.09 ISOs and VirtualBox appliances from the download page. For inform",
    +            items.first().guid
    +        )
    +    }
    +
    +    @Test
    +    fun feedWithNoDatesShouldGetSomeGenerated() = runBlocking {
    +        val response = MockResponse().also {
    +            it.setResponseCode(200)
    +            it.setBody(fooRss(2))
    +        }
    +        server.enqueue(response)
    +
    +        val url = server.url("/rss")
    +
    +        val feedId = testDb.db.feedDao().insertFeed(
    +            Feed(
    +                url = URL("$url")
    +            )
    +        )
    +
    +        val beforeSyncTime = Instant.now()
    +
    +        runBlocking {
    +            syncFeeds(kodein = kodein, filesDir = filesDir, feedId = feedId)
    +        }
    +
    +        // Assert the feed was retrieved
    +        assertEquals("/rss", server.takeRequest().path)
    +
    +        val items = testDb.db.feedItemDao().loadFeedItemsInFeedDesc(feedId)
    +
    +        assertNotNull(
    +            "Item should have gotten a pubDate generated",
    +            items[0].pubDate
    +        )
    +
    +        assertNotEquals(
    +            "Items should have distinct pubDates",
    +            items[0].pubDate, items[1].pubDate
    +        )
    +
    +        assertTrue(
    +            "The pubDate should be after 'before sync time'",
    +            items[0].pubDate!!.toInstant() > beforeSyncTime
    +        )
    +
    +        // Compare ID to compare insertion order (and thus pubdate compared to raw feed)
    +        assertTrue("The pubDates' magnitude should match descending iteration order") {
    +            items[0].guid == "https://foo.bar/1" &&
    +                items[1].guid == "https://foo.bar/2" &&
    +                items[0].pubDate!! > items[1].pubDate!!
    +        }
    +    }
    +
    +    @Test
    +    fun feedWithNoDatesShouldNotGetOverriddenDatesNextSync() = runBlocking {
    +        server.enqueue(
    +            MockResponse().also {
    +                it.setResponseCode(200)
    +                it.setBody(fooRss(1))
    +            }
    +        )
    +        server.enqueue(
    +            MockResponse().also {
    +                it.setResponseCode(200)
    +                it.setBody(fooRss(2))
    +            }
    +        )
    +
    +        val url = server.url("/rss")
    +
    +        val feedId = testDb.db.feedDao().insertFeed(
    +            Feed(
    +                url = URL("$url")
    +            )
    +        )
    +
    +        // Sync first time
    +        runBlocking {
    +            syncFeeds(kodein = kodein, filesDir = filesDir, feedId = feedId)
    +        }
    +
    +        // Assert the feed was retrieved
    +        assertEquals("/rss", server.takeRequest(100, TimeUnit.MILLISECONDS)!!.path)
    +
    +        val firstItem = testDb.db.feedItemDao().loadFeedItemsInFeedDesc(feedId).let { items ->
    +            assertNotNull(
    +                "Item should have gotten a pubDate generated",
    +                items[0].pubDate
    +            )
    +
    +            items[0]
    +        }
    +
    +        // Sync second time
    +        runBlocking {
    +            syncFeeds(kodein = kodein, filesDir = filesDir, feedId = feedId, forceNetwork = true)
    +        }
    +
    +        // Assert the feed was retrieved
    +        assertEquals("/rss", server.takeRequest(100, TimeUnit.MILLISECONDS)!!.path)
    +
    +        testDb.db.feedItemDao().loadFeedItemsInFeedDesc(feedId).let { items ->
    +            assertEquals(
    +                "Should be 2 items in feed",
    +                2, items.size
    +            )
    +
    +            val item = items.last()
    +
    +            assertEquals(
    +                "Making sure we are comparing the same item",
    +                firstItem.id, item.id
    +            )
    +
    +            assertEquals(
    +                "Pubdate should not have changed",
    +                firstItem.pubDate, item.pubDate
    +            )
    +        }
    +    }
    +
    +    @Test
    +    fun feedShouldNotBeCleanedToHaveLessItemsThanActualFeed() = runBlocking {
    +        val feedItemCount = 9
    +        server.enqueue(
    +            MockResponse().also {
    +                it.setResponseCode(200)
    +                it.setBody(fooRss(feedItemCount))
    +            }
    +        )
    +
    +        val url = server.url("/rss")
    +
    +        val feedId = testDb.db.feedDao().insertFeed(
    +            Feed(
    +                url = URL("$url")
    +            )
    +        )
    +
    +        val maxFeedItemCount = 5
    +
    +        // Sync first time
    +        runBlocking {
    +            syncFeeds(
    +                kodein = kodein, filesDir = filesDir,
    +                feedId = feedId,
    +                maxFeedItemCount = maxFeedItemCount
    +            )
    +        }
    +
    +        // Assert the feed was retrieved
    +        assertEquals("/rss", server.takeRequest(100, TimeUnit.MILLISECONDS)!!.path)
    +
    +        testDb.db.feedItemDao().loadFeedItemsInFeedDesc(feedId).let { items ->
    +            assertEquals(
    +                "Feed should have no less items than in the raw feed even if that's more than cleanup count",
    +                feedItemCount, items.size
    +            )
    +        }
    +    }
    +
    +    @Test
    +    fun slowResponseShouldBeOk() = runBlocking {
    +        val url = server.url("/atom.xml").toUrl()
    +        val cowboyAtomId = insertFeed("cowboy", url, cowboyAtom, isJson = false)
    +        responses[url]!!.throttleBody(1024 * 100, 29, TimeUnit.SECONDS)
    +
    +        runBlocking {
    +            syncFeeds(kodein = kodein, filesDir = filesDir, feedId = cowboyAtomId)
    +        }
    +
    +        assertEquals(
    +            "Feed should have been parsed from slow response",
    +            15,
    +            testDb.db.feedItemDao().loadFeedItemsInFeedDesc(cowboyAtomId).size
    +        )
    +    }
    +
    +    @Test
    +    fun verySlowResponseShouldBeCancelled() = runBlocking {
    +        val url = server.url("/atom.xml").toUrl()
    +        val cowboyAtomId = insertFeed("cowboy", url, cowboyAtom, isJson = false)
    +        responses[url]!!.throttleBody(1024 * 100, 31, TimeUnit.SECONDS)
    +
    +        runBlocking {
    +            syncFeeds(kodein = kodein, filesDir = filesDir, feedId = cowboyAtomId)
    +        }
    +
    +        assertEquals(
    +            "Feed should not have been parsed from extremely slow response",
    +            0,
    +            testDb.db.feedItemDao().loadFeedItemsInFeedDesc(cowboyAtomId).size
    +        )
    +    }
    +
    +    val nixosRss: InputStream
    +        get() = javaClass.getResourceAsStream("rss_nixos.xml")!!
    +
    +    val cowboyJson: String
    +        get() = String(javaClass.getResourceAsStream("cowboyprogrammer_feed.json")!!.use { it.readBytes() })
    +
    +    val cowboyAtom: String
    +        get() = String(javaClass.getResourceAsStream("cowboyprogrammer_atom.xml")!!.use { it.readBytes() })
    +
    +    fun fooRss(itemsCount: Int = 1): String {
    +        return """
    +                
    +                
    +                
    +                Foo Feed
    +                https://foo.bar
    +                ${
    +        (1..itemsCount).map {
    +            """
    +                
    +                  Foo Item $it
    +                  https://foo.bar/$it
    +                  Woop woop $it
    +                
    +            """.trimIndent()
    +        }.fold("") { acc, s ->
    +            "$acc\n$s"
    +        }
    +        }
    +                
    +                
    +        """.trimIndent()
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/model/RssNotificationsKtTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/model/RssNotificationsKtTest.kt
    new file mode 100644
    index 0000000..6158ea5
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/model/RssNotificationsKtTest.kt
    @@ -0,0 +1,78 @@
    +package com.nononsenseapps.feeder.model
    +
    +import android.content.Intent
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
    +import com.nononsenseapps.feeder.db.COL_LINK
    +import com.nononsenseapps.feeder.db.room.FeedItem
    +import org.junit.Assert.assertEquals
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +import kotlin.test.assertEquals
    +import kotlin.test.assertFalse
    +import kotlin.test.assertNull
    +
    +@RunWith(AndroidJUnit4::class)
    +class RssNotificationsKtTest {
    +    @Test
    +    fun openInBrowserIntentPointsToActivityWithIdAndLink() {
    +        val intent: Intent = getOpenInDefaultActivityIntent(getInstrumentation().context, 99, "http://foo")
    +
    +        assertEquals(
    +            "com.nononsenseapps.feeder.ui.OpenLinkInDefaultActivity",
    +            intent.component?.className
    +        )
    +        assertEquals("99", intent.data?.lastPathSegment)
    +        assertEquals("http://foo", intent.data?.getQueryParameter(COL_LINK))
    +    }
    +
    +    @Test
    +    fun openInDefaultActivityIntentsAreConsideredDifferentForSameItem() {
    +        val feedItem = FeedItem(
    +            id = 5,
    +            link = "http://foo",
    +            enclosureLink = "ftp://bar"
    +        )
    +
    +        val linkIntent = getOpenInDefaultActivityIntent(getInstrumentation().context, feedItem.id, link = feedItem.link)
    +        val enclosureIntent = getOpenInDefaultActivityIntent(getInstrumentation().context, feedItem.id, link = feedItem.enclosureLink)
    +        val markAsReadIntent = getOpenInDefaultActivityIntent(getInstrumentation().context, feedItem.id, link = null)
    +
    +        assertFalse(
    +            linkIntent.filterEquals(enclosureIntent),
    +            message = "linkIntent should not be considered equal to enclosureIntent"
    +        )
    +
    +        assertFalse(
    +            linkIntent.filterEquals(markAsReadIntent),
    +            message = "linkIntent should not be considered equal to markAsReadIntent"
    +        )
    +
    +        assertFalse(
    +            enclosureIntent.filterEquals(markAsReadIntent),
    +            message = "enclosureIntent should not be considered equal to markAsReadIntent"
    +        )
    +    }
    +
    +    @Test
    +    fun queryParameterDoesntGetGarbled() {
    +        val magnetLink = "magnet:?xt=urn:btih:82B1726F2D1B22F383A2B2CD6977B00F908FB315&dn=Crazy+Ex+Girlfriend+S04E10+720p+HDTV+x264+LucidTV&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.trackerfix.com%3A80%2Fannounce"
    +
    +        val enclosureIntent = getOpenInDefaultActivityIntent(getInstrumentation().context, 5, link = magnetLink)
    +
    +        assertEquals(
    +            magnetLink, enclosureIntent.data?.getQueryParameter(COL_LINK),
    +            message = "Expected link to not get garbled as query parameter"
    +        )
    +    }
    +
    +    @Test
    +    fun nullLinkIsNullQueryParam() {
    +        val enclosureIntent = getOpenInDefaultActivityIntent(getInstrumentation().context, 5, link = null)
    +
    +        assertNull(
    +            enclosureIntent.data?.getQueryParameter(COL_LINK),
    +            message = "Expected a null query parameter"
    +        )
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/model/opml/OPMLTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/model/opml/OPMLTest.kt
    new file mode 100644
    index 0000000..3dce953
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/model/opml/OPMLTest.kt
    @@ -0,0 +1,489 @@
    +package com.nononsenseapps.feeder.model.opml
    +
    +import android.content.Context
    +import androidx.room.Room
    +import androidx.test.core.app.ApplicationProvider.getApplicationContext
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.MediumTest
    +import androidx.test.filters.SmallTest
    +import com.nononsenseapps.feeder.db.room.AppDatabase
    +import com.nononsenseapps.feeder.db.room.Feed
    +import kotlinx.coroutines.runBlocking
    +import org.junit.After
    +import org.junit.Assert.assertEquals
    +import org.junit.Assert.assertFalse
    +import org.junit.Assert.assertTrue
    +import org.junit.Assert.fail
    +import org.junit.Before
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +import java.io.File
    +import java.io.IOException
    +import java.net.URL
    +import java.util.ArrayList
    +
    +private val sampleFile: List = """
    +        |
    +        |  
    +        |    
    +        |      Feeder
    +        |    
    +        |  
    +        |  
    +        |    
    +        |    
    +        |    
    +        |    
    +        |    
    +        |      
    +        |      
    +        |      
    +        |    
    +        |    
    +        |      
    +        |      
    +        |      
    +        |    
    +        |  
    +        |""".trimMargin().split("\n")
    +
    +@RunWith(AndroidJUnit4::class)
    +class OPMLTest {
    +    private val context: Context = getApplicationContext()
    +    lateinit var db: AppDatabase
    +
    +    private var dir: File? = null
    +    private var path: File? = null
    +
    +    @Before
    +    fun setup() {
    +        // Get internal data dir
    +        dir = createTempDir()
    +        path = createTempFile()
    +        assertTrue("Need to be able to write to data dir $dir", dir!!.canWrite())
    +
    +        db = Room.inMemoryDatabaseBuilder(context, AppDatabase::class.java).build()
    +    }
    +
    +    @After
    +    fun tearDown() {
    +        // Remove everything in database
    +    }
    +
    +    @MediumTest
    +    @Test
    +    @Throws(IOException::class)
    +    fun testWrite() = runBlocking {
    +        // Create some feeds
    +        createSampleFeeds()
    +
    +        writeFile(
    +            path!!.absolutePath,
    +            getTags()
    +        ) { tag ->
    +            db.feedDao().loadFeeds(tag = tag)
    +        }
    +
    +        // check contents of file
    +        path!!.bufferedReader().useLines { lines ->
    +            lines.forEachIndexed { i, line ->
    +                assertEquals("line $i differed", sampleFile[i], line)
    +            }
    +        }
    +    }
    +
    +    @MediumTest
    +    @Test
    +    @Throws(Exception::class)
    +    fun testRead() = runBlocking {
    +        writeSampleFile()
    +
    +        val parser = OpmlParser(OPMLToRoom(db))
    +        parser.parseFile(path!!.canonicalPath)
    +
    +        // Verify database is correct
    +        val seen = ArrayList()
    +        val feeds = db.feedDao().loadFeeds()
    +        assertFalse("No feeds in DB!", feeds.isEmpty())
    +        for (feed in feeds) {
    +            val i = Integer.parseInt(feed.title.replace("[custom \"]".toRegex(), ""))
    +            seen.add(i)
    +            assertEquals("URL doesn't match", URL("http://somedomain$i.com/rss.xml"), feed.url)
    +
    +            when (i) {
    +                0 -> {
    +                    assertEquals("title should be the same", "\"$i\"", feed.title)
    +                    assertEquals("custom title should have been set to title", "\"$i\"", feed.customTitle)
    +                }
    +                else -> {
    +                    assertEquals("custom title should have overridden title", "custom \"$i\"", feed.title)
    +                    assertEquals("title and custom title should match", feed.customTitle, feed.title)
    +                }
    +            }
    +
    +            when {
    +                i % 3 == 1 -> assertEquals("tag1", feed.tag)
    +                i % 3 == 2 -> assertEquals("tag2", feed.tag)
    +                else -> assertEquals("", feed.tag)
    +            }
    +        }
    +        for (i in 0..9) {
    +            assertTrue("Missing $i", seen.contains(i))
    +        }
    +    }
    +
    +    @MediumTest
    +    @Test
    +    @Throws(Exception::class)
    +    fun testReadExisting() = runBlocking {
    +        writeSampleFile()
    +
    +        // Create something that does not exist
    +        var feednew = Feed(
    +            url = URL("http://somedomain20.com/rss.xml"),
    +            title = "\"20\"",
    +            tag = "kapow"
    +        )
    +        var id = db.feedDao().insertFeed(feednew)
    +        feednew = feednew.copy(id = id)
    +        // Create something that will exist
    +        var feedold = Feed(
    +            url = URL("http://somedomain0.com/rss.xml"),
    +            title = "\"0\""
    +        )
    +        id = db.feedDao().insertFeed(feedold)
    +
    +        feedold = feedold.copy(id = id)
    +
    +        // Read file
    +        val parser = OpmlParser(OPMLToRoom(db))
    +        parser.parseFile(path!!.canonicalPath)
    +
    +        // should not kill the existing stuff
    +        val seen = ArrayList()
    +        val feeds = db.feedDao().loadFeeds()
    +        assertFalse("No feeds in DB!", feeds.isEmpty())
    +        for (feed in feeds) {
    +            val i = Integer.parseInt(feed.title.replace("[custom \"]".toRegex(), ""))
    +            seen.add(i)
    +            assertEquals(URL("http://somedomain$i.com/rss.xml"), feed.url)
    +
    +            when {
    +                i == 20 -> {
    +                    assertEquals("Should not have changed", feednew.id, feed.id)
    +                    assertEquals("Should not have changed", feednew.url, feed.url)
    +                    assertEquals("Should not have changed", feednew.tag, feed.tag)
    +                }
    +                i % 3 == 1 -> assertEquals("tag1", feed.tag)
    +                i % 3 == 2 -> assertEquals("tag2", feed.tag)
    +                else -> assertEquals("", feed.tag)
    +            }
    +
    +            // Ensure titles are correct
    +            when (i) {
    +                0 -> {
    +                    assertEquals("title should be the same", feedold.title, feed.title)
    +                    assertEquals("custom title should have been set to title", feedold.title, feed.customTitle)
    +                }
    +                20 -> {
    +                    assertEquals("feed not present in OPML should not have changed", feednew.title, feed.title)
    +                    assertEquals("feed not present in OPML should not have changed", feednew.customTitle, feednew.customTitle)
    +                }
    +                else -> {
    +                    assertEquals("custom title should have overridden title", "custom \"$i\"", feed.title)
    +                    assertEquals("title and custom title should match", feed.customTitle, feed.title)
    +                }
    +            }
    +
    +            if (i == 0) {
    +                // Make sure id is same as old
    +                assertEquals("Id should be same still", feedold.id, feed.id)
    +            }
    +        }
    +        assertTrue("Missing 20", seen.contains(20))
    +        for (i in 0..9) {
    +            assertTrue("Missing $i", seen.contains(i))
    +        }
    +    }
    +
    +    @MediumTest
    +    @Test
    +    @Throws(Exception::class)
    +    fun testReadBadFile() = runBlocking {
    +        // val path = File(dir, "feeds.opml")
    +
    +        path!!.bufferedWriter().use {
    +            it.write("This is just some bullshit in the file\n")
    +        }
    +
    +        // Read file
    +        val parser = OpmlParser(OPMLToRoom(db))
    +        parser.parseFile(path!!.absolutePath)
    +    }
    +
    +    @SmallTest
    +    @Test
    +    @Throws(Exception::class)
    +    fun testReadMissingFile() = runBlocking {
    +        val path = File(dir, "lsadflibaslsdfa.opml")
    +        // Read file
    +        val parser = OpmlParser(OPMLToRoom(db))
    +        var raised = false
    +        try {
    +            parser.parseFile(path.absolutePath)
    +        } catch (e: IOException) {
    +            raised = true
    +        }
    +
    +        assertTrue("Should raise exception", raised)
    +    }
    +
    +    @Throws(IOException::class)
    +    private fun writeSampleFile() = runBlocking {
    +        // Use test write to write the sample file
    +        testWrite()
    +        // Then delete all feeds again
    +        db.runInTransaction {
    +            runBlocking {
    +                db.feedDao().loadFeeds().forEach {
    +                    db.feedDao().deleteFeed(it)
    +                }
    +            }
    +        }
    +    }
    +
    +    private suspend fun createSampleFeeds() {
    +        for (i in 0..9) {
    +            val feed = Feed(
    +                url = URL("http://somedomain$i.com/rss.xml"),
    +                title = "\"$i\"",
    +                customTitle = if (i == 0) "" else "custom \"$i\"",
    +                tag = when (i % 3) {
    +                    1 -> "tag1"
    +                    2 -> "tag2"
    +                    else -> ""
    +                }
    +            )
    +
    +            db.feedDao().insertFeed(feed)
    +        }
    +    }
    +
    +    private suspend fun getTags(): List =
    +        db.feedDao().loadTags()
    +
    +    @Test
    +    @MediumTest
    +    fun antennaPodOPMLImports() = runBlocking {
    +        // given
    +        val opmlStream = this@OPMLTest.javaClass.getResourceAsStream("antennapod-feeds.opml")!!
    +
    +        // when
    +        val parser = OpmlParser(OPMLToRoom(db))
    +        parser.parseInputStream(opmlStream)
    +
    +        // then
    +        val feeds = db.feedDao().loadFeeds()
    +        val tags = db.feedDao().loadTags()
    +        assertEquals("Expecting 8 feeds", 8, feeds.size)
    +        assertEquals("Expecting 1 tags (incl empty)", 1, tags.size)
    +
    +        feeds.forEach { feed ->
    +            assertEquals("No tag expected", "", feed.tag)
    +            when (feed.url) {
    +                URL("http://aliceisntdead.libsyn.com/rss") -> {
    +                    assertEquals("Alice Isn't Dead", feed.title)
    +                }
    +                URL("http://feeds.soundcloud.com/users/soundcloud:users:154104768/sounds.rss") -> {
    +                    assertEquals("Invisible City", feed.title)
    +                }
    +                URL("http://feeds.feedburner.com/PodCastle_Main") -> {
    +                    assertEquals("PodCastle", feed.title)
    +                }
    +                URL("http://www.artofstorytellingshow.com/podcast/storycast.xml") -> {
    +                    assertEquals("The Art of Storytelling with Brother Wolf", feed.title)
    +                }
    +                URL("http://feeds.feedburner.com/TheCleansed") -> {
    +                    assertEquals("The Cleansed: A Post-Apocalyptic Saga", feed.title)
    +                }
    +                URL("http://media.signumuniversity.org/tolkienprof/feed") -> {
    +                    assertEquals("The Tolkien Professor", feed.title)
    +                }
    +                URL("http://nightvale.libsyn.com/rss") -> {
    +                    assertEquals("Welcome to Night Vale", feed.title)
    +                }
    +                URL("http://withinthewires.libsyn.com/rss") -> {
    +                    assertEquals("Within the Wires", feed.title)
    +                }
    +                else -> fail("Unexpected URI. Feed: $feed")
    +            }
    +        }
    +    }
    +
    +    @Test
    +    @MediumTest
    +    fun flymOPMLImports() = runBlocking {
    +        // given
    +        val opmlStream = this@OPMLTest.javaClass.getResourceAsStream("Flym_auto_backup.opml")!!
    +
    +        // when
    +        val parser = OpmlParser(OPMLToRoom(db))
    +        parser.parseInputStream(opmlStream)
    +
    +        // then
    +        val feeds = db.feedDao().loadFeeds()
    +        val tags = db.feedDao().loadTags()
    +        assertEquals("Expecting 11 feeds", 11, feeds.size)
    +        assertEquals("Expecting 4 tags (incl empty)", 4, tags.size)
    +
    +        feeds.forEach { feed ->
    +            when (feed.url) {
    +                URL("http://www.smbc-comics.com/rss.php") -> {
    +                    assertEquals("black humor", feed.tag)
    +                    assertEquals("SMBC", feed.customTitle)
    +                }
    +                URL("http://www.deathbulge.com/rss.xml") -> {
    +                    assertEquals("black humor", feed.tag)
    +                    assertEquals("Deathbulge", feed.customTitle)
    +                }
    +                URL("http://www.sandraandwoo.com/gaia/feed/") -> {
    +                    assertEquals("comics", feed.tag)
    +                    assertEquals("Gaia", feed.customTitle)
    +                }
    +                URL("http://replaycomic.com/feed/") -> {
    +                    assertEquals("comics", feed.tag)
    +                    assertEquals("Replay", feed.customTitle)
    +                }
    +                URL("http://www.cuttimecomic.com/rss.php") -> {
    +                    assertEquals("comics", feed.tag)
    +                    assertEquals("Cut Time", feed.customTitle)
    +                }
    +                URL("http://www.commitstrip.com/feed/") -> {
    +                    assertEquals("comics", feed.tag)
    +                    assertEquals("Commit strip", feed.customTitle)
    +                }
    +                URL("http://www.sandraandwoo.com/feed/") -> {
    +                    assertEquals("comics", feed.tag)
    +                    assertEquals("Sandra and Woo", feed.customTitle)
    +                }
    +                URL("http://www.awakencomic.com/rss.php") -> {
    +                    assertEquals("comics", feed.tag)
    +                    assertEquals("Awaken", feed.customTitle)
    +                }
    +                URL("http://www.questionablecontent.net/QCRSS.xml") -> {
    +                    assertEquals("comics", feed.tag)
    +                    assertEquals("Questionable Content", feed.customTitle)
    +                }
    +                URL("https://www.archlinux.org/feeds/news/") -> {
    +                    assertEquals("Tech", feed.tag)
    +                    assertEquals("Arch news", feed.customTitle)
    +                }
    +                URL("https://grisebouille.net/feed/") -> {
    +                    assertEquals("Political humour", feed.tag)
    +                    assertEquals("Grisebouille", feed.customTitle)
    +                }
    +                else -> fail("Unexpected URI. Feed: $feed")
    +            }
    +        }
    +    }
    +
    +    @Test
    +    @MediumTest
    +    fun rssGuardOPMLImports1() = runBlocking {
    +        // given
    +        val opmlStream = this@OPMLTest.javaClass.getResourceAsStream("rssguard_1.opml")!!
    +
    +        // when
    +        val parser = OpmlParser(OPMLToRoom(db))
    +        parser.parseInputStream(opmlStream)
    +
    +        // then
    +        val feeds = db.feedDao().loadFeeds()
    +        val tags = db.feedDao().loadTags()
    +        assertEquals("Expecting 30 feeds", 30, feeds.size)
    +        assertEquals("Expecting 6 tags (incl empty)", 6, tags.size)
    +
    +        feeds.forEach { feed ->
    +            when (feed.url) {
    +                URL("http://www.les-trois-sagesses.org/rss-articles.xml") -> {
    +                    assertEquals("Religion", feed.tag)
    +                    assertEquals("Les trois sagesses", feed.customTitle)
    +                }
    +                URL("http://www.avrildeperthuis.com/feed/") -> {
    +                    assertEquals("Amis", feed.tag)
    +                    assertEquals("avril de perthuis", feed.customTitle)
    +                }
    +                URL("http://www.fashioningtech.com/profiles/blog/feed?xn_auth=no") -> {
    +                    assertEquals("Actu Geek", feed.tag)
    +                    assertEquals("Everyone's Blog Posts - Fashioning Technology", feed.customTitle)
    +                }
    +                URL("http://feeds2.feedburner.com/ChartPorn") -> {
    +                    assertEquals("Graphs", feed.tag)
    +                    assertEquals("Chart Porn", feed.customTitle)
    +                }
    +                URL("http://www.mosqueedeparis.net/index.php?format=feed&type=atom") -> {
    +                    assertEquals("Religion", feed.tag)
    +                    assertEquals("Mosquee de Paris", feed.customTitle)
    +                }
    +                URL("http://sourceforge.net/projects/stuntrally/rss") -> {
    +                    assertEquals("Mainstream update", feed.tag)
    +                    assertEquals("Stunt Rally", feed.customTitle)
    +                }
    +                URL("http://www.mairie6.lyon.fr/cs/Satellite?Thematique=&TypeContenu=Actualite&pagename=RSSFeed&site=Mairie6") -> {
    +                    assertEquals("", feed.tag)
    +                    assertEquals("Actualités", feed.customTitle)
    +                }
    +            }
    +        }
    +    }
    +
    +    @Test
    +    @MediumTest
    +    fun rssGuardOPMLImports2() = runBlocking {
    +        // given
    +        val opmlStream = this@OPMLTest.javaClass.getResourceAsStream("rssguard_2.opml")!!
    +
    +        // when
    +        val parser = OpmlParser(OPMLToRoom(db))
    +        parser.parseInputStream(opmlStream)
    +
    +        // then
    +        val feeds = db.feedDao().loadFeeds()
    +        val tags = db.feedDao().loadTags()
    +        assertEquals("Expecting 30 feeds", 30, feeds.size)
    +        assertEquals("Expecting 6 tags (incl empty)", 6, tags.size)
    +
    +        feeds.forEach { feed ->
    +            when (feed.url) {
    +                URL("http://www.les-trois-sagesses.org/rss-articles.xml") -> {
    +                    assertEquals("Religion", feed.tag)
    +                    assertEquals("Les trois sagesses", feed.customTitle)
    +                }
    +                URL("http://www.avrildeperthuis.com/feed/") -> {
    +                    assertEquals("Amis", feed.tag)
    +                    assertEquals("avril de perthuis", feed.customTitle)
    +                }
    +                URL("http://www.fashioningtech.com/profiles/blog/feed?xn_auth=no") -> {
    +                    assertEquals("Actu Geek", feed.tag)
    +                    assertEquals("Everyone's Blog Posts - Fashioning Technology", feed.customTitle)
    +                }
    +                URL("http://feeds2.feedburner.com/ChartPorn") -> {
    +                    assertEquals("Graphs", feed.tag)
    +                    assertEquals("Chart Porn", feed.customTitle)
    +                }
    +                URL("http://www.mosqueedeparis.net/index.php?format=feed&type=atom") -> {
    +                    assertEquals("Religion", feed.tag)
    +                    assertEquals("Mosquee de Paris", feed.customTitle)
    +                }
    +                URL("http://sourceforge.net/projects/stuntrally/rss") -> {
    +                    assertEquals("Mainstream update", feed.tag)
    +                    assertEquals("Stunt Rally", feed.customTitle)
    +                }
    +                URL("http://www.mairie6.lyon.fr/cs/Satellite?Thematique=&TypeContenu=Actualite&pagename=RSSFeed&site=Mairie6") -> {
    +                    assertEquals("", feed.tag)
    +                    assertEquals("Actualités", feed.customTitle)
    +                }
    +            }
    +        }
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/AddFeedDialogThemeTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/AddFeedDialogThemeTest.kt
    new file mode 100644
    index 0000000..8fe49a0
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/AddFeedDialogThemeTest.kt
    @@ -0,0 +1,46 @@
    +package com.nononsenseapps.feeder.ui
    +
    +import android.content.Context
    +import androidx.test.core.app.ApplicationProvider.getApplicationContext
    +import androidx.test.espresso.Espresso.onView
    +import androidx.test.espresso.assertion.ViewAssertions
    +import androidx.test.espresso.matcher.ViewMatchers.hasTextColor
    +import androidx.test.espresso.matcher.ViewMatchers.withId
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.LargeTest
    +import androidx.test.rule.ActivityTestRule
    +import com.nononsenseapps.feeder.R
    +import com.nononsenseapps.feeder.util.Prefs
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +import org.kodein.di.android.closestKodein
    +import org.kodein.di.generic.instance
    +
    +@RunWith(AndroidJUnit4::class)
    +@LargeTest
    +class AddFeedDialogThemeTest {
    +    @get:Rule
    +    var activityRule: ActivityTestRule = ActivityTestRule(EditFeedActivity::class.java, false, false)
    +
    +    private val kodein by closestKodein(getApplicationContext() as Context)
    +    private val prefs by kodein.instance()
    +
    +    @Test
    +    fun startsInDarkModeIfSet() {
    +        prefs.isNightMode = true
    +
    +        activityRule.launchActivity(null)
    +
    +        onView(withId(R.id.feed_url)).check(ViewAssertions.matches(hasTextColor(R.color.white_87)))
    +    }
    +
    +    @Test
    +    fun startsInLightModeIfSet() {
    +        prefs.isNightMode = false
    +
    +        activityRule.launchActivity(null)
    +
    +        onView(withId(R.id.feed_url)).check(ViewAssertions.matches(hasTextColor(R.color.black_87)))
    +    }
    +}
    diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/BadImagePlaceHolderArticleTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/BadImagePlaceHolderArticleTest.kt
    new file mode 100644
    index 0000000..041278b
    --- /dev/null
    +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/BadImagePlaceHolderArticleTest.kt
    @@ -0,0 +1,209 @@
    +package com.nononsenseapps.feeder.ui
    +
    +import android.content.Context
    +import android.content.Intent
    +import androidx.appcompat.app.AppCompatDelegate
    +import androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO
    +import androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES
    +import androidx.test.core.app.ApplicationProvider.getApplicationContext
    +import androidx.test.espresso.Espresso.onView
    +import androidx.test.espresso.assertion.ViewAssertions.matches
    +import androidx.test.espresso.matcher.ViewMatchers.withId
    +import androidx.test.espresso.matcher.ViewMatchers.withText
    +import androidx.test.ext.junit.runners.AndroidJUnit4
    +import androidx.test.filters.LargeTest
    +import androidx.test.rule.ActivityTestRule
    +import com.nononsenseapps.feeder.R
    +import com.nononsenseapps.feeder.db.URI_FEEDITEMS
    +import com.nononsenseapps.feeder.db.room.Feed
    +import com.nononsenseapps.feeder.db.room.FeedItem
    +import com.nononsenseapps.feeder.model.insertFeedItemWithBlob
    +import com.nononsenseapps.feeder.util.Prefs
    +import kotlinx.coroutines.delay
    +import kotlinx.coroutines.runBlocking
    +import okhttp3.HttpUrl
    +import okhttp3.mockwebserver.MockResponse
    +import okhttp3.mockwebserver.MockWebServer
    +import org.hamcrest.Matchers.containsString
    +import org.hamcrest.Matchers.not
    +import org.junit.After
    +import org.junit.Before
    +import org.junit.Rule
    +import org.junit.Test
    +import org.junit.runner.RunWith
    +import org.kodein.di.android.closestKodein
    +import org.kodein.di.generic.instance
    +import java.net.URL
    +
    +@RunWith(AndroidJUnit4::class)
    +@LargeTest
    +class BadImagePlaceHolderArticleTest {
    +    @get:Rule
    +    var activityRule: ActivityTestRule = ActivityTestRule(FeedActivity::class.java, false, false)
    +
    +    @get:Rule
    +    val testDb = TestDatabaseRule(getApplicationContext())
    +
    +    private val server = MockWebServer()
    +
    +    private val kodein by closestKodein(getApplicationContext() as Context)
    +    private val prefs by kodein.instance()
    +
    +    @Before
    +    fun startServer() {
    +        server.enqueue(
    +            MockResponse().also {
    +                it.setResponseCode(400)
    +            }
    +        )
    +        server.start()
    +    }
    +
    +    @After
    +    fun stopServer() {
    +        server.shutdown()
    +    }
    +
    +    @Test
    +    fun placeHolderIsShownOnBadImageNightTheme() = runBlocking {
    +        prefs.isNightMode = true
    +        AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES)
    +
    +        val imgUrl = server.url("/img.png")
    +
    +        val itemId = insertData(imgUrl) {
    +            """
    +                Image is: alt text
    +                

    + And that is that + """.trimIndent() + } + + activityRule.launchReader(itemId) + + runBlocking { + delay(50) + } + + onView(withId(R.id.story_body)) + .check(matches(withText(containsString("alt text")))) + } + + @Test + fun placeHolderIsShownOnBadImageDayTheme() = runBlocking { + prefs.isNightMode = false + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO) + + val imgUrl = server.url("/img.png") + + val itemId = insertData(imgUrl) { + """ + Image is: alt text +

    + And that is that + """.trimIndent() + } + + activityRule.launchReader(itemId) + + runBlocking { + delay(50) + } + + onView(withId(R.id.story_body)) + .check(matches(withText(containsString("alt text")))) + } + + @Test + fun imgWithNoSrcIsNotDisplayed() = runBlocking { + val itemId = insertData { + """ + Image is: alt text +

    + And that is that + """.trimIndent() + } + + activityRule.launchReader(itemId) + + runBlocking { + delay(50) + } + + onView(withId(R.id.story_body)) + .check(matches(withText(not(containsString("alt text"))))) + } + + @Test + fun imgHasAltTextDisplayed() = runBlocking { + val imgUrl = server.url("/img.png") + + val itemId = insertData { + """ + Image is: alt text +

    + And that is that + """.trimIndent() + } + + activityRule.launchReader(itemId) + + runBlocking { + delay(50) + } + + onView(withId(R.id.story_body)) + .check(matches(withText(containsString("alt text")))) + } + + @Test + fun imgAppendsNewLineBeforeAndAfter() = runBlocking { + val imgUrl = server.url("/img.png") + + val itemId = insertData { + """ + Image is:alt text +

    + And that is that + """.trimIndent() + } + + activityRule.launchReader(itemId) + + runBlocking { + delay(50) + } + + onView(withId(R.id.story_body)) + .check(matches(withText(containsString("Image is:\n")))) + onView(withId(R.id.story_body)) + .check(matches(withText(containsString("\nalt text\n")))) + } + + private suspend fun insertData(imgUrl: HttpUrl? = null, description: () -> String): Long { + + val feedId = testDb.db.feedDao().insertFeed( + Feed( + title = "foo", + url = URL("http://foo") + ) + ) + + return testDb.insertFeedItemWithBlob( + FeedItem( + guid = "bar", + feedId = feedId, + title = "foo", + imageUrl = imgUrl?.let { "$it" } + ), + description = description() + ) + } +} + +fun ActivityTestRule.launchReader(itemId: Long) = + launchActivity( + Intent().also { + it.data = URI_FEEDITEMS.buildUpon().appendPath("$itemId").build() + } + ) diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/BadImagePlaceHolderTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/BadImagePlaceHolderTest.kt new file mode 100644 index 0000000..b110ce1 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/BadImagePlaceHolderTest.kt @@ -0,0 +1,118 @@ +package com.nononsenseapps.feeder.ui + +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.view.View +import android.widget.ImageView +import androidx.appcompat.app.AppCompatDelegate +import androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO +import androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES +import androidx.recyclerview.widget.RecyclerView +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import androidx.test.rule.ActivityTestRule +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.db.URI_FEEDS +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.db.room.FeedItem +import com.nononsenseapps.feeder.util.Prefs +import kotlinx.coroutines.delay +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withTimeout +import okhttp3.mockwebserver.MockResponse +import okhttp3.mockwebserver.MockWebServer +import org.junit.After +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.kodein.di.android.closestKodein +import org.kodein.di.generic.instance +import java.net.URL + +@RunWith(AndroidJUnit4::class) +@LargeTest +class BadImagePlaceHolderTest { + @get:Rule + var activityRule: ActivityTestRule = ActivityTestRule(FeedActivity::class.java, false, false) + + @get:Rule + val testDb = TestDatabaseRule(getApplicationContext()) + + private val server = MockWebServer() + + private val kodein by closestKodein(getApplicationContext() as Context) + private val prefs by kodein.instance() + + @After + fun stopServer() { + server.shutdown() + } + + @Test + fun placeHolderIsShownOnBadImageNightTheme() = runBlocking { + prefs.isNightMode = true + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES) + placeHolderIsShownOnBadImage() + } + + @Test + fun placeHolderIsShownOnBadImageDayTheme() = runBlocking { + prefs.isNightMode = false + AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO) + placeHolderIsShownOnBadImage() + } + + private suspend fun placeHolderIsShownOnBadImage() { + server.enqueue( + MockResponse().also { + it.setResponseCode(400) + } + ) + server.start() + + val imgUrl = server.url("/img.png") + + val feedId = testDb.db.feedDao().insertFeed( + Feed( + title = "foo", + url = URL("http://foo") + ) + ) + + testDb.db.feedItemDao().insertFeedItem( + FeedItem( + guid = "bar", + feedId = feedId, + title = "foo", + imageUrl = "$imgUrl" + ) + ) + + activityRule.launchActivity(Intent(Intent.ACTION_VIEW, Uri.withAppendedPath(URI_FEEDS, "$feedId"))) + + runBlocking { + delay(50) + + val recyclerView = activityRule.activity.findViewById(android.R.id.list)!! + val viewHolder = recyclerView.findViewHolderForAdapterPosition(0)!! + val imageView = viewHolder.itemView.findViewById(R.id.story_image)!! + + withTimeout(10000) { + while (true) { + if (imageView.visibility == View.VISIBLE && imageView.drawable != null) { + break // good + } + delay(50) + } + } + } + + onView(withId(R.id.story_image)).check(matches(isDisplayed())) + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/CustomFeedTitleIsShownInListItemsTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/CustomFeedTitleIsShownInListItemsTest.kt new file mode 100644 index 0000000..a16f122 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/CustomFeedTitleIsShownInListItemsTest.kt @@ -0,0 +1,94 @@ +package com.nononsenseapps.feeder.ui + +import android.content.Context +import android.content.Intent +import android.net.Uri +import androidx.recyclerview.widget.RecyclerView +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.espresso.matcher.ViewMatchers.withText +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import androidx.test.rule.ActivityTestRule +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.db.URI_FEEDS +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.db.room.FeedItem +import com.nononsenseapps.feeder.util.Prefs +import kotlinx.android.synthetic.main.content_navigation.* +import kotlinx.coroutines.delay +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withTimeout +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.kodein.di.android.closestKodein +import org.kodein.di.generic.instance +import java.net.URL + +@RunWith(AndroidJUnit4::class) +@LargeTest +class CustomFeedTitleIsShownInListItemsTest { + @get:Rule + var activityRule: ActivityTestRule = ActivityTestRule(FeedActivity::class.java, false, false) + + @get:Rule + val testDb = TestDatabaseRule(getApplicationContext()) + + private val kodein by closestKodein(getApplicationContext() as Context) + private val prefs by kodein.instance() + + @Before + fun keepNavDrawerClosed() { + prefs.welcomeDone = true + } + + @Test + fun feedTitleIsShownIfNoCustomTitle() = runBlocking { + insertDataAndLaunch("foo", "") + assertFeedTitleShownIs("foo") + } + + @Test + fun customTitleIsShownIfCustomTitle() = runBlocking { + insertDataAndLaunch("foo", "bar") + assertFeedTitleShownIs("bar") + } + + private suspend fun insertDataAndLaunch(title: String, customTitle: String) { + val feedId = testDb.db.feedDao().insertFeed( + Feed( + title = title, + customTitle = customTitle, + url = URL("http://foo") + ) + ) + + testDb.db.feedItemDao().insertFeedItem( + FeedItem( + guid = "fooitem1", + feedId = feedId, + title = "fooitem" + ) + ) + + activityRule.launchActivity(Intent(Intent.ACTION_VIEW, Uri.withAppendedPath(URI_FEEDS, "$feedId"))) + } + + private fun assertFeedTitleShownIs(title: String) { + runBlocking { + val recyclerView = activityRule.activity.nav_host_fragment?.view?.findViewById(android.R.id.list)!! + + withTimeout(200) { + while (recyclerView.findViewHolderForAdapterPosition(0) == null) { + delay(20) + } + } + + onView(withId(R.id.story_author)).check(matches(withText(title))) + } + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/CustomFeedTitleIsShownInReaderTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/CustomFeedTitleIsShownInReaderTest.kt new file mode 100644 index 0000000..c2e876c --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/CustomFeedTitleIsShownInReaderTest.kt @@ -0,0 +1,76 @@ +package com.nononsenseapps.feeder.ui + +import android.widget.TextView +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.espresso.matcher.ViewMatchers.withText +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import androidx.test.rule.ActivityTestRule +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.db.room.FeedItem +import kotlinx.coroutines.delay +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withTimeout +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import java.net.URL + +@RunWith(AndroidJUnit4::class) +@LargeTest +class CustomFeedTitleIsShownInReaderTest { + @get:Rule + var activityRule: ActivityTestRule = ActivityTestRule(FeedActivity::class.java, false, false) + @get:Rule + val testDb = TestDatabaseRule(getApplicationContext()) + + @Test + fun feedTitleIsShownIfNoCustomTitle() = runBlocking { + insertDataAndLaunch("foo", "") + assertFeedTitleShownIs("foo") + } + + @Test + fun customTitleIsShownIfCustomTitle() = runBlocking { + insertDataAndLaunch("foo", "bar") + assertFeedTitleShownIs("bar") + } + + private suspend fun insertDataAndLaunch(title: String, customTitle: String) { + val feedId = testDb.db.feedDao().insertFeed( + Feed( + title = title, + customTitle = customTitle, + url = URL("http://foo") + ) + ) + + val feedItemId = testDb.db.feedItemDao().insertFeedItem( + FeedItem( + guid = "fooitem1", + feedId = feedId, + title = "fooitem" + ) + ) + + activityRule.launchReader(feedItemId) + } + + private fun assertFeedTitleShownIs(title: String) { + runBlocking { + val feedTitle = activityRule.activity.findViewById(R.id.story_feedtitle)!! + + withTimeout(200) { + while (feedTitle.text.toString() != title) { + delay(20) + } + } + + onView(withId(R.id.story_feedtitle)).check(matches(withText(title))) + } + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/EditFeedTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/EditFeedTest.kt new file mode 100644 index 0000000..461fcff --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/EditFeedTest.kt @@ -0,0 +1,160 @@ +package com.nononsenseapps.feeder.ui + +import android.widget.TextView +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.RecyclerView +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.espresso.Espresso +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.action.ViewActions.pressImeActionButton +import androidx.test.espresso.action.ViewActions.typeText +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.contrib.RecyclerViewActions +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import androidx.test.rule.ActivityTestRule +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.ui.MockResponses.cowboy_feed_json_body +import com.nononsenseapps.feeder.ui.MockResponses.cowboyprogrammer_feed_json_headers +import kotlinx.coroutines.isActive +import kotlinx.coroutines.runBlocking +import okhttp3.mockwebserver.MockResponse +import okhttp3.mockwebserver.MockWebServer +import org.hamcrest.Matchers.not +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotNull +import org.junit.Ignore +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import java.net.URL + +@RunWith(AndroidJUnit4::class) +@LargeTest +class EditFeedTest { + @get:Rule + var activityRule: ActivityTestRule = ActivityTestRule(EditFeedActivity::class.java) + @get:Rule + val testDb = TestDatabaseRule(getApplicationContext()) + + val server = MockWebServer() + + @After + fun stopServer() { + server.shutdown() + } + + @Test + fun activityStarts() { + assertNotNull(activityRule.activity) + } + + @Test + @Ignore("Not sure how to make a bad URL") + fun badUrlDisplaysEmptyView() { + onView(withId(android.R.id.empty)).check(matches(not(isDisplayed()))) + onView(withId(R.id.search_view)) + .perform( + typeText("abc123-_.\\"), + pressImeActionButton() + ) + runBlocking { + untilEq(true) { + activityRule.activity?.searchJob?.isCompleted + } + } + onView(withId(android.R.id.empty)).check(matches(isDisplayed())) + } + + @Test + fun badResponseShowsEmptyView() { + server.enqueue( + MockResponse().also { + it.setBody("NOT VALID XML") + } + ) + server.start() + + val url = server.url("/rss.xml") + + onView(withId(android.R.id.empty)).check(matches(not(isDisplayed()))) + onView(withId(R.id.search_view)) + .perform( + typeText("$url"), + pressImeActionButton() + ) + runBlocking { + untilEq(true) { + activityRule.activity?.searchJob?.isCompleted + } + } + onView(withId(android.R.id.empty)).check(matches(isDisplayed())) + } + + @Test + fun endToEnd() = runBlocking { + val response = MockResponse().also { + it.setBody(cowboy_feed_json_body) + cowboyprogrammer_feed_json_headers.entries.forEach { entry -> + it.setHeader(entry.key, entry.value) + } + } + server.enqueue(response) + server.enqueue(response) + server.start() + + val url = server.url("/feed.json") + + onView(withId(android.R.id.empty)).check(matches(not(isDisplayed()))) + onView(withId(R.id.search_view)) + .perform( + typeText("$url"), + pressImeActionButton() + ) + + val recyclerView: RecyclerView = activityRule.activity.findViewById(R.id.results_listview) + + // Wait for search to be done + untilEq(true) { + activityRule.activity?.searchJob?.isCompleted + } + // Then wait for recyclerView to update + untilNotEq(null) { + recyclerView.findViewHolderForAdapterPosition(0) + } + + // Assert the feed was retrieved + val request = server.takeRequest() + assertEquals("/feed.json", request.path) + + val viewHolder = recyclerView.findViewHolderForAdapterPosition(0)!! + assertEquals( + "https://cowboyprogrammer.org/feed.json", + viewHolder.itemView.findViewById(R.id.feed_url)!!.text + ) + + onView(withId(R.id.results_listview)).perform( + RecyclerViewActions.actionOnItemAtPosition(0, click()) + ) + + onView(withId(R.id.feed_details_frame)).check(matches(isDisplayed())) + Espresso.closeSoftKeyboard() + onView(withId(R.id.add_button)).perform(click()) + + untilEq(false) { + activityRule.activity?.lifecycleScope?.isActive + } + + val feed = untilNotEq(null) { + testDb.db.feedDao().loadFeedWithUrl(URL("https://cowboyprogrammer.org/feed.json")) + } + assertEquals( + "Cowboy Programmer", + feed?.title + ) + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/FeedsTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/FeedsTest.kt new file mode 100644 index 0000000..3cfd67e --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/FeedsTest.kt @@ -0,0 +1,22 @@ +package com.nononsenseapps.feeder.ui + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import androidx.test.rule.ActivityTestRule +import org.junit.Assert.assertNotNull +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +@LargeTest +class FeedsTest { + @Rule + @JvmField + var activityRule: ActivityTestRule = ActivityTestRule(FeedActivity::class.java) + + @Test + fun activityStarts() { + assertNotNull(activityRule.activity) + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/Helpers.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/Helpers.kt new file mode 100644 index 0000000..ec7d091 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/Helpers.kt @@ -0,0 +1,72 @@ +package com.nononsenseapps.feeder.ui + +import kotlinx.coroutines.delay +import kotlinx.coroutines.withTimeout + +/** + * Delays until the factory provides the correct object + */ +suspend fun whileNotEq( + other: Any?, + timeoutMillis: Long = 500, + sleepMillis: Long = 50, + body: (suspend () -> T) +): T = + withTimeout(timeoutMillis) { + var item = body.invoke() + while (item != other) { + delay(sleepMillis) + item = body.invoke() + } + item + } + +/** + * Delays until the factory provides a different object + */ +suspend fun whileEq( + other: Any?, + timeoutMillis: Long = 500, + sleepMillis: Long = 50, + body: (suspend () -> T) +): T = + withTimeout(timeoutMillis) { + var item = body.invoke() + while (item == other) { + delay(sleepMillis) + item = body.invoke() + } + item + } + +/** + * Delays until the factory provides a different object + */ +suspend fun untilNotEq( + other: Any?, + timeoutMillis: Long = 500, + sleepMillis: Long = 50, + body: (suspend () -> T) +): T = + whileEq( + other = other, + timeoutMillis = timeoutMillis, + sleepMillis = sleepMillis, + body = body + ) + +/** + * Delays until the factory provides the correct object + */ +suspend fun untilEq( + other: Any?, + timeoutMillis: Long = 500, + sleepMillis: Long = 50, + body: (suspend () -> T) +): T = + whileNotEq( + other = other, + timeoutMillis = timeoutMillis, + sleepMillis = sleepMillis, + body = body + ) diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/LocaleStuff.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/LocaleStuff.kt new file mode 100644 index 0000000..8833604 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/LocaleStuff.kt @@ -0,0 +1 @@ +package com.nononsenseapps.feeder.ui diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/MockResponses.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/MockResponses.kt new file mode 100644 index 0000000..92af958 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/MockResponses.kt @@ -0,0 +1,17 @@ +package com.nononsenseapps.feeder.ui + +object MockResponses { + + val cowboyprogrammer_feed_json_headers = mapOf( + "cache-control" to "public", + "content-type" to "application/json", + "date" to "Tue, 30 Oct 2018 14:25:58 GMT", + "etag" to "W/\"5b6ca19c-146ab\"", + "expires" to "Tue, 30 Oct 2018 15:25:58 GMT", + "last-modified" to "Thu, 09 Aug 2018 20:18:36 GMT", + "vary" to "Accept-Encoding" + ) + + val cowboy_feed_json_body: String + get() = String(javaClass.getResourceAsStream("cowboy_feed.json")!!.readBytes()) +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/NotificationClearingTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/NotificationClearingTest.kt new file mode 100644 index 0000000..0bd34f8 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/NotificationClearingTest.kt @@ -0,0 +1,99 @@ +package com.nononsenseapps.feeder.ui + +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.db.room.FeedItem +import com.nononsenseapps.feeder.db.room.FeedItemWithFeed +import com.nononsenseapps.feeder.model.RssNotificationBroadcastReceiver +import com.nononsenseapps.feeder.model.getDeleteIntent +import com.nononsenseapps.feeder.model.notify +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withContext +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import java.net.URL + +@RunWith(AndroidJUnit4::class) +class NotificationClearingTest { + private val receiver: RssNotificationBroadcastReceiver = RssNotificationBroadcastReceiver() + @get:Rule + val testDb = TestDatabaseRule(getApplicationContext()) + + @Test + fun clearingNotificationMarksAsNotified() = runBlocking { + val feedId = testDb.db.feedDao().insertFeed( + Feed( + title = "testFeed", + url = URL("http://testfeed"), + tag = "testTag" + ) + ) + + val item1Id = testDb.db.feedItemDao().insertFeedItem( + FeedItem( + feedId = feedId, + guid = "item1", + title = "item1", + notified = false + ) + ) + + val di = getDeleteIntent( + getApplicationContext(), + FeedItemWithFeed( + id = item1Id, feedId = feedId, guid = "item1", title = "item1" + ) + ) + + runBlocking { + // Receiver runs on main thread + withContext(Dispatchers.Main) { + receiver.onReceive(getApplicationContext(), di) + } + + delay(50) + + val item = testDb.db.feedItemDao().loadFeedItem(guid = "item1", feedId = feedId) + assertTrue(item!!.notified) + } + } + + @Test + fun notifyWorksOnMainThread() = runBlocking { + val feedId = testDb.db.feedDao().insertFeed( + Feed( + title = "testFeed", + url = URL("http://testfeed"), + tag = "testTag" + ) + ) + + testDb.db.feedItemDao().insertFeedItem( + FeedItem( + feedId = feedId, + guid = "item1", + title = "item1", + notified = false + ) + ) + + runBlocking { + // Try to notify on main thread + withContext(Dispatchers.Main) { + notify(getApplicationContext()) + } + + delay(50) + + // Only care that the above call didn't crash because we ran on the main thread + val item = testDb.db.feedItemDao().loadFeedItem(guid = "item1", feedId = feedId) + assertFalse(item!!.notified) + } + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/OpenFeedFromTitleTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/OpenFeedFromTitleTest.kt new file mode 100644 index 0000000..e7a3f60 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/OpenFeedFromTitleTest.kt @@ -0,0 +1,77 @@ +package com.nononsenseapps.feeder.ui + +import android.content.Context +import android.content.Intent +import android.net.Uri +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.rule.ActivityTestRule +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.db.URI_FEEDITEMS +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.db.room.FeedItem +import com.nononsenseapps.feeder.util.Prefs +import kotlinx.coroutines.runBlocking +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.kodein.di.android.closestKodein +import org.kodein.di.generic.instance +import java.net.URL + +@RunWith(AndroidJUnit4::class) +class OpenFeedFromTitleTest { + @get:Rule + val activityRule = ActivityTestRule(FeedActivity::class.java, false, false) + @get:Rule + val testDb = TestDatabaseRule(getApplicationContext()) + + private lateinit var feedItem: FeedItem + + private var feedId: Long? = null + + private val kodein by closestKodein(getApplicationContext() as Context) + private val prefs by kodein.instance() + + @Before + fun keepNavDrawerClosed() { + prefs.welcomeDone = true + } + + @Before + fun setup() = runBlocking { + feedId = testDb.db.feedDao().insertFeed( + Feed( + title = "ANON", + url = URL("http://ANON.com/sub") + ) + ) + + val item = FeedItem( + feedId = feedId, + guid = "http://ANON.com/sub/##", + title = "ANON", + plainTitle = "ANON", + plainSnippet = "ANON" + ) + + val feedItemId = testDb.db.feedItemDao().insertFeedItem(item) + feedItem = item.copy(id = feedItemId) + } + + @Test + fun clickingFirstItemOpensReader() { + activityRule.launchActivity(Intent(Intent.ACTION_VIEW, Uri.withAppendedPath(URI_FEEDITEMS, "${feedItem.id}"))) + + onView(withId(R.id.story_feedtitle)) + .perform(click()) + + onView(withId(android.R.id.list)).check(matches(isDisplayed())) + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/OpenFeedItemTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/OpenFeedItemTest.kt new file mode 100644 index 0000000..e8354b3 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/OpenFeedItemTest.kt @@ -0,0 +1,79 @@ +package com.nononsenseapps.feeder.ui + +import android.content.Context +import android.content.Intent +import android.net.Uri +import androidx.recyclerview.widget.RecyclerView +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.contrib.RecyclerViewActions.actionOnItemAtPosition +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.rule.ActivityTestRule +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.db.URI_FEEDS +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.db.room.FeedItem +import com.nononsenseapps.feeder.util.Prefs +import kotlinx.coroutines.runBlocking +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.kodein.di.android.closestKodein +import org.kodein.di.generic.instance +import java.net.URL + +@RunWith(AndroidJUnit4::class) +class OpenFeedItemTest { + @get:Rule + val activityRule = ActivityTestRule(FeedActivity::class.java, false, false) + @get:Rule + val testDb = TestDatabaseRule(getApplicationContext()) + + private lateinit var feedItem: FeedItem + + private var feedId: Long? = null + + private val kodein by closestKodein(getApplicationContext() as Context) + private val prefs by kodein.instance() + + @Before + fun keepNavDrawerClosed() { + prefs.welcomeDone = true + } + + @Before + fun setup() = runBlocking { + feedId = testDb.db.feedDao().insertFeed( + Feed( + title = "ANON", + url = URL("http://ANON.com/sub") + ) + ) + + val item = FeedItem( + feedId = feedId, + guid = "http://ANON.com/sub/##", + title = "ANON", + plainTitle = "ANON", + plainSnippet = "ANON" + ) + + val feedItemId = testDb.db.feedItemDao().insertFeedItem(item) + feedItem = item.copy(id = feedItemId) + } + + @Test + fun clickingFirstItemOpensReader() { + activityRule.launchActivity(Intent(Intent.ACTION_VIEW, Uri.withAppendedPath(URI_FEEDS, "$feedId"))) + + onView(withId(android.R.id.list)) + .perform(actionOnItemAtPosition(0, click())) + + onView(withId(R.id.story_body)).check(matches(isDisplayed())) + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/OpenLinkInDefaultActivityTaskTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/OpenLinkInDefaultActivityTaskTest.kt new file mode 100644 index 0000000..0089124 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/OpenLinkInDefaultActivityTaskTest.kt @@ -0,0 +1,93 @@ +package com.nononsenseapps.feeder.ui + +import android.content.Intent +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation +import androidx.test.rule.ActivityTestRule +import androidx.test.uiautomator.UiDevice +import com.nononsenseapps.feeder.db.URI_FEEDITEMS +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.db.room.FeedItem +import com.nononsenseapps.feeder.model.getOpenInDefaultActivityIntent +import kotlinx.coroutines.runBlocking +import org.junit.After +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import java.net.URL +import kotlin.test.assertFalse + +@RunWith(AndroidJUnit4::class) +class OpenLinkInDefaultActivityTaskTest { + @get:Rule + val activityTestRule = ActivityTestRule(OpenLinkInDefaultActivity::class.java, false, false) + @get:Rule + val mainTaskTestRule = ActivityTestRule(FeedActivity::class.java, false, false) + + @get:Rule + val testDb = TestDatabaseRule(getApplicationContext()) + + private lateinit var feedItem: FeedItem + + @Before + fun setup() = runBlocking { + val db = testDb.db + + val feedId = db.feedDao().insertFeed( + Feed( + title = "foo", + url = URL("http://foo") + ) + ) + + val item = FeedItem( + feedId = feedId, + guid = "foobar", + title = "bla", + link = "http://foo", + notified = false, + unread = true + ) + + val feedItemId = db.feedItemDao().insertFeedItem(item) + + feedItem = item.copy(id = feedItemId) + } + + @After + fun pressHome() { + UiDevice.getInstance(getInstrumentation()).pressHome() + } + + @Test + fun openInBrowserThenGoingBackDoesNotGoToMainTask() { + mainTaskTestRule.launchActivity( + Intent( + Intent.ACTION_VIEW, + URI_FEEDITEMS.buildUpon().appendPath("${feedItem.id}").build() + ) + ) + + UiDevice.getInstance(getInstrumentation()).pressHome() + + activityTestRule.launchActivity( + getOpenInDefaultActivityIntent( + getApplicationContext(), + feedItemId = feedItem.id, + link = feedItem.link!! + ) + ) + + // Hack - first back exits browser, second back exits main task if it is shown after the first back + // if it's not shown, then pressing back will not finish it + UiDevice.getInstance(getInstrumentation()).pressBack() + UiDevice.getInstance(getInstrumentation()).pressBack() + + assertFalse( + mainTaskTestRule.activity.isFinishing, + message = "Main activity should not be on screen after pressing back" + ) + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/OpenLinkInDefaultActivityTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/OpenLinkInDefaultActivityTest.kt new file mode 100644 index 0000000..eb5fb8c --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/OpenLinkInDefaultActivityTest.kt @@ -0,0 +1,144 @@ +package com.nononsenseapps.feeder.ui + +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation +import androidx.test.rule.ActivityTestRule +import androidx.test.uiautomator.UiDevice +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.db.room.FeedItem +import com.nononsenseapps.feeder.model.getOpenInDefaultActivityIntent +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withContext +import org.junit.After +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import java.net.URL +import kotlin.test.assertEquals + +@RunWith(AndroidJUnit4::class) +class OpenLinkInDefaultActivityTest { + @get:Rule + val activityTestRule = ActivityTestRule(OpenLinkInDefaultActivity::class.java, false, false) + + @get:Rule + val testDb = TestDatabaseRule(getApplicationContext()) + + private lateinit var feedItem: FeedItem + + @Before + fun setup() = runBlocking { + val db = testDb.db + + val feedId = db.feedDao().insertFeed( + Feed( + title = "foo", + url = URL("http://foo") + ) + ) + + val item = FeedItem( + feedId = feedId, + guid = "foobar", + title = "bla", + link = "http://foo", + notified = false, + unread = true + ) + + val feedItemId = db.feedItemDao().insertFeedItem(item) + + feedItem = item.copy(id = feedItemId) + } + + @After + fun pressHome() { + UiDevice.getInstance(getInstrumentation()).pressBack() + } + + @Test + fun noIntentDoesNothing() { + activityTestRule.launchActivity(null) + + runBlocking { + val item = withContext(Dispatchers.Default) { + untilEq(feedItem) { + testDb.db.feedItemDao().loadFeedItem(feedItem.id) + } + } + assertEquals(feedItem, item) + } + } + + @Test + fun faultyLinkDoesntCrash() { + activityTestRule.launchActivity( + getOpenInDefaultActivityIntent( + getApplicationContext(), + feedItemId = -252, + link = "bob" + ) + ) + + runBlocking { + val item = withContext(Dispatchers.Default) { + untilEq(feedItem) { + testDb.db.feedItemDao().loadFeedItem(feedItem.id) + } + } + assertEquals(feedItem, item) + } + } + + @Test + fun withIntentItemIsMarkedAsReadAndNotified() { + activityTestRule.launchActivity( + getOpenInDefaultActivityIntent( + getApplicationContext(), + feedItemId = feedItem.id, + link = feedItem.link!! + ) + ) + + val expected = feedItem.copy( + unread = false, + notified = true + ) + + runBlocking { + val item = withContext(Dispatchers.Default) { + untilEq(expected) { + testDb.db.feedItemDao().loadFeedItem(feedItem.id) + } + } + assertEquals(expected, item) + } + } + + @Test + fun noLinkButItemIsMarkedAsReadAndNotified() { + activityTestRule.launchActivity( + getOpenInDefaultActivityIntent( + getApplicationContext(), + feedItemId = feedItem.id + ) + ) + + val expected = feedItem.copy( + unread = false, + notified = true + ) + + runBlocking { + val item = withContext(Dispatchers.Default) { + untilEq(expected) { + testDb.db.feedItemDao().loadFeedItem(feedItem.id) + } + } + assertEquals(expected, item) + } + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/ReportBugTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/ReportBugTest.kt new file mode 100644 index 0000000..4bf4d15 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/ReportBugTest.kt @@ -0,0 +1,44 @@ +package com.nononsenseapps.feeder.ui + +import android.content.Context +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu +import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.matcher.ViewMatchers.withText +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import androidx.test.rule.ActivityTestRule +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.util.Prefs +import org.junit.Assert.assertNotNull +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.kodein.di.android.closestKodein +import org.kodein.di.generic.instance + +@RunWith(AndroidJUnit4::class) +@LargeTest +class ReportBugTest { + @get:Rule + val activityRule: ActivityTestRule = ActivityTestRule(FeedActivity::class.java) + + private val kodein by closestKodein(getApplicationContext() as Context) + private val prefs by kodein.instance() + + @Before + fun keepNavDrawerClosed() { + prefs.welcomeDone = true + } + + @Test + fun clickingReportBugOpensEmailComposer() { + openActionBarOverflowOrOptionsMenu(getApplicationContext()) + onView(withText(R.string.send_bug_report)).perform(click()) + + // Can't assert anything except that it didn't crash + assertNotNull(activityRule.activity) + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/TestDatabaseRule.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/TestDatabaseRule.kt new file mode 100644 index 0000000..5e237f8 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/TestDatabaseRule.kt @@ -0,0 +1,24 @@ +package com.nononsenseapps.feeder.ui + +import android.content.Context +import androidx.room.Room +import com.nononsenseapps.feeder.db.room.AppDatabase +import org.junit.rules.ExternalResource + +class TestDatabaseRule(val context: Context) : ExternalResource() { + lateinit var db: AppDatabase + + override fun before() { + db = Room.inMemoryDatabaseBuilder( + context, + AppDatabase::class.java + ).build().also { + // Ensure all classes use test database + AppDatabase.setInstance(it) + } + } + + override fun after() { + db.close() + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/WebViewThemeResettingTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/WebViewThemeResettingTest.kt new file mode 100644 index 0000000..7528b81 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/WebViewThemeResettingTest.kt @@ -0,0 +1,101 @@ +package com.nononsenseapps.feeder.ui + +import android.content.Context +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.Espresso.pressBack +import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.assertion.ViewAssertions +import androidx.test.espresso.matcher.ViewMatchers.hasTextColor +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import androidx.test.rule.ActivityTestRule +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.db.room.FeedItem +import com.nononsenseapps.feeder.util.Prefs +import kotlinx.coroutines.delay +import kotlinx.coroutines.runBlocking +import okhttp3.mockwebserver.MockResponse +import okhttp3.mockwebserver.MockWebServer +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.kodein.di.android.closestKodein +import org.kodein.di.generic.instance +import java.net.URL + +@RunWith(AndroidJUnit4::class) +@LargeTest +class WebViewThemeResettingTest { + @get:Rule + var activityRule: ActivityTestRule = ActivityTestRule(FeedActivity::class.java, false, false) + + @get:Rule + val testDb = TestDatabaseRule(getApplicationContext()) + + private val server = MockWebServer() + + private val kodein by closestKodein(getApplicationContext() as Context) + private val prefs by kodein.instance() + + @Before + fun setup() = runBlocking { + server.enqueue( + MockResponse().also { + it.setBody("Hello!") + } + ) + server.start() + + val feedId = testDb.db.feedDao().insertFeed( + Feed( + title = "foo", + url = URL("http:") + ) + ) + + val feedItemId = testDb.db.feedItemDao().insertFeedItem( + FeedItem( + guid = "bar", + feedId = feedId, + title = "foo", + imageUrl = null, + link = server.url("/bar.html").toUrl().toString() + ) + ) + + prefs.isNightMode = true + + activityRule.launchReader(feedItemId) + } + + @Test + fun webViewDoesNotResetTheme() { + runBlocking { + assertTextColorIsReadableInNightMode() + + delay(10) + + openWebView() + + delay(10) + + pressBack() + + delay(10) + + assertTextColorIsReadableInNightMode() + } + } + + private fun assertTextColorIsReadableInNightMode() { + onView(withId(com.nononsenseapps.feeder.R.id.story_body)) + .check(ViewAssertions.matches(hasTextColor(com.nononsenseapps.feeder.R.color.white_87))) + } + + private fun openWebView() = + onView(withId(com.nononsenseapps.feeder.R.id.action_open_in_webview)) + .perform(click()) +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/YoutubePlaceHolderArticleTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/YoutubePlaceHolderArticleTest.kt new file mode 100644 index 0000000..3325ea6 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/YoutubePlaceHolderArticleTest.kt @@ -0,0 +1,122 @@ +package com.nononsenseapps.feeder.ui + +import android.content.Context +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.espresso.matcher.ViewMatchers.withText +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import androidx.test.rule.ActivityTestRule +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.db.room.FeedItem +import com.nononsenseapps.feeder.model.insertFeedItemWithBlob +import kotlinx.coroutines.runBlocking +import okhttp3.HttpUrl +import okhttp3.mockwebserver.MockResponse +import okhttp3.mockwebserver.MockWebServer +import org.hamcrest.Matchers.containsString +import org.hamcrest.Matchers.not +import org.junit.After +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import java.net.URL + +@RunWith(AndroidJUnit4::class) +@LargeTest +class YoutubePlaceHolderArticleTest { + @get:Rule + var activityRule: ActivityTestRule = ActivityTestRule(FeedActivity::class.java, false, false) + + @get:Rule + val testDb = TestDatabaseRule(getApplicationContext()) + + private val server = MockWebServer() + + @After + fun stopServer() { + server.shutdown() + } + + @Test + fun placeHolderIsShownForYoutubeIframes() = runBlocking { + val itemId = setup("youtube.com/embed/foo") { imgUrl -> + """ + Video is: +

    + And that is that + """.trimIndent() + } + + activityRule.launchReader(itemId) + + onView(withId(R.id.story_body)) + .check( + matches( + withText( + containsString( + getApplicationContext() + .getString(R.string.touch_to_play_video) + ) + ) + ) + ) + } + + @Test + fun placeHolderIsNotShownForBadIframes() = runBlocking { + val itemId = setup("badsite.com/foo") { imgUrl -> + """ + Video is: +

    + And that is that + """.trimIndent() + } + + activityRule.launchReader(itemId) + + onView(withId(R.id.story_body)) + .check( + matches( + withText( + not( + containsString( + getApplicationContext() + .getString(R.string.touch_to_play_video) + ) + ) + ) + ) + ) + } + + private suspend fun setup(urlSuffix: String, description: (HttpUrl) -> String): Long { + server.enqueue( + MockResponse().also { + it.setResponseCode(400) + } + ) + server.start() + + val imgUrl = server.url(urlSuffix) + val feedId = testDb.db.feedDao().insertFeed( + Feed( + title = "foo", + url = URL("http://foo") + ) + ) + + return testDb.insertFeedItemWithBlob( + FeedItem( + guid = "bar", + feedId = feedId, + title = "foo", + imageUrl = "$imgUrl" + ), + description = description(imgUrl) + ) + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/text/SpannedConverterImageTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/text/SpannedConverterImageTest.kt new file mode 100644 index 0000000..e556c04 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/text/SpannedConverterImageTest.kt @@ -0,0 +1,79 @@ +package com.nononsenseapps.feeder.ui.text + +import android.content.Context +import android.graphics.Point +import android.text.style.ImageSpan +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.MediumTest +import org.junit.Assert.assertEquals +import org.junit.Test +import org.junit.runner.RunWith +import org.kodein.di.android.closestKodein +import java.io.StringReader +import java.net.URL + +@RunWith(AndroidJUnit4::class) +@MediumTest +class SpannedConverterImageTest { + private val kodein by closestKodein(getApplicationContext() as Context) + + @Test + @Throws(Exception::class) + fun imgGetsPlaceHolderInserted() { + val builder = FakeBuilder2() + toSpannedWithNoImages( + kodein, + StringReader(""), + URL("http://foo.com"), + Point(100, 100), + builder, + null + ) + + assertEquals(1, builder.getAllSpansWithType().size) + } + + @Test + @Throws(Exception::class) + fun imgWithNoSrcGetsNoPlaceHolder() { + val builder = FakeBuilder2() + toSpannedWithNoImages( + kodein, + StringReader(""), + URL("http://foo.com"), + Point(100, 100), + builder, + null + ) + + assertEquals(emptyList(), builder.getAllSpansWithType()) + } +} + +internal class FakeBuilder2 : SensibleSpannableStringBuilder() { + private val builder: StringBuilder = StringBuilder() + private val spans: ArrayList = ArrayList() + + override fun append(text: CharSequence?): SensibleSpannableStringBuilder { + builder.append(text) + return this + } + + override fun setSpan(what: Any?, start: Int, end: Int, flags: Int) { + spans.add(what) + } + + override fun getAllSpans(): List = spans + + override fun get(where: Int): Char { + return builder[where] + } + + override val length: Int + get() = builder.length + + override fun toString(): String { + return builder.toString() + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/text/SpannedConverterListTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/text/SpannedConverterListTest.kt new file mode 100644 index 0000000..f7b8c5d --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/text/SpannedConverterListTest.kt @@ -0,0 +1,36 @@ +package com.nononsenseapps.feeder.ui.text + +import android.content.Context +import android.graphics.Point +import android.text.style.BulletSpan +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.MediumTest +import org.junit.Assert.assertEquals +import org.junit.Test +import org.junit.runner.RunWith +import org.kodein.di.android.closestKodein +import java.io.StringReader +import java.net.URL + +@RunWith(AndroidJUnit4::class) +@MediumTest +class SpannedConverterListTest { + private val kodein by closestKodein(getApplicationContext() as Context) + + @Test + @Throws(Exception::class) + fun nakedLiTagIsBulletized() { + val builder = FakeBuilder2() + toSpannedWithNoImages( + kodein, + StringReader("Some

  • bullet
  • text"), + URL("http://foo.com"), + Point(100, 100), + builder, + null + ) + + assertEquals(1, builder.getAllSpansWithType().size) + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/ui/text/SpannedConverterPreTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/text/SpannedConverterPreTest.kt new file mode 100644 index 0000000..924e72c --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/ui/text/SpannedConverterPreTest.kt @@ -0,0 +1,83 @@ +package com.nononsenseapps.feeder.ui.text + +import android.content.Context +import android.graphics.Point +import android.text.style.BackgroundColorSpan +import android.text.style.RelativeSizeSpan +import android.text.style.TypefaceSpan +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.MediumTest +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Test +import org.junit.runner.RunWith +import org.kodein.di.android.closestKodein +import java.io.StringReader +import java.net.URL + +@RunWith(AndroidJUnit4::class) +@MediumTest +class SpannedConverterPreTest { + private val kodein by closestKodein(getApplicationContext() as Context) + + @Test + @Throws(Exception::class) + fun preIsMonospaced() { + val builder = FakeBuilder2() + toSpannedWithNoImages( + kodein, + StringReader("Some
    pre  formatted
    text"), + URL("http://foo.com"), + Point(100, 100), + builder, + null + ) + + assertEquals(1, builder.getAllSpansWithType().size) + assertEquals(0, builder.getAllSpansWithType().size) + assertEquals(0, builder.getAllSpansWithType().size) + + assertTrue(builder.toString().contains("pre formatted")) + } + + @Test + @Throws(Exception::class) + fun codeIsMonospacedAndMore() { + val builder = FakeBuilder2() + toSpannedWithNoImages( + kodein, + StringReader("Some code formatted text"), + URL("http://foo.com"), + Point(100, 100), + builder, + null + ) + + assertEquals(1, builder.getAllSpansWithType().size) + assertEquals(1, builder.getAllSpansWithType().size) + assertEquals(1, builder.getAllSpansWithType().size) + + assertTrue(builder.toString().contains("code formatted")) + } + + @Test + @Throws(Exception::class) + fun preCodeIsMonospacedAndMore() { + val builder = FakeBuilder2() + toSpannedWithNoImages( + kodein, + StringReader("Some
    pre  code  formatted
    text"), + URL("http://foo.com"), + Point(100, 100), + builder, + null + ) + + assertEquals(2, builder.getAllSpansWithType().size) + assertEquals(1, builder.getAllSpansWithType().size) + assertEquals(1, builder.getAllSpansWithType().size) + + assertTrue(builder.toString().contains("pre code formatted")) + } +} diff --git a/app/src/androidTest/java/com/nononsenseapps/feeder/util/BugReportKTest.kt b/app/src/androidTest/java/com/nononsenseapps/feeder/util/BugReportKTest.kt new file mode 100644 index 0000000..3cc6da2 --- /dev/null +++ b/app/src/androidTest/java/com/nononsenseapps/feeder/util/BugReportKTest.kt @@ -0,0 +1,87 @@ +package com.nononsenseapps.feeder.util + +import android.content.Context +import android.content.Intent.ACTION_SENDTO +import android.content.Intent.ACTION_VIEW +import android.content.Intent.EXTRA_EMAIL +import android.content.Intent.EXTRA_SUBJECT +import android.content.Intent.EXTRA_TEXT +import android.net.Uri +import android.os.Build +import androidx.test.core.app.ApplicationProvider.getApplicationContext +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.MediumTest +import com.nononsenseapps.feeder.BuildConfig +import com.nononsenseapps.feeder.R +import org.junit.Assert.assertEquals +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +@MediumTest +class BugReportKTest { + @Test + fun bodyContainsAndroidInformation() { + assertEquals( + """ + ${BuildConfig.APPLICATION_ID} (flavor ${BuildConfig.BUILD_TYPE.ifBlank { "None" }}) + version ${BuildConfig.VERSION_NAME} (code ${BuildConfig.VERSION_CODE}) + on Android ${Build.VERSION.RELEASE} (SDK-${Build.VERSION.SDK_INT}) + on a Tablet? No + + Describe your issue and how to reproduce it below: + """.trimIndent(), + emailBody(false) + ) + } + + @Test + fun bodyContainsAndroidInformationAsTablet() { + assertEquals( + """ + ${BuildConfig.APPLICATION_ID} (flavor ${BuildConfig.BUILD_TYPE.ifBlank { "None" }}) + version ${BuildConfig.VERSION_NAME} (code ${BuildConfig.VERSION_CODE}) + on Android ${Build.VERSION.RELEASE} (SDK-${Build.VERSION.SDK_INT}) + on a Tablet? Yes + + Describe your issue and how to reproduce it below: + """.trimIndent(), + emailBody(true) + ) + } + + @Test + fun subjectIsSensible() { + assertEquals( + "Bug report for Feeder", + emailSubject() + ) + } + + @Test + fun emailAddressIsCorrect() { + assertEquals( + "jonas.feederbugs@cowboyprogrammer.org", + emailReportAddress() + ) + } + + @Test + fun emailIntentIsCorrect() { + val intent = emailBugReportIntent(getApplicationContext()) + + assertEquals(ACTION_SENDTO, intent.action) + assertEquals(Uri.parse("mailto:${emailReportAddress()}"), intent.data) + assertEquals(emailSubject(), intent.getStringExtra(EXTRA_SUBJECT)) + assertEquals(emailBody(getApplicationContext().resources.getBoolean(R.bool.isTablet)), intent.getStringExtra(EXTRA_TEXT)) + assertEquals(emailReportAddress(), intent.getStringExtra(EXTRA_EMAIL)) + } + + @Test + fun issuesIntentIsCorrect() { + val intent = openGitlabIssues() + + assertEquals(ACTION_VIEW, intent.action) + assertEquals(Uri.parse("https://gitlab.com/spacecowboy/Feeder/issues"), intent.data) + } +} diff --git a/app/src/androidTest/resources/com/nononsenseapps/feeder/model/cowboyprogrammer_atom.xml b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/cowboyprogrammer_atom.xml new file mode 100644 index 0000000..1dfc66b --- /dev/null +++ b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/cowboyprogrammer_atom.xml @@ -0,0 +1,1757 @@ + + + https://cowboyprogrammer.org/ + Cowboy Programmer + 2018-03-05T23:00:00+02:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + + Hugo -- gohugo.io + Recent content in Cowboy Programmer on Cowboy Programmer + https://cowboyprogrammer.org/css/images/logo.png + Powered by [Hugo](//gohugo.io) and [Icarus Theme](http://themes.gohugo.io/theme/hugo-icarus/). + + + + https://cowboyprogrammer.org/2018/03/fixed-vs-variable-interest-rates/ + + A comparison between fixed and variable interest rates + 2018-03-05T23:00:00+02:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + + + The data I am using is originally from SwedBank and all data and +code is available at GitLab. The data contains interest +rates at 5 years fixed term, 2 years fixed term, and 3 months fixed +term (also called variable rate in Sweden) for those dates when any +rate was changed. The first rates are from 1989-11-01 and the last are +from 2018-02-12. Example of the data:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    5y2y3m
    Date
    1989-11-2213.5013.5012.75
    1991-01-1414.0014.7515.25
    1993-01-1312.7513.0013.75
    1994-11-2111.7511.509.75
    1996-03-129.858.959.10
    2005-09-093.552.973.15
    2005-10-033.693.093.15
    2007-12-215.365.255.15
    2008-01-245.134.945.15
    2009-03-204.262.832.20
    + +

    To make the calculations more convenient I assume that loans are only +fixed the first day of the month. Example:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    5y2y3m
    Date
    1990-06-0114.5014.5013.95
    1992-03-0112.5013.0014.75
    1993-06-0110.7510.5011.50
    1998-02-016.706.405.80
    2001-09-016.555.955.90
    2004-11-014.853.903.65
    2009-05-014.152.731.97
    2010-08-013.992.902.17
    2011-05-015.294.393.88
    2011-11-014.594.144.35
    + +

    If we graph the interest rates we get:

    + +

    Interest rates over time

    + +

    You can see a clear peak in the variable rate when the riksbank set +the repo rate at 500% (mortgages “only” reached 24%). You can also see +that during the early nineties the variable rate was higher than the +fixed rates during relatively long periods. But to compare the actual +cost over the fixed term we have to compare average rates.

    + +

    For example, let us compare the actual average rates from the first of +July 1991 during 5 years for variable rate (11.96%) and 5 years fixed +term (12.25%). Even though with variable rate you’d have had a rate of +24% during a quarter you’d still pay less in total over the 5 years.

    + +

    If the same calculation is made for every month you can see how much +you would have earned/lost depending on when you started your fixed +term. Since 5 years is not evenly divisible by 2 years, the 2 years +fixed term refers to what the average rate would have been during the +first 5 of the 6 years.

    + +

    Average interest rate over 5 years

    + +

    It’s quite clear that variable rate has nearly always been the most +profitable alternative. At three seperate occasions it would have been +more profitable to pick a 5 year fixed term: at the of 1989, the +beginning of 1997, and in the middle of 2005. I won’t comment on the 2 +years fixed term since it’s not a fair comparison to only look at 5 out of +6 years.

    + +

    If we compare 2 years fixed term with variable rate:

    + +

    Average interest rate over 2 years

    + +

    Also here the most profitable choice is generally the variable rate +however during times of rising interest rates getting a fixed 2 year +term has been the better choice on several occasions. An important +difference to the 5 years term is that you’re not locked in for long +when the rates finally go down again (and you’re able to switch to +variable rate).

    + +

    If we compare all terms during 10 years:

    + +

    Average interest rate over 10 years

    + +

    Here it is clear that the variable rate is the most profitable.

    + +

    Even though it has been possible at certain occasions (29 years and +only 3 short occasions!) to get a fixed term for 5 years and pay less +overall than with variable rate, I think it’s far too improbable that +one is able to do it at the right time. You’re almost guaranteed to be +paying more in the end.

    + +

    Getting a fixed term for 2 years is more probable to be profitable, +but even here it is more probable not to be.

    +]]>
    +
    + + + https://cowboyprogrammer.org/2016/10/reduce-colors-in-images/ + + Reduce the size of images even further by reducing number of colors with Gimp + 2016-10-21T00:27:00+02:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + + + In Gimp you go to Image in the top menu bar and select Mode +followed by Indexed. Now you see a popup where you can select the +number of colors for a generated optimum palette.

    + +

    You’ll have to experiment a little because it will depend on your +image.

    + +

    I used this approach to shrink the size of the cover image in +the_zopfli post from a 37KB (JPG) to just 15KB +(PNG, all PNG sizes listed include Zopfli compression btw).

    + +

    Straight JPG to PNG conversion: 124KB

    + +

    PNG version RGB colors

    + +

    First off, I exported the JPG file as a PNG file. This PNG file had a +whopping 124KB! Clearly there was some bloat being stored.

    + +

    256 colors: 40KB

    + +

    Reducing from RGB to only 256 colors has no visible effect to my eyes.

    + +

    256 colors

    + +

    128 colors: 34KB

    + +

    Still no difference.

    + +

    128 colors

    + +

    64 colors: 25KB

    + +

    You can start to see some artifacting in the shadow behind the text.

    + +

    64 colors

    + +

    32 colors: 15KB

    + +

    In my opinion this is the sweet spot. The shadow artifacting is barely +noticable but the size is significantly reduced.

    + +

    32 colors

    + +

    16 colors: 11KB

    + +

    Clear artifacting in the text shadow and the yellow (fire?) in the +background has developed an outline.

    + +

    16 colors

    + +

    8 colors: 7.3KB

    + +

    The broom has shifted in color from a clear brown to almost grey. Text +shadow is just a grey blob at this point. Even clearer outline +developed on the yellow background.

    + +

    8 colors

    + +

    4 colors: 4.3KB

    + +

    Interestingly enough, I think 4 colors looks better than 8 colors. The outline in the background has disappeared because there’s not enough color spectrum to render it. The broom is now black and filled areas tend to get a white separator to the outlines.

    + +

    4 colors

    + +

    2 colors: 2.4KB

    + +

    Well, at least the silhouette is well defined at this point I guess.

    + +

    2 colors

    +]]>
    +
    + + + https://cowboyprogrammer.org/2016/10/dont-start-service-on-install-of-debian-package/ + + Don't start service on installation of Debian package + 2016-10-19T00:00:00+02:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + + + A clear difference between Debian/Ubuntu and for example Red +Hat/Fedora is that packages which include system services will enable +and start those services at install time in Debian/Ubuntu whereas they +will not start automatically in Red Hat/Fedora.

    + +

    Sometimes it would be very convenient if the service would not start +automatically, for example if you need to configure the service before +starting it for the first time.

    + +

    To prevent the automatic start of system services at install time in +Debian, just set the RUNLEVEL environment variable like so:

    + +
    RUNLEVEL=1 apt install -y PKG_NAME
    +
    + +

    Then you are free to configure your system before you start the +service for real:

    + +
    systemctl enable PKG_NAME
    +systemctl start PKG_NAME
    +
    +]]>
    +
    + + + https://cowboyprogrammer.org/2016/09/reboot_machine_on_wrong_password/ + + Rebooting on wrong password + 2016-09-28T22:57:21+02:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + Having an encrypted hard drive is all well and good, but chances are +that if someone is gonna steal your laptop, it’s probably not going to +be turned off. Most likely, it will be stolen in a powered-on +state. And so your encrypted hard drive doesn’t increase your security +at all since it’s currently unlocked.

    + +

    In my mind, it’s a slight improvement if the computer somehow can +shutdown if someone is trying to gain access to it. That way, the hard +drive is no longer accessible and the number of possible attack +vectors go down drastically. And so, if you type the wrong password 3 +times on my laptop, it shuts down.

    + +

    This is accomplished by using PAM, and its ability to invoke an +arbitrary script as part of the login flow via pam_exec.so. The +script itself looks like this:

    +
    #!/bin/bash
    +# Do not add -eu, you need to allow empty variables here!
    +
    +# To be used with PAM. Look in /etc/pam.d for the script that your
    +# screensaver etc uses. Typically it references common-account and common-auth.
    +#
    +# In common-auth, add this as the first line
    +#auth       optional     pam_exec.so debug /path/to/wrongpassword.sh
    +#
    +# In common-account, add this as the first line
    +#account    required     pam_exec.so debug /path/to/wrongpassword.sh
    +#
    +
    +COUNTFILE="/var/log/failed_login_count"
    +
    +# Make sure file exists
    +if [ ! -f "${COUNFILE}" ];then
    +  touch "${COUNTFILE}"
    +  chmod 777 "${COUNTFILE}"
    +fi
    +
    +# Read value in it
    +COUNT=$(cat "${COUNTFILE}")
    +# Increment it
    +COUNT=$((COUNT+1))
    +echo "${COUNT}" > "${COUNTFILE}"
    +
    +# if authentication
    +if [ "${PAM_TYPE}" == "auth" ]; then
    +  # The count will be at 4 after 3 wrong tries
    +  if [ "${COUNT}" -ge 4 ]; then
    +    # Shutdown in 1 min
    +    #/usr/bin/shutdown --no-wall -h +1
    +    # This is a hack because the line above gives a segfault in logind
    +    echo "0" > "${COUNTFILE}"
    +    systemctl poweroff
    +  fi
    +# If authentication succeeded, and we are now in account phase
    +elif [ "${PAM_TYPE}" == "account" ]; then
    +  echo "0" > "${COUNTFILE}"
    +  # Cancel shutdown which was just issued
    +  shutdown -c
    +fi
    +
    +exit 0
    +
    + +

    On my Debian system, PAM ends up looking at /etc/pam.d/common-auth +and /etc/pam.d/common-account. These are invoked in different parts +of the authentication flow. In common-auth, add this as the first +line:

    +
    auth optional pam_exec.so debug /path/to/wrongpassword.sh
    +
    + +

    And then in common-account, add this as the first line:

    +
    account required pam_exec.so debug /path/to/wrongpassword.sh
    +
    + +

    You can try it immediately if it works. Lock your screen, and type the +wrong password 4 times. If it works, your computer should shut down.

    + +

    WARNING: DO NOT ENABLE ON SERVERS

    + +

    This is NOT something you want to do on any machine. Most notably, +it’s probably a huge mistake to copy this verbatim on a machine which +accepts remote connections. In that case, you essentially enable +anyone to DOS you by entering the wrong password via SSH or +similarly. So don’t do this if you allow remote connections to your +machine (which shouldn’t be a thing on a laptop).

    +]]>
    +
    + + + https://cowboyprogrammer.org/2016/08/zopfli_all_the_things/ + + Compress all the images! + 2016-08-26T13:17:40+02:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + + + Update 2016-11-22: Made the Makefile compatible with BSD sed (MacOS)

    + +

    One advantage that static sites, such as those built by Hugo, +provide is fast loading times. Because there is no processing to be +done, no server side rendering, no database lookups, loading times are +just as fast as you can serve the files that make up the page. This +means that bandwidth becomes the primary bottleneck, which +incidentally is +one of the factors used by Google to calculate your search ranking. See +also +Pagespeed Insights.

    + +

    Compressing images

    + +

    Because the largest pieces of a page typically consist of images, it +stands to reason that if we can make the images smaller, we can make +the page load faster. Luckily there exists methods that can compress +images losslessly. That means that the quality stays exactly the +same, the page only loads faster. That seemed like a no-brainer to me +so I compressed all the images on the site using PNGout as +advised by Jeff Atwood. I mean, who doesn’t +like free bandwidth?

    + +

    A new algorithm called Zopfli (open sourced by Google, +also mentioned by Jeff) claims even better +results than PNGout though. Results on this site’s images confirm +those claims. Running the tool on images already compressed by +PNGout gives output such as this:

    +
    ./zopflipng --prefix="zopfli_" static/images/2014/Dec/Screenshot-from-2014-12-29-13-28-29.png
    +Optimizing static/images/2014/Dec/Screenshot-from-2014-12-29-13-28-29.png
    +Input size: 89420 (87K)
    +Result size: 90361 (88K). Percentage of original: 101.052%
    +Preserving original PNG since it was smaller
    +
    +./zopflipng --prefix="zopfli_" static/images/2014/Jun/Jenkins_install_git.png
    +Optimizing static/images/2014/Jun/Jenkins_install_git.png
    +Input size: 189406 (184K)
    +Result size: 166362 (162K). Percentage of original: 87.834%
    +Result is smaller
    +
    +./zopflipng --prefix="zopfli_" static/images/2014/Jun/jenkins_batch.png
    +Optimizing static/images/2014/Jun/jenkins_batch.png
    +Input size: 21933 (21K)
    +Result size: 16255 (15K). Percentage of original: 74.112%
    +Result is smaller
    +
    +./zopflipng --prefix="zopfli_" static/images/2014/Jun/jenkins_build_step.png
    +Optimizing static/images/2014/Jun/jenkins_build_step.png
    +Input size: 8184 (7K)
    +Result size: 6809 (6K). Percentage of original: 83.199%
    +Result is smaller
    +
    +./zopflipng --prefix="zopfli_" static/images/2014/Jun/jenkins_config_git.png
    +Optimizing static/images/2014/Jun/jenkins_config_git.png
    +Input size: 57897 (56K)
    +Result size: 47164 (46K). Percentage of original: 81.462%
    +Result is smaller
    +
    + +

    The first result in the example output shows a case where Zopfli would +actually have made the file bigger (because it was already compressed +by PNGout, remember). This is nothing you have to worry about because +it’s actually smart enough that it simply copies the original file in +that case.

    + +

    Comparing to both before any compression, and PNGout, yielded the +following results:

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Mean relative size
    Before1.00
    PNGout0.84
    ZopfliPNG0.77
    + +

    Box plot of results on all images:

    + +

    Compression results

    + +

    Source files: before.csv, +pngout.csv, zopfli.csv

    + +

    And this is with the default arguments. It is possible squeeze yet a +couple of more bytes out of this if you’re willing to wait longer.

    + +

    Automate it with Make

    + +

    Another joy of using a simple static site is that it is possible to +compose regular tools to do useful things. Tools like +Make. And we can use Make to build the site, as well as +compressing images which have not already been compressed. You could +do it manually for each new image that you add of course but be +honest, you know that you’re gonna forget to do it at some point. So +let’s automate it instead!

    + +

    This is the Makefile that I use to build this site with, note that +public depends on $(PNG_SENTINELS), so I literally can’t forget to +compress any new images added:

    +
    .PHONY: help build server server-with-drafts clean zopfli
    +
    +PNG_SENTINELS:= $(shell find . -path ./public -prune -o -name '*.png' -print | sed 's|\(.\+/\)\(.\+.png\)|\1.\2.zopfli|g')
    +
    +help: ## Print this help text
    +	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
    +
    +server: ## Run hugo server
    +	hugo server
    +
    +server-with-drafts: ## Run hugo server and include drafts
    +	hugo server -D
    +
    +build: public ## Build site (will also compress images using zopfli)
    +
    +zopfli: $(PNG_SENTINELS) ## Compress new images using zopfli
    +
    +clean: ## Remove the built directory
    +	@rm -rf public
    +
    +public: $(PNG_SENTINELS)
    +	@rm -rf public
    +	hugo
    +
    +# Zopfli sentinel rule, assumes zopflipng binary is in the same folder
    +.%.png.zopfli: %.png
    +	./zopflipng --prefix="zopfli_" $<
    +	@mv $(dir $<)zopfli_$(notdir $<) $<
    +	@touch $@
    +
    + +

    For best performance, run make with parallel jobs (change 4 to your +number CPUs): make -j4 zopfli.

    + +

    To know which files have already been compressed without actually +running Zopfli on it again (which takes a while), sentinel files are +created with this pattern: .<imgfilename>.zopfli. Thus, the next +time around, zopfli is only invoked for files which have not already +been compressed, making it a one-time operation. And when everything +has already been compressed, you’ll just get this:

    +
    make: Nothing to be done for 'zopfli'.
    +
    +]]>
    +
    + + + https://cowboyprogrammer.org/2016/07/migrating_from_ghost_to_hugo/ + + Migrating from Ghost to Hugo + 2016-07-25T23:55:38+02:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + + + So I recently migrated this site from Ghost to Hugo +after reading a nice article about the Hugo in +Linux Voice #20 (funnily enough, the same issue also +features an article about Ghost). I originally made the switch to +Ghost from Jekyll back in 2014 or so mainly because I could +not find a good theme to use. Ghost also seemed to have a lot of cool +features and it’s fun to try new things.

    + +

    I think it’s safe to say that I am hardly a prolific blogger. I mainly +write about stuff which I personally cannot find on the web which I +think should exist, because I will likely need it myself sometime in +the future. So it’s hardly a surprise that I am not in the target +audience for Ghost.

    + +

    Things about Ghost which annoy me

    + +
      +
    • It’s written in NodeJS — people who think JS is a good server +language also tend to think that it’s a good idea to depend on just +about any package, and download it in every single build. Which +becomes really funny sometimes.
    • +
    • Poor selection of themes — this is subjective of +course, but it seems to me that the free options don’t have much in +terms of diversity. Heck, they even call it a marketplace which +rubs me the wrong way.
    • +
    • Themes end up being quite reliant on JS if you want necessary +features like syntax highlighting on code snippets — I often +browse with JS disabled and should be able to view my own site.
    • +
    • Markdown parser treats newlines as significant — meaning you can’t +have properly aligned paragraphs in your editor.
    • +
    + +

    That last point irritates me deeply but it’s not as bad as the next point.

    + +
      +
    • You can effectively lock an account by entering the wrong password 3 +times.
    • +
    + +

    This requires some explanation. So Ghost, targeting teams of bloggers +really, naturally have an account system much like Wordpress. Now, as +I was surveying the security status of other services I am running, I +was wondering how Ghost handled someone trying to brute force your +account and decided to simply try it out. Type the wrong password once +too many, and this happens:

    + +

    Ghost: typing the wrong password too many times locks your account

    + +

    It doesn’t lock it for a single IP address (I tried from several), it +locks the entire account. Effectively, someone can just set up a +script to try an account indefinitely simply with the intention to +block someone from logging in.

    + +

    The log doesn’t even show login attempts, so there is no way to +implement sensible blocking strategies using something like fail2ban.

    + +

    The whole thing left a bad taste my mouth so it was a very suitable timing to read an article on Hugo.

    + +

    Things about Hugo which excite me

    + +
      +
    • Markdown parser treats newlines correctly
    • +
    • It’s a static site generator and not a service — this meant 100MB +(10%) of RAM became available on my server and there is no account +to hack (or block).
    • +
    • Supports everything of Ghost (that I am aware of).
    • +
    • The simplicity of Hugo makes it quite painless to +do useful things compared to +ignored feature requests for the same in Ghost.
    • +
    • Can do server side syntax highlighting using Pygments.
    • +
    • Some really nice themes are available, and they are +all free.
    • +
    + +

    Migrating all data from Ghost

    + +

    Migrating from Ghost also turned about to be really painless. There +were several scripts around for exactly this but they all turned out +to be written in odd languages, and did not actually +migrate all the metadata in Ghost. So I wrote my own in Python with +these killer features:

    + +
      +
    • Migrates tags.
    • +
    • Migrates dates.
    • +
    • Migrates drafts as drafts.
    • +
    • Creates aliases in your posts which makes sure that old permalinks +will still work!
    • +
    • Migrates cover pictures as banner images, just select a theme which +support them.
    • +
    • Rewrites all relative links so they all still work (this includes +images).
    • +
    • Code blocks with language definitions like ```language-java +are changed to ```java.
    • +
    +
    #!/usr/bin/env python3
    +# -*- coding: utf-8 -*-
    +'''
    +A simple program which migrates an exported Ghost blog to Hugo.
    +It assumes your blog is using the hugo-icarus theme, but should
    +work for any theme. The script will migrate your posts, including
    +tags and banner images. Furthermore, it will make sure that
    +all your old post urls will keep working by adding aliases to them.
    +
    +The only thing you need to do yourself is copying the `images/`
    +directory in your ghost directory to `static/images/` in your hugo
    +directory. That way, all images will work. The script will rewrite
    +all urls linking to `/content/images` to just `/images`.
    +'''
    +
    +import argparse
    +import json
    +from datetime import date
    +from os import path
    +from collections import defaultdict
    +import re
    +
    +_post = '''
    ++++
    +date = "{date}"
    +draft = {draft}
    +title = """{title}"""
    +slug = "{slug}"
    +tags = {tags}
    +banner = "{banner}"
    +aliases = {aliases}
    ++++
    +
    +{markdown}
    +'''
    +
    +
    +def migrate(filepath, hugodir):
    +    '''
    +    Parse the Ghost json file and write post files
    +    '''
    +    with open(filepath, "r") as fp:
    +        ghost = json.load(fp)
    +
    +    data = ghost['db'][0]['data']
    +
    +    tags = {}
    +    for tag in data["tags"]:
    +        tags[tag["id"]] = tag["name"]
    +
    +    posttags = defaultdict(list)
    +
    +    for posttag in data["posts_tags"]:
    +        posttags[posttag["post_id"]].append(tags[posttag["tag_id"]])
    +
    +    for post in data['posts']:
    +        draft = "true" if post["status"] == "draft" else "false"
    +        ts = int(post["created_at"]) / 1000
    +
    +        banner = "" if post["image"] is None else post["image"]
    +        # /content/ should not be part of uri anymore
    +        banner = re.sub("^.*/content[s]?/", "/", banner)
    +
    +        target = path.join(hugodir, "content/post",
    +                           "{}.md".format(post["slug"]))
    +
    +        aliases = ["/{}/".format(post["slug"])]
    +
    +        print("Migrating '{}' to {}".format(post["title"],
    +                                          target))
    +
    +        hugopost = _post.format(markdown=post["markdown"],
    +                                title=post["title"],
    +                                draft=draft,
    +                                slug=post["slug"],
    +                                date=date.fromtimestamp(ts).isoformat(),
    +                                tags=posttags[post["id"]],
    +                                banner=banner,
    +                                aliases=aliases)
    +
    +        # this is no longer relevant
    +        hugopost = hugopost.replace("```language-", "```")
    +        # /content/ should not be part of uri anymore
    +        hugopost = hugopost.replace("/content/", "/")
    +        hugopost = re.sub("^.*/content[s]?/", "/", hugopost)
    +
    +        with open(target, 'w') as fp:
    +            print(hugopost, file=fp)
    +
    +
    +def main():
    +    parser = argparse.ArgumentParser(
    +        description="Migrate an exported Ghost blog to Hugo")
    +    req = parser.add_argument_group(title="required arguments")
    +    req.add_argument("-f", "--file", help="JSON file exported from Ghost",
    +                     required=True)
    +    req.add_argument("-d", "--dir", help="Directory (root) of Hugo site",
    +                     required=True)
    +
    +    args = parser.parse_args()
    +
    +    migrate(args.file, args.dir)
    +
    +
    +if __name__ == "__main__":
    +    main()
    +
    + +

    Next post, I might write about what changes I made to the theme, and +some nifty Nginx tricks you can use to stay compatible with old links.

    +]]>
    +
    + + + https://cowboyprogrammer.org/2016/05/set-refresh-rate-of-screen-from-script/ + + Set refresh rate of screen from script + 2016-05-18T00:00:00+00:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + + + Getting a great new 100 Hz Ultra Wide monitor does not come without its share of tweaking. So it turns out that the refresh you set on your monitor in Nvidia settings (as explained in a previous post does not apply to all the display ports. They apparently count as different screens with different settings or something.

    + +

    So, here’s a handy script which you can add to your window manager’s autostart applications to set the refresh rate and resolution of your screen, regardless of which actual port you use:

    +
    #!/bin/bash -eu
    +RES="3440x1440"
    +RR="100"
    +
    +# Do for every output, so that it doesn't matter where you plug in
    +# your monitor.
    +for output in $(xrandr | grep "DP-" | sed -e "s/\(DP-.\).*/\1/"); do
    +  echo "Trying to set mode on $output"
    +  if xrandr --output "$output" --mode "$RES" -r "$RR"; then
    +    echo "Success: $RES $RR Hz set on $output"
    +  fi
    +done
    +
    + +

    It iterates over all the display ports on your graphics card, so it doesn’t matter where you plug your monitor in.

    + +

    In XFCE, you’d add this script to Application Autostart:

    + +

    XFCE Application Autostart

    +]]>
    +
    + + + https://cowboyprogrammer.org/2016/04/fixing-the-up-button-in-python-shell-history/ + + Fixing the up button in Python shell history + 2016-04-02T00:00:00+00:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + + + In case your python/ipython shell doesn’t have a working history, e.g. pressing ↑ only prints some nonsensical ^[[A, then you are missing either the readline or ncurses library.

    + +

    Python shell where up doesn't work

    + +

    Ipython is more descriptive that something is wrong, but if you’re in the habit of mostly using python as a quick calculator, you might never notice:

    + +

    iPython shell where up doesn't work

    + +

    If you’re using Miniconda then just do:

    + +
    conda install ncurses readline
    +
    + +

    And ↑ should work:

    + +

    iPython with working up

    +]]>
    +
    + + + https://cowboyprogrammer.org/2016/03/nvidia-gsync-on-linux/ + + Nvidia G-Sync and Linux + 2016-03-05T00:00:00+00:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + + + After getting a fancy new monitor with G-Sync support, I was eager to try it out in my Linux gaming setup. While Nvidia fully supports G-Sync in their Linux drivers, it turns out that other components of the system can get in the way. As explained by a post on the Nvidia forums:

    + +
    +

    For G-SYNC to work, the application has to be able to flip and the symptoms you’re describing here sound like it’s not able to flip in your configuration. There are a variety of reasons why flipping might not be working, but the most likely culprits here are either the compositor getting in the way, or the game not being completely full-screen. The full-screen requirement includes the game being completely unoccluded, so if your window manager is drawing something on top of the game, even just by one pixel, it will prevent flipping. Full-screen also means that it has to cover the entire X screen, which includes both monitors if you have them both enabled.

    + +

    Can you please try a different window manager / desktop environment to see if the behavior changes?

    +
    + +

    Since only a minority of PC-gamers are actually on Linux, and only a minority of those actually have G-Sync capable monitors, Googling for assistance was… challenging. So, for any other Linux gamers out there, here is a short guide on how to enable G-Sync and verify that it works. Some of the steps are XFCE specific, as this is my window manager of choice on my gaming PC. If you are using a different window manager, you’ll have to look through your options to find the equivalent settings.

    + +

    Nvidia settings

    + +
      +
    • Sync to VBlank: Optional
    • +
    • Allow Flipping: Required
    • +
    • Allow G-SYNC: Required
    • +
    • Enable G-SYNC Visual Indicator: Optional
    • +
    + +

    The only two required settings are flipping and G-Sync, the others are optional. Enabling Sync to VBlank (VSync) in combination with G-Sync only prevents the GPU from generating an FPS beyond your monitor’s max refresh rate (which you can’t see anyway). It is turned off below the max refresh rate when G-Sync is enabled.

    + +

    The visual indicator is useful here to see that G-Sync is working. If all goes well, you should see a green “G-SYNC” text in the corner when running a game.

    + +

    Nvidia settings

    + +

    Disable compositor

    + +

    As mentioned in the forum post, a compositor will prevent G-Sync from activating because essentially something is rendering above the game. The same reason prevents G-Sync from working in Window mode (unlike Windows, where G-Sync does not require fullscreen).

    + +

    For XFCE, go to Window Manager Tweaks under Settings +XFCE Settings

    + +

    Then under the Compositor tab, make sure the compositor is disabled +Window Manager Tweaks

    + +

    In addition, depending on your setup, make sure you don’t have things like Compton or Compiz enabled.

    + +

    Start a game in fullscreen

    + +

    As mentioned, you must run the game in fullscreen mode. G-Sync does not work with window mode in Linux.

    + +

    I did notice that there are games which do not enable G-Sync. One example is “Cities: Skylines”. So make sure to try several games if you don’t see the G-Sync logo.

    + +

    A good candidate here is Dota 2 since it is free to play. Dota 2 running in “Desktop-Friendly Fullscreen” does enable G-Sync. As does Portal 2 and XCOM 2.

    +]]>
    +
    + + + https://cowboyprogrammer.org/2014/12/encrypt-a-btrfs-raid5-array-in-place/ + + Encrypt a BTRFS RAID5-array in-place + 2014-12-28T00:00:00+00:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + When I decided I needed more disk space for media and virtual machine (VM) images, I decided to throw some more money at the problem and get three 3TB hard drives and run BTRFS in RAID5. It’s still somewhat experimental, but has proven very solid for me.

    + +

    RAID5 means that one drive can completely fail, but all the data is still intact. All one has to do is insert a new drive and the drive will be reconstructed. While RAID5 protects against a complete drive failure, it does nothing to prevent a single bit to be flipped to due cosmic rays or electricity spikes.

    + +

    BTRFS is a new filesystem for Linux which does what ZFS does for BSD. The two important features which it offers over previous systems is: copy-on-write (COW), and bitrot protection. See, when running RAID with BTRFS, if a single bit is flipped, BTRFS will detect it when you try to read the file and correct it (if running in RAID so there’s redundancy). COW means you can take snapshots of the entire drive instantly without using extra space. Space will only be required when stuff change and diverge from your snapshots.

    + +

    See Arstechnica for why BTRFS is da shit for your next drive or system.

    + +

    What I did not do at the time was encrypt the drives. Linux Voice #11 had a very nice article on encryption so I thought I’d set it up. And because I’m using RAID5, it is actually possible for me to encrypt my drives using dm-crypt/LUKS in-place, while the whole shebang is mounted, readable and usable :)

    + +

    Some initial mistakes meant I had to actually reboot the system, so I thought I’d write down how to do it correctly. So to summarize, the goal is to convert three disks to three encrypted disks. BTRFS will be moved from using the drives directly, to using the LUKS-mapped.

    + +

    Unmount the raid system (time 1 second)

    + +

    Sadly, we need to unmount the volume to be able to “remove” the drive. This needs to be done so the system can understand that the drive has “vanished”. It will only stay unmounted for about a minute though.

    + +
    sudo umount /path/to/vol
    +
    + +

    This is assuming you have configured your fstab with all the details. For example, with something like this (ALWAYS USE UUID!!)

    + +
    # BTRFS Systems
    +UUID="ac21dd50-e6ee-4a9e-abcd-459cba0e6913" /mnt/btrfs  btrfs   defaults       0        0
    +
    + +

    Note that no modification of the fstab will be necessary if you have used UUID.

    + +

    Encrypt one of the drives (time 10 seconds)

    + +

    Pick one of the drives to encrypt. Here it’s /dev/sdc:

    + +
    sudo cryptsetup luksFormat -v /dev/sdc
    +
    + +

    Open the encrypted drive (time 30 seconds)

    + +

    To use it, we have to open the drive. You can pick any name you want:

    + +
    sudo cryptsetup luksOpen /dev/sdc DRIVENAME
    +
    + +

    To make this happen on boot, find the new UUID of /dev/sdc with blkid:

    + +
    sudo blkid
    +
    + +

    Output of blkid

    + +

    So for me, the drive has a the following UUID: f5d3974c-529e-4574-bbfa-7f3e6db05c65. Add the following line to /etc/crypttab with your desired drive name and your UUID (without any quotes):

    + +
    DRIVENAME   UUID=your-uuid-without-quotes   none    luks
    +
    + +

    Now the system will ask for your password on boot.

    + +

    Add the encrypted drive to the raid (time 20 seconds)

    + +

    First we have to remount the raid system. This will fail because there is a missing drive, unless we add the option degraded.

    + +
    sudo mount -o degraded /path/to/vol
    +
    + +

    There will be some complaints about missing drives and such, which is exactly what we expect. Now, just add the new drive:

    + +
    sudo btrfs device add /dev/mapper/DRIVENAME /path/to/vol
    +
    + +

    Remove the missing drive (time 14 hours)

    + +

    The final step is to remove the old drive. We can use the special name missing to remove it:

    + +
    sudo btrfs device delete missing /path/to/vol
    +
    + +

    This can take a really long time, and by long I mean ~15 hours if you have a terrabyte of data. But, you can still use the drive during this process so just be patient.

    + +

    Balance took 14 hours

    + +

    For me it took 14 hours 34 minutes. The reason for the delay is because the delete command will force the system to rebuild the missing drive on your new encrypted volume.

    + +

    Next drive, rinse and repeat

    + +

    Just unmount the raid, encrypt the drive, add it back and delete the missing. Repeat for all drives in your array. Once the last drive is done, unmount the array and remount it without the -o degraded option. Now you have an encrypted RAID array.

    +]]>
    +
    + + + https://cowboyprogrammer.org/2014/08/making-an-rss-reader-app/ + + Making an RSS reader app + 2014-08-28T00:00:00+00:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + So I’ve been busy building my own RSS reader for the last few weeks. My motivation to make this app is because I got angry at gReader for displaying fullscreen-ads. The source is available on GitHub.

    + +

    I started with an idea of targeting Android-L, but because it’s only in preview any app targeting L will be completely incompatible with earler versions. Hence I was forced to refrain from using the new RecyclerView which I really liked. In general I’ve been stealing as much code as possible from the Google-IO app.

    + +

    It’s early still, but here are two screenshots of current progress:

    + +

    Feeds with tags

    + +

    Reader activity

    + +

    To parse RSS feeds I have forked Simplistic-RSS by ShirwaM. To display images I am using Picasso by Square (awesome library). I don’t have any intention of uploading this app to the Play store at this time, at least not until I feel that it is fairly stable and feature complete. I am building it all for myself as this is the only kind of app which I actually use everyday. I figure I can talk about the difficulties that I encounter and how to solve them. So today’s topic will be:

    + +

    Displaying formatted text with images

    + +

    RSS feeds generally have stories formatted in HTML. For example, see the RSS feed of this blog. This is good because it means all we need to do is decode it and display it. You could use a WebView, but that would be unacceptably ugly and disgusting for an app of mine. A nicer solution is to use a normal TextView. You can actually format HTML easily and display it with:

    +
    textview.setText(android.text.Html.fromHtml(htmlString));
    +
    + +

    This simple act gets you most of the way. Here’s what a story looks like with this:

    + +

    Using just fromHtml img

    + +

    Using just fromHtml code

    + +

    Notice that in the first image, the image is missing and you don’t see that there is a list in the beginning. In the second image, the source code has no special formatting and it’s hard to tell when it starts or stops.

    + +

    fromHtml is great, but it is missing functionality to handle some tags. Lucky for us, it is possible to hand it some tagHandlers for those cases. Because I am downloading images, I do the formatting in a background thread using a Loader. To this end I created the ImageTextLoader. What it does instead is:

    +
    android.text.Html.fromHtml(text, imageHandler, TagHandler);
    +
    + +

    Where the imageHandler is really simple (notice that I use Picasso to get the image from the network):

    +
    imgThing = new Html.ImageGetter() {
    +    /**
    +     * This methos is called when the HTML parser encounters an
    +     * <img> tag.  The <code>source</code> argument is the
    +     * string from the "src" attribute; the return value should be
    +     * a Drawable representation of the image or <code>null</code>
    +     * for a generic replacement image.  Make sure you call
    +     * setBounds() on your Drawable if it doesn't already have
    +     * its bounds set.
    +     *
    +     * @param source
    +     */
    +    @Override
    +    public Drawable getDrawable(final String source) {
    +      Drawable d = null;
    +      try {
    +        final Bitmap b = Picasso.with(appContext).load(source).get();
    +        // Get original size
    +        int w = b.getWidth();
    +        int h = b.getHeight();
    +        // Shrink if big
    +        if (w > maxSize.x || h > maxSize.y) {
    +          Point newSize = scaleImage(w, h);
    +          w = newSize.x;
    +          h = newSize.y;
    +        }
    +        // Need to return a drawable
    +        d = new BitmapDrawable(appContext.getResources(), b);
    +        d.setBounds(0, 0, w, h);
    +      } catch (IOException e) {
    +        Log.e("JONAS", "" + e.getMessage());
    +      }
    +      return d;
    +    }
    +  };
    +
    + +

    The tag handler contains a bit more code, and I won’t paste all of it here. The tags which are handled can be seen in handleTag:

    +
    public void handleTag(final boolean opening, final String tag,
    +                      final Editable output, final XMLReader xmlReader) {
    +  if (tag.equalsIgnoreCase("ul")) {
    +    handleUl(output, opening);
    +  } else if (tag.equalsIgnoreCase("ol")) {
    +    handleOl(output, opening);
    +  } else if (tag.equalsIgnoreCase("li")) {
    +    handleLi(output, opening);
    +  } else if (tag.equalsIgnoreCase("img")) {
    +    handleImgEnd(output);
    +  } else if (tag.equalsIgnoreCase("code")) {
    +    handleCode(output, opening);
    +  } else if (tag.equalsIgnoreCase("pre")) {
    +    handlePre(output, opening);
    +  }
    +}
    +
    + +

    Note that fromHtml only notifies your handler about img-tags when they have ended, so I use that to insert a newline after each image. I would have liked to use it to get the configured size of the image, but that will have to wait for another day. For code-tags, I reduce the size of the text and make it Monospace:

    +
    // Source code
    +private void handleCode(final Editable text,
    +                        final boolean start) {
    +  // Should be monospace
    +  if (start) {
    +    start(text, new Monospace());
    +    start(text, new RelativeSize());
    +  } else {
    +    end(text, Monospace.class,
    +        new TypefaceSpan("monospace"));
    +    end(text, RelativeSize.class,
    +        new RelativeSizeSpan(0.8f));
    +  }
    +}
    +
    + +

    The start and end methods were simply stolen straight from android.Html.

    + +

    Result

    + +

    Here’s the result using the added tagHandlers:

    + +

    With image

    + +

    With code

    + + + +

    Thankfully I had already solved the issue of clickable spans in NoNonsense Notes. See [ReaderFragment]() for this:

    +
    // Catch clicks on links
    +mBodyTextView.setOnTouchListener(new View.OnTouchListener() {
    +    @Override
    +    public boolean onTouch(final View v,
    +                           final MotionEvent event) {
    +      TextView widget = (TextView) v;
    +      Object text = widget.getText();
    +      if (text instanceof Spanned) {
    +        Spanned buffer = (Spanned) text;
    +        
    +        int action = event.getAction();
    +        
    +        if (action == MotionEvent.ACTION_UP ||
    +            action == MotionEvent.ACTION_DOWN) {
    +          int x = (int) event.getX();
    +          int y = (int) event.getY();
    +          
    +          x -= widget.getTotalPaddingLeft();
    +          y -= widget.getTotalPaddingTop();
    +          
    +          x += widget.getScrollX();
    +          y += widget.getScrollY();
    +          
    +          Layout layout = widget.getLayout();
    +          int line = layout.getLineForVertical(y);
    +          int off = layout.getOffsetForHorizontal(line, x);
    +          
    +          ClickableSpan[] link =
    +              buffer.getSpans(off, off, ClickableSpan.class);
    +          
    +          // Cant click to the right of a span,
    +          // if the line ends with the span!
    +          if (x > layout.getLineRight(line)) {
    +            // Don't call the span
    +          } else if (link.length != 0) {
    +            link[0].onClick(widget);
    +            return true;
    +          }
    +        }
    +      }
    +      return false;
    +    }
    +  });
    +
    + +

    Thus clicking on links in the TextView will open them in the browser. You could do whatever you want instead of calling link[0].onClick() however.

    + +

    That’s it for today. I’ll write more about other pieces of the app soon. Things like how the database is structured or how to use ExpandableListView.

    +]]>
    +
    + + + https://cowboyprogrammer.org/2014/06/building-python-wheels-for-windows/ + + Building Python wheels for Windows + 2014-06-04T00:00:00+00:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + + + One group in particular suffers from lack of package management in Windows (as I griped about here): developers. This post will largely be a big howto on how to build Python packages with Fortran/C-extensions (especially Fortran extensions seem problematic on Windows). You’d think that something like that would be clearly explained somewhere. So did I, and I was wrong. So here is my guide to building Python packages with native extensions (both C and Fortran) on Windows.

    + +

    Installing Python packages

    + +

    The lack of a compiler means most Windows users can’t do what *nix users do when faced with a package containing some c or fortran extensions:

    + +
    python setup.py install
    +
    + +

    Or if it’s publicly available on PyPi for example:

    + +
    pip install package
    +
    + +

    pip will download the source, and on any system with a compiler, compile it, then install it. So it becomes necessary to provide pre-built binaries for Windows users who don’t have a compiler. Something which no one offers a concise explanation of… until now that is. If you upload your package to PyPi, once you have followed this guide, even Windows users will be able to do pip install package.

    + +

    1. Set up a Windows machine

    + +

    To build Windows binaries you will need access to a Windows machine. If you don’t have a copy of Windows lying around to install in a virtual machine, you can create a free virtual machine on Amazon with Windows Server 2012. Selecting the most basic options will be fine and the machine will be free for atleast a year, at which point you can pay the few dollars per year or register for another free account.

    + +

    Another note: make sure to use 64-bit Windows (Server 2012 only comes in 64-bit versions).

    + +

    2. Install 32-bit compilers

    + +

    Don’t ask me why Microsoft didn’t want to ship the 64-bit compiler together with the 32-bit one… The versions here are final. You cannot use newer compilers. In other words, don’t get Visual Studio 2012 and expect it to work… It’s a simple fact that you need to compile your packages with the same compiler as was used to build Python itself.

    + +

    Install Visual C++ 2010 Express (for Python3)

    + +

    Python3.33.4 is built with 2010 and hence all extensions must be as well.

    + +

    Google for it, or try this link

    + +

    Install Visual C++ 2008 Express (for Python2.7)

    + +

    For building Python2.7, 2008 version is required. Google for “Visual C++ 2008 Express” or try this link

    + +

    3. Install 64-bit compilers

    + +

    Why did you do this Microsoft, why?!

    + +

    Install the Windows SDK for Visual Studio 2010 (for Python 3)

    + +

    The free Visual C++ 2010 Express compiler does not include 64-bit support. That is what we need the SDK to provide. Google for “Microsoft Windows SDK for Windows 7 and .NET Framework 4” or try this link. You need the Windows 7 SDK even if you are running Windows 8. And make sure it is the version with .NET Framework 4, the one with .NET Framework 3 is for Visual Studio 2008.

    + +

    Note: if you have C++ 2010 Redistributables installed, you might have +to uninstall them first or this install might fail. It might work even if some parts of the installer fails since you only need the compiler bits.

    + +

    Install the Windows SDK for Visual Studio 2008 for (Python 2.7)

    + +

    Same story for Visual C++ 2008 Express which is used for Python2.7. Find “Microsoft Windows SDK for Windows 7 and .NET Framework 3.5” or try this link

    + +

    4. Install Miniconda/Anaconda

    + +

    Download page

    + +

    Download both the 32-bit and 64 bit versions. Python2 or Python3 versions do not matter as we will be using conda environments, but you do need both 32-bit and 64-bit versions! During the installation procedure, I recommend you select the following:

    + +
      +
    • Install for current user only (this is the default)
    • +
    • Install into: Users\YOURNAME\Anaconda and Users\YOURNAME\Anaconda-64 respectively
    • +
    • Do NOT modify the PATH, this will be done explicitly in the build script
    • +
    • Do NOT make it the default Python, we need to be able to switch easily
    • +
    + +

    5. Create the environments

    + +

    Do this for both the 32-bit and 64-bit versions.

    + +

    Open a command line window and navigate to Users\YOURNAME\Anaconda\Scripts (and same for Anaconda-64 later) (Protip: use the file browser to get to the directory then shift-click +somewhere and select ‘open command line here’).

    + +

    Type the following commands:

    + +
    conda create -n py3.4 python=3.4 numpy pip mingw
    +
    +conda create -n py3.3 python=3.3 numpy pip mingw
    +
    +conda create -n py2.7 python=2.7 numpy pip mingw
    +
    + +

    Remember to repeat that process for the 64-bit/32-bit version as well!

    + +

    6. Install git

    + +

    This has nothing to do with the build process, but I will assume that you want to do git clone at some point. Download it here. In this case you absolutely DO want it to modify your PATH.

    + +

    Actually building stuff

    + +

    Believe it or not, but you are actually ready to compile your package. Due to multiple compilers and all that, I have made a bat-file which builds wheels for Python 2.7, 3.3 and 3.4, both for 32-bit and 64-bit:

    + + + +

    Edit the information at the top. Now assuming everything was installed in the right place, you should just have to double click the bat-file and have built the wheel files which you can then upload to PyPi.

    + +

    Building wheels automatically on commits

    + +

    Having to do this manually is a drag and so I have also come up with a fully automated solution using Jenkins, a continuous integration system which monitors your git-repo and clones, builds new files as changes are committed.

    + +

    Install Jenkins

    + +

    Just download the native package from [jenkins-ci.org]().

    + +

    Configure Jenkins

    + +

    Once Jenkins is installed, it will start itself as a Windows service. Open you web browser and head to [http://localhost:8080](). You then want to go to Manage Jenkins, followed by Manage Plugins:

    + +

    Manage Jenkins

    + +

    Go to the available tab, and filter on “GIT plugin” (already installed in the screenshot):

    + +

    Install the GIT Plugin

    + +

    OK, now go back to the top (click Jenkins in upper left) and create a New Item. You want to select “free-style software project” and give it a name:

    + +

    Create a new free-style project

    + +

    First thing you need to configure is the git source. Scroll down to Source Code Management, select git, and fill in the repo-address. If you input a public GitHub address you don’t need any credentials:

    + +

    Configure Git address

    + +

    I also recommend you add one Additional behaviour: Clean before checkout to guarantee that builds do not affect each other:

    + +

    Clean before checkout

    + +

    Next you can setup the automatic behaviour. The easiest way is to have Jenkins poll GitHub every X minutes and check if there’s a change. Here I have configured Jenkins to check every 15 minutes:

    + +

    SCM Polling

    + +

    So Jenkins knows what to do when it detects a change, you want to add a Build step, specifically Execute a Windows batch file:

    + +

    Build step

    + +

    In the box, just copy paste the batch file I included above. Fill in the paths to your Anaconda installs and set the repo to:

    + +
    set PKG_REPO=.
    +
    + +

    Pasted batch file

    + +

    Jenkins will handle the cloning and simply execute the script in the correct directory. As a final configuration step, tell Jenkins to archive build artifacts under Post-Build Actions since you want to be able to download the wheel files:

    + +

    Archive wheelfiles

    + +

    If you don’t upload wheels to PyPi, then you can install wheels with pip from anywhere with:

    + +
    pip install --no-index -f http://your.site/wheeldir/ yourpackage
    +
    + +

    Enjoy your build machine

    + +

    Now you’re all done. You can manually trigger builds in the left menu. Each build will have links for you to download the wheelfiles and the job’s main page will always display the links to the latest artifacts.

    + +

    Job result

    + +

    There are so many plugins and options available for Jenkins so play around if you want even more stuff. Some things you can do include:

    + +
      +
    • Automatically uploading artifacts to an FTP/SSH-server.
    • +
    • Sending E-mail notifications on success/failures.
    • +
    • Build only specific branches/tags.
    • +
    • Make the server public and tie login to GitHub accounts.
    • +
    • Add Chuck Norris jokes to your builds
    • +
    +]]>
    +
    + + + https://cowboyprogrammer.org/2014/05/people-have-been-trained-to-install-malware/ + + People have been trained to install malware + 2014-05-11T00:00:00+00:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + disclaimer: I get angry when I have to fix Windows. Expect explicit content. You have been warned.

    + +

    Being computer literate can be something of a curse. Anyone with even the most rudimentary skill set has probably sometime gotten asked if they could help someone with their computer. The other day I got asked if I could help, let’s call him Roger, as he was having some problems with Windows Update. The initial symptoms could be clearly relayed by Roger:

    + +
    +

    The update gets to 30% then it just stops and reboots.

    +
    + +

    First step is always to recreate the problem and see it in action. No problem there. Telling Windows Update to proceed resulted in precisely the described result, after a fair bit of time waiting for a frigging restore point to be created. I’d read about the failing 8.1 upgrade so I half expected it to be Microsoft’s fault, even though this machine was running Windows 7. Roger didn’t need anything from the update so worst case I thought, I’ll just disable Windows Update entirely.

    + +

    First things first

    + +

    Once I had confirmed that there was a problem, I begun by clearing out various crapware that was installed, mainly different kinds of toolbars and some video player that seemed to be a repackaging of VLC mainly. It’s hard to see why this software is installed or where it came from. Roger uses only Word and the browser. I figure he’s the sort that clicks on various malicious ads for some reason. At least Roger has been coerced into using Chrome instead of IE…

    + +

    So I uninstall everything I don’t recognize and reboot, because rebooting is something you do a lot in Windows land… OK, maybe the update will work now without all the crap installed. It’s worth a try at least.

    + +
    +

    Initiate the update… It creates a restore point… wait… wait… wait…. Reboot. Update still fails at 30%.

    +
    + +

    Trial and error

    + +

    Now the real work begins. Maybe Microsoft screwed up their patches or something? There were 5 security patches waiting to be installed so let’s try them one by one.

    + +
      +
    • First one fails.
    • +
    • Second one fails.
    • +
    • Everyone but the first and second one fails.
    • +
    + +

    OK… Let’s just do the damn IE patches first. They also fail. And for every try, I’m forced to wait for Windows to create another damn restore point which takes several minutes. This on an almost brand new Intel NUC with an SSD.

    + +

    Bored…

    + +

    While waiting for the damn restore points, I am seriously considering if I can just wipe the machine and force Roger to use Linux instead. All he needs is Word. So I decide to download LibreOffice and see how their docx support is these days. Downloading 200MB takes a while on the effectively 2MBit connection. Still quicker than the now cancelled restore point. So I click through the installer, get to the progress bar, and wait. And wait. And wait.

    + +
    +

    Why the fuck isn’t the progress bar moving?

    +
    + +

    Instinctively, I open the task manager to see what the hold up is. Apparently nothing. No CPU is being used. No memory is consumed. It’s an SSD so disk speed is not an issue. Change to the services tab and same thing, nothing obvious. I try disabling the antivirus (Microsoft’s own so should be compatible right?). Good try chump, still no difference.

    + +

    Second time in the task manager, I notice something though. A service which doesn’t really sound very official: safetynut. I find out where safetynut.exe lives and sure enough, it lives in something like:

    + +
    +

    C:\Program Files (x86)\Movie Toolbar\Safetynut

    +
    + +

    But I uninstalled that! Fine.. End process. To which Windows replies:

    + +
    +

    You don’t have permission to end this process

    +
    + +

    W T F

    + +

    OK computer, I’m going to stop you right there. I am the administrator. I am your GOD. And as said deity, I command you to end that process!

    + +
    +

    God or no god, you still don’t have permission to do that

    +
    + +

    OK, fine, be that way. Delete C:\Program Files (x86)\Movie Toolbar\Safetynut.

    + +
    +

    Could not delete safetynut.dll as it is in use

    +
    + +

    Shaka, when the walls fell…

    + +

    It’s an amazing “feature” in Windows that a program can lock a file and thus prevent you from deleting it. It’s also an amazing “feature” that the administrator can be refused the permission to do something. No recourse left but to reboot into safe mode.

    + +

    To safe mode we go!

    + +

    First, I go into the normal safe mode with a desktop. Still can’t delete the dll file though as it is “in use”. Time to open regedit and delete all references to safetynut from the registry. Search, delete. Rince, repeat…

    + +

    Next reboot to safe mode with only a command line window. Navigate to the folder and delete the file and the folder, then reboot.

    + +

    Success!

    + +

    No more safetynut. Let’s try Windows Update again. Ooh, that’s a mighty fast restore point creation! And the update succeeds!

    + +

    So apparently, safetynut was actively preventing Windows Update from proceeding. Roger promptly got a stern talking to about installing any software or clicking on ads/popups (I also installed adblock plus in Chrome). But it got me thinking about malware in general..

    + +

    Most people are trained to install malware

    + +

    In my view, none of this is the user’s fault. The fact is that Microsoft has trained everyone to install shitty software from untrusted sources. Let’s go back a few years, to the days of yore, in the time of Windows 98 and Windows 2000. If you reinstalled Windows back then, and I did a lot, then you very quickly got a routine for downloading the software you needed once Windows was installed.

    + +

    First obvious things to install were the drivers for your network card, sound card and graphics card. You even possibly needed to install SATA-drivers during the actual install or the installer wouldn’t find your disk. If you did not have that on a floppy, you were screwed. But OK, you had your floppy, and you had your drivers on CD. Next you needed:

    + +
      +
    • A browser, because Internet Explorer is still a gaping security hole
    • +
    • A firewall, because even up to XP, being exposed to the internet directly meant instant infection
    • +
    • Antivirus, anything that wasn’t Norton would do…
    • +
    • PDF-reader
    • +
    • zip/rar-extractor
    • +
    + +

    I’d like to draw your attention to the last item. Something so mundane as a zip-extractor was not built in to Windows. XP was the first version (if I remember correctly) to include a built in zip-extractor. This specific flaw trained everyone to download Winzip or Winrar. Quite possibly, they would resort to getting a pirated serial key as well. The problem? Now users are trained to go to any website their 10-year old neighborhood tech support kid tells them to and click Download.

    + +

    Here’s a screenshot of the pirate bay to illustrate (to clarify, do NOT download your software from torrent sites. It’s just an example of this behavior). The big download buttons will lead to ads, online poker or who knows. We can be quite sure that they will lead to endless evil. On the internet, never FUCKING EVER press a big styled button with the text “Download”. The link you want is the smaller green text: “get this torrent”.

    + +

    Never press Download!

    + +

    Now, assuming you managed to avoid the big download buttons to download your program, you have your completely unverified .exe file or .msi file, you double click on it, and what do you get? More fucking bullshit. Here’s a screenshot of the Winzip (totally unnecessary program today) installer. Right after you agree to the Winzip Terms of Service, you get another license agreement.

    + +

    Toolbars!

    + +

    How the screaming fuck are ordinary users supposed to understand that pressing Next will lead to untold horrors and pressing Decline is the way to install the software they want? They won’t of course. That’s the whole point!

    + +

    I bet this is the source of 99% of all malware on Windows. And the problem is that this is a perfectly acceptable way of getting software. Macs have the same problem to some minor extent. They are also being trained to download strange files from various pages. It is NOT accepted on Linux. The reason you don’t need antivirus on Linux is not because the system is more secure. All software is brittle and insecure. The vital difference is in how Linux users get their software.

    + +

    The way it should be

    + +

    Here’s a screenshot of the package manager in Debian:

    + +

    Synaptic

    + +

    Now let’s say I need a c++ compiler and one was not installed already. I search for “c++ compiler” and there’s clang. To this day, I have no idea how I can get a compiler on Windows.

    + +

    Searching for a compiler

    + +

    Installing 99% of all software is super easy and reliable on Linux. All of these packages have been checked by the people working on the distro. If any package were to install a toolbar or other malware, you can bet your ass that it would be removed from the official sources. And because this is how Linux users are trained to install their software, they will have some degree of suspicion against download links on unknown websites. Installing malware becomes notably harder than installing good software.

    + +

    The coming app stores

    + +

    Both OS X and Windows are trying to push their users to use their “app stores”. While I have many negative things to say about them, they should hopefully reduce the included malware problem and train users to only install garbage from trusted sources.

    +]]>
    +
    + + + https://cowboyprogrammer.org/2014/04/are-ipads-retarding-us/ + + Are iPads actually a step back? + 2014-04-26T00:00:00+00:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + Think what you will of the iPad, but it has been a huge success for Apple and people love it. It’s one of the few products that appealed (past-tense) to both the geeks and _hoi polloi_.

    + +

    I remember watching the keynote where the iPhone was introduced and immediately I thought that’s the pad from Star-Trek TNG! I had to have it. +Apple’s initial carrier exclusivity deals meant I had to wait for the iPhone 3g. Not only that, but because they partnered with a company I am sworned to destroy, I payed a guy in Italy to buy one unlocked and ship it to me for 7500SEK. Funny thing is that at the time I was a developer at Sony Ericsson, who did not think kindly of Apple entering their mobile domain. I got a lot of weird looks a work…

    + +

    Then came the iPad. Again I’m thinking holy shit that’s awesome. At this point I had upgraded to an Android device (an HTC Legend) and had come to the conclusion that Android was far more interesting as a platform because of Apple’s restrictions on what apps can do. The customizability and capabilities on Android were far greater and as a developer, you appreciate that. However, there were no Android tablets. And there wouldn’t be for a long time.

    + +

    I kept my cool though and managed to hold on to my money until the iPad 2 was released. I left early from work and lined up with other enthusiasts at the electronics store. At the time most people had no idea what they were going to do with it, me included, but I had to have it. I think my extended family clearly demonstrates how successful a product the iPad was. That same year I saw 3 iPads being gifted away (3 in a group of around 9 people!). By the next year, 3 more iPads were acquired. Everyone had to have one. It was one of those cases where you don’t get it until you see it for yourself.

    + +

    From revolutionary to evolutionary

    + +

    It is both a sign of how good the original product was and how little has changed that I never felt a reason to upgrade from the iPad 2.

    + +
      +
    • The battery life was fantastic.
    • +
    • The screen size just right.
    • +
    • The resolution was good enough.
    • +
    • The speed was fine (until recently).
    • +
    + +

    Hardware-wise, it was feature complete. The rest could be fixed in software. They never did though. The problem is iOS. Just as I abandoned the iPhone for Android, I now abandoned the iPad for a Nexus 7. There was so much potential being held back by the limitations of iOS. +Stratechery explains some of my frustrations well. He means it as a defense in iOS’s favor though. But there is actually more to it than the limitations of iOS. Something inherent in the touch screen and the current mobile paradigm.

    + +

    Limitations of the touch screen

    + +

    I was playing R-Type 2 on my Nexus 10 and kept dying on the boss in the second level. And I realized that while I might get lucky and finish the level, I would never be able to play the game well due to the touch screen.

    + +

    R-Type 2 second level boss

    + +

    See, R-Type is a classic side-scrolling shoot-em-up. You pilot a spaceship and have to avoid enemy fire, hordes of enemies, and not crash into the roof or ceiling. It is a game based entirely on mastering the controls. You can see a good example of what I mean in this clip of a similar game called Gradius for the NES.

    + + + +

    The problem I was having was that I kept crashing into the floor as I tried to manouever around the boss. Having played for and hour or two (and still being stuck on level 2!) I came to realize that it wasn’t I that sucked, it was the controls. I had reached the limit of what was possible (precision-wise) with a touch screen.

    + +

    Noobs forever

    + +

    And this is where the back-stepping begins. Growing up with NES, SNES, and a PC, I remember many older relatives noting the dexterity and precision in the thumbs of kids due to all the gaming. Video games required:

    + +
      +
    • hand-eye-coordination
    • +
    • hand dexterity
    • +
    • concentration
    • +
    + +

    To beat these games you needed mastery and focus. Not only was mastery required, it was the reward. The games suitable for touch screens can require neither. So tablet games will remain at a level no more advanced than snake or scrabble. (As a side note, what really can work is turn-based strategy games.)

    + +

    No such thing as a touch typist

    + +

    Just as serious gaming becomes impossible due to the touch interface, serious productivity suffers from the same limitations. It’s funny to see things like Microsoft Office being released for the iPad because it’s impossible to work with. Serious productivity requires the efficient inputting of language, be it English or Python. The touch keyboard is unable to let you do that. There is no such thing as a touch typist. On a tablet, everyone goes back to tapping with two fingers. There is nothing to master here (due to the lack of feedback) and so everyone will remain as noobs forever.

    + +

    The dark age begins

    + +

    Maybe you’re thinking to yourself:

    + +
    +

    so what if a touch screen isn’t ideal for everything, no input device is!

    +
    + +

    If you are, then I agree. Nothing can be great at everything. You use the right tool for the right job. The problem is the tremendous success of the tablet. This is where I think the geeks have a different view of where we are headed.

    + +

    Geeks see the benefits of the touch screen. Its strengths, but also its weaknesses. They use it when it’s convenient. For more serious work, they move to their workstation, with keyboard and screen.

    + +

    Non-geeks see the tablet as “the future”. They never liked their PC to begin with. It was just something they were forced to acquire to be able to pay their bills. They see the tablet as liberating. Geeks see the tablet as confining.

    + +

    The success of the tablet amongst geeks and non-geeks combined means companies are scrambling to push everything into tablet interfaces. Apple is clearly moving towards iOS as OSX is evolving. Microsoft has already gone too far:

    + + + + +

    But it’s not just the tablet interface. It’s the whole mobile paradigm that is spreading. With it comes the app stores, where every app is pre-approved by the benevolent corporation that owns your soul apps and music. The corporation reserves the right to remove any app or in-app purchase it deems unworthy of your attention. Amazon did it, Apple does it all the time, and same for Microsoft.

    + +

    I would say that Linux is the only alternative going forward, but then again, Canonical is showing that not even Linux is safe.

    +]]>
    +
    + + + https://cowboyprogrammer.org/2014/04/advertising-thats-not-intrusive-orly/ + + Advertising, that's not intrusive. Orly? + 2014-04-07T00:00:00+00:00 + + Space Cowboy + jonas@cowboyprogrammer.org + + + + When you have apps in Google Play (and I imagine, other App stores as well), the amount of spam you receive instantly goes up by a factor of 10. Google’s spam filters are pretty well trained but every now and again something gets through.

    + +

    Advertising opportunity

    + +

    Today’s piece of bullshyt (I really meant to spell it like that) reads as follows (my emphasis):

    + +
    +

    Our premium advertisers are currently looking to buy android traffic at a very high price in apps like Nononsense Notes.

    + +

    We think you can generate up to $10 CPM with their full screen ads, which are very clean. Indeed, most of our advertisers are willing to pay, on average, between $1 and $3 per installation. You’re free to display these ads whenever you want in your app so that it’s not intrusive.

    +
    + +

    Ads are by definition intrusive. That’s how they nag you into buying their stupid stuff. And it doesn’t matter how clean your ads are. Displaying them fullscreen is beyond intrusive. It is down right offensive.

    + +

    I uninstall anything that displays obnoxious ads, be they fullscreen or notifications, and promptly give the app a one star review. I sincerely hope others afford me the same “courtesy” for my apps.

    +]]>
    +
    + +
    diff --git a/app/src/androidTest/resources/com/nononsenseapps/feeder/model/cowboyprogrammer_feed.json b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/cowboyprogrammer_feed.json new file mode 100644 index 0000000..27a120e --- /dev/null +++ b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/cowboyprogrammer_feed.json @@ -0,0 +1,103 @@ +{ + "version": "https://jsonfeed.org/version/1", + "title": "Cowboy Programmer", + "home_page_url": "https://cowboyprogrammer.org/", + "author": { + "name": "Space Cowboy", + "avatar": "https://cowboyprogrammer.org/css/images/avatar.png" + }, + "icon": "https://cowboyprogrammer.org/css/images/logo.png", + + "items": [ + + { + "id": "https://cowboyprogrammer.org/2018/03/fixed-vs-variable-interest-rates/", + "url": "https://cowboyprogrammer.org/2018/03/fixed-vs-variable-interest-rates/", + "title": "A comparison between fixed and variable interest rates", + "content_html": "\u003cp\u003eThe data I am using is originally from \u003ca href=\"http://hypotek.swedbank.se/rantor/historiska-rantor/\"\u003eSwedBank\u003c/a\u003e and all data and\ncode is available at \u003ca href=\"https://gitlab.com/spacecowboy/swedish-interest-rates\"\u003eGitLab\u003c/a\u003e. \u003ca href=\"https://gitlab.com/spacecowboy/swedish-interest-rates/raw/master/swedish_interest_rates.csv\"\u003eThe data\u003c/a\u003e contains interest\nrates at 5 years fixed term, 2 years fixed term, and 3 months fixed\nterm (also called variable rate in Sweden) for those dates when any\nrate was changed. The first rates are from 1989-11-01 and the last are\nfrom 2018-02-12. Example of the data:\u003c/p\u003e\n\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n \u003cthead\u003e\n \u003ctr style=\"text-align: right;\"\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003e5y\u003c/th\u003e\n \u003cth\u003e2y\u003c/th\u003e\n \u003cth\u003e3m\u003c/th\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003eDate\u003c/th\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003c/tr\u003e\n \u003c/thead\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003cth\u003e1989-11-22\u003c/th\u003e\n \u003ctd\u003e13.50\u003c/td\u003e\n \u003ctd\u003e13.50\u003c/td\u003e\n \u003ctd\u003e12.75\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1991-01-14\u003c/th\u003e\n \u003ctd\u003e14.00\u003c/td\u003e\n \u003ctd\u003e14.75\u003c/td\u003e\n \u003ctd\u003e15.25\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1993-01-13\u003c/th\u003e\n \u003ctd\u003e12.75\u003c/td\u003e\n \u003ctd\u003e13.00\u003c/td\u003e\n \u003ctd\u003e13.75\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1994-11-21\u003c/th\u003e\n \u003ctd\u003e11.75\u003c/td\u003e\n \u003ctd\u003e11.50\u003c/td\u003e\n \u003ctd\u003e9.75\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1996-03-12\u003c/th\u003e\n \u003ctd\u003e9.85\u003c/td\u003e\n \u003ctd\u003e8.95\u003c/td\u003e\n \u003ctd\u003e9.10\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2005-09-09\u003c/th\u003e\n \u003ctd\u003e3.55\u003c/td\u003e\n \u003ctd\u003e2.97\u003c/td\u003e\n \u003ctd\u003e3.15\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2005-10-03\u003c/th\u003e\n \u003ctd\u003e3.69\u003c/td\u003e\n \u003ctd\u003e3.09\u003c/td\u003e\n \u003ctd\u003e3.15\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2007-12-21\u003c/th\u003e\n \u003ctd\u003e5.36\u003c/td\u003e\n \u003ctd\u003e5.25\u003c/td\u003e\n \u003ctd\u003e5.15\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2008-01-24\u003c/th\u003e\n \u003ctd\u003e5.13\u003c/td\u003e\n \u003ctd\u003e4.94\u003c/td\u003e\n \u003ctd\u003e5.15\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2009-03-20\u003c/th\u003e\n \u003ctd\u003e4.26\u003c/td\u003e\n \u003ctd\u003e2.83\u003c/td\u003e\n \u003ctd\u003e2.20\u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003cp\u003eTo make the calculations more convenient I assume that loans are only\nfixed the first day of the month. Example:\u003c/p\u003e\n\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n \u003cthead\u003e\n \u003ctr style=\"text-align: right;\"\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003e5y\u003c/th\u003e\n \u003cth\u003e2y\u003c/th\u003e\n \u003cth\u003e3m\u003c/th\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003eDate\u003c/th\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003c/tr\u003e\n \u003c/thead\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003cth\u003e1990-06-01\u003c/th\u003e\n \u003ctd\u003e14.50\u003c/td\u003e\n \u003ctd\u003e14.50\u003c/td\u003e\n \u003ctd\u003e13.95\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1992-03-01\u003c/th\u003e\n \u003ctd\u003e12.50\u003c/td\u003e\n \u003ctd\u003e13.00\u003c/td\u003e\n \u003ctd\u003e14.75\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1993-06-01\u003c/th\u003e\n \u003ctd\u003e10.75\u003c/td\u003e\n \u003ctd\u003e10.50\u003c/td\u003e\n \u003ctd\u003e11.50\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1998-02-01\u003c/th\u003e\n \u003ctd\u003e6.70\u003c/td\u003e\n \u003ctd\u003e6.40\u003c/td\u003e\n \u003ctd\u003e5.80\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2001-09-01\u003c/th\u003e\n \u003ctd\u003e6.55\u003c/td\u003e\n \u003ctd\u003e5.95\u003c/td\u003e\n \u003ctd\u003e5.90\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2004-11-01\u003c/th\u003e\n \u003ctd\u003e4.85\u003c/td\u003e\n \u003ctd\u003e3.90\u003c/td\u003e\n \u003ctd\u003e3.65\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2009-05-01\u003c/th\u003e\n \u003ctd\u003e4.15\u003c/td\u003e\n \u003ctd\u003e2.73\u003c/td\u003e\n \u003ctd\u003e1.97\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2010-08-01\u003c/th\u003e\n \u003ctd\u003e3.99\u003c/td\u003e\n \u003ctd\u003e2.90\u003c/td\u003e\n \u003ctd\u003e2.17\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2011-05-01\u003c/th\u003e\n \u003ctd\u003e5.29\u003c/td\u003e\n \u003ctd\u003e4.39\u003c/td\u003e\n \u003ctd\u003e3.88\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2011-11-01\u003c/th\u003e\n \u003ctd\u003e4.59\u003c/td\u003e\n \u003ctd\u003e4.14\u003c/td\u003e\n \u003ctd\u003e4.35\u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003cp\u003eIf we graph the interest rates we get:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2018/03/rates.en.png\" alt=\"Interest rates over time\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eYou can see a clear peak in the variable rate when the riksbank set\nthe repo rate at 500% (mortgages \u0026ldquo;only\u0026rdquo; reached 24%). You can also see\nthat during the early nineties the variable rate was higher than the\nfixed rates during relatively long periods. But to compare the actual\ncost over the fixed term we have to compare average rates.\u003c/p\u003e\n\n\u003cp\u003eFor example, let us compare the actual average rates from the first of\nJuly 1991 during 5 years for variable rate (11.96%) and 5 years fixed\nterm (12.25%). Even though with variable rate you\u0026rsquo;d have had a rate of\n24% during a quarter you\u0026rsquo;d still pay less in total over the 5 years.\u003c/p\u003e\n\n\u003cp\u003eIf the same calculation is made for every month you can see how much\nyou would have earned/lost depending on when you started your fixed\nterm. Since 5 years is not evenly divisible by 2 years, the 2 years\nfixed term refers to what the average rate would have been during the\nfirst 5 of the 6 years.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2018/03/5y_avg_rates.en.png\" alt=\"Average interest rate over 5 years\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eIt\u0026rsquo;s quite clear that variable rate has nearly always been the most\nprofitable alternative. At three seperate occasions it would have been\nmore profitable to pick a 5 year fixed term: at the of 1989, the\nbeginning of 1997, and in the middle of 2005. I won\u0026rsquo;t comment on the 2\nyears fixed term since it\u0026rsquo;s not a fair comparison to only look at 5 out of\n6 years.\u003c/p\u003e\n\n\u003cp\u003eIf we compare 2 years fixed term with variable rate:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2018/03/2y_avg_rates.en.png\" alt=\"Average interest rate over 2 years\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eAlso here the most profitable choice is generally the variable rate\nhowever during times of rising interest rates getting a fixed 2 year\nterm has been the better choice on several occasions. An important\ndifference to the 5 years term is that you\u0026rsquo;re not locked in for long\nwhen the rates finally go down again (and you\u0026rsquo;re able to switch to\nvariable rate).\u003c/p\u003e\n\n\u003cp\u003eIf we compare all terms during 10 years:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2018/03/10y_avg_rates.en.png\" alt=\"Average interest rate over 10 years\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eHere it is clear that the variable rate is the most profitable.\u003c/p\u003e\n\n\u003cp\u003eEven though it has been possible at certain occasions (29 years and\nonly 3 short occasions!) to get a fixed term for 5 years and pay less\noverall than with variable rate, I think it\u0026rsquo;s far too improbable that\none is able to do it at the right time. You\u0026rsquo;re almost guaranteed to be\npaying more in the end.\u003c/p\u003e\n\n\u003cp\u003eGetting a fixed term for 2 years is more probable to be profitable,\nbut even here it is more probable not to be.\u003c/p\u003e\n", + "date_published": "2018-03-05T23:00:00+02:00", + "image": "https://cowboyprogrammer.org/images/2018/03/5y_avg_rates.en.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/10/reduce-colors-in-images/", + "url": "https://cowboyprogrammer.org/2016/10/reduce-colors-in-images/", + "title": "Reduce the size of images even further by reducing number of colors with Gimp", + "content_html": "\n\n\u003cp\u003eIn Gimp you go to \u003cem\u003eImage\u003c/em\u003e in the top menu bar and select \u003cem\u003eMode\u003c/em\u003e\nfollowed by \u003cem\u003eIndexed\u003c/em\u003e. Now you see a popup where you can select the\nnumber of colors for a generated optimum palette.\u003c/p\u003e\n\n\u003cp\u003eYou\u0026rsquo;ll have to experiment a little because it will depend on your\nimage.\u003c/p\u003e\n\n\u003cp\u003eI used this approach to shrink the size of the cover image in\n\u003ca href=\"/2016/08/zopfli_all_the_things/\"\u003ethe_zopfli post\u003c/a\u003e from a 37KB (JPG) to just 15KB\n(PNG, all PNG sizes listed include Zopfli compression btw).\u003c/p\u003e\n\n\u003ch2 id=\"straight-jpg-to-png-conversion-124kb\"\u003eStraight JPG to PNG conversion: 124KB\u003c/h2\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things.png\" alt=\"PNG version RGB colors\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eFirst off, I exported the JPG file as a PNG file. This PNG file had a\nwhopping 124KB! Clearly there was some bloat being stored.\u003c/p\u003e\n\n\u003ch2 id=\"256-colors-40kb\"\u003e256 colors: 40KB\u003c/h2\u003e\n\n\u003cp\u003eReducing from RGB to only 256 colors has no visible effect to my eyes.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_256.png\" alt=\"256 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"128-colors-34kb\"\u003e128 colors: 34KB\u003c/h2\u003e\n\n\u003cp\u003eStill no difference.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_128.png\" alt=\"128 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"64-colors-25kb\"\u003e64 colors: 25KB\u003c/h2\u003e\n\n\u003cp\u003eYou can start to see some artifacting in the shadow behind the text.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_64.png\" alt=\"64 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"32-colors-15kb\"\u003e32 colors: 15KB\u003c/h2\u003e\n\n\u003cp\u003eIn my opinion this is the sweet spot. The shadow artifacting is barely\nnoticable but the size is significantly reduced.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_32.png\" alt=\"32 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"16-colors-11kb\"\u003e16 colors: 11KB\u003c/h2\u003e\n\n\u003cp\u003eClear artifacting in the text shadow and the yellow (fire?) in the\nbackground has developed an outline.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_16.png\" alt=\"16 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"8-colors-7-3kb\"\u003e8 colors: 7.3KB\u003c/h2\u003e\n\n\u003cp\u003eThe broom has shifted in color from a clear brown to almost grey. Text\nshadow is just a grey blob at this point. Even clearer outline\ndeveloped on the yellow background.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_8.png\" alt=\"8 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"4-colors-4-3kb\"\u003e4 colors: 4.3KB\u003c/h2\u003e\n\n\u003cp\u003eInterestingly enough, I think 4 colors looks better than 8 colors. The outline in the background has disappeared because there\u0026rsquo;s not enough color spectrum to render it. The broom is now black and filled areas tend to get a white separator to the outlines.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_4.png\" alt=\"4 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"2-colors-2-4kb\"\u003e2 colors: 2.4KB\u003c/h2\u003e\n\n\u003cp\u003eWell, at least the silhouette is well defined at this point I guess.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_2.png\" alt=\"2 colors\" /\u003e\u003c/p\u003e\n", + "date_published": "2016-10-21T00:27:00+02:00", + "image": "https://cowboyprogrammer.org/images/2017/10/gimp_image_mode_index.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/10/dont-start-service-on-install-of-debian-package/", + "url": "https://cowboyprogrammer.org/2016/10/dont-start-service-on-install-of-debian-package/", + "title": "Don't start service on installation of Debian package", + "content_html": "\u003cp\u003eA clear difference between Debian/Ubuntu and for example Red\nHat/Fedora is that packages which include system services will enable\nand start those services at install time in Debian/Ubuntu whereas they\nwill not start automatically in Red Hat/Fedora.\u003c/p\u003e\n\n\u003cp\u003eSometimes it would be very convenient if the service would \u003cem\u003enot\u003c/em\u003e start\nautomatically, for example if you need to configure the service before\nstarting it for the first time.\u003c/p\u003e\n\n\u003cp\u003eTo prevent the automatic start of system services at install time in\nDebian, just set the \u003ccode\u003eRUNLEVEL\u003c/code\u003e environment variable like so:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003eRUNLEVEL=1 apt install -y PKG_NAME\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eThen you are free to configure your system before you start the\nservice for real:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esystemctl enable PKG_NAME\nsystemctl start PKG_NAME\n\u003c/code\u003e\u003c/pre\u003e\n", + "date_published": "2016-10-19T00:00:00+02:00", + "image": "https://cowboyprogrammer.org/images/Ardebian_logo_512_0.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/09/reboot_machine_on_wrong_password/", + "url": "https://cowboyprogrammer.org/2016/09/reboot_machine_on_wrong_password/", + "title": "Rebooting on wrong password", + "content_html": "\n\n\u003cp\u003eHaving an encrypted hard drive is all well and good, but chances are\nthat if someone is gonna steal your laptop, it\u0026rsquo;s probably not going to\nbe turned off. Most likely, it will be stolen in a powered-on\nstate. And so your encrypted hard drive doesn\u0026rsquo;t increase your security\nat all since it\u0026rsquo;s currently unlocked.\u003c/p\u003e\n\n\u003cp\u003eIn my mind, it\u0026rsquo;s a slight improvement if the computer somehow can\nshutdown if someone is trying to gain access to it. That way, the hard\ndrive is no longer accessible and the number of possible attack\nvectors go down drastically. And so, if you type the wrong password 3\ntimes on my laptop, it shuts down.\u003c/p\u003e\n\n\u003cp\u003eThis is accomplished by using \u003ccode\u003ePAM\u003c/code\u003e, and its ability to invoke an\narbitrary script as part of the login flow via \u003ccode\u003epam_exec.so\u003c/code\u003e. The\nscript itself looks like this:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003e\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#!/bin/bash\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Do not add -eu, you need to allow empty variables here!\u003c/span\u003e\n\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# To be used with PAM. Look in /etc/pam.d for the script that your\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# screensaver etc uses. Typically it references common-account and common-auth.\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# In common-auth, add this as the first line\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#auth optional pam_exec.so debug /path/to/wrongpassword.sh\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# In common-account, add this as the first line\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#account required pam_exec.so debug /path/to/wrongpassword.sh\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#\u003c/span\u003e\n\n\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;/var/log/failed_login_count\u0026quot;\u003c/span\u003e\n\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Make sure file exists\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e[\u003c/span\u003e ! -f \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e]\u003c/span\u003e;\u003cspan style=\"color: #007020; font-weight: bold\"\u003ethen\u003c/span\u003e\n touch \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n chmod \u003cspan style=\"color: #40a070\"\u003e777\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003efi\u003c/span\u003e\n\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Read value in it\u003c/span\u003e\n\u003cspan style=\"color: #bb60d5\"\u003eCOUNT\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003ecat \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Increment it\u003c/span\u003e\n\u003cspan style=\"color: #bb60d5\"\u003eCOUNT\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e$((\u003c/span\u003eCOUNT+1\u003cspan style=\"color: #007020; font-weight: bold\"\u003e))\u003c/span\u003e\n\u003cspan style=\"color: #007020\"\u003eecho\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNT\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e \u0026gt; \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# if authentication\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e[\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003ePAM_TYPE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e==\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;auth\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e]\u003c/span\u003e; \u003cspan style=\"color: #007020; font-weight: bold\"\u003ethen\u003c/span\u003e\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# The count will be at 4 after 3 wrong tries\u003c/span\u003e\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e[\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNT\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e -ge \u003cspan style=\"color: #40a070\"\u003e4\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e]\u003c/span\u003e; \u003cspan style=\"color: #007020; font-weight: bold\"\u003ethen\u003c/span\u003e\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Shutdown in 1 min\u003c/span\u003e\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#/usr/bin/shutdown --no-wall -h +1\u003c/span\u003e\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# This is a hack because the line above gives a segfault in logind\u003c/span\u003e\n \u003cspan style=\"color: #007020\"\u003eecho\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;0\u0026quot;\u003c/span\u003e \u0026gt; \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n systemctl poweroff\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003efi\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# If authentication succeeded, and we are now in account phase\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eelif\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e[\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003ePAM_TYPE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e==\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;account\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e]\u003c/span\u003e; \u003cspan style=\"color: #007020; font-weight: bold\"\u003ethen\u003c/span\u003e\n \u003cspan style=\"color: #007020\"\u003eecho\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;0\u0026quot;\u003c/span\u003e \u0026gt; \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Cancel shutdown which was just issued\u003c/span\u003e\n shutdown -c\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003efi\u003c/span\u003e\n\n\u003cspan style=\"color: #007020\"\u003eexit\u003c/span\u003e \u003cspan style=\"color: #40a070\"\u003e0\u003c/span\u003e\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eOn my Debian system, PAM ends up looking at \u003ccode\u003e/etc/pam.d/common-auth\u003c/code\u003e\nand \u003ccode\u003e/etc/pam.d/common-account\u003c/code\u003e. These are invoked in different parts\nof the authentication flow. In \u003ccode\u003ecommon-auth\u003c/code\u003e, add this as the first\nline:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003eauth optional pam_exec.so debug /path/to/wrongpassword.sh\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eAnd then in \u003ccode\u003ecommon-account\u003c/code\u003e, add this as the first line:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003eaccount required pam_exec.so debug /path/to/wrongpassword.sh\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eYou can try it immediately if it works. Lock your screen, and type the\nwrong password 4 times. If it works, your computer should shut down.\u003c/p\u003e\n\n\u003ch2 id=\"warning-do-not-enable-on-servers\"\u003eWARNING: DO NOT ENABLE ON SERVERS\u003c/h2\u003e\n\n\u003cp\u003eThis is \u003cstrong\u003eNOT\u003c/strong\u003e something you want to do on any machine. Most notably,\nit\u0026rsquo;s probably a huge mistake to copy this verbatim on a machine which\naccepts remote connections. In that case, you essentially enable\nanyone to DOS you by entering the wrong password via SSH or\nsimilarly. So don\u0026rsquo;t do this if you allow remote connections to your\nmachine (which shouldn\u0026rsquo;t be a thing on a laptop).\u003c/p\u003e\n", + "date_published": "2016-09-28T22:57:21+02:00" + } + + , { + "id": "https://cowboyprogrammer.org/2016/08/zopfli_all_the_things/", + "url": "https://cowboyprogrammer.org/2016/08/zopfli_all_the_things/", + "title": "Compress all the images!", + "content_html": "\n\n\u003cp\u003e\u003cem\u003eUpdate 2016-11-22: Made the Makefile compatible with BSD sed (MacOS)\u003c/em\u003e\u003c/p\u003e\n\n\u003cp\u003eOne advantage that static sites, such as those built by \u003ca href=\"https://gohugo.io\"\u003eHugo\u003c/a\u003e,\nprovide is fast loading times. Because there is no processing to be\ndone, no server side rendering, no database lookups, loading times are\njust as fast as you can serve the files that make up the page. This\nmeans that bandwidth becomes the primary bottleneck, which\nincidentally is\n\u003ca href=\"https://webmasters.googleblog.com/2010/04/using-site-speed-in-web-search-ranking.html\"\u003eone of the factors used by Google to calculate your search ranking\u003c/a\u003e. See\nalso\n\u003ca href=\"https://developers.google.com/speed/pagespeed/insights\"\u003ePagespeed Insights\u003c/a\u003e.\u003c/p\u003e\n\n\u003ch2 id=\"compressing-images\"\u003eCompressing images\u003c/h2\u003e\n\n\u003cp\u003eBecause the largest pieces of a page typically consist of images, it\nstands to reason that if we can make the images smaller, we can make\nthe page load faster. Luckily there exists methods that can compress\nimages \u003cem\u003elosslessly\u003c/em\u003e. That means that the quality stays exactly the\nsame, the page only loads faster. That seemed like a no-brainer to me\nso I compressed all the images on the site using \u003ca href=\"http://advsys.net/ken/utils.htm\"\u003ePNGout\u003c/a\u003e as\n\u003ca href=\"https://blog.codinghorror.com/getting-the-most-out-of-png/\"\u003eadvised by Jeff Atwood\u003c/a\u003e. I mean, who doesn\u0026rsquo;t\nlike free bandwidth?\u003c/p\u003e\n\n\u003cp\u003eA new algorithm called \u003ca href=\"https://github.com/google/zopfli\"\u003eZopfli\u003c/a\u003e (open sourced by Google,\n\u003ca href=\"https://blog.codinghorror.com/zopfli-optimization-literally-free-bandwidth/\"\u003ealso mentioned by Jeff\u003c/a\u003e) claims even better\nresults than PNGout though. Results on this site\u0026rsquo;s images confirm\nthose claims. Running the tool on images \u003cem\u003ealready compressed by\nPNGout\u003c/em\u003e gives output such as this:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003e./zopflipng --prefix=\u0026quot;zopfli_\u0026quot; static/images/2014/Dec/Screenshot-from-2014-12-29-13-28-29.png\nOptimizing static/images/2014/Dec/Screenshot-from-2014-12-29-13-28-29.png\nInput size: 89420 (87K)\nResult size: 90361 (88K). Percentage of original: 101.052%\nPreserving original PNG since it was smaller\n\n./zopflipng --prefix=\u0026quot;zopfli_\u0026quot; static/images/2014/Jun/Jenkins_install_git.png\nOptimizing static/images/2014/Jun/Jenkins_install_git.png\nInput size: 189406 (184K)\nResult size: 166362 (162K). Percentage of original: 87.834%\nResult is smaller\n\n./zopflipng --prefix=\u0026quot;zopfli_\u0026quot; static/images/2014/Jun/jenkins_batch.png\nOptimizing static/images/2014/Jun/jenkins_batch.png\nInput size: 21933 (21K)\nResult size: 16255 (15K). Percentage of original: 74.112%\nResult is smaller\n\n./zopflipng --prefix=\u0026quot;zopfli_\u0026quot; static/images/2014/Jun/jenkins_build_step.png\nOptimizing static/images/2014/Jun/jenkins_build_step.png\nInput size: 8184 (7K)\nResult size: 6809 (6K). Percentage of original: 83.199%\nResult is smaller\n\n./zopflipng --prefix=\u0026quot;zopfli_\u0026quot; static/images/2014/Jun/jenkins_config_git.png\nOptimizing static/images/2014/Jun/jenkins_config_git.png\nInput size: 57897 (56K)\nResult size: 47164 (46K). Percentage of original: 81.462%\nResult is smaller\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eThe first result in the example output shows a case where Zopfli would\nactually have made the file bigger (because it was already compressed\nby PNGout, remember). This is nothing you have to worry about because\nit\u0026rsquo;s actually smart enough that it simply copies the original file in\nthat case.\u003c/p\u003e\n\n\u003cp\u003eComparing to both before any compression, and PNGout, yielded the\nfollowing results:\u003c/p\u003e\n\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e\u003c/th\u003e\n\u003cth\u003eMean relative size\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\n\u003ctr\u003e\n\u003ctd\u003eBefore\u003c/td\u003e\n\u003ctd\u003e1.00\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003ePNGout\u003c/td\u003e\n\u003ctd\u003e0.84\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003eZopfliPNG\u003c/td\u003e\n\u003ctd\u003e0.77\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003cp\u003e\u003ca href=\"https://en.wikipedia.org/wiki/Box_plot\"\u003eBox plot\u003c/a\u003e of results on all images:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/zopfli_boxplot.png\" alt=\"Compression results\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eSource files: \u003ca href=\"/csv/before.csv\"\u003ebefore.csv\u003c/a\u003e,\n\u003ca href=\"/csv/pngout.csv\"\u003epngout.csv\u003c/a\u003e, \u003ca href=\"/csv/zopfli.csv\"\u003ezopfli.csv\u003c/a\u003e\u003c/p\u003e\n\n\u003cp\u003eAnd this is with the default arguments. It is possible squeeze yet a\ncouple of more bytes out of this if you\u0026rsquo;re willing to wait longer.\u003c/p\u003e\n\n\u003ch2 id=\"automate-it-with-make\"\u003eAutomate it with Make\u003c/h2\u003e\n\n\u003cp\u003eAnother joy of using a simple static site is that it is possible to\ncompose regular tools to do useful things. Tools like\n\u003ca href=\"https://www.gnu.org/software/make/\"\u003eMake\u003c/a\u003e. And we can use Make to build the site, as well as\ncompressing images which have not already been compressed. You could\ndo it manually for each new image that you add of course but be\nhonest, you \u003cem\u003eknow\u003c/em\u003e that you\u0026rsquo;re gonna forget to do it at some point. So\nlet\u0026rsquo;s automate it instead!\u003c/p\u003e\n\n\u003cp\u003eThis is the Makefile that I use to build this site with, note that\n\u003ccode\u003epublic\u003c/code\u003e depends on \u003ccode\u003e$(PNG_SENTINELS)\u003c/code\u003e, so I literally can\u0026rsquo;t forget to\ncompress any new images added:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003e\u003cspan style=\"color: #06287e\"\u003e.PHONY\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e help build server server-with-drafts clean zopfli\n\n\u003cspan style=\"color: #bb60d5\"\u003ePNG_SENTINELS\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:=\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003eshell find . -path ./public -prune -o -name \u003cspan style=\"color: #4070a0\"\u003e\u0026#39;*.png\u0026#39;\u003c/span\u003e -print | sed \u003cspan style=\"color: #4070a0\"\u003e\u0026#39;s|\\(.\\+/\\)\\(.\\+.png\\)|\\1.\\2.zopfli|g\u0026#39;\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e\n\n\u003cspan style=\"color: #06287e\"\u003ehelp\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e## Print this help text\u003c/span\u003e\n\t@grep -E \u003cspan style=\"color: #4070a0\"\u003e\u0026#39;^[a-zA-Z_-]+:.*?## .*$$\u0026#39;\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003eMAKEFILE_LIST\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e | awk \u003cspan style=\"color: #4070a0\"\u003e\u0026#39;BEGIN {FS = \u0026quot;:.*?## \u0026quot;}; {printf \u0026quot;\\033[36m%-30s\\033[0m %s\\n\u0026quot;, $$1, $$2}\u0026#39;\u003c/span\u003e\n\n\u003cspan style=\"color: #06287e\"\u003eserver\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e## Run hugo server\u003c/span\u003e\n\thugo server\n\n\u003cspan style=\"color: #06287e\"\u003eserver-with-drafts\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e## Run hugo server and include drafts\u003c/span\u003e\n\thugo server -D\n\n\u003cspan style=\"color: #06287e\"\u003ebuild\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e public \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e## Build site (will also compress images using zopfli)\u003c/span\u003e\n\n\u003cspan style=\"color: #06287e\"\u003ezopfli\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003ePNG_SENTINELS\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e## Compress new images using zopfli\u003c/span\u003e\n\n\u003cspan style=\"color: #06287e\"\u003eclean\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e## Remove the built directory\u003c/span\u003e\n\t@rm -rf public\n\n\u003cspan style=\"color: #06287e\"\u003epublic\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003ePNG_SENTINELS\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e\n\t@rm -rf public\n\thugo\n\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Zopfli sentinel rule, assumes zopflipng binary is in the same folder\u003c/span\u003e\n\u003cspan style=\"color: #06287e\"\u003e.%.png.zopfli\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e %.png\n\t./zopflipng --prefix\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;zopfli_\u0026quot;\u003c/span\u003e $\u0026lt;\n\t@mv \u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003edir $\u0026lt;\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003ezopfli_\u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003enotdir $\u0026lt;\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e $\u0026lt;\n\t@touch \u003cspan style=\"color: #bb60d5\"\u003e$@\u003c/span\u003e\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eFor best performance, run make with parallel jobs (change 4 to your\nnumber CPUs): \u003ccode\u003emake -j4 zopfli\u003c/code\u003e.\u003c/p\u003e\n\n\u003cp\u003eTo know which files have already been compressed without actually\nrunning Zopfli on it again (which takes a while), sentinel files are\ncreated with this pattern: \u003ccode\u003e.\u0026lt;imgfilename\u0026gt;.zopfli\u003c/code\u003e. Thus, the next\ntime around, zopfli is only invoked for files which have \u003cem\u003enot\u003c/em\u003e already\nbeen compressed, making it a one-time operation. And when everything\nhas already been compressed, you\u0026rsquo;ll just get this:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003emake: Nothing to be done for \u0026#39;zopfli\u0026#39;.\n\u003c/pre\u003e\u003c/div\u003e\n", + "date_published": "2016-08-26T13:17:40+02:00", + "image": "https://cowboyprogrammer.org/images/2017/10/zopfli_all_the_things_32.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/07/migrating_from_ghost_to_hugo/", + "url": "https://cowboyprogrammer.org/2016/07/migrating_from_ghost_to_hugo/", + "title": "Migrating from Ghost to Hugo", + "content_html": "\n\n\u003cp\u003eSo I recently migrated this site from \u003ca href=\"https://ghost.org\"\u003eGhost\u003c/a\u003e to \u003ca href=\"https://gohugo.io\"\u003eHugo\u003c/a\u003e\nafter reading a nice article about the Hugo in\n\u003ca href=\"https://www.linuxvoice.com/download-linux-voice-issue-20/\"\u003eLinux Voice #20\u003c/a\u003e (funnily enough, the same issue also\nfeatures an article about Ghost). I originally made the switch to\nGhost from \u003ca href=\"https://jekyllrb.com/\"\u003eJekyll\u003c/a\u003e back in 2014 or so mainly because I could\nnot find a good theme to use. Ghost also seemed to have a lot of cool\nfeatures and it\u0026rsquo;s fun to try new things.\u003c/p\u003e\n\n\u003cp\u003eI think it\u0026rsquo;s safe to say that I am hardly a prolific blogger. I mainly\nwrite about stuff which I personally cannot find on the web which I\nthink should exist, because I will likely need it myself sometime in\nthe future. So it\u0026rsquo;s hardly a surprise that I am not in the target\naudience for Ghost.\u003c/p\u003e\n\n\u003ch2 id=\"things-about-ghost-which-annoy-me\"\u003eThings about Ghost which annoy me\u003c/h2\u003e\n\n\u003cul\u003e\n\u003cli\u003eIt\u0026rsquo;s written in NodeJS \u0026mdash; people who think JS is a good server\nlanguage also tend to think that it\u0026rsquo;s a good idea to depend on just\nabout any package, and download it in every single build. Which\nbecomes really \u003ca href=\"http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/\"\u003efunny sometimes\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePoor selection of \u003ca href=\"http://marketplace.ghost.org/\"\u003ethemes\u003c/a\u003e \u0026mdash; this is subjective of\ncourse, but it seems to me that the free options don\u0026rsquo;t have much in\nterms of diversity. Heck, they even call it a \u003cem\u003emarketplace\u003c/em\u003e which\nrubs me the wrong way.\u003c/li\u003e\n\u003cli\u003eThemes end up being quite reliant on JS if you want necessary\nfeatures like syntax highlighting on code snippets \u0026mdash; I often\nbrowse with JS disabled and should be able to view my own site.\u003c/li\u003e\n\u003cli\u003eMarkdown parser treats newlines as significant \u0026mdash; meaning you can\u0026rsquo;t\nhave properly aligned paragraphs in your editor.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eThat last point irritates me deeply but it\u0026rsquo;s not as bad as the next point.\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003eYou can effectively lock an account by entering the wrong password 3\ntimes.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eThis requires some explanation. So Ghost, targeting teams of bloggers\nreally, naturally have an account system much like Wordpress. Now, as\nI was surveying the security status of other services I am running, I\nwas wondering how Ghost handled someone trying to brute force your\naccount and decided to simply try it out. Type the wrong password once\ntoo many, and this happens:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/ghost_wrong_password.png\" alt=\"Ghost: typing the wrong password too many times locks your account\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eIt doesn\u0026rsquo;t lock it for a single IP address (I tried from several), it\nlocks the entire account. Effectively, someone can just set up a\nscript to try an account indefinitely simply with the intention to\nblock someone from logging in.\u003c/p\u003e\n\n\u003cp\u003eThe log doesn\u0026rsquo;t even show login attempts, so there is no way to\nimplement sensible blocking strategies using something like \u003ca href=\"http://www.fail2ban.org\"\u003efail2ban\u003c/a\u003e.\u003c/p\u003e\n\n\u003cp\u003eThe whole thing left a bad taste my mouth so it was a very suitable timing to read an article on \u003ca href=\"https://gohugo.io\"\u003eHugo\u003c/a\u003e.\u003c/p\u003e\n\n\u003ch2 id=\"things-about-hugo-which-excite-me\"\u003eThings about Hugo which excite me\u003c/h2\u003e\n\n\u003cul\u003e\n\u003cli\u003eMarkdown parser treats newlines correctly\u003c/li\u003e\n\u003cli\u003eIt\u0026rsquo;s a static site generator and not a service \u0026mdash; this meant 100MB\n(10%) of RAM became available on my server and there is no account\nto hack (or block).\u003c/li\u003e\n\u003cli\u003eSupports everything of Ghost (that I am aware of).\u003c/li\u003e\n\u003cli\u003eThe simplicity of Hugo makes it \u003ca href=\"https://npf.io/2014/08/making-it-a-series/\"\u003equite painless\u003c/a\u003e to\ndo useful things compared to\n\u003ca href=\"https://github.com/TryGhost/Ghost/issues/4818\"\u003eignored feature requests\u003c/a\u003e for the same in Ghost.\u003c/li\u003e\n\u003cli\u003eCan do server side syntax highlighting using Pygments.\u003c/li\u003e\n\u003cli\u003eSome really nice \u003ca href=\"http://themes.gohugo.io/\"\u003ethemes\u003c/a\u003e are available, and they are\nall free.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2 id=\"migrating-all-data-from-ghost\"\u003eMigrating all data from Ghost\u003c/h2\u003e\n\n\u003cp\u003eMigrating from Ghost also turned about to be really painless. There\nwere several scripts around for exactly this but they all turned out\nto be written in \u003ca href=\"https://gist.github.com/vjeantet/d1f6cf824a2344dd6b4e\"\u003eodd languages\u003c/a\u003e, and did not actually\nmigrate all the metadata in Ghost. So I wrote my own in Python with\nthese \u003cem\u003ekiller features\u003c/em\u003e:\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003eMigrates tags.\u003c/li\u003e\n\u003cli\u003eMigrates dates.\u003c/li\u003e\n\u003cli\u003eMigrates drafts as drafts.\u003c/li\u003e\n\u003cli\u003eCreates aliases in your posts which makes sure that old permalinks\nwill still work!\u003c/li\u003e\n\u003cli\u003eMigrates cover pictures as banner images, just select a theme which\nsupport them.\u003c/li\u003e\n\u003cli\u003eRewrites all relative links so they all still work (this includes\nimages).\u003c/li\u003e\n\u003cli\u003eCode blocks with language definitions like \u003ccode\u003e```language-java\u003c/code\u003e\nare changed to \u003ccode\u003e```java\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003e\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#!/usr/bin/env python3\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# -*- coding: utf-8 -*-\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003e\u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003eA simple program which migrates an exported Ghost blog to Hugo.\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003eIt assumes your blog is using the hugo-icarus theme, but should\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003ework for any theme. The script will migrate your posts, including\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003etags and banner images. Furthermore, it will make sure that\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003eall your old post urls will keep working by adding aliases to them.\u003c/span\u003e\n\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003eThe only thing you need to do yourself is copying the `images/`\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003edirectory in your ghost directory to `static/images/` in your hugo\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003edirectory. That way, all images will work. The script will rewrite\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003eall urls linking to `/content/images` to just `/images`.\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003e\u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eimport\u003c/span\u003e \u003cspan style=\"color: #0e84b5; font-weight: bold\"\u003eargparse\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eimport\u003c/span\u003e \u003cspan style=\"color: #0e84b5; font-weight: bold\"\u003ejson\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003efrom\u003c/span\u003e \u003cspan style=\"color: #0e84b5; font-weight: bold\"\u003edatetime\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eimport\u003c/span\u003e date\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003efrom\u003c/span\u003e \u003cspan style=\"color: #0e84b5; font-weight: bold\"\u003eos\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eimport\u003c/span\u003e path\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003efrom\u003c/span\u003e \u003cspan style=\"color: #0e84b5; font-weight: bold\"\u003ecollections\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eimport\u003c/span\u003e defaultdict\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eimport\u003c/span\u003e \u003cspan style=\"color: #0e84b5; font-weight: bold\"\u003ere\u003c/span\u003e\n\n_post \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003e+++\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003edate = \u0026quot;{date}\u0026quot;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003edraft = {draft}\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003etitle = \u0026quot;\u0026quot;\u0026quot;{title}\u0026quot;\u0026quot;\u0026quot;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003eslug = \u0026quot;{slug}\u0026quot;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003etags = {tags}\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003ebanner = \u0026quot;{banner}\u0026quot;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003ealiases = {aliases}\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003e+++\u003c/span\u003e\n\n\u003cspan style=\"color: #4070a0\"\u003e{markdown}\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003e\u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n\n\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003edef\u003c/span\u003e \u003cspan style=\"color: #06287e\"\u003emigrate\u003c/span\u003e(filepath, hugodir):\n \u003cspan style=\"color: #4070a0; font-style: italic\"\u003e\u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003e Parse the Ghost json file and write post files\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003e \u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003ewith\u003c/span\u003e \u003cspan style=\"color: #007020\"\u003eopen\u003c/span\u003e(filepath, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;r\u0026quot;\u003c/span\u003e) \u003cspan style=\"color: #007020; font-weight: bold\"\u003eas\u003c/span\u003e fp:\n ghost \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e json\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eload(fp)\n\n data \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e ghost[\u003cspan style=\"color: #4070a0\"\u003e\u0026#39;db\u0026#39;\u003c/span\u003e][\u003cspan style=\"color: #40a070\"\u003e0\u003c/span\u003e][\u003cspan style=\"color: #4070a0\"\u003e\u0026#39;data\u0026#39;\u003c/span\u003e]\n\n tags \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e {}\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003efor\u003c/span\u003e tag \u003cspan style=\"color: #007020; font-weight: bold\"\u003ein\u003c/span\u003e data[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;tags\u0026quot;\u003c/span\u003e]:\n tags[tag[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;id\u0026quot;\u003c/span\u003e]] \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e tag[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;name\u0026quot;\u003c/span\u003e]\n\n posttags \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e defaultdict(\u003cspan style=\"color: #007020\"\u003elist\u003c/span\u003e)\n\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003efor\u003c/span\u003e posttag \u003cspan style=\"color: #007020; font-weight: bold\"\u003ein\u003c/span\u003e data[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;posts_tags\u0026quot;\u003c/span\u003e]:\n posttags[posttag[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;post_id\u0026quot;\u003c/span\u003e]]\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eappend(tags[posttag[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;tag_id\u0026quot;\u003c/span\u003e]])\n\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003efor\u003c/span\u003e post \u003cspan style=\"color: #007020; font-weight: bold\"\u003ein\u003c/span\u003e data[\u003cspan style=\"color: #4070a0\"\u003e\u0026#39;posts\u0026#39;\u003c/span\u003e]:\n draft \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;true\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;status\u0026quot;\u003c/span\u003e] \u003cspan style=\"color: #666666\"\u003e==\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;draft\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eelse\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;false\u0026quot;\u003c/span\u003e\n ts \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e \u003cspan style=\"color: #007020\"\u003eint\u003c/span\u003e(post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;created_at\u0026quot;\u003c/span\u003e]) \u003cspan style=\"color: #666666\"\u003e/\u003c/span\u003e \u003cspan style=\"color: #40a070\"\u003e1000\u003c/span\u003e\n\n banner \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;image\u0026quot;\u003c/span\u003e] \u003cspan style=\"color: #007020; font-weight: bold\"\u003eis\u003c/span\u003e \u003cspan style=\"color: #007020\"\u003eNone\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eelse\u003c/span\u003e post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;image\u0026quot;\u003c/span\u003e]\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# /content/ should not be part of uri anymore\u003c/span\u003e\n banner \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e re\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003esub(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;^.*/content[s]?/\u0026quot;\u003c/span\u003e, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;/\u0026quot;\u003c/span\u003e, banner)\n\n target \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e path\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003ejoin(hugodir, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;content/post\u0026quot;\u003c/span\u003e,\n \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;{}.md\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eformat(post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;slug\u0026quot;\u003c/span\u003e]))\n\n aliases \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e [\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;/{}/\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eformat(post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;slug\u0026quot;\u003c/span\u003e])]\n\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003eprint\u003c/span\u003e(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;Migrating \u0026#39;{}\u0026#39; to {}\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eformat(post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;title\u0026quot;\u003c/span\u003e],\n target))\n\n hugopost \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e _post\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eformat(markdown\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003epost[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;markdown\u0026quot;\u003c/span\u003e],\n title\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003epost[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;title\u0026quot;\u003c/span\u003e],\n draft\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003edraft,\n slug\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003epost[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;slug\u0026quot;\u003c/span\u003e],\n date\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003edate\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003efromtimestamp(ts)\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eisoformat(),\n tags\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003eposttags[post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;id\u0026quot;\u003c/span\u003e]],\n banner\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003ebanner,\n aliases\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003ealiases)\n\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# this is no longer relevant\u003c/span\u003e\n hugopost \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e hugopost\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003ereplace(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;```language-\u0026quot;\u003c/span\u003e, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;```\u0026quot;\u003c/span\u003e)\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# /content/ should not be part of uri anymore\u003c/span\u003e\n hugopost \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e hugopost\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003ereplace(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;/content/\u0026quot;\u003c/span\u003e, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;/\u0026quot;\u003c/span\u003e)\n hugopost \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e re\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003esub(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;^.*/content[s]?/\u0026quot;\u003c/span\u003e, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;/\u0026quot;\u003c/span\u003e, hugopost)\n\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003ewith\u003c/span\u003e \u003cspan style=\"color: #007020\"\u003eopen\u003c/span\u003e(target, \u003cspan style=\"color: #4070a0\"\u003e\u0026#39;w\u0026#39;\u003c/span\u003e) \u003cspan style=\"color: #007020; font-weight: bold\"\u003eas\u003c/span\u003e fp:\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003eprint\u003c/span\u003e(hugopost, \u003cspan style=\"color: #007020\"\u003efile\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003efp)\n\n\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003edef\u003c/span\u003e \u003cspan style=\"color: #06287e\"\u003emain\u003c/span\u003e():\n parser \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e argparse\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eArgumentParser(\n description\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;Migrate an exported Ghost blog to Hugo\u0026quot;\u003c/span\u003e)\n req \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e parser\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eadd_argument_group(title\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;required arguments\u0026quot;\u003c/span\u003e)\n req\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eadd_argument(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;-f\u0026quot;\u003c/span\u003e, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;--file\u0026quot;\u003c/span\u003e, help\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;JSON file exported from Ghost\u0026quot;\u003c/span\u003e,\n required\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #007020\"\u003eTrue\u003c/span\u003e)\n req\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eadd_argument(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;-d\u0026quot;\u003c/span\u003e, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;--dir\u0026quot;\u003c/span\u003e, help\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;Directory (root) of Hugo site\u0026quot;\u003c/span\u003e,\n required\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #007020\"\u003eTrue\u003c/span\u003e)\n\n args \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e parser\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eparse_args()\n\n migrate(args\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003efile, args\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003edir)\n\n\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e \u003cspan style=\"color: #bb60d5\"\u003e__name__\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e==\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;__main__\u0026quot;\u003c/span\u003e:\n main()\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eNext post, I might write about what changes I made to the theme, and\nsome nifty Nginx tricks you can use to stay compatible with old links.\u003c/p\u003e\n", + "date_published": "2016-07-25T23:55:38+02:00", + "image": "https://cowboyprogrammer.org/images/hugo-logo.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/05/set-refresh-rate-of-screen-from-script/", + "url": "https://cowboyprogrammer.org/2016/05/set-refresh-rate-of-screen-from-script/", + "title": "Set refresh rate of screen from script", + "content_html": "\u003cp\u003eGetting a great new 100 Hz Ultra Wide monitor does not come without its share of tweaking. So it turns out that the refresh you set on your monitor in Nvidia settings (as explained in a \u003ca href=\"https://cowboyprogrammer.org/nvidia-gsync-on-linux/\"\u003eprevious post\u003c/a\u003e does not apply to all the display ports. They apparently count as different screens with different settings or something.\u003c/p\u003e\n\n\u003cp\u003eSo, here\u0026rsquo;s a handy script which you can add to your window manager\u0026rsquo;s autostart applications to set the refresh rate and resolution of your screen, regardless of which actual port you use:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003e\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#!/bin/bash -eu\u003c/span\u003e\n\u003cspan style=\"color: #bb60d5\"\u003eRES\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;3440x1440\u0026quot;\u003c/span\u003e\n\u003cspan style=\"color: #bb60d5\"\u003eRR\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;100\u0026quot;\u003c/span\u003e\n\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Do for every output, so that it doesn\u0026#39;t matter where you plug in\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# your monitor.\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003efor\u003c/span\u003e output in \u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003exrandr | grep \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;DP-\u0026quot;\u003c/span\u003e | sed -e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;s/\\(DP-.\\).*/\\1/\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e; \u003cspan style=\"color: #007020; font-weight: bold\"\u003edo\u003c/span\u003e\n \u003cspan style=\"color: #007020\"\u003eecho\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;Trying to set mode on \u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$output\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e xrandr --output \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$output\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e --mode \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$RES\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e -r \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$RR\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e; \u003cspan style=\"color: #007020; font-weight: bold\"\u003ethen\u003c/span\u003e\n \u003cspan style=\"color: #007020\"\u003eecho\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;Success: \u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$RES\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e \u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$RR\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e Hz set on \u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$output\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003efi\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003edone\u003c/span\u003e\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eIt iterates over all the display ports on your graphics card, so it doesn\u0026rsquo;t matter where you plug your monitor in.\u003c/p\u003e\n\n\u003cp\u003eIn XFCE, you\u0026rsquo;d add this script to \u003cem\u003eApplication Autostart\u003c/em\u003e:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2016/05/Session-and-Startup_033.png\" alt=\"XFCE Application Autostart\" /\u003e\u003c/p\u003e\n", + "date_published": "2016-05-18T00:00:00+00:00", + "image": "https://cowboyprogrammer.org/images/2016/05/Selection_034.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/04/fixing-the-up-button-in-python-shell-history/", + "url": "https://cowboyprogrammer.org/2016/04/fixing-the-up-button-in-python-shell-history/", + "title": "Fixing the up button in Python shell history", + "content_html": "\u003cp\u003eIn case your python/ipython shell doesn\u0026rsquo;t have a working history, e.g. pressing \u0026#8593; only prints some nonsensical \u003ccode\u003e^[[A\u003c/code\u003e, then you are missing either the \u003ccode\u003ereadline\u003c/code\u003e or \u003ccode\u003encurses\u003c/code\u003e library.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2016/04/Selection_021.png\" alt=\"Python shell where up doesn't work\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eIpython is more descriptive that something is wrong, but if you\u0026rsquo;re in the habit of mostly using python as a quick calculator, you might never notice:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2016/04/Selection_022.png\" alt=\"iPython shell where up doesn't work\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eIf you\u0026rsquo;re using \u003ca href=\"http://conda.pydata.org/miniconda.html\"\u003eMiniconda\u003c/a\u003e then just do:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003econda install ncurses readline\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eAnd \u0026#8593; should work:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2016/04/Selection_023.png\" alt=\"iPython with working up\" /\u003e\u003c/p\u003e\n", + "date_published": "2016-04-02T00:00:00+00:00", + "image": "https://cowboyprogrammer.org/images/2016/04/Selection_021-1.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/03/nvidia-gsync-on-linux/", + "url": "https://cowboyprogrammer.org/2016/03/nvidia-gsync-on-linux/", + "title": "Nvidia G-Sync and Linux", + "content_html": "\n\n\u003cp\u003eAfter getting a fancy new monitor with G-Sync support, I was eager to try it out in my Linux gaming setup. While Nvidia fully supports G-Sync in their Linux drivers, it turns out that other components of the system can get in the way. As explained by a \u003ca href=\"https://devtalk.nvidia.com/default/topic/854184/gsync-is-not-working/?offset=1\"\u003epost on the Nvidia forums\u003c/a\u003e:\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003eFor G-SYNC to work, the application has to be able to flip and the symptoms you\u0026rsquo;re describing here sound like it\u0026rsquo;s not able to flip in your configuration. There are a variety of reasons why flipping might not be working, but the most likely culprits here are either the compositor getting in the way, or the game not being completely full-screen. The full-screen requirement includes the game being completely unoccluded, so if your window manager is drawing something on top of the game, even just by one pixel, it will prevent flipping. Full-screen also means that it has to cover the entire X screen, which includes both monitors if you have them both enabled.\u003c/p\u003e\n\n\u003cp\u003eCan you please try a different window manager / desktop environment to see if the behavior changes?\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cp\u003eSince only a minority of PC-gamers are actually on Linux, and only a minority of those actually have G-Sync capable monitors, Googling for assistance was\u0026hellip; challenging. So, for any other Linux gamers out there, here is a short guide on how to enable G-Sync and verify that it works. Some of the steps are XFCE specific, as this is my window manager of choice on my gaming PC. If you are using a different window manager, you\u0026rsquo;ll have to look through your options to find the equivalent settings.\u003c/p\u003e\n\n\u003ch2 id=\"nvidia-settings\"\u003eNvidia settings\u003c/h2\u003e\n\n\u003cul\u003e\n\u003cli\u003eSync to VBlank: Optional\u003c/li\u003e\n\u003cli\u003eAllow Flipping: Required\u003c/li\u003e\n\u003cli\u003eAllow G-SYNC: Required\u003c/li\u003e\n\u003cli\u003eEnable G-SYNC Visual Indicator: Optional\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eThe only two required settings are \u003cem\u003eflipping\u003c/em\u003e and \u003cem\u003eG-Sync\u003c/em\u003e, the others are optional. Enabling \u003cem\u003eSync to VBlank\u003c/em\u003e (VSync) in combination with G-Sync only prevents the GPU from generating an FPS beyond your monitor\u0026rsquo;s max refresh rate (which you can\u0026rsquo;t see anyway). It is turned off below the max refresh rate when G-Sync is enabled.\u003c/p\u003e\n\n\u003cp\u003eThe visual indicator is useful here to see that G-Sync is working. If all goes well, you should see a green \u0026ldquo;G-SYNC\u0026rdquo; text in the corner when running a game.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2016/03/NVIDIA-X-Server-Settings_007.png\" alt=\"Nvidia settings\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"disable-compositor\"\u003eDisable compositor\u003c/h2\u003e\n\n\u003cp\u003eAs mentioned in the forum post, a compositor will prevent G-Sync from activating because essentially something is rendering above the game. The same reason prevents G-Sync from working in Window mode (unlike Windows, where G-Sync does not require fullscreen).\u003c/p\u003e\n\n\u003cp\u003eFor XFCE, go to \u003cem\u003eWindow Manager Tweaks\u003c/em\u003e under \u003cem\u003eSettings\u003c/em\u003e\n\u003cimg src=\"/images/2016/03/Selection_004.png\" alt=\"XFCE Settings\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eThen under the \u003cem\u003eCompositor\u003c/em\u003e tab, make sure the compositor is disabled\n\u003cimg src=\"/images/2016/03/Selection_005.png\" alt=\"Window Manager Tweaks\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eIn addition, depending on your setup, make sure you don\u0026rsquo;t have things like \u003ca href=\"https://wiki.archlinux.org/index.php/Compton\"\u003eCompton\u003c/a\u003e or \u003ca href=\"https://wiki.archlinux.org/index.php/Compiz\"\u003eCompiz\u003c/a\u003e enabled.\u003c/p\u003e\n\n\u003ch2 id=\"start-a-game-in-fullscreen\"\u003eStart a game in fullscreen\u003c/h2\u003e\n\n\u003cp\u003eAs mentioned, you must run the game in fullscreen mode. G-Sync does not work with window mode in Linux.\u003c/p\u003e\n\n\u003cp\u003eI did notice that there are games which do not enable G-Sync. One example is \u0026ldquo;Cities: Skylines\u0026rdquo;. So make sure to try several games if you don\u0026rsquo;t see the G-Sync logo.\u003c/p\u003e\n\n\u003cp\u003eA good candidate here is Dota 2 since it is free to play. Dota 2 running in \u0026ldquo;Desktop-Friendly Fullscreen\u0026rdquo; does enable G-Sync. As does Portal 2 and XCOM 2.\u003c/p\u003e\n", + "date_published": "2016-03-05T00:00:00+00:00", + "image": "https://cowboyprogrammer.org/images/2016/03/NVIDIA-X-Server-Settings_007-1.png" + } + + , { + "id": "https://cowboyprogrammer.org/2014/12/encrypt-a-btrfs-raid5-array-in-place/", + "url": "https://cowboyprogrammer.org/2014/12/encrypt-a-btrfs-raid5-array-in-place/", + "title": "Encrypt a BTRFS RAID5-array in-place", + "content_html": "\n\n\u003cp\u003eWhen I decided I needed more disk space for media and virtual machine (VM) images, I decided to throw some more money at the problem and get three 3TB hard drives and run \u003ca href=\"https://btrfs.wiki.kernel.org/index.php/Main_Page\"\u003eBTRFS\u003c/a\u003e in \u003ca href=\"http://en.wikipedia.org/wiki/RAID#Standard_levels\"\u003eRAID5\u003c/a\u003e. It\u0026rsquo;s still somewhat experimental, but has proven very solid for me.\u003c/p\u003e\n\n\u003cp\u003eRAID5 means that one drive can completely fail, but all the data is still intact. All one has to do is insert a new drive and the drive will be reconstructed. While RAID5 protects against a complete drive failure, it does nothing to prevent a single bit to be flipped to due cosmic rays or electricity spikes.\u003c/p\u003e\n\n\u003cp\u003eBTRFS is a new filesystem for Linux which does what ZFS does for BSD. The two important features which it offers over previous systems is: copy-on-write (COW), and bitrot protection. See, when running RAID with BTRFS, if a single bit is flipped, BTRFS will detect it when you try to read the file and correct it (if running in RAID so there\u0026rsquo;s redundancy). COW means you can take snapshots of the entire drive instantly without using extra space. Space will only be required when stuff change and diverge from your snapshots.\u003c/p\u003e\n\n\u003cp\u003eSee \u003ca href=\"http://arstechnica.com/information-technology/2014/01/bitrot-and-atomic-cows-inside-next-gen-filesystems/\"\u003eArstechnica\u003c/a\u003e for why \u003cem\u003eBTRFS\u003c/em\u003e is da shit for your next drive or system.\u003c/p\u003e\n\n\u003cp\u003eWhat I did not do at the time was encrypt the drives. \u003ca href=\"http://www.linuxvoice.com/\"\u003eLinux Voice #11\u003c/a\u003e had a very nice article on encryption so I thought I\u0026rsquo;d set it up. And because I\u0026rsquo;m using RAID5, it is actually possible for me to encrypt my drives using \u003ca href=\"https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption\"\u003edm-crypt/LUKS\u003c/a\u003e in-place, while the whole shebang is mounted, readable and usable :)\u003c/p\u003e\n\n\u003cp\u003eSome initial mistakes meant I had to actually reboot the system, so I thought I\u0026rsquo;d write down how to do it correctly. So to summarize, the goal is to convert three disks to three encrypted disks. BTRFS will be moved from using the drives directly, to using the LUKS-mapped.\u003c/p\u003e\n\n\u003ch3 id=\"unmount-the-raid-system-time-1-second\"\u003eUnmount the raid system (time 1 second)\u003c/h3\u003e\n\n\u003cp\u003eSadly, we need to unmount the volume to be able to \u0026ldquo;remove\u0026rdquo; the drive. This needs to be done so the system can understand that the drive has \u0026ldquo;vanished\u0026rdquo;. It will only stay unmounted for about a minute though.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo umount /path/to/vol\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eThis is assuming you have configured your \u003cstrong\u003efstab\u003c/strong\u003e with all the details. For example, with something like this (ALWAYS USE UUID!!)\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e# BTRFS Systems\nUUID=\u0026quot;ac21dd50-e6ee-4a9e-abcd-459cba0e6913\u0026quot; /mnt/btrfs btrfs defaults 0 0\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eNote that no modification of the \u003cstrong\u003efstab\u003c/strong\u003e will be necessary if you have used UUID.\u003c/p\u003e\n\n\u003ch3 id=\"encrypt-one-of-the-drives-time-10-seconds\"\u003eEncrypt one of the drives (time 10 seconds)\u003c/h3\u003e\n\n\u003cp\u003ePick one of the drives to encrypt. Here it\u0026rsquo;s \u003ccode\u003e/dev/sdc\u003c/code\u003e:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo cryptsetup luksFormat -v /dev/sdc\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch3 id=\"open-the-encrypted-drive-time-30-seconds\"\u003eOpen the encrypted drive (time 30 seconds)\u003c/h3\u003e\n\n\u003cp\u003eTo use it, we have to open the drive. You can pick any name you want:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo cryptsetup luksOpen /dev/sdc DRIVENAME\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eTo make this happen on boot, find the new \u003cem\u003eUUID\u003c/em\u003e of \u003ccode\u003e/dev/sdc\u003c/code\u003e with \u003ccode\u003eblkid\u003c/code\u003e:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo blkid\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2014/Dec/Screenshot-from-2014-12-29-13-28-29.png\" alt=\"Output of blkid\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eSo for me, the drive has a the following \u003cem\u003eUUID:\u003c/em\u003e \u003ccode\u003ef5d3974c-529e-4574-bbfa-7f3e6db05c65\u003c/code\u003e. Add the following line to \u003ccode\u003e/etc/crypttab\u003c/code\u003e with your desired drive name and your \u003cem\u003eUUID\u003c/em\u003e (without any quotes):\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003eDRIVENAME UUID=your-uuid-without-quotes none luks\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eNow the system will ask for your password on boot.\u003c/p\u003e\n\n\u003ch3 id=\"add-the-encrypted-drive-to-the-raid-time-20-seconds\"\u003eAdd the encrypted drive to the raid (time 20 seconds)\u003c/h3\u003e\n\n\u003cp\u003eFirst we have to remount the raid system. This will fail because there is a missing drive, unless we add the option \u003cem\u003edegraded\u003c/em\u003e.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo mount -o degraded /path/to/vol\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eThere will be some complaints about missing drives and such, which is exactly what we expect. Now, just add the new drive:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo btrfs device add /dev/mapper/DRIVENAME /path/to/vol\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch3 id=\"remove-the-missing-drive-time-14-hours\"\u003eRemove the missing drive (time 14 hours)\u003c/h3\u003e\n\n\u003cp\u003eThe final step is to remove the old drive. We can use the special name \u003cem\u003emissing\u003c/em\u003e to remove it:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo btrfs device delete missing /path/to/vol\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eThis can take a really long time, and by long I mean ~15 hours if you have a terrabyte of data. But, you can still use the drive during this process so just be patient.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2014/Dec/Screenshot-from-2014-12-29-12-48-45.png\" alt=\"Balance took 14 hours\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eFor me it took 14 hours 34 minutes. The reason for the delay is because the \u003cem\u003edelete\u003c/em\u003e command will force the system to rebuild the missing drive on your new encrypted volume.\u003c/p\u003e\n\n\u003ch3 id=\"next-drive-rinse-and-repeat\"\u003eNext drive, rinse and repeat\u003c/h3\u003e\n\n\u003cp\u003eJust unmount the raid, encrypt the drive, add it back and delete the missing. Repeat for all drives in your array. Once the last drive is done, unmount the array and remount it without the \u003ccode\u003e-o degraded\u003c/code\u003e option. Now you have an encrypted RAID array.\u003c/p\u003e\n", + "date_published": "2014-12-28T00:00:00+00:00" + } + + ] + +} diff --git a/app/src/androidTest/resources/com/nononsenseapps/feeder/model/opml/Flym_auto_backup.opml b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/opml/Flym_auto_backup.opml new file mode 100644 index 0000000..b88894e --- /dev/null +++ b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/opml/Flym_auto_backup.opml @@ -0,0 +1,28 @@ + + + +Flym export +1498468298144 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/androidTest/resources/com/nononsenseapps/feeder/model/opml/antennapod-feeds.opml b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/opml/antennapod-feeds.opml new file mode 100644 index 0000000..e3e58f7 --- /dev/null +++ b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/opml/antennapod-feeds.opml @@ -0,0 +1,17 @@ + + + + AntennaPod Subscriptions + 04 Jul 17 00:58:04 +0200 + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/androidTest/resources/com/nononsenseapps/feeder/model/opml/rssguard_1.opml b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/opml/rssguard_1.opml new file mode 100644 index 0000000..15ec3ba --- /dev/null +++ b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/opml/rssguard_1.opml @@ -0,0 +1,49 @@ + + + + RSS Guard + Thu, 27 Jul 2017 18:51:54 GMT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/androidTest/resources/com/nononsenseapps/feeder/model/opml/rssguard_2.opml b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/opml/rssguard_2.opml new file mode 100644 index 0000000..f4384de --- /dev/null +++ b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/opml/rssguard_2.opml @@ -0,0 +1,49 @@ + + + + RSS Guard + Thu, 27 Jul 2017 18:51:54 GMT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/androidTest/resources/com/nononsenseapps/feeder/model/rss_nixos.xml b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/rss_nixos.xml new file mode 100644 index 0000000..bc18c50 --- /dev/null +++ b/app/src/androidTest/resources/com/nononsenseapps/feeder/model/rss_nixos.xml @@ -0,0 +1,898 @@ + +NixOS Newshttps://nixos.orgNews for NixOS, the purely functional Linux distribution.NixOShttps://nixos.org/logo/nixos-logo-only-hires.pnghttps://nixos.org/ + NixOS 18.09 released +https://nixos.org/news.html + + 18.09 Jellyfish logo + + NixOS 18.09 “Jellyfish” has been released, the tenth stable release branch. + See the release notes + for details. You can get NixOS 18.09 ISOs and VirtualBox appliances + from the download page. + For information on how to upgrade from older release branches + to 18.09, check out the + manual section on upgrading. +Sat Oct 06 2018 00:00:00 GMT + Fastly supports NixOS +https://nixos.org/news.html + We are happy to announce that we have moved our binary cache to Fastly. Fastly + is a big supporter of open source projects and now NixOS is one of them! Fastly provides us with CDN capability, + which previously was running on AWS CloudFront. Big thanks go to Fastly, in particular Tom Denniston and Elaine + Greenberg, our friends at Infor and Packet.net + and Graham Christensen for making this possible. +Thu Oct 04 2018 00:00:00 GMT + Nix 2.1 released +https://nixos.org/news.html + Nix 2.1 + has been released. See the release + notes for a list of changes and new features. +Sun Sep 02 2018 00:00:00 GMT + NixOS Discourse forum +https://nixos.org/news.html + The nix-devel mailing list is now replaced by our discourse forum instance which is also usable by email: + discourse.nixos.org. +Tue Aug 14 2018 00:00:00 GMT + NixCon 2018 +https://nixos.org/news.html + We're happy to announce that NixCon 2018, the + third Nix Conference, will take place October 25-27 2018 in London + For more information, see the + NixCon 2018 website. + And please consider + submitting a talk! +Mon May 21 2018 00:00:00 GMT + NixOS 18.03 released +https://nixos.org/news.html + + 18.03 Impala logo + + NixOS 18.03 “Impala” has been released, the ninth stable release branch. + See the release notes + for details. You can get NixOS 18.03 ISOs and VirtualBox appliances + from the download page. + For information on how to upgrade from older release branches + to 18.03, check out the + manual section on upgrading. +Wed Apr 04 2018 00:00:00 GMT + Nix 2.0 released +https://nixos.org/news.html + Nix 2.0 + has been released. See the release + notes for a list of changes and new features. +Thu Feb 22 2018 00:00:00 GMT + NixOS 17.09 released +https://nixos.org/news.html + NixOS 17.09 “Hummingbird” has been released, the eigth stable release + branch. See the release notes + for details. You can get NixOS 17.09 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 17.09, check out the manual section on + upgrading. +Mon Oct 02 2017 00:00:00 GMT + Nix-dev mailing list moved +https://nixos.org/news.html + The nix-dev mailing list has moved to + nix-devel + on Google Groups. +Wed Jul 12 2017 00:00:00 GMT + NixCon 2017 +https://nixos.org/news.html + We're happy to announce that NixCon 2017, the + second Nix Conference, will take place October 28–31 2017 in Munich + For more information, see the + NixCon 2017 website. + And please consider + submitting a talk! +Sun Jun 18 2017 00:00:00 GMT + NixOS 17.03 released +https://nixos.org/news.html + NixOS 17.03 “Gorilla” has been released, the seventh stable release + branch. See the release notes + for details. You can get NixOS 17.03 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 17.03, check out the manual section on + upgrading. +Fri Mar 31 2017 00:00:00 GMT + NixOS 16.09 released +https://nixos.org/news.html + NixOS 16.09 “Flounder” has been released, the sixth stable release + branch. See the release notes + for details. You can get NixOS 16.09 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 16.09, check out the manual section on + upgrading. +Mon Oct 03 2016 00:00:00 GMT + NixOps 1.4 released +https://nixos.org/news.html + NixOps + 1.4 has been released. This release contains contains many + nice new features. See the manual + for details. +Wed Jul 20 2016 00:00:00 GMT + NixOS 16.03 released +https://nixos.org/news.html + NixOS 16.03 “Emu” has been released, the fifth stable release + branch. See the release notes + for details. You can get NixOS 16.03 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 16.03, check out the manual section on + upgrading. +Sun May 01 2016 00:00:00 GMT + Nix 1.11 released +https://nixos.org/news.html + Nix 1.11 + has been released. See the release + notes for a list of changes and new features. +Fri Feb 19 2016 00:00:00 GMT + NixOS 15.09 released +https://nixos.org/news.html + NixOS 15.09 “Dingo” has been released, the fourth stable release + branch. See the release notes + for details. You can get NixOS 15.09 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 15.09, check out the manual section on + upgrading. +Fri Oct 30 2015 00:00:00 GMT + Nix 1.10 released +https://nixos.org/news.html + Nix 1.10 + has been released. See the release + notes for a list of changes and new features. +Sat Oct 03 2015 00:00:00 GMT + NixCon 2015 +https://nixos.org/news.html + NixCon logo + We're happy to announce that NixCon 2015, the + first Nix Conference, will take place on November + 14—15th 2015 in Berlin. For more information, see the + NixCon website. And please + consider submitting a + talk! +Thu Sep 03 2015 00:00:00 GMT + NixOS Foundation +https://nixos.org/news.html + The NixOS Foundation + was started to improve our ability to maintain and extend the infrastructure + used by the Nix related projects. If you would like to support us, please go + here and donate some money! +Sun Aug 09 2015 00:00:00 GMT + Nix 1.9 released +https://nixos.org/news.html + Nix 1.9 + has been released. See the release + notes for a list of changes and new features. +Sun Jul 12 2015 00:00:00 GMT + NixOS 14.12 released +https://nixos.org/news.html + NixOS 14.12 “Caterpillar” has been released, the third stable + release branch. It brings Linux 3.14, systemd 217, Glibc 2.20, + KDE 4.14.1, and much more. See the release notes + for details. You can get NixOS 14.12 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 14.12, check out the manual section on + upgrading. +Fri Jan 30 2015 00:00:00 GMT + Nix 1.8 released +https://nixos.org/news.html + Nix 1.8 + has been released. See the release + notes for a list of changes and new features. +Wed Jan 14 2015 00:00:00 GMT + NixOS sprint in Ljubljana +https://nixos.org/news.html + We’re having a NixOS sprint at the Kiberpipa hackerspace + in Ljubljana, Slovenia, on August + 23—27. Joining is free! For more information and to + register, please go to the sprint + page. +Sat Aug 30 2014 00:00:00 GMT + NixOS 14.04 released +https://nixos.org/news.html + NixOS 14.04 “Baboon” has been released, the second stable + release branch. It brings Linux 3.12, systemd 212, GCC 4.8, + Glibc 2.19, KDE 4.12, light-weight NixOS containers, and much + more. See the release + notes for details. You can get NixOS 14.04 ISOs and + VirtualBox appliances from the download page. For information on + how to upgrade a 13.10 system to 14.04, check out the manual + section on upgrading. +Fri May 30 2014 00:00:00 GMT + NixOps 1.2 released +https://nixos.org/news.html + NixOps + 1.2 has been released. This release contains contains many nice new features. See the manual + for details. +Fri May 30 2014 00:00:00 GMT + Nix 1.7 released +https://nixos.org/news.html + Nix 1.7 + has been released. See the release + notes for a list of new features. +Sun May 11 2014 00:00:00 GMT + Heartbleed vulnerability in OpenSSL +https://nixos.org/news.html + A serious security + vulnerability has been discovered in OpenSSL. All stable + NixOS releases prior to version + 13.10.35708.15a465c are vulnerable. (You can + see your current version by running nixos-version.) To + upgrade to the latest NixOS version, run nixos-rebuild + switch --upgrade. You can verify whether you are safe by + running + +
    +        $ nix-store -qR /run/current-system | grep openssl
    +    
    + + If this shows any OpenSSL version prior to 1.0.1g, you may be + vulnerable. +
    Fri May 09 2014 00:00:00 GMT
    + FOSDEM talks +https://nixos.org/news.html + Domen Kožar gave a + talk at FOSDEM about NixOS (video). + Also, Ludovic Courtès gave a talk on + Guix, the Nix- and Guile-based package manager. +Sun Mar 02 2014 00:00:00 GMT + Stdenv updates branch merged into master +https://nixos.org/news.html + The stdenv-updates branch has + been merged into the master branch of Nixpkgs. The main + change are that brings is that Nixpkgs/NixOS are now based on + GCC 4.8 and Glibc 2.18, in addition to many smaller updates. +Fri Feb 21 2014 00:00:00 GMT + NixOS 13.10 released +https://nixos.org/news.html + We have released NixOS 13.10, the first stable branch of NixOS. + Its goal is to provide a safe branch for production environments + that need bug fixes and security updates, but not the + potentially destabilising changes that sometimes occur on the + unstable branch. You can get NixOS 13.10 ISOs and VirtualBox + appliances from the download + page. See the announcement + for more information. For information on how to switch an + existing NixOS machine from the unstable channel to 13.10, check + out the manual + section on upgrading. +Sun Dec 01 2013 00:00:00 GMT + Nix 1.6.1 released +https://nixos.org/news.html + Nix + 1.6.1 has been released. This is primarily a bug fix + release but has some minor new features. See the release + notes for details. +Thu Nov 28 2013 00:00:00 GMT + NixOS sources merged into Nixpkgs +https://nixos.org/news.html + The NixOS Git tree has been merged into the Nixpkgs tree in + order to simplify development. The sources now live in the nixos + subdirectory of the Nixpkgs repository on GitHub. See the + announcement + for more information. +Sun Nov 10 2013 00:00:00 GMT + NixOps 1.1.1 released +https://nixos.org/news.html + NixOps + 1.1.1 has been released. This release consists mostly of minor bugfixes. See the manual + for details. +Sat Nov 02 2013 00:00:00 GMT + Nix 1.6 released +https://nixos.org/news.html + Nix 1.6 + has been released. See the release + notes for details. +Thu Oct 10 2013 00:00:00 GMT + NixOps 1.1 released +https://nixos.org/news.html + NixOps + 1.1 has been released. This release brings a backend for Hetzner, + a German data center provider, support for EC2 spot instances and some + minor bugfixes. See the manual + for details. +Wed Oct 09 2013 00:00:00 GMT + NixOS sprint in Slovenia +https://nixos.org/news.html + A sprint focused on NixOS and Kotti will be held 22-26 + July 2013 in Lokve, Slovenia. It is organised by Termitnjak and sponsored + by LogicBlox. +Thu Aug 15 2013 00:00:00 GMT + NixOps 1.0.1 released +https://nixos.org/news.html + NixOps + 1.0.1 has been released, a minor bug fix release. See the manual + for details. +Sun Aug 11 2013 00:00:00 GMT + NixOS presentation at EuroPython +https://nixos.org/news.html + Domen Kožar gave a presentation at EuroPython + 2013: “NixOS + Operating System: Declarative Configuration Distribution”. +Mon Aug 05 2013 00:00:00 GMT + NixOps 1.0 released +https://nixos.org/news.html + NixOps + 1.0 has been released, the inaugural release of the NixOS + cloud deployment tool. See the announcement + and the manual + for details. +Thu Jul 25 2013 00:00:00 GMT + Nix 1.5.3 released +https://nixos.org/news.html + Nix 1.5.3 + has been released. This is primarily a bug fix release. See the release + notes for details. +Wed Jul 17 2013 00:00:00 GMT + PhD thesis: A Reference Architecture for Distributed Software Deployment +https://nixos.org/news.html + Today Sander van + der Burg successfully defended his PhD thesis entitled A + Reference Architecture for Distributed Software + Deployment! It describes (among other things) Disnix, a system for + deployment of service-oriented architectures. +Wed Jul 03 2013 00:00:00 GMT + Nix 1.5.2 released +https://nixos.org/news.html + Nix 1.5.2 + has been released. This is a bug fix release. +Thu Jun 13 2013 00:00:00 GMT + Nix 1.5.1 released +https://nixos.org/news.html + Nix 1.5.1 + has been released. It fixes a regression introduced in Nix 1.4. See the release + notes for details. +Thu Mar 28 2013 00:00:00 GMT + Nix 1.4 released +https://nixos.org/news.html + Nix 1.4 + has been released. This is primarily a bug fix release that + addresses a security problem in multi-user mode. See the release + notes for details. For installation information, see the manual. +Tue Mar 26 2013 00:00:00 GMT + NixOS switched to systemd +https://nixos.org/news.html + NixOS has switched from Upstart to systemd! + Systemd brings many advantages such as better dependency + management, socket-based activation of services, per-service + logging, cgroup-based process management, and much more. (Read + the announcement.) +Thu Feb 21 2013 00:00:00 GMT + Nix 1.3 released +https://nixos.org/news.html + Nix 1.3 + has been released. This is primarily a bug fix release. See + the release + notes for details. For installation information, see the manual. +Tue Feb 05 2013 00:00:00 GMT + Nix 1.2 released +https://nixos.org/news.html + Nix 1.2 + has been released. See the release + notes for details. For installation information, see the manual. +Sun Jan 06 2013 00:00:00 GMT + Nix 1.1 released +https://nixos.org/news.html + Nix 1.1 + has been released. See the release + notes for details. For installation information, see the manual. +Sat Aug 18 2012 00:00:00 GMT + Binary Nix tarballs available +https://nixos.org/news.html + Our continuous build system, Hydra, now produces binary + tarball distributions of Nix for Mac OS X (Darwin), FreeBSD + and Linux. The tarballs contain all dependencies of Nix, making + it a lot easier to install Nix on those platforms. To install, + download a binary tarball, unpack it in the root directory, then + run nix-finish-install. See the manual + for more information. +Sun Jun 24 2012 00:00:00 GMT + Nix 1.0 released +https://nixos.org/news.html + After almost two years of development, Nix 1.0 + has been released. See the release + notes for an overview of the most important improvements. + For installation information, see the manual. +Mon Jun 11 2012 00:00:00 GMTPatchELF 0.6 releasedhttps://nixos.org/news.html + PatchELF + 0.6 has been released. Apart from some bug fixes, it adds + support for executables produced by the Gold linker. See the README + for details. +Wed Dec 07 2011 00:00:00 GMTHydra talk at Inriahttps://nixos.org/news.html + + Hydra       logo + + Ludovic Courtès gave a talk on Hydra at Inria (which has + its own Hydra instance for building Inria software) entitled “Hydra: + continuous integration for demanding people”. +Sat Dec 03 2011 00:00:00 GMTMoving to GitHubhttps://nixos.org/news.html + The NixOS project is (slowly) migrating from Subversion to Git! + The master repositories will be hosted in the NixOS organization on GitHub. For the moment, just a + few subprojects have been migrated, such as Hydra and Charon. Thanks to + Tianyi Cui for donating the NixOS GitHub organization. +Mon Nov 28 2011 00:00:00 GMT + Nix-dev mailing list moved +https://nixos.org/news.html + The nix-dev mailing list has moved. The address is now + nix-dev@lists.science.uu.nl (web + interface). +Fri Oct 14 2011 00:00:00 GMT + FOSDEM talk about NixOS +https://nixos.org/news.html + Fosdem logo + Sander van der + Burg gave a talk about NixOS at the CrossDistro + track of FOSDEM (video, slides). +Sat Mar 05 2011 00:00:00 GMT + ISSRE paper on NixOS-based system testing +https://nixos.org/news.html + The paper “Automating System + Tests Using Declarative Virtual Machines” (by Sander van der + Burg and Eelco Dolstra) has been accepted for presentation at + the 21st IEEE International + Symposium on Software Reliability Engineering (ISSRE 2010). + It describes how system tests with complex requirements on the + environment (such as remote machines, network topologies, system + services or root privileges) can be written succinctly using declarative + specifications of the machines needed by the test + environment. From these specifications we can automatically + instantiate (networks of) virtual machines. This is what we use + for automated + regression testing of NixOS itself. A draft + of the paper is available. +Sat Sep 18 2010 00:00:00 GMT + Xfce in NixOS +https://nixos.org/news.html + Xfce screenshot + NixOS now supports Xfce, a + modern, light-weight desktop environment. It can be enabled by + setting the NixOS configuration value + services.xserver.desktopManager.xfce.enable to + true. (Screenshot) +Sat Sep 18 2010 00:00:00 GMT + Nix 0.16 released +https://nixos.org/news.html + Nix + 0.16 has been released, featuring a much faster evaluator + and support for configurable parallelism inside builders. See + the release + notes for details. For installation information, see the manual. +Fri Sep 17 2010 00:00:00 GMT + NixOS talk at LSM +https://nixos.org/news.html + Ludovic Courtès gave a talk about Nix and NixOS at the Libre Software Meeting + in Bordeaux, entitled “NixOS: + The Only Functional GNU/Linux Distribution” (slides). +Mon Aug 09 2010 00:00:00 GMT + Nix 0.15 released +https://nixos.org/news.html + Nix + 0.15 has been released. This is a bug fix release. See the + release + notes for details. For installation information, see the manual. +Sat Apr 17 2010 00:00:00 GMT + Nix 0.14 released +https://nixos.org/news.html + Nix + 0.14 has been released. This is primarily a bug fix + release. See the release + notes for details. For installation information, see the manual. +Thu Mar 04 2010 00:00:00 GMT + Nix logo +https://nixos.org/news.html + + Nix       logo Long overdue, the Nix project finally has a logo! + The logo was originally created by Simon Frankau for the Haskell + logo competition, who kindly gave us permission to use it + for the Nix project. (The snowflake motif is even more + appropriate for Nix, because nix is Latin for + snow.) Any further modifications are entirely our + fault. +Fri Dec 25 2009 00:00:00 GMT + Nix 0.13 released +https://nixos.org/news.html + Nix + 0.13 has been released. This is mostly a bug fix release, + although it also adds some new language features. See the release + notes for details. For installation information, see the manual. +Sat Dec 05 2009 00:00:00 GMT + LWN.net article on NixOS +https://nixos.org/news.html + LWN.net has an article about NixOS + written by Koen Vervloesem. +Sun Jul 26 2009 00:00:00 GMT + Nixpkgs 0.12 released +https://nixos.org/news.html + Nixpkgs + 0.12 has been released. See the release + notes for details. Meanwhile, the Nixpkgs trunk has been + updated + to GCC 4.3.3, Glibc 2.9 and X.org 7.4. +Sun May 24 2009 00:00:00 GMT + OpenOffice.org 3 in Nixpkgs +https://nixos.org/news.html + OpenOffice.org 3.0.1 screenshot + + Lluís Batlle has updated OpenOffice.org in Nixpkgs to 3.0.1 + (screenshot). +Thu May 21 2009 00:00:00 GMT + KDE 4.2 in Nixpkgs/NixOS +https://nixos.org/news.html + KDE 4.2 screenshot + + We now have a fairly complete set of KDE 4.2 packages in Nixpkgs + and NixOS. Previously we had KDE 3.5, but it was rather + incomplete: just kdelibs and kdebase. + Now we have all that desktop + goodness, such as kdemultimedia, + kdenetwork and kdegames. You can + enable KDE 4 in NixOS by setting the + services.xserver.sessionType option to + kde4. Thanks go to Yury G. Kudryashov, Andrew + Morsillo and Sander van der Burg for doing the hard work on + adding KDE 4 to Nixpkgs. (Screenshot 1, + screenshot + 2.) +Thu May 07 2009 00:00:00 GMT + Hydra +https://nixos.org/news.html + + Hydra       logo + + Nix + and NixOS + releases are now built in Hydra, the new Nix-based + continuous build system. Hydra replaces our old Nix-based + build farm, which will be phased out soon. There are + several advantages over the old build farm: the build tasks for + a project are scheduled and published separately, so that for + instance a (fast) tarball build doesn’t have to wait for a + (slow) Cygwin build; build results are stored in a database, + which will enable all sorts of interesting queries; better error + reporting; a better web interface; and much more. We have + written a draft + paper about Hydra. There are some instructions + available about how to set up your own Hydra server. +Thu Feb 05 2009 00:00:00 GMT + Linux.com article about Nix +https://nixos.org/news.html + There is an article on Linux.com about Nix: “Nix fixes dependency + hell on all Linux distributions”. +Thu Jan 22 2009 00:00:00 GMT + Nix 0.12 released +https://nixos.org/news.html + Nix + 0.12 has been released. The most important change is that + Nix no longer needs Berkeley DB to store metadata, but there are + many other improvements. See the release + notes for details. +Sun Dec 21 2008 00:00:00 GMT + DisNix paper accepted at HotSWUp +https://nixos.org/news.html +

    + The paper “Atomic Upgrading of Distributed Systems” (by Sander + van der Burg, Eelco Dolstra and Merijn de Jonge) has been + accepted for presentation at the First ACM Workshop on Hot + Topics in Software Upgrades (HotSWUp). A draft + of the paper is available. It describes Sander’s master’s + thesis research on DisNix, an extension to Nix that allows + deployment and upgrading of distributed systems from a single + declarative description. We will continue this research in + the Jacquard PDS + project, which has now started. (We still have an opening + for a PhD student or a postdoc; please contact us if you’re + interested.) +

    +
    Thu Oct 09 2008 00:00:00 GMT
    + NixOS paper accepted at ICFP! +https://nixos.org/news.html +

    + The paper “NixOS: A Purely Functional Linux Distribution” (by + Eelco Dolstra and Andres Löh) has been accepted + for presentation at the 2008 + International Conference on Functional Programming (ICFP). + It describes NixOS in much greater detail than last year’s + HotOS paper, and argues why the purely functional style and + features such as laziness are important for system + configuration management. It also provides some measurements + on the actual purity of Nix build actions. A draft + of the paper is available. +

    +
    Wed Jul 16 2008 00:00:00 GMT
    + Website back up +https://nixos.org/news.html +

    + The Nix website was down for a few days due to cooling + problems in the server room causing the machine to overheat. + These should be resolved now. Apologies for the + inconvenience. +

    +
    Fri Jun 06 2008 00:00:00 GMT
    + Website / SVN repositories moved +https://nixos.org/news.html +

    + The Nix website has moved to nixos.org (hosted at TU Delft). The Subversion + repositories have moved to svn.nixos.org. See + this + mailing list posting for information about moving existing + SVN working copies. +

    +
    Sun May 25 2008 00:00:00 GMT
    + LDTA 2008 paper +https://nixos.org/news.html +

    + Eelco Dolstra presented the paper “Maximal + Laziness — An Efficient Interpretation Technique for Purely + Functional DSLs” at 8th Workshop on Language + Description, Tools and Applications (LDTA 2008). It’s about + caching of evaluation results in the Nix expression evaluator as + a technique to make a simple term-rewriting evaluator efficient. + Slides are here. +

    +
    Mon May 05 2008 00:00:00 GMT
    + Jacquard grant proposal accepted! +https://nixos.org/news.html +

    + + The Jacquard program of + NWO and EZ has granted funding for the Nix-related project “Pull + Deployment of Services” (PDS), which is about improving the + deployment of software and services in complex heterogenous + environments. The grant consists of 368 K€ for a PhD student (4 + years) and a postdoc (3 years). If you’re interested in these + positions, please have a look at this page, + and don’t hesitate to contact Eelco + Visser or Eelco Dolstra. + +

    +
    Fri Mar 14 2008 00:00:00 GMT
    + New NixOS ISOs +https://nixos.org/news.html +

    + + NixOS installer online help + + New NixOS installation CD images for i686 and + x86_64 are available, + which is a good thing as the previous ones were already a few + months old. The new images are Nix 0.11-based, contain Memtest86+ as a + convenience, should support more SATA drives, and show online + help (the NixOS + manual) on virtual console 7. + +

    +
    Wed Feb 06 2008 00:00:00 GMT
    + Nix 0.11 released +https://nixos.org/news.html + Nix + 0.11 has been released. This is a major new release + representing over a year of development. The most important + improvement is secure multi-user support. It also features many + usability enhancements and language extensions, many of them + prompted by NixOS, the purely functional Linux distribution + based on Nix. See the release + notes for details. +Thu Jan 31 2008 00:00:00 GMT + Nixpkgs 0.11 released +https://nixos.org/news.html + Nixpkgs + 0.11 has been released. See the release + notes for details. +Fri Oct 12 2007 00:00:00 GMT + OpenOffice in Nixpkgs +https://nixos.org/news.html +

    + + OpenOffice screenshot + + OpenOffice is now in + Nixpkgs (screenshot of + OpenOffice 2.2.1 running under NixOS, and another + screenshot). Despite being a rather gigantic package (it + takes two hours to compile on an Intel Core 2 6700), OpenOffice + had only two “impurities” (references to paths outside of the + Nix store) in its build + process that had to be resolved — a reference to + /bin/bash and one to /usr/lib/libjpeg.so.

    + +

    Armijn Hemel, Wouter den + Breejen and Eelco Dolstra contributed to the Nix expression for + OpenOffice.

    +
    Wed Oct 10 2007 00:00:00 GMT
    + NixOS progress report +https://nixos.org/news.html +

    + + NixOS screenshot + + Wine now runs on NixOS! + Finally we can run all those legacy + applications... Thanks to Michael Raskin for adding Wine + and a NPTL-enabled Glibc (which Wine seems to need). This is a + nice application of purely functional package composition, by + the way: Wine didn’t work with the standard Glibc in Nixpkgs, so + we just pass + it another Glibc at build time.

    + +

    In other news, Nix 0.11 + and Nixpkgs 0.11 will be released soon.

    +
    Sat Sep 22 2007 00:00:00 GMT
    + Commits mailing list +https://nixos.org/news.html +

    + There is now a mailing + list (nix-commits@cs.uu.nl) that you can + subscribe to if you want to receive automatic commit + notifications from the Nix Subversion repository. +

    +
    Fri Sep 14 2007 00:00:00 GMT
    + HotOS paper on NixOS +https://nixos.org/news.html +

    + Eelco Dolstra presented the paper Purely Functional System + Configuration Management at the 11th Workshop on + Hot Topics in Operating Systems (HotOS XI). It gives an + overview of the ideas behind NixOS. The + slides + are also available. +

    +
    Fri Jun 08 2007 00:00:00 GMT
    + NixOS progress report +https://nixos.org/news.html + +

    + + KDE logo + + We now have KDE running on + NixOS (obligatory + screenshot). Just kdebase for now (Martin + Bravenboer already added kdelibs a long time ago so + that we could run the wonderful KCachegrind), + but it contains all the important stuff (Konqueror, KDesktop, + Kicker, Konsole, Control Center, etc.).

    + +

    In related news, we can + safely say that, rumours to the contrary notwithstanding, NixOS + is not an April + Fools’ Joke.

    + +
    Wed May 02 2007 00:00:00 GMT
    + NixOS progress report +https://nixos.org/news.html + NixOS screenshot + + NixOS is now almost usable as a desktop OS ;-). We + have an X server, a bunch of Gnome packages, basic wireless + support, and of course all the applications in Nixpkgs that we + had all along running on other Linux distributions. Here are a + few screenshots: + +Thu Apr 05 2007 00:00:00 GMT + NixOS manual +https://nixos.org/news.html + There is now some basic + documentation for NixOS. +Mon Mar 19 2007 00:00:00 GMT + NixOS for x86_64 +https://nixos.org/news.html + NixOS now works on x86_64 machines. A 64-bit ISO is available. +Fri Feb 23 2007 00:00:00 GMT + New build farm hardware at TUD +https://nixos.org/news.html +

    New build farmTo quote Eelco Visser: new + hardware for buildfarm at Delft University of Technology has + arrived.

    + +

    Here’s what we have: 5 Intel Core 2 Duo DualCore machines + with 1GB RAM, 2 Mac minis with 1,83-GHz Intel Core + Duo-processor, another Core 2 Duo a UPS to deal with spikes in + power supply, a console with integrated monitor and keyboard + switches, a rack with room for a couple more machines.

    + +

    Here’s what we’re going to do with the goodies. The five + Intel machines and the two MacMinis (also Intel) are going to + be used to crank at building hundreds of software + packages. Using virtualisation we should be able to run builds + on multiple operating system distributions. Read + more…

    +
    Fri Feb 23 2007 00:00:00 GMT
    + Nixpkgs 0.10 released +https://nixos.org/news.html + Nixpkgs + 0.10 has been released. See the release + notes for details. +Sun Nov 12 2006 00:00:00 GMT + Nix 0.10.1 released +https://nixos.org/news.html + Nix + 0.10.1 has been released. It fixes two obscure bugs that + shouldn’t affect most users. +Sat Nov 11 2006 00:00:00 GMT + Nix 0.10 released +https://nixos.org/news.html + Nix + 0.10 has been released. This release has many + improvements and bug fixes; see the release + notes for details. +Mon Nov 06 2006 00:00:00 GMT + Nixpkgs 0.9 released +https://nixos.org/news.html + Nixpkgs + 0.9 has been released. +Fri Mar 03 2006 00:00:00 GMT + PhD thesis defended +https://nixos.org/news.html + Eelco Dolstra + defended his PhD + thesis on the purely functional deployment model. +Sat Feb 18 2006 00:00:00 GMT + Nix 0.9.2 released +https://nixos.org/news.html + Nix + 0.9.2 has been released released. This is a bug fix + release that addresses some problems on Mac OS X. +Fri Oct 21 2005 00:00:00 GMT + Nix 0.9 released +https://nixos.org/news.html + Nix 0.9 + has been released. This is a new major release that provides + quite a few performance improvements and bug fixes, as well as a + number of new features. Read the release + notes for details. +Sun Oct 16 2005 00:00:00 GMT + Secure sharing paper accepted for ASE 2005 +https://nixos.org/news.html + The paper “Secure Sharing Between Untrusted Users in a + Transparent Source/Binary Deployment Model” has been accepted at + ASE 2005. This + paper describes how a Nix store can be securely shared by + multiple users who may not trust each other; i.e., how do we + prevent one user from installing a Trojan horse that is + subsequently executed by some other user? +Sun Aug 28 2005 00:00:00 GMT + Service deployment paper accepted for SCM-12 +https://nixos.org/news.html + The paper “Service Configuration Management” (accepted at the + 12th + International Workshop on Software Configuration + Management) describes how we can rather easily deploy + “services” (e.g., complete webserver configurations such as our + Subversion server) through + Nix by treating the non-component parts (such as configuration + files, control scripts and static data) as components that are + built by Nix expressions. The result is that all advantages + that Nix offers to software deployment also extend to service + deployment, such as the ability to easily have multiple + configuration side by side, to roll back configurations, and to + identify the precise dependencies of a configuration. +Mon Aug 22 2005 00:00:00 GMT + Patching paper accepted for CBSE 2005 +https://nixos.org/news.html + The paper “Efficient Upgrading in a Purely Functional Component + Deployment Model” has been accepted at CBSE 2005. + It describes how we can deploy updates to Nix packages + efficiently, even if “fundamental” packages like Glibc are + updated (which cause a rebuild of all dependent packages), by + deploying binary patches between components in the Nix store. + Includes techniques such as patch chaining and computing deltas + between archive files. +Thu Mar 17 2005 00:00:00 GMT + Paper “Imposing a Memory Management Discipline on Software + Deployment” accepted for presentation at ICSE 2004! +https://nixos.org/news.html + The first Nix paper. +Fri Jan 16 2004 00:00:00 GMT
    diff --git a/app/src/androidTest/resources/com/nononsenseapps/feeder/ui/cowboy_feed.json b/app/src/androidTest/resources/com/nononsenseapps/feeder/ui/cowboy_feed.json new file mode 100644 index 0000000..2e3ccf6 --- /dev/null +++ b/app/src/androidTest/resources/com/nononsenseapps/feeder/ui/cowboy_feed.json @@ -0,0 +1,104 @@ +{ + "version": "https://jsonfeed.org/version/1", + "title": "Cowboy Programmer", + "home_page_url": "https://cowboyprogrammer.org/", + "feed_url": "https://cowboyprogrammer.org/feed.json", + "author": { + "name": "Space Cowboy", + "avatar": "https://cowboyprogrammer.org/css/images/avatar.png" + }, + "icon": "https://cowboyprogrammer.org/css/images/logo.png", + + "items": [ + + { + "id": "https://cowboyprogrammer.org/2018/03/fixed-vs-variable-interest-rates/", + "url": "https://cowboyprogrammer.org/2018/03/fixed-vs-variable-interest-rates/", + "title": "A comparison between fixed and variable interest rates", + "content_html": "\u003cp\u003eThe data I am using is originally from \u003ca href=\"http://hypotek.swedbank.se/rantor/historiska-rantor/\"\u003eSwedBank\u003c/a\u003e and all data and\ncode is available at \u003ca href=\"https://gitlab.com/spacecowboy/swedish-interest-rates\"\u003eGitLab\u003c/a\u003e. \u003ca href=\"https://gitlab.com/spacecowboy/swedish-interest-rates/raw/master/swedish_interest_rates.csv\"\u003eThe data\u003c/a\u003e contains interest\nrates at 5 years fixed term, 2 years fixed term, and 3 months fixed\nterm (also called variable rate in Sweden) for those dates when any\nrate was changed. The first rates are from 1989-11-01 and the last are\nfrom 2018-02-12. Example of the data:\u003c/p\u003e\n\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n \u003cthead\u003e\n \u003ctr style=\"text-align: right;\"\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003e5y\u003c/th\u003e\n \u003cth\u003e2y\u003c/th\u003e\n \u003cth\u003e3m\u003c/th\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003eDate\u003c/th\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003c/tr\u003e\n \u003c/thead\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003cth\u003e1989-11-22\u003c/th\u003e\n \u003ctd\u003e13.50\u003c/td\u003e\n \u003ctd\u003e13.50\u003c/td\u003e\n \u003ctd\u003e12.75\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1991-01-14\u003c/th\u003e\n \u003ctd\u003e14.00\u003c/td\u003e\n \u003ctd\u003e14.75\u003c/td\u003e\n \u003ctd\u003e15.25\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1993-01-13\u003c/th\u003e\n \u003ctd\u003e12.75\u003c/td\u003e\n \u003ctd\u003e13.00\u003c/td\u003e\n \u003ctd\u003e13.75\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1994-11-21\u003c/th\u003e\n \u003ctd\u003e11.75\u003c/td\u003e\n \u003ctd\u003e11.50\u003c/td\u003e\n \u003ctd\u003e9.75\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1996-03-12\u003c/th\u003e\n \u003ctd\u003e9.85\u003c/td\u003e\n \u003ctd\u003e8.95\u003c/td\u003e\n \u003ctd\u003e9.10\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2005-09-09\u003c/th\u003e\n \u003ctd\u003e3.55\u003c/td\u003e\n \u003ctd\u003e2.97\u003c/td\u003e\n \u003ctd\u003e3.15\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2005-10-03\u003c/th\u003e\n \u003ctd\u003e3.69\u003c/td\u003e\n \u003ctd\u003e3.09\u003c/td\u003e\n \u003ctd\u003e3.15\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2007-12-21\u003c/th\u003e\n \u003ctd\u003e5.36\u003c/td\u003e\n \u003ctd\u003e5.25\u003c/td\u003e\n \u003ctd\u003e5.15\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2008-01-24\u003c/th\u003e\n \u003ctd\u003e5.13\u003c/td\u003e\n \u003ctd\u003e4.94\u003c/td\u003e\n \u003ctd\u003e5.15\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2009-03-20\u003c/th\u003e\n \u003ctd\u003e4.26\u003c/td\u003e\n \u003ctd\u003e2.83\u003c/td\u003e\n \u003ctd\u003e2.20\u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003cp\u003eTo make the calculations more convenient I assume that loans are only\nfixed the first day of the month. Example:\u003c/p\u003e\n\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n \u003cthead\u003e\n \u003ctr style=\"text-align: right;\"\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003e5y\u003c/th\u003e\n \u003cth\u003e2y\u003c/th\u003e\n \u003cth\u003e3m\u003c/th\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003eDate\u003c/th\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003cth\u003e\u003c/th\u003e\n \u003c/tr\u003e\n \u003c/thead\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003cth\u003e1990-06-01\u003c/th\u003e\n \u003ctd\u003e14.50\u003c/td\u003e\n \u003ctd\u003e14.50\u003c/td\u003e\n \u003ctd\u003e13.95\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1992-03-01\u003c/th\u003e\n \u003ctd\u003e12.50\u003c/td\u003e\n \u003ctd\u003e13.00\u003c/td\u003e\n \u003ctd\u003e14.75\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1993-06-01\u003c/th\u003e\n \u003ctd\u003e10.75\u003c/td\u003e\n \u003ctd\u003e10.50\u003c/td\u003e\n \u003ctd\u003e11.50\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e1998-02-01\u003c/th\u003e\n \u003ctd\u003e6.70\u003c/td\u003e\n \u003ctd\u003e6.40\u003c/td\u003e\n \u003ctd\u003e5.80\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2001-09-01\u003c/th\u003e\n \u003ctd\u003e6.55\u003c/td\u003e\n \u003ctd\u003e5.95\u003c/td\u003e\n \u003ctd\u003e5.90\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2004-11-01\u003c/th\u003e\n \u003ctd\u003e4.85\u003c/td\u003e\n \u003ctd\u003e3.90\u003c/td\u003e\n \u003ctd\u003e3.65\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2009-05-01\u003c/th\u003e\n \u003ctd\u003e4.15\u003c/td\u003e\n \u003ctd\u003e2.73\u003c/td\u003e\n \u003ctd\u003e1.97\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2010-08-01\u003c/th\u003e\n \u003ctd\u003e3.99\u003c/td\u003e\n \u003ctd\u003e2.90\u003c/td\u003e\n \u003ctd\u003e2.17\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2011-05-01\u003c/th\u003e\n \u003ctd\u003e5.29\u003c/td\u003e\n \u003ctd\u003e4.39\u003c/td\u003e\n \u003ctd\u003e3.88\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003cth\u003e2011-11-01\u003c/th\u003e\n \u003ctd\u003e4.59\u003c/td\u003e\n \u003ctd\u003e4.14\u003c/td\u003e\n \u003ctd\u003e4.35\u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003cp\u003eIf we graph the interest rates we get:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2018/03/rates.en.png\" alt=\"Interest rates over time\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eYou can see a clear peak in the variable rate when the riksbank set\nthe repo rate at 500% (mortgages \u0026ldquo;only\u0026rdquo; reached 24%). You can also see\nthat during the early nineties the variable rate was higher than the\nfixed rates during relatively long periods. But to compare the actual\ncost over the fixed term we have to compare average rates.\u003c/p\u003e\n\n\u003cp\u003eFor example, let us compare the actual average rates from the first of\nJuly 1991 during 5 years for variable rate (11.96%) and 5 years fixed\nterm (12.25%). Even though with variable rate you\u0026rsquo;d have had a rate of\n24% during a quarter you\u0026rsquo;d still pay less in total over the 5 years.\u003c/p\u003e\n\n\u003cp\u003eIf the same calculation is made for every month you can see how much\nyou would have earned/lost depending on when you started your fixed\nterm. Since 5 years is not evenly divisible by 2 years, the 2 years\nfixed term refers to what the average rate would have been during the\nfirst 5 of the 6 years.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2018/03/5y_avg_rates.en.png\" alt=\"Average interest rate over 5 years\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eIt\u0026rsquo;s quite clear that variable rate has nearly always been the most\nprofitable alternative. At three seperate occasions it would have been\nmore profitable to pick a 5 year fixed term: at the of 1989, the\nbeginning of 1997, and in the middle of 2005. I won\u0026rsquo;t comment on the 2\nyears fixed term since it\u0026rsquo;s not a fair comparison to only look at 5 out of\n6 years.\u003c/p\u003e\n\n\u003cp\u003eIf we compare 2 years fixed term with variable rate:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2018/03/2y_avg_rates.en.png\" alt=\"Average interest rate over 2 years\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eAlso here the most profitable choice is generally the variable rate\nhowever during times of rising interest rates getting a fixed 2 year\nterm has been the better choice on several occasions. An important\ndifference to the 5 years term is that you\u0026rsquo;re not locked in for long\nwhen the rates finally go down again (and you\u0026rsquo;re able to switch to\nvariable rate).\u003c/p\u003e\n\n\u003cp\u003eIf we compare all terms during 10 years:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2018/03/10y_avg_rates.en.png\" alt=\"Average interest rate over 10 years\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eHere it is clear that the variable rate is the most profitable.\u003c/p\u003e\n\n\u003cp\u003eEven though it has been possible at certain occasions (29 years and\nonly 3 short occasions!) to get a fixed term for 5 years and pay less\noverall than with variable rate, I think it\u0026rsquo;s far too improbable that\none is able to do it at the right time. You\u0026rsquo;re almost guaranteed to be\npaying more in the end.\u003c/p\u003e\n\n\u003cp\u003eGetting a fixed term for 2 years is more probable to be profitable,\nbut even here it is more probable not to be.\u003c/p\u003e\n", + "date_published": "2018-03-05T23:00:00+02:00", + "image": "https://cowboyprogrammer.org/images/2018/03/5y_avg_rates.en.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/10/reduce-colors-in-images/", + "url": "https://cowboyprogrammer.org/2016/10/reduce-colors-in-images/", + "title": "Reduce the size of images even further by reducing number of colors with Gimp", + "content_html": "\n\n\u003cp\u003eIn Gimp you go to \u003cem\u003eImage\u003c/em\u003e in the top menu bar and select \u003cem\u003eMode\u003c/em\u003e\nfollowed by \u003cem\u003eIndexed\u003c/em\u003e. Now you see a popup where you can select the\nnumber of colors for a generated optimum palette.\u003c/p\u003e\n\n\u003cp\u003eYou\u0026rsquo;ll have to experiment a little because it will depend on your\nimage.\u003c/p\u003e\n\n\u003cp\u003eI used this approach to shrink the size of the cover image in\n\u003ca href=\"/2016/08/zopfli_all_the_things/\"\u003ethe_zopfli post\u003c/a\u003e from a 37KB (JPG) to just 15KB\n(PNG, all PNG sizes listed include Zopfli compression btw).\u003c/p\u003e\n\n\u003ch2 id=\"straight-jpg-to-png-conversion-124kb\"\u003eStraight JPG to PNG conversion: 124KB\u003c/h2\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things.png\" alt=\"PNG version RGB colors\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eFirst off, I exported the JPG file as a PNG file. This PNG file had a\nwhopping 124KB! Clearly there was some bloat being stored.\u003c/p\u003e\n\n\u003ch2 id=\"256-colors-40kb\"\u003e256 colors: 40KB\u003c/h2\u003e\n\n\u003cp\u003eReducing from RGB to only 256 colors has no visible effect to my eyes.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_256.png\" alt=\"256 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"128-colors-34kb\"\u003e128 colors: 34KB\u003c/h2\u003e\n\n\u003cp\u003eStill no difference.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_128.png\" alt=\"128 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"64-colors-25kb\"\u003e64 colors: 25KB\u003c/h2\u003e\n\n\u003cp\u003eYou can start to see some artifacting in the shadow behind the text.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_64.png\" alt=\"64 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"32-colors-15kb\"\u003e32 colors: 15KB\u003c/h2\u003e\n\n\u003cp\u003eIn my opinion this is the sweet spot. The shadow artifacting is barely\nnoticable but the size is significantly reduced.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_32.png\" alt=\"32 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"16-colors-11kb\"\u003e16 colors: 11KB\u003c/h2\u003e\n\n\u003cp\u003eClear artifacting in the text shadow and the yellow (fire?) in the\nbackground has developed an outline.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_16.png\" alt=\"16 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"8-colors-7-3kb\"\u003e8 colors: 7.3KB\u003c/h2\u003e\n\n\u003cp\u003eThe broom has shifted in color from a clear brown to almost grey. Text\nshadow is just a grey blob at this point. Even clearer outline\ndeveloped on the yellow background.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_8.png\" alt=\"8 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"4-colors-4-3kb\"\u003e4 colors: 4.3KB\u003c/h2\u003e\n\n\u003cp\u003eInterestingly enough, I think 4 colors looks better than 8 colors. The outline in the background has disappeared because there\u0026rsquo;s not enough color spectrum to render it. The broom is now black and filled areas tend to get a white separator to the outlines.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_4.png\" alt=\"4 colors\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"2-colors-2-4kb\"\u003e2 colors: 2.4KB\u003c/h2\u003e\n\n\u003cp\u003eWell, at least the silhouette is well defined at this point I guess.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2017/10/zopfli_all_the_things_2.png\" alt=\"2 colors\" /\u003e\u003c/p\u003e\n", + "date_published": "2016-10-21T00:27:00+02:00", + "image": "https://cowboyprogrammer.org/images/2017/10/gimp_image_mode_index.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/10/dont-start-service-on-install-of-debian-package/", + "url": "https://cowboyprogrammer.org/2016/10/dont-start-service-on-install-of-debian-package/", + "title": "Don't start service on installation of Debian package", + "content_html": "\u003cp\u003eA clear difference between Debian/Ubuntu and for example Red\nHat/Fedora is that packages which include system services will enable\nand start those services at install time in Debian/Ubuntu whereas they\nwill not start automatically in Red Hat/Fedora.\u003c/p\u003e\n\n\u003cp\u003eSometimes it would be very convenient if the service would \u003cem\u003enot\u003c/em\u003e start\nautomatically, for example if you need to configure the service before\nstarting it for the first time.\u003c/p\u003e\n\n\u003cp\u003eTo prevent the automatic start of system services at install time in\nDebian, just set the \u003ccode\u003eRUNLEVEL\u003c/code\u003e environment variable like so:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003eRUNLEVEL=1 apt install -y PKG_NAME\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eThen you are free to configure your system before you start the\nservice for real:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esystemctl enable PKG_NAME\nsystemctl start PKG_NAME\n\u003c/code\u003e\u003c/pre\u003e\n", + "date_published": "2016-10-19T00:00:00+02:00", + "image": "https://cowboyprogrammer.org/images/Ardebian_logo_512_0.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/09/reboot_machine_on_wrong_password/", + "url": "https://cowboyprogrammer.org/2016/09/reboot_machine_on_wrong_password/", + "title": "Rebooting on wrong password", + "content_html": "\n\n\u003cp\u003eHaving an encrypted hard drive is all well and good, but chances are\nthat if someone is gonna steal your laptop, it\u0026rsquo;s probably not going to\nbe turned off. Most likely, it will be stolen in a powered-on\nstate. And so your encrypted hard drive doesn\u0026rsquo;t increase your security\nat all since it\u0026rsquo;s currently unlocked.\u003c/p\u003e\n\n\u003cp\u003eIn my mind, it\u0026rsquo;s a slight improvement if the computer somehow can\nshutdown if someone is trying to gain access to it. That way, the hard\ndrive is no longer accessible and the number of possible attack\nvectors go down drastically. And so, if you type the wrong password 3\ntimes on my laptop, it shuts down.\u003c/p\u003e\n\n\u003cp\u003eThis is accomplished by using \u003ccode\u003ePAM\u003c/code\u003e, and its ability to invoke an\narbitrary script as part of the login flow via \u003ccode\u003epam_exec.so\u003c/code\u003e. The\nscript itself looks like this:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003e\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#!/bin/bash\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Do not add -eu, you need to allow empty variables here!\u003c/span\u003e\n\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# To be used with PAM. Look in /etc/pam.d for the script that your\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# screensaver etc uses. Typically it references common-account and common-auth.\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# In common-auth, add this as the first line\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#auth optional pam_exec.so debug /path/to/wrongpassword.sh\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# In common-account, add this as the first line\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#account required pam_exec.so debug /path/to/wrongpassword.sh\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#\u003c/span\u003e\n\n\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;/var/log/failed_login_count\u0026quot;\u003c/span\u003e\n\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Make sure file exists\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e[\u003c/span\u003e ! -f \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e]\u003c/span\u003e;\u003cspan style=\"color: #007020; font-weight: bold\"\u003ethen\u003c/span\u003e\n touch \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n chmod \u003cspan style=\"color: #40a070\"\u003e777\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003efi\u003c/span\u003e\n\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Read value in it\u003c/span\u003e\n\u003cspan style=\"color: #bb60d5\"\u003eCOUNT\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003ecat \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Increment it\u003c/span\u003e\n\u003cspan style=\"color: #bb60d5\"\u003eCOUNT\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e$((\u003c/span\u003eCOUNT+1\u003cspan style=\"color: #007020; font-weight: bold\"\u003e))\u003c/span\u003e\n\u003cspan style=\"color: #007020\"\u003eecho\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNT\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e \u0026gt; \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# if authentication\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e[\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003ePAM_TYPE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e==\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;auth\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e]\u003c/span\u003e; \u003cspan style=\"color: #007020; font-weight: bold\"\u003ethen\u003c/span\u003e\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# The count will be at 4 after 3 wrong tries\u003c/span\u003e\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e[\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNT\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e -ge \u003cspan style=\"color: #40a070\"\u003e4\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e]\u003c/span\u003e; \u003cspan style=\"color: #007020; font-weight: bold\"\u003ethen\u003c/span\u003e\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Shutdown in 1 min\u003c/span\u003e\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#/usr/bin/shutdown --no-wall -h +1\u003c/span\u003e\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# This is a hack because the line above gives a segfault in logind\u003c/span\u003e\n \u003cspan style=\"color: #007020\"\u003eecho\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;0\u0026quot;\u003c/span\u003e \u0026gt; \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n systemctl poweroff\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003efi\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# If authentication succeeded, and we are now in account phase\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eelif\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e[\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003ePAM_TYPE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e==\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;account\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e]\u003c/span\u003e; \u003cspan style=\"color: #007020; font-weight: bold\"\u003ethen\u003c/span\u003e\n \u003cspan style=\"color: #007020\"\u003eecho\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;0\u0026quot;\u003c/span\u003e \u0026gt; \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e${\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003eCOUNTFILE\u003c/span\u003e\u003cspan style=\"color: #70a0d0; font-style: italic\"\u003e}\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Cancel shutdown which was just issued\u003c/span\u003e\n shutdown -c\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003efi\u003c/span\u003e\n\n\u003cspan style=\"color: #007020\"\u003eexit\u003c/span\u003e \u003cspan style=\"color: #40a070\"\u003e0\u003c/span\u003e\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eOn my Debian system, PAM ends up looking at \u003ccode\u003e/etc/pam.d/common-auth\u003c/code\u003e\nand \u003ccode\u003e/etc/pam.d/common-account\u003c/code\u003e. These are invoked in different parts\nof the authentication flow. In \u003ccode\u003ecommon-auth\u003c/code\u003e, add this as the first\nline:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003eauth optional pam_exec.so debug /path/to/wrongpassword.sh\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eAnd then in \u003ccode\u003ecommon-account\u003c/code\u003e, add this as the first line:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003eaccount required pam_exec.so debug /path/to/wrongpassword.sh\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eYou can try it immediately if it works. Lock your screen, and type the\nwrong password 4 times. If it works, your computer should shut down.\u003c/p\u003e\n\n\u003ch2 id=\"warning-do-not-enable-on-servers\"\u003eWARNING: DO NOT ENABLE ON SERVERS\u003c/h2\u003e\n\n\u003cp\u003eThis is \u003cstrong\u003eNOT\u003c/strong\u003e something you want to do on any machine. Most notably,\nit\u0026rsquo;s probably a huge mistake to copy this verbatim on a machine which\naccepts remote connections. In that case, you essentially enable\nanyone to DOS you by entering the wrong password via SSH or\nsimilarly. So don\u0026rsquo;t do this if you allow remote connections to your\nmachine (which shouldn\u0026rsquo;t be a thing on a laptop).\u003c/p\u003e\n", + "date_published": "2016-09-28T22:57:21+02:00" + } + + , { + "id": "https://cowboyprogrammer.org/2016/08/zopfli_all_the_things/", + "url": "https://cowboyprogrammer.org/2016/08/zopfli_all_the_things/", + "title": "Compress all the images!", + "content_html": "\n\n\u003cp\u003e\u003cem\u003eUpdate 2016-11-22: Made the Makefile compatible with BSD sed (MacOS)\u003c/em\u003e\u003c/p\u003e\n\n\u003cp\u003eOne advantage that static sites, such as those built by \u003ca href=\"https://gohugo.io\"\u003eHugo\u003c/a\u003e,\nprovide is fast loading times. Because there is no processing to be\ndone, no server side rendering, no database lookups, loading times are\njust as fast as you can serve the files that make up the page. This\nmeans that bandwidth becomes the primary bottleneck, which\nincidentally is\n\u003ca href=\"https://webmasters.googleblog.com/2010/04/using-site-speed-in-web-search-ranking.html\"\u003eone of the factors used by Google to calculate your search ranking\u003c/a\u003e. See\nalso\n\u003ca href=\"https://developers.google.com/speed/pagespeed/insights\"\u003ePagespeed Insights\u003c/a\u003e.\u003c/p\u003e\n\n\u003ch2 id=\"compressing-images\"\u003eCompressing images\u003c/h2\u003e\n\n\u003cp\u003eBecause the largest pieces of a page typically consist of images, it\nstands to reason that if we can make the images smaller, we can make\nthe page load faster. Luckily there exists methods that can compress\nimages \u003cem\u003elosslessly\u003c/em\u003e. That means that the quality stays exactly the\nsame, the page only loads faster. That seemed like a no-brainer to me\nso I compressed all the images on the site using \u003ca href=\"http://advsys.net/ken/utils.htm\"\u003ePNGout\u003c/a\u003e as\n\u003ca href=\"https://blog.codinghorror.com/getting-the-most-out-of-png/\"\u003eadvised by Jeff Atwood\u003c/a\u003e. I mean, who doesn\u0026rsquo;t\nlike free bandwidth?\u003c/p\u003e\n\n\u003cp\u003eA new algorithm called \u003ca href=\"https://github.com/google/zopfli\"\u003eZopfli\u003c/a\u003e (open sourced by Google,\n\u003ca href=\"https://blog.codinghorror.com/zopfli-optimization-literally-free-bandwidth/\"\u003ealso mentioned by Jeff\u003c/a\u003e) claims even better\nresults than PNGout though. Results on this site\u0026rsquo;s images confirm\nthose claims. Running the tool on images \u003cem\u003ealready compressed by\nPNGout\u003c/em\u003e gives output such as this:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003e./zopflipng --prefix=\u0026quot;zopfli_\u0026quot; static/images/2014/Dec/Screenshot-from-2014-12-29-13-28-29.png\nOptimizing static/images/2014/Dec/Screenshot-from-2014-12-29-13-28-29.png\nInput size: 89420 (87K)\nResult size: 90361 (88K). Percentage of original: 101.052%\nPreserving original PNG since it was smaller\n\n./zopflipng --prefix=\u0026quot;zopfli_\u0026quot; static/images/2014/Jun/Jenkins_install_git.png\nOptimizing static/images/2014/Jun/Jenkins_install_git.png\nInput size: 189406 (184K)\nResult size: 166362 (162K). Percentage of original: 87.834%\nResult is smaller\n\n./zopflipng --prefix=\u0026quot;zopfli_\u0026quot; static/images/2014/Jun/jenkins_batch.png\nOptimizing static/images/2014/Jun/jenkins_batch.png\nInput size: 21933 (21K)\nResult size: 16255 (15K). Percentage of original: 74.112%\nResult is smaller\n\n./zopflipng --prefix=\u0026quot;zopfli_\u0026quot; static/images/2014/Jun/jenkins_build_step.png\nOptimizing static/images/2014/Jun/jenkins_build_step.png\nInput size: 8184 (7K)\nResult size: 6809 (6K). Percentage of original: 83.199%\nResult is smaller\n\n./zopflipng --prefix=\u0026quot;zopfli_\u0026quot; static/images/2014/Jun/jenkins_config_git.png\nOptimizing static/images/2014/Jun/jenkins_config_git.png\nInput size: 57897 (56K)\nResult size: 47164 (46K). Percentage of original: 81.462%\nResult is smaller\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eThe first result in the example output shows a case where Zopfli would\nactually have made the file bigger (because it was already compressed\nby PNGout, remember). This is nothing you have to worry about because\nit\u0026rsquo;s actually smart enough that it simply copies the original file in\nthat case.\u003c/p\u003e\n\n\u003cp\u003eComparing to both before any compression, and PNGout, yielded the\nfollowing results:\u003c/p\u003e\n\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e\u003c/th\u003e\n\u003cth\u003eMean relative size\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\n\u003ctr\u003e\n\u003ctd\u003eBefore\u003c/td\u003e\n\u003ctd\u003e1.00\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003ePNGout\u003c/td\u003e\n\u003ctd\u003e0.84\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003eZopfliPNG\u003c/td\u003e\n\u003ctd\u003e0.77\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003cp\u003e\u003ca href=\"https://en.wikipedia.org/wiki/Box_plot\"\u003eBox plot\u003c/a\u003e of results on all images:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/zopfli_boxplot.png\" alt=\"Compression results\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eSource files: \u003ca href=\"/csv/before.csv\"\u003ebefore.csv\u003c/a\u003e,\n\u003ca href=\"/csv/pngout.csv\"\u003epngout.csv\u003c/a\u003e, \u003ca href=\"/csv/zopfli.csv\"\u003ezopfli.csv\u003c/a\u003e\u003c/p\u003e\n\n\u003cp\u003eAnd this is with the default arguments. It is possible squeeze yet a\ncouple of more bytes out of this if you\u0026rsquo;re willing to wait longer.\u003c/p\u003e\n\n\u003ch2 id=\"automate-it-with-make\"\u003eAutomate it with Make\u003c/h2\u003e\n\n\u003cp\u003eAnother joy of using a simple static site is that it is possible to\ncompose regular tools to do useful things. Tools like\n\u003ca href=\"https://www.gnu.org/software/make/\"\u003eMake\u003c/a\u003e. And we can use Make to build the site, as well as\ncompressing images which have not already been compressed. You could\ndo it manually for each new image that you add of course but be\nhonest, you \u003cem\u003eknow\u003c/em\u003e that you\u0026rsquo;re gonna forget to do it at some point. So\nlet\u0026rsquo;s automate it instead!\u003c/p\u003e\n\n\u003cp\u003eThis is the Makefile that I use to build this site with, note that\n\u003ccode\u003epublic\u003c/code\u003e depends on \u003ccode\u003e$(PNG_SENTINELS)\u003c/code\u003e, so I literally can\u0026rsquo;t forget to\ncompress any new images added:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003e\u003cspan style=\"color: #06287e\"\u003e.PHONY\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e help build server server-with-drafts clean zopfli\n\n\u003cspan style=\"color: #bb60d5\"\u003ePNG_SENTINELS\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:=\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003eshell find . -path ./public -prune -o -name \u003cspan style=\"color: #4070a0\"\u003e\u0026#39;*.png\u0026#39;\u003c/span\u003e -print | sed \u003cspan style=\"color: #4070a0\"\u003e\u0026#39;s|\\(.\\+/\\)\\(.\\+.png\\)|\\1.\\2.zopfli|g\u0026#39;\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e\n\n\u003cspan style=\"color: #06287e\"\u003ehelp\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e## Print this help text\u003c/span\u003e\n\t@grep -E \u003cspan style=\"color: #4070a0\"\u003e\u0026#39;^[a-zA-Z_-]+:.*?## .*$$\u0026#39;\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003eMAKEFILE_LIST\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e | awk \u003cspan style=\"color: #4070a0\"\u003e\u0026#39;BEGIN {FS = \u0026quot;:.*?## \u0026quot;}; {printf \u0026quot;\\033[36m%-30s\\033[0m %s\\n\u0026quot;, $$1, $$2}\u0026#39;\u003c/span\u003e\n\n\u003cspan style=\"color: #06287e\"\u003eserver\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e## Run hugo server\u003c/span\u003e\n\thugo server\n\n\u003cspan style=\"color: #06287e\"\u003eserver-with-drafts\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e## Run hugo server and include drafts\u003c/span\u003e\n\thugo server -D\n\n\u003cspan style=\"color: #06287e\"\u003ebuild\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e public \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e## Build site (will also compress images using zopfli)\u003c/span\u003e\n\n\u003cspan style=\"color: #06287e\"\u003ezopfli\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003ePNG_SENTINELS\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e## Compress new images using zopfli\u003c/span\u003e\n\n\u003cspan style=\"color: #06287e\"\u003eclean\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e## Remove the built directory\u003c/span\u003e\n\t@rm -rf public\n\n\u003cspan style=\"color: #06287e\"\u003epublic\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003ePNG_SENTINELS\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e\n\t@rm -rf public\n\thugo\n\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Zopfli sentinel rule, assumes zopflipng binary is in the same folder\u003c/span\u003e\n\u003cspan style=\"color: #06287e\"\u003e.%.png.zopfli\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e:\u003c/span\u003e %.png\n\t./zopflipng --prefix\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;zopfli_\u0026quot;\u003c/span\u003e $\u0026lt;\n\t@mv \u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003edir $\u0026lt;\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003ezopfli_\u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003enotdir $\u0026lt;\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e $\u0026lt;\n\t@touch \u003cspan style=\"color: #bb60d5\"\u003e$@\u003c/span\u003e\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eFor best performance, run make with parallel jobs (change 4 to your\nnumber CPUs): \u003ccode\u003emake -j4 zopfli\u003c/code\u003e.\u003c/p\u003e\n\n\u003cp\u003eTo know which files have already been compressed without actually\nrunning Zopfli on it again (which takes a while), sentinel files are\ncreated with this pattern: \u003ccode\u003e.\u0026lt;imgfilename\u0026gt;.zopfli\u003c/code\u003e. Thus, the next\ntime around, zopfli is only invoked for files which have \u003cem\u003enot\u003c/em\u003e already\nbeen compressed, making it a one-time operation. And when everything\nhas already been compressed, you\u0026rsquo;ll just get this:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003emake: Nothing to be done for \u0026#39;zopfli\u0026#39;.\n\u003c/pre\u003e\u003c/div\u003e\n", + "date_published": "2016-08-26T13:17:40+02:00", + "image": "https://cowboyprogrammer.org/images/2017/10/zopfli_all_the_things_32.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/07/migrating_from_ghost_to_hugo/", + "url": "https://cowboyprogrammer.org/2016/07/migrating_from_ghost_to_hugo/", + "title": "Migrating from Ghost to Hugo", + "content_html": "\n\n\u003cp\u003eSo I recently migrated this site from \u003ca href=\"https://ghost.org\"\u003eGhost\u003c/a\u003e to \u003ca href=\"https://gohugo.io\"\u003eHugo\u003c/a\u003e\nafter reading a nice article about the Hugo in\n\u003ca href=\"https://www.linuxvoice.com/download-linux-voice-issue-20/\"\u003eLinux Voice #20\u003c/a\u003e (funnily enough, the same issue also\nfeatures an article about Ghost). I originally made the switch to\nGhost from \u003ca href=\"https://jekyllrb.com/\"\u003eJekyll\u003c/a\u003e back in 2014 or so mainly because I could\nnot find a good theme to use. Ghost also seemed to have a lot of cool\nfeatures and it\u0026rsquo;s fun to try new things.\u003c/p\u003e\n\n\u003cp\u003eI think it\u0026rsquo;s safe to say that I am hardly a prolific blogger. I mainly\nwrite about stuff which I personally cannot find on the web which I\nthink should exist, because I will likely need it myself sometime in\nthe future. So it\u0026rsquo;s hardly a surprise that I am not in the target\naudience for Ghost.\u003c/p\u003e\n\n\u003ch2 id=\"things-about-ghost-which-annoy-me\"\u003eThings about Ghost which annoy me\u003c/h2\u003e\n\n\u003cul\u003e\n\u003cli\u003eIt\u0026rsquo;s written in NodeJS \u0026mdash; people who think JS is a good server\nlanguage also tend to think that it\u0026rsquo;s a good idea to depend on just\nabout any package, and download it in every single build. Which\nbecomes really \u003ca href=\"http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/\"\u003efunny sometimes\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePoor selection of \u003ca href=\"http://marketplace.ghost.org/\"\u003ethemes\u003c/a\u003e \u0026mdash; this is subjective of\ncourse, but it seems to me that the free options don\u0026rsquo;t have much in\nterms of diversity. Heck, they even call it a \u003cem\u003emarketplace\u003c/em\u003e which\nrubs me the wrong way.\u003c/li\u003e\n\u003cli\u003eThemes end up being quite reliant on JS if you want necessary\nfeatures like syntax highlighting on code snippets \u0026mdash; I often\nbrowse with JS disabled and should be able to view my own site.\u003c/li\u003e\n\u003cli\u003eMarkdown parser treats newlines as significant \u0026mdash; meaning you can\u0026rsquo;t\nhave properly aligned paragraphs in your editor.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eThat last point irritates me deeply but it\u0026rsquo;s not as bad as the next point.\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003eYou can effectively lock an account by entering the wrong password 3\ntimes.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eThis requires some explanation. So Ghost, targeting teams of bloggers\nreally, naturally have an account system much like Wordpress. Now, as\nI was surveying the security status of other services I am running, I\nwas wondering how Ghost handled someone trying to brute force your\naccount and decided to simply try it out. Type the wrong password once\ntoo many, and this happens:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/ghost_wrong_password.png\" alt=\"Ghost: typing the wrong password too many times locks your account\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eIt doesn\u0026rsquo;t lock it for a single IP address (I tried from several), it\nlocks the entire account. Effectively, someone can just set up a\nscript to try an account indefinitely simply with the intention to\nblock someone from logging in.\u003c/p\u003e\n\n\u003cp\u003eThe log doesn\u0026rsquo;t even show login attempts, so there is no way to\nimplement sensible blocking strategies using something like \u003ca href=\"http://www.fail2ban.org\"\u003efail2ban\u003c/a\u003e.\u003c/p\u003e\n\n\u003cp\u003eThe whole thing left a bad taste my mouth so it was a very suitable timing to read an article on \u003ca href=\"https://gohugo.io\"\u003eHugo\u003c/a\u003e.\u003c/p\u003e\n\n\u003ch2 id=\"things-about-hugo-which-excite-me\"\u003eThings about Hugo which excite me\u003c/h2\u003e\n\n\u003cul\u003e\n\u003cli\u003eMarkdown parser treats newlines correctly\u003c/li\u003e\n\u003cli\u003eIt\u0026rsquo;s a static site generator and not a service \u0026mdash; this meant 100MB\n(10%) of RAM became available on my server and there is no account\nto hack (or block).\u003c/li\u003e\n\u003cli\u003eSupports everything of Ghost (that I am aware of).\u003c/li\u003e\n\u003cli\u003eThe simplicity of Hugo makes it \u003ca href=\"https://npf.io/2014/08/making-it-a-series/\"\u003equite painless\u003c/a\u003e to\ndo useful things compared to\n\u003ca href=\"https://github.com/TryGhost/Ghost/issues/4818\"\u003eignored feature requests\u003c/a\u003e for the same in Ghost.\u003c/li\u003e\n\u003cli\u003eCan do server side syntax highlighting using Pygments.\u003c/li\u003e\n\u003cli\u003eSome really nice \u003ca href=\"http://themes.gohugo.io/\"\u003ethemes\u003c/a\u003e are available, and they are\nall free.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2 id=\"migrating-all-data-from-ghost\"\u003eMigrating all data from Ghost\u003c/h2\u003e\n\n\u003cp\u003eMigrating from Ghost also turned about to be really painless. There\nwere several scripts around for exactly this but they all turned out\nto be written in \u003ca href=\"https://gist.github.com/vjeantet/d1f6cf824a2344dd6b4e\"\u003eodd languages\u003c/a\u003e, and did not actually\nmigrate all the metadata in Ghost. So I wrote my own in Python with\nthese \u003cem\u003ekiller features\u003c/em\u003e:\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003eMigrates tags.\u003c/li\u003e\n\u003cli\u003eMigrates dates.\u003c/li\u003e\n\u003cli\u003eMigrates drafts as drafts.\u003c/li\u003e\n\u003cli\u003eCreates aliases in your posts which makes sure that old permalinks\nwill still work!\u003c/li\u003e\n\u003cli\u003eMigrates cover pictures as banner images, just select a theme which\nsupport them.\u003c/li\u003e\n\u003cli\u003eRewrites all relative links so they all still work (this includes\nimages).\u003c/li\u003e\n\u003cli\u003eCode blocks with language definitions like \u003ccode\u003e```language-java\u003c/code\u003e\nare changed to \u003ccode\u003e```java\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003e\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#!/usr/bin/env python3\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# -*- coding: utf-8 -*-\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003e\u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003eA simple program which migrates an exported Ghost blog to Hugo.\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003eIt assumes your blog is using the hugo-icarus theme, but should\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003ework for any theme. The script will migrate your posts, including\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003etags and banner images. Furthermore, it will make sure that\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003eall your old post urls will keep working by adding aliases to them.\u003c/span\u003e\n\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003eThe only thing you need to do yourself is copying the `images/`\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003edirectory in your ghost directory to `static/images/` in your hugo\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003edirectory. That way, all images will work. The script will rewrite\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003eall urls linking to `/content/images` to just `/images`.\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003e\u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eimport\u003c/span\u003e \u003cspan style=\"color: #0e84b5; font-weight: bold\"\u003eargparse\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eimport\u003c/span\u003e \u003cspan style=\"color: #0e84b5; font-weight: bold\"\u003ejson\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003efrom\u003c/span\u003e \u003cspan style=\"color: #0e84b5; font-weight: bold\"\u003edatetime\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eimport\u003c/span\u003e date\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003efrom\u003c/span\u003e \u003cspan style=\"color: #0e84b5; font-weight: bold\"\u003eos\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eimport\u003c/span\u003e path\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003efrom\u003c/span\u003e \u003cspan style=\"color: #0e84b5; font-weight: bold\"\u003ecollections\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eimport\u003c/span\u003e defaultdict\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eimport\u003c/span\u003e \u003cspan style=\"color: #0e84b5; font-weight: bold\"\u003ere\u003c/span\u003e\n\n_post \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003e+++\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003edate = \u0026quot;{date}\u0026quot;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003edraft = {draft}\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003etitle = \u0026quot;\u0026quot;\u0026quot;{title}\u0026quot;\u0026quot;\u0026quot;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003eslug = \u0026quot;{slug}\u0026quot;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003etags = {tags}\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003ebanner = \u0026quot;{banner}\u0026quot;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003ealiases = {aliases}\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003e+++\u003c/span\u003e\n\n\u003cspan style=\"color: #4070a0\"\u003e{markdown}\u003c/span\u003e\n\u003cspan style=\"color: #4070a0\"\u003e\u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n\n\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003edef\u003c/span\u003e \u003cspan style=\"color: #06287e\"\u003emigrate\u003c/span\u003e(filepath, hugodir):\n \u003cspan style=\"color: #4070a0; font-style: italic\"\u003e\u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003e Parse the Ghost json file and write post files\u003c/span\u003e\n\u003cspan style=\"color: #4070a0; font-style: italic\"\u003e \u0026#39;\u0026#39;\u0026#39;\u003c/span\u003e\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003ewith\u003c/span\u003e \u003cspan style=\"color: #007020\"\u003eopen\u003c/span\u003e(filepath, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;r\u0026quot;\u003c/span\u003e) \u003cspan style=\"color: #007020; font-weight: bold\"\u003eas\u003c/span\u003e fp:\n ghost \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e json\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eload(fp)\n\n data \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e ghost[\u003cspan style=\"color: #4070a0\"\u003e\u0026#39;db\u0026#39;\u003c/span\u003e][\u003cspan style=\"color: #40a070\"\u003e0\u003c/span\u003e][\u003cspan style=\"color: #4070a0\"\u003e\u0026#39;data\u0026#39;\u003c/span\u003e]\n\n tags \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e {}\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003efor\u003c/span\u003e tag \u003cspan style=\"color: #007020; font-weight: bold\"\u003ein\u003c/span\u003e data[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;tags\u0026quot;\u003c/span\u003e]:\n tags[tag[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;id\u0026quot;\u003c/span\u003e]] \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e tag[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;name\u0026quot;\u003c/span\u003e]\n\n posttags \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e defaultdict(\u003cspan style=\"color: #007020\"\u003elist\u003c/span\u003e)\n\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003efor\u003c/span\u003e posttag \u003cspan style=\"color: #007020; font-weight: bold\"\u003ein\u003c/span\u003e data[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;posts_tags\u0026quot;\u003c/span\u003e]:\n posttags[posttag[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;post_id\u0026quot;\u003c/span\u003e]]\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eappend(tags[posttag[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;tag_id\u0026quot;\u003c/span\u003e]])\n\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003efor\u003c/span\u003e post \u003cspan style=\"color: #007020; font-weight: bold\"\u003ein\u003c/span\u003e data[\u003cspan style=\"color: #4070a0\"\u003e\u0026#39;posts\u0026#39;\u003c/span\u003e]:\n draft \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;true\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;status\u0026quot;\u003c/span\u003e] \u003cspan style=\"color: #666666\"\u003e==\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;draft\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eelse\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;false\u0026quot;\u003c/span\u003e\n ts \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e \u003cspan style=\"color: #007020\"\u003eint\u003c/span\u003e(post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;created_at\u0026quot;\u003c/span\u003e]) \u003cspan style=\"color: #666666\"\u003e/\u003c/span\u003e \u003cspan style=\"color: #40a070\"\u003e1000\u003c/span\u003e\n\n banner \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u0026quot;\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;image\u0026quot;\u003c/span\u003e] \u003cspan style=\"color: #007020; font-weight: bold\"\u003eis\u003c/span\u003e \u003cspan style=\"color: #007020\"\u003eNone\u003c/span\u003e \u003cspan style=\"color: #007020; font-weight: bold\"\u003eelse\u003c/span\u003e post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;image\u0026quot;\u003c/span\u003e]\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# /content/ should not be part of uri anymore\u003c/span\u003e\n banner \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e re\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003esub(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;^.*/content[s]?/\u0026quot;\u003c/span\u003e, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;/\u0026quot;\u003c/span\u003e, banner)\n\n target \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e path\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003ejoin(hugodir, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;content/post\u0026quot;\u003c/span\u003e,\n \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;{}.md\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eformat(post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;slug\u0026quot;\u003c/span\u003e]))\n\n aliases \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e [\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;/{}/\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eformat(post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;slug\u0026quot;\u003c/span\u003e])]\n\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003eprint\u003c/span\u003e(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;Migrating \u0026#39;{}\u0026#39; to {}\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eformat(post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;title\u0026quot;\u003c/span\u003e],\n target))\n\n hugopost \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e _post\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eformat(markdown\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003epost[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;markdown\u0026quot;\u003c/span\u003e],\n title\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003epost[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;title\u0026quot;\u003c/span\u003e],\n draft\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003edraft,\n slug\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003epost[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;slug\u0026quot;\u003c/span\u003e],\n date\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003edate\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003efromtimestamp(ts)\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eisoformat(),\n tags\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003eposttags[post[\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;id\u0026quot;\u003c/span\u003e]],\n banner\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003ebanner,\n aliases\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003ealiases)\n\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# this is no longer relevant\u003c/span\u003e\n hugopost \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e hugopost\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003ereplace(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;```language-\u0026quot;\u003c/span\u003e, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;```\u0026quot;\u003c/span\u003e)\n \u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# /content/ should not be part of uri anymore\u003c/span\u003e\n hugopost \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e hugopost\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003ereplace(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;/content/\u0026quot;\u003c/span\u003e, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;/\u0026quot;\u003c/span\u003e)\n hugopost \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e re\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003esub(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;^.*/content[s]?/\u0026quot;\u003c/span\u003e, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;/\u0026quot;\u003c/span\u003e, hugopost)\n\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003ewith\u003c/span\u003e \u003cspan style=\"color: #007020\"\u003eopen\u003c/span\u003e(target, \u003cspan style=\"color: #4070a0\"\u003e\u0026#39;w\u0026#39;\u003c/span\u003e) \u003cspan style=\"color: #007020; font-weight: bold\"\u003eas\u003c/span\u003e fp:\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003eprint\u003c/span\u003e(hugopost, \u003cspan style=\"color: #007020\"\u003efile\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003efp)\n\n\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003edef\u003c/span\u003e \u003cspan style=\"color: #06287e\"\u003emain\u003c/span\u003e():\n parser \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e argparse\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eArgumentParser(\n description\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;Migrate an exported Ghost blog to Hugo\u0026quot;\u003c/span\u003e)\n req \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e parser\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eadd_argument_group(title\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;required arguments\u0026quot;\u003c/span\u003e)\n req\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eadd_argument(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;-f\u0026quot;\u003c/span\u003e, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;--file\u0026quot;\u003c/span\u003e, help\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;JSON file exported from Ghost\u0026quot;\u003c/span\u003e,\n required\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #007020\"\u003eTrue\u003c/span\u003e)\n req\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eadd_argument(\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;-d\u0026quot;\u003c/span\u003e, \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;--dir\u0026quot;\u003c/span\u003e, help\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;Directory (root) of Hugo site\u0026quot;\u003c/span\u003e,\n required\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #007020\"\u003eTrue\u003c/span\u003e)\n\n args \u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e parser\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003eparse_args()\n\n migrate(args\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003efile, args\u003cspan style=\"color: #666666\"\u003e.\u003c/span\u003edir)\n\n\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e \u003cspan style=\"color: #bb60d5\"\u003e__name__\u003c/span\u003e \u003cspan style=\"color: #666666\"\u003e==\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;__main__\u0026quot;\u003c/span\u003e:\n main()\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eNext post, I might write about what changes I made to the theme, and\nsome nifty Nginx tricks you can use to stay compatible with old links.\u003c/p\u003e\n", + "date_published": "2016-07-25T23:55:38+02:00", + "image": "https://cowboyprogrammer.org/images/hugo-logo.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/05/set-refresh-rate-of-screen-from-script/", + "url": "https://cowboyprogrammer.org/2016/05/set-refresh-rate-of-screen-from-script/", + "title": "Set refresh rate of screen from script", + "content_html": "\u003cp\u003eGetting a great new 100 Hz Ultra Wide monitor does not come without its share of tweaking. So it turns out that the refresh you set on your monitor in Nvidia settings (as explained in a \u003ca href=\"https://cowboyprogrammer.org/nvidia-gsync-on-linux/\"\u003eprevious post\u003c/a\u003e does not apply to all the display ports. They apparently count as different screens with different settings or something.\u003c/p\u003e\n\n\u003cp\u003eSo, here\u0026rsquo;s a handy script which you can add to your window manager\u0026rsquo;s autostart applications to set the refresh rate and resolution of your screen, regardless of which actual port you use:\u003c/p\u003e\n\u003cdiv class=\"highlight\" style=\"background: #f0f0f0\"\u003e\u003cpre style=\"line-height: 125%\"\u003e\u003cspan\u003e\u003c/span\u003e\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e#!/bin/bash -eu\u003c/span\u003e\n\u003cspan style=\"color: #bb60d5\"\u003eRES\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;3440x1440\u0026quot;\u003c/span\u003e\n\u003cspan style=\"color: #bb60d5\"\u003eRR\u003c/span\u003e\u003cspan style=\"color: #666666\"\u003e=\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;100\u0026quot;\u003c/span\u003e\n\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# Do for every output, so that it doesn\u0026#39;t matter where you plug in\u003c/span\u003e\n\u003cspan style=\"color: #60a0b0; font-style: italic\"\u003e# your monitor.\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003efor\u003c/span\u003e output in \u003cspan style=\"color: #007020; font-weight: bold\"\u003e$(\u003c/span\u003exrandr | grep \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;DP-\u0026quot;\u003c/span\u003e | sed -e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;s/\\(DP-.\\).*/\\1/\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #007020; font-weight: bold\"\u003e)\u003c/span\u003e; \u003cspan style=\"color: #007020; font-weight: bold\"\u003edo\u003c/span\u003e\n \u003cspan style=\"color: #007020\"\u003eecho\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;Trying to set mode on \u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$output\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003eif\u003c/span\u003e xrandr --output \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$output\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e --mode \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$RES\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e -r \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$RR\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e; \u003cspan style=\"color: #007020; font-weight: bold\"\u003ethen\u003c/span\u003e\n \u003cspan style=\"color: #007020\"\u003eecho\u003c/span\u003e \u003cspan style=\"color: #4070a0\"\u003e\u0026quot;Success: \u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$RES\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e \u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$RR\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e Hz set on \u003c/span\u003e\u003cspan style=\"color: #bb60d5\"\u003e$output\u003c/span\u003e\u003cspan style=\"color: #4070a0\"\u003e\u0026quot;\u003c/span\u003e\n \u003cspan style=\"color: #007020; font-weight: bold\"\u003efi\u003c/span\u003e\n\u003cspan style=\"color: #007020; font-weight: bold\"\u003edone\u003c/span\u003e\n\u003c/pre\u003e\u003c/div\u003e\n\n\u003cp\u003eIt iterates over all the display ports on your graphics card, so it doesn\u0026rsquo;t matter where you plug your monitor in.\u003c/p\u003e\n\n\u003cp\u003eIn XFCE, you\u0026rsquo;d add this script to \u003cem\u003eApplication Autostart\u003c/em\u003e:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2016/05/Session-and-Startup_033.png\" alt=\"XFCE Application Autostart\" /\u003e\u003c/p\u003e\n", + "date_published": "2016-05-18T00:00:00+00:00", + "image": "https://cowboyprogrammer.org/images/2016/05/Selection_034.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/04/fixing-the-up-button-in-python-shell-history/", + "url": "https://cowboyprogrammer.org/2016/04/fixing-the-up-button-in-python-shell-history/", + "title": "Fixing the up button in Python shell history", + "content_html": "\u003cp\u003eIn case your python/ipython shell doesn\u0026rsquo;t have a working history, e.g. pressing \u0026#8593; only prints some nonsensical \u003ccode\u003e^[[A\u003c/code\u003e, then you are missing either the \u003ccode\u003ereadline\u003c/code\u003e or \u003ccode\u003encurses\u003c/code\u003e library.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2016/04/Selection_021.png\" alt=\"Python shell where up doesn't work\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eIpython is more descriptive that something is wrong, but if you\u0026rsquo;re in the habit of mostly using python as a quick calculator, you might never notice:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2016/04/Selection_022.png\" alt=\"iPython shell where up doesn't work\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eIf you\u0026rsquo;re using \u003ca href=\"http://conda.pydata.org/miniconda.html\"\u003eMiniconda\u003c/a\u003e then just do:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003econda install ncurses readline\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eAnd \u0026#8593; should work:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2016/04/Selection_023.png\" alt=\"iPython with working up\" /\u003e\u003c/p\u003e\n", + "date_published": "2016-04-02T00:00:00+00:00", + "image": "https://cowboyprogrammer.org/images/2016/04/Selection_021-1.png" + } + + , { + "id": "https://cowboyprogrammer.org/2016/03/nvidia-gsync-on-linux/", + "url": "https://cowboyprogrammer.org/2016/03/nvidia-gsync-on-linux/", + "title": "Nvidia G-Sync and Linux", + "content_html": "\n\n\u003cp\u003eAfter getting a fancy new monitor with G-Sync support, I was eager to try it out in my Linux gaming setup. While Nvidia fully supports G-Sync in their Linux drivers, it turns out that other components of the system can get in the way. As explained by a \u003ca href=\"https://devtalk.nvidia.com/default/topic/854184/gsync-is-not-working/?offset=1\"\u003epost on the Nvidia forums\u003c/a\u003e:\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003eFor G-SYNC to work, the application has to be able to flip and the symptoms you\u0026rsquo;re describing here sound like it\u0026rsquo;s not able to flip in your configuration. There are a variety of reasons why flipping might not be working, but the most likely culprits here are either the compositor getting in the way, or the game not being completely full-screen. The full-screen requirement includes the game being completely unoccluded, so if your window manager is drawing something on top of the game, even just by one pixel, it will prevent flipping. Full-screen also means that it has to cover the entire X screen, which includes both monitors if you have them both enabled.\u003c/p\u003e\n\n\u003cp\u003eCan you please try a different window manager / desktop environment to see if the behavior changes?\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cp\u003eSince only a minority of PC-gamers are actually on Linux, and only a minority of those actually have G-Sync capable monitors, Googling for assistance was\u0026hellip; challenging. So, for any other Linux gamers out there, here is a short guide on how to enable G-Sync and verify that it works. Some of the steps are XFCE specific, as this is my window manager of choice on my gaming PC. If you are using a different window manager, you\u0026rsquo;ll have to look through your options to find the equivalent settings.\u003c/p\u003e\n\n\u003ch2 id=\"nvidia-settings\"\u003eNvidia settings\u003c/h2\u003e\n\n\u003cul\u003e\n\u003cli\u003eSync to VBlank: Optional\u003c/li\u003e\n\u003cli\u003eAllow Flipping: Required\u003c/li\u003e\n\u003cli\u003eAllow G-SYNC: Required\u003c/li\u003e\n\u003cli\u003eEnable G-SYNC Visual Indicator: Optional\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eThe only two required settings are \u003cem\u003eflipping\u003c/em\u003e and \u003cem\u003eG-Sync\u003c/em\u003e, the others are optional. Enabling \u003cem\u003eSync to VBlank\u003c/em\u003e (VSync) in combination with G-Sync only prevents the GPU from generating an FPS beyond your monitor\u0026rsquo;s max refresh rate (which you can\u0026rsquo;t see anyway). It is turned off below the max refresh rate when G-Sync is enabled.\u003c/p\u003e\n\n\u003cp\u003eThe visual indicator is useful here to see that G-Sync is working. If all goes well, you should see a green \u0026ldquo;G-SYNC\u0026rdquo; text in the corner when running a game.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2016/03/NVIDIA-X-Server-Settings_007.png\" alt=\"Nvidia settings\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"disable-compositor\"\u003eDisable compositor\u003c/h2\u003e\n\n\u003cp\u003eAs mentioned in the forum post, a compositor will prevent G-Sync from activating because essentially something is rendering above the game. The same reason prevents G-Sync from working in Window mode (unlike Windows, where G-Sync does not require fullscreen).\u003c/p\u003e\n\n\u003cp\u003eFor XFCE, go to \u003cem\u003eWindow Manager Tweaks\u003c/em\u003e under \u003cem\u003eSettings\u003c/em\u003e\n\u003cimg src=\"/images/2016/03/Selection_004.png\" alt=\"XFCE Settings\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eThen under the \u003cem\u003eCompositor\u003c/em\u003e tab, make sure the compositor is disabled\n\u003cimg src=\"/images/2016/03/Selection_005.png\" alt=\"Window Manager Tweaks\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eIn addition, depending on your setup, make sure you don\u0026rsquo;t have things like \u003ca href=\"https://wiki.archlinux.org/index.php/Compton\"\u003eCompton\u003c/a\u003e or \u003ca href=\"https://wiki.archlinux.org/index.php/Compiz\"\u003eCompiz\u003c/a\u003e enabled.\u003c/p\u003e\n\n\u003ch2 id=\"start-a-game-in-fullscreen\"\u003eStart a game in fullscreen\u003c/h2\u003e\n\n\u003cp\u003eAs mentioned, you must run the game in fullscreen mode. G-Sync does not work with window mode in Linux.\u003c/p\u003e\n\n\u003cp\u003eI did notice that there are games which do not enable G-Sync. One example is \u0026ldquo;Cities: Skylines\u0026rdquo;. So make sure to try several games if you don\u0026rsquo;t see the G-Sync logo.\u003c/p\u003e\n\n\u003cp\u003eA good candidate here is Dota 2 since it is free to play. Dota 2 running in \u0026ldquo;Desktop-Friendly Fullscreen\u0026rdquo; does enable G-Sync. As does Portal 2 and XCOM 2.\u003c/p\u003e\n", + "date_published": "2016-03-05T00:00:00+00:00", + "image": "https://cowboyprogrammer.org/images/2016/03/NVIDIA-X-Server-Settings_007-1.png" + } + + , { + "id": "https://cowboyprogrammer.org/2014/12/encrypt-a-btrfs-raid5-array-in-place/", + "url": "https://cowboyprogrammer.org/2014/12/encrypt-a-btrfs-raid5-array-in-place/", + "title": "Encrypt a BTRFS RAID5-array in-place", + "content_html": "\n\n\u003cp\u003eWhen I decided I needed more disk space for media and virtual machine (VM) images, I decided to throw some more money at the problem and get three 3TB hard drives and run \u003ca href=\"https://btrfs.wiki.kernel.org/index.php/Main_Page\"\u003eBTRFS\u003c/a\u003e in \u003ca href=\"http://en.wikipedia.org/wiki/RAID#Standard_levels\"\u003eRAID5\u003c/a\u003e. It\u0026rsquo;s still somewhat experimental, but has proven very solid for me.\u003c/p\u003e\n\n\u003cp\u003eRAID5 means that one drive can completely fail, but all the data is still intact. All one has to do is insert a new drive and the drive will be reconstructed. While RAID5 protects against a complete drive failure, it does nothing to prevent a single bit to be flipped to due cosmic rays or electricity spikes.\u003c/p\u003e\n\n\u003cp\u003eBTRFS is a new filesystem for Linux which does what ZFS does for BSD. The two important features which it offers over previous systems is: copy-on-write (COW), and bitrot protection. See, when running RAID with BTRFS, if a single bit is flipped, BTRFS will detect it when you try to read the file and correct it (if running in RAID so there\u0026rsquo;s redundancy). COW means you can take snapshots of the entire drive instantly without using extra space. Space will only be required when stuff change and diverge from your snapshots.\u003c/p\u003e\n\n\u003cp\u003eSee \u003ca href=\"http://arstechnica.com/information-technology/2014/01/bitrot-and-atomic-cows-inside-next-gen-filesystems/\"\u003eArstechnica\u003c/a\u003e for why \u003cem\u003eBTRFS\u003c/em\u003e is da shit for your next drive or system.\u003c/p\u003e\n\n\u003cp\u003eWhat I did not do at the time was encrypt the drives. \u003ca href=\"http://www.linuxvoice.com/\"\u003eLinux Voice #11\u003c/a\u003e had a very nice article on encryption so I thought I\u0026rsquo;d set it up. And because I\u0026rsquo;m using RAID5, it is actually possible for me to encrypt my drives using \u003ca href=\"https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption\"\u003edm-crypt/LUKS\u003c/a\u003e in-place, while the whole shebang is mounted, readable and usable :)\u003c/p\u003e\n\n\u003cp\u003eSome initial mistakes meant I had to actually reboot the system, so I thought I\u0026rsquo;d write down how to do it correctly. So to summarize, the goal is to convert three disks to three encrypted disks. BTRFS will be moved from using the drives directly, to using the LUKS-mapped.\u003c/p\u003e\n\n\u003ch3 id=\"unmount-the-raid-system-time-1-second\"\u003eUnmount the raid system (time 1 second)\u003c/h3\u003e\n\n\u003cp\u003eSadly, we need to unmount the volume to be able to \u0026ldquo;remove\u0026rdquo; the drive. This needs to be done so the system can understand that the drive has \u0026ldquo;vanished\u0026rdquo;. It will only stay unmounted for about a minute though.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo umount /path/to/vol\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eThis is assuming you have configured your \u003cstrong\u003efstab\u003c/strong\u003e with all the details. For example, with something like this (ALWAYS USE UUID!!)\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e# BTRFS Systems\nUUID=\u0026quot;ac21dd50-e6ee-4a9e-abcd-459cba0e6913\u0026quot; /mnt/btrfs btrfs defaults 0 0\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eNote that no modification of the \u003cstrong\u003efstab\u003c/strong\u003e will be necessary if you have used UUID.\u003c/p\u003e\n\n\u003ch3 id=\"encrypt-one-of-the-drives-time-10-seconds\"\u003eEncrypt one of the drives (time 10 seconds)\u003c/h3\u003e\n\n\u003cp\u003ePick one of the drives to encrypt. Here it\u0026rsquo;s \u003ccode\u003e/dev/sdc\u003c/code\u003e:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo cryptsetup luksFormat -v /dev/sdc\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch3 id=\"open-the-encrypted-drive-time-30-seconds\"\u003eOpen the encrypted drive (time 30 seconds)\u003c/h3\u003e\n\n\u003cp\u003eTo use it, we have to open the drive. You can pick any name you want:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo cryptsetup luksOpen /dev/sdc DRIVENAME\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eTo make this happen on boot, find the new \u003cem\u003eUUID\u003c/em\u003e of \u003ccode\u003e/dev/sdc\u003c/code\u003e with \u003ccode\u003eblkid\u003c/code\u003e:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo blkid\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2014/Dec/Screenshot-from-2014-12-29-13-28-29.png\" alt=\"Output of blkid\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eSo for me, the drive has a the following \u003cem\u003eUUID:\u003c/em\u003e \u003ccode\u003ef5d3974c-529e-4574-bbfa-7f3e6db05c65\u003c/code\u003e. Add the following line to \u003ccode\u003e/etc/crypttab\u003c/code\u003e with your desired drive name and your \u003cem\u003eUUID\u003c/em\u003e (without any quotes):\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003eDRIVENAME UUID=your-uuid-without-quotes none luks\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eNow the system will ask for your password on boot.\u003c/p\u003e\n\n\u003ch3 id=\"add-the-encrypted-drive-to-the-raid-time-20-seconds\"\u003eAdd the encrypted drive to the raid (time 20 seconds)\u003c/h3\u003e\n\n\u003cp\u003eFirst we have to remount the raid system. This will fail because there is a missing drive, unless we add the option \u003cem\u003edegraded\u003c/em\u003e.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo mount -o degraded /path/to/vol\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eThere will be some complaints about missing drives and such, which is exactly what we expect. Now, just add the new drive:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo btrfs device add /dev/mapper/DRIVENAME /path/to/vol\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch3 id=\"remove-the-missing-drive-time-14-hours\"\u003eRemove the missing drive (time 14 hours)\u003c/h3\u003e\n\n\u003cp\u003eThe final step is to remove the old drive. We can use the special name \u003cem\u003emissing\u003c/em\u003e to remove it:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003esudo btrfs device delete missing /path/to/vol\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eThis can take a really long time, and by long I mean ~15 hours if you have a terrabyte of data. But, you can still use the drive during this process so just be patient.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/2014/Dec/Screenshot-from-2014-12-29-12-48-45.png\" alt=\"Balance took 14 hours\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eFor me it took 14 hours 34 minutes. The reason for the delay is because the \u003cem\u003edelete\u003c/em\u003e command will force the system to rebuild the missing drive on your new encrypted volume.\u003c/p\u003e\n\n\u003ch3 id=\"next-drive-rinse-and-repeat\"\u003eNext drive, rinse and repeat\u003c/h3\u003e\n\n\u003cp\u003eJust unmount the raid, encrypt the drive, add it back and delete the missing. Repeat for all drives in your array. Once the last drive is done, unmount the array and remount it without the \u003ccode\u003e-o degraded\u003c/code\u003e option. Now you have an encrypted RAID array.\u003c/p\u003e\n", + "date_published": "2014-12-28T00:00:00+00:00" + } + + ] + +} diff --git a/app/src/debug/res/values/constants.xml b/app/src/debug/res/values/constants.xml new file mode 100644 index 0000000..0b79c23 --- /dev/null +++ b/app/src/debug/res/values/constants.xml @@ -0,0 +1,4 @@ + + + FeederD + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..58aed73 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/nononsenseapps/feeder/ApplicationCoroutineScope.kt b/app/src/main/java/com/nononsenseapps/feeder/ApplicationCoroutineScope.kt new file mode 100644 index 0000000..4df8069 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/ApplicationCoroutineScope.kt @@ -0,0 +1,9 @@ +package com.nononsenseapps.feeder + +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob + +class ApplicationCoroutineScope : CoroutineScope { + override val coroutineContext = Dispatchers.Default + SupervisorJob() +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/FeederApplication.kt b/app/src/main/java/com/nononsenseapps/feeder/FeederApplication.kt new file mode 100644 index 0000000..ea7cf60 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/FeederApplication.kt @@ -0,0 +1,147 @@ +package com.nononsenseapps.feeder + +import android.app.Application +import android.content.ContentResolver +import android.content.SharedPreferences +import android.os.Build.VERSION.SDK_INT +import android.widget.Toast +import androidx.core.app.NotificationManagerCompat +import androidx.multidex.MultiDexApplication +import androidx.preference.PreferenceManager +import androidx.work.WorkManager +import coil.ImageLoader +import coil.decode.GifDecoder +import coil.decode.ImageDecoderDecoder +import coil.decode.SvgDecoder +import com.jakewharton.threetenabp.AndroidThreeTen +import com.nononsenseapps.feeder.db.room.AppDatabase +import com.nononsenseapps.feeder.db.room.FeedDao +import com.nononsenseapps.feeder.db.room.FeedItemDao +import com.nononsenseapps.feeder.di.networkModule +import com.nononsenseapps.feeder.di.stateModule +import com.nononsenseapps.feeder.di.viewModelModule +import com.nononsenseapps.feeder.model.UserAgentInterceptor +import com.nononsenseapps.feeder.util.AsyncImageLoader +import com.nononsenseapps.feeder.util.Prefs +import com.nononsenseapps.feeder.util.ToastMaker +import com.nononsenseapps.jsonfeed.cachingHttpClient +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.cancel +import kotlinx.coroutines.withContext +import okhttp3.Cache +import okhttp3.CacheControl +import okhttp3.OkHttpClient +import org.conscrypt.Conscrypt +import org.kodein.di.Kodein +import org.kodein.di.KodeinAware +import org.kodein.di.generic.bind +import org.kodein.di.generic.instance +import org.kodein.di.generic.singleton +import java.io.File +import java.security.Security +import java.util.concurrent.TimeUnit + +@FlowPreview +@ExperimentalCoroutinesApi +@Suppress("unused") +class FeederApplication : MultiDexApplication(), KodeinAware { + private val applicationCoroutineScope = ApplicationCoroutineScope() + + override val kodein by Kodein.lazy { + // import(androidXModule(this@FeederApplication)) + + bind() with singleton { this@FeederApplication } + bind() with singleton { AppDatabase.getInstance(this@FeederApplication) } + bind() with singleton { instance().feedDao() } + bind() with singleton { instance().feedItemDao() } + + import(viewModelModule) + + bind() with singleton { WorkManager.getInstance(this@FeederApplication) } + bind() with singleton { contentResolver } + bind() with singleton { + object : ToastMaker { + override suspend fun makeToast(text: String) = withContext(Dispatchers.Main) { + Toast.makeText(this@FeederApplication, text, Toast.LENGTH_SHORT).show() + } + } + } + bind() with singleton { NotificationManagerCompat.from(this@FeederApplication) } + bind() with singleton { PreferenceManager.getDefaultSharedPreferences(this@FeederApplication) } + bind() with singleton { Prefs(kodein) } + + bind() with singleton { + cachingHttpClient( + cacheDirectory = (externalCacheDir ?: filesDir).resolve("http") + ).newBuilder() + .addNetworkInterceptor(UserAgentInterceptor) + .build() + } + bind() with singleton { + val prefs = instance() + val okHttpClient = instance() + .newBuilder() + // Use separate image cache or images will quickly evict feed caches + .cache(Cache((externalCacheDir ?: filesDir).resolve("img"), 20L * 1024L * 1024L)) + .addInterceptor { chain -> + chain.proceed( + when (prefs.shouldLoadImages()) { + true -> chain.request() + false -> { + // Forces only cached responses to be used - if no cache then 504 is thrown + chain.request().newBuilder() + .cacheControl( + CacheControl.Builder() + .onlyIfCached() + .maxStale(Int.MAX_VALUE, TimeUnit.SECONDS) + .maxAge(Int.MAX_VALUE, TimeUnit.SECONDS) + .build() + ) + .build() + } + } + ) + } + .build() + + ImageLoader.Builder(instance()) + .okHttpClient(okHttpClient = okHttpClient) + .componentRegistry { + add(SvgDecoder(applicationContext)) + if (SDK_INT >= 28) { + add(ImageDecoderDecoder()) + } else { + add(GifDecoder()) + } + } + .build() + } + bind() with singleton { AsyncImageLoader(kodein) } + bind() with instance(applicationCoroutineScope) + import(networkModule) + import(stateModule) + } + + init { + // Install Conscrypt to handle TLSv1.3 pre Android10 + Security.insertProviderAt(Conscrypt.newProvider(), 1) + } + + override fun onCreate() { + super.onCreate() + AndroidThreeTen.init(this) + staticFilesDir = filesDir + } + + override fun onTerminate() { + applicationCoroutineScope.cancel("Application is being terminated") + super.onTerminate() + } + + companion object { + // Needed for database migration + lateinit var staticFilesDir: File + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareActivity.kt b/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareActivity.kt new file mode 100644 index 0000000..3eee917 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareActivity.kt @@ -0,0 +1,25 @@ +package com.nononsenseapps.feeder.base + +import android.annotation.SuppressLint +import android.view.MenuInflater +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.FragmentActivity +import org.kodein.di.Kodein +import org.kodein.di.KodeinAware +import org.kodein.di.android.closestKodein +import org.kodein.di.generic.bind +import org.kodein.di.generic.instance +import org.kodein.di.generic.provider + +/** + * A fragment which is also Kodein aware. + */ +@SuppressLint("Registered") +open class KodeinAwareActivity : AppCompatActivity(), KodeinAware { + private val parentKodein: Kodein by closestKodein() + override val kodein: Kodein by Kodein.lazy { + extend(parentKodein) + bind() with provider { menuInflater } + bind() with instance(this@KodeinAwareActivity) + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareDialogFragment.kt b/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareDialogFragment.kt new file mode 100644 index 0000000..16adfe1 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareDialogFragment.kt @@ -0,0 +1,13 @@ +package com.nononsenseapps.feeder.base + +import androidx.fragment.app.DialogFragment +import org.kodein.di.Kodein +import org.kodein.di.KodeinAware +import org.kodein.di.android.x.closestKodein + +/** + * A dialog fragment which is also Kodein aware. + */ +open class KodeinAwareDialogFragment : DialogFragment(), KodeinAware { + override val kodein: Kodein by closestKodein() +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareFragment.kt b/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareFragment.kt new file mode 100644 index 0000000..94d01bd --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareFragment.kt @@ -0,0 +1,13 @@ +package com.nononsenseapps.feeder.base + +import androidx.fragment.app.Fragment +import org.kodein.di.Kodein +import org.kodein.di.KodeinAware +import org.kodein.di.android.x.closestKodein + +/** + * A fragment which is also Kodein aware. + */ +open class KodeinAwareFragment : Fragment(), KodeinAware { + override val kodein: Kodein by closestKodein() +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareIntentService.kt b/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareIntentService.kt new file mode 100644 index 0000000..0f0d351 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareIntentService.kt @@ -0,0 +1,10 @@ +package com.nononsenseapps.feeder.base + +import android.app.IntentService +import org.kodein.di.Kodein +import org.kodein.di.KodeinAware +import org.kodein.di.android.closestKodein + +abstract class KodeinAwareIntentService(name: String) : IntentService(name), KodeinAware { + override val kodein: Kodein by closestKodein() +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareViewModel.kt b/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareViewModel.kt new file mode 100644 index 0000000..2187f31 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/base/KodeinAwareViewModel.kt @@ -0,0 +1,63 @@ +package com.nononsenseapps.feeder.base + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentActivity +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import org.kodein.di.Kodein +import org.kodein.di.KodeinAware +import org.kodein.di.bindings.Factory +import org.kodein.di.bindings.Provider +import org.kodein.di.direct +import org.kodein.di.generic.bind +import org.kodein.di.generic.factory +import org.kodein.di.generic.instance +import org.kodein.di.generic.provider +import java.lang.reflect.InvocationTargetException + +/** + * A view model which is also kodein aware. Construct any deriving class by using the getViewModel() + * extension function. + */ +open class KodeinAwareViewModel(override val kodein: Kodein) : AndroidViewModel(kodein.direct.instance()), KodeinAware + +class KodeinAwareViewModelFactory(override val kodein: Kodein) : + ViewModelProvider.AndroidViewModelFactory(kodein.direct.instance()), KodeinAware { + override fun create(modelClass: Class): T { + return if (KodeinAwareViewModel::class.java.isAssignableFrom(modelClass)) { + try { + modelClass.getConstructor(Kodein::class.java).newInstance(kodein) + } catch (e: NoSuchMethodException) { + throw RuntimeException("No such constructor $modelClass", e) + } catch (e: IllegalAccessException) { + throw RuntimeException("Cannot create an instance of $modelClass", e) + } catch (e: InstantiationException) { + throw RuntimeException("Cannot create an instance of $modelClass", e) + } catch (e: InvocationTargetException) { + throw RuntimeException("Cannot create an instance of $modelClass", e) + } + } else { + super.create(modelClass) + } + } +} + +inline fun Kodein.BindBuilder.WithContext.activityViewModelProvider(): + Provider { + return provider { + ViewModelProvider(instance(), instance()).get(T::class.java) + } +} + +inline fun Kodein.BindBuilder.WithContext.fragmentViewModelFactory(): + Factory { + return factory { fragment: Fragment -> + ViewModelProvider(fragment, instance()).get(T::class.java) + } +} + +inline fun Kodein.Builder.bindWithKodeinAwareViewModelFactory() { + bind() with activityViewModelProvider() + bind() with fragmentViewModelFactory() +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/blob/Blob.kt b/app/src/main/java/com/nononsenseapps/feeder/blob/Blob.kt new file mode 100644 index 0000000..9ab37bf --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/blob/Blob.kt @@ -0,0 +1,30 @@ +package com.nononsenseapps.feeder.blob + +import java.io.File +import java.io.IOException +import java.io.InputStream +import java.io.OutputStream +import java.util.zip.GZIPInputStream +import java.util.zip.GZIPOutputStream + +fun blobFile(itemId: Long, filesDir: File): File = + File(filesDir, "$itemId.txt.gz") + +@Throws(IOException::class) +fun blobInputStream(itemId: Long, filesDir: File): InputStream = + GZIPInputStream(blobFile(itemId = itemId, filesDir = filesDir).inputStream()) + +@Throws(IOException::class) +fun blobOutputStream(itemId: Long, filesDir: File): OutputStream = + GZIPOutputStream(blobFile(itemId = itemId, filesDir = filesDir).outputStream()) + +fun blobFullFile(itemId: Long, filesDir: File): File = + File(filesDir, "$itemId.full.html.gz") + +@Throws(IOException::class) +fun blobFullInputStream(itemId: Long, filesDir: File): InputStream = + GZIPInputStream(blobFullFile(itemId = itemId, filesDir = filesDir).inputStream()) + +@Throws(IOException::class) +fun blobFullOutputStream(itemId: Long, filesDir: File): OutputStream = + GZIPOutputStream(blobFullFile(itemId = itemId, filesDir = filesDir).outputStream()) diff --git a/app/src/main/java/com/nononsenseapps/feeder/db/Constants.kt b/app/src/main/java/com/nononsenseapps/feeder/db/Constants.kt new file mode 100644 index 0000000..cdc534a --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/db/Constants.kt @@ -0,0 +1,31 @@ +package com.nononsenseapps.feeder.db + +const val FEEDS_TABLE_NAME = "feeds" +const val FEED_ITEMS_TABLE_NAME = "feed_items" + +const val COL_ID = "id" +const val COL_TITLE = "title" +const val COL_CUSTOM_TITLE = "custom_title" +const val COL_URL = "url" +const val COL_TAG = "tag" +const val COL_NOTIFY = "notify" +const val COL_GUID = "guid" +const val COL_PLAINTITLE = "plain_title" +const val COL_PLAINSNIPPET = "plain_snippet" +const val COL_IMAGEURL = "image_url" +const val COL_ENCLOSURELINK = "enclosure_link" +const val COL_LINK = "link" +const val COL_AUTHOR = "author" +const val COL_PUBDATE = "pub_date" +const val COL_UNREAD = "unread" +const val COL_NOTIFIED = "notified" +const val COL_FEEDID = "feed_id" +const val COL_FEEDTITLE = "feed_title" +const val COL_FEEDCUSTOMTITLE = "feed_customtitle" +const val COL_FEEDURL = "feed_url" +const val COL_LASTSYNC = "last_sync" +const val COL_RESPONSEHASH = "response_hash" +const val COL_FIRSTSYNCEDTIME = "first_synced_time" +const val COL_PRIMARYSORTTIME = "primary_sort_time" +const val COL_FULLTEXT_BY_DEFAULT = "fulltext_by_default" +const val COL_OPEN_ARTICLES_WITH = "open_articles_with" \ No newline at end of file diff --git a/app/src/main/java/com/nononsenseapps/feeder/db/Uri.kt b/app/src/main/java/com/nononsenseapps/feeder/db/Uri.kt new file mode 100644 index 0000000..4f5610f --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/db/Uri.kt @@ -0,0 +1,16 @@ +@file:Suppress("RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS") + +package com.nononsenseapps.feeder.db + +import android.net.Uri + +const val AUTHORITY = "com.nononsenseapps.feeder.provider" +const val SCHEME = "content://" + +// URIs +// Feed +@JvmField +val URI_FEEDS: Uri = Uri.withAppendedPath(Uri.parse(SCHEME + AUTHORITY), "feeds") +// Feed item +@JvmField +val URI_FEEDITEMS: Uri = Uri.withAppendedPath(Uri.parse(SCHEME + AUTHORITY), "feed_items") diff --git a/app/src/main/java/com/nononsenseapps/feeder/db/room/AppDatabase.kt b/app/src/main/java/com/nononsenseapps/feeder/db/room/AppDatabase.kt new file mode 100644 index 0000000..5a9b0f6 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/db/room/AppDatabase.kt @@ -0,0 +1,354 @@ +package com.nononsenseapps.feeder.db.room + +import android.content.Context +import android.database.sqlite.SQLiteDatabase +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase +import androidx.room.TypeConverters +import androidx.room.migration.Migration +import androidx.sqlite.db.SupportSQLiteDatabase +import com.nononsenseapps.feeder.FeederApplication +import com.nononsenseapps.feeder.blob.blobOutputStream +import com.nononsenseapps.feeder.util.contentValues +import com.nononsenseapps.feeder.util.forEach +import com.nononsenseapps.feeder.util.setInt +import com.nononsenseapps.feeder.util.setLong +import com.nononsenseapps.feeder.util.setString +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.FlowPreview + +const val DATABASE_NAME = "rssDatabase" +const val ID_UNSET: Long = 0 +const val ID_ALL_FEEDS: Long = -10 + +/** + * Database versions + * 4: Was using the RSS Server + * 5: Added feed url field to feed_item + * 6: Added feed icon field to feeds + * 7: Migration to Room + */ + +@FlowPreview +@Database(entities = [Feed::class, FeedItem::class], version = 14) +@TypeConverters(Converters::class) +abstract class AppDatabase : RoomDatabase() { + abstract fun feedDao(): FeedDao + abstract fun feedItemDao(): FeedItemDao + + @FlowPreview + @ExperimentalCoroutinesApi + companion object { + // For Singleton instantiation + @Volatile + private var instance: AppDatabase? = null + + /** + * Use this in tests only + */ + internal fun setInstance(db: AppDatabase) { + instance = db + } + + fun getInstance(context: Context): AppDatabase { + return instance ?: synchronized(this) { + instance ?: buildDatabase(context).also { instance = it } + } + } + + private fun buildDatabase(context: Context): AppDatabase { + return Room.databaseBuilder(context, AppDatabase::class.java, DATABASE_NAME) + .addMigrations(*allMigrations) + .build() + } + } +} + +@FlowPreview +@ExperimentalCoroutinesApi +val allMigrations = arrayOf( + MIGRATION_5_7, + MIGRATION_6_7, + MIGRATION_7_8, + MIGRATION_8_9, + MIGRATION_9_10, + MIGRATION_10_11, + MIGRATION_11_12, + MIGRATION_12_13, + MIGRATION_13_14 +) + +/* + * 6 represents legacy database + * 7 represents new Room database + */ + +@FlowPreview +@ExperimentalCoroutinesApi +@Suppress("ClassName") +object MIGRATION_13_14 : Migration(13, 14) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL( + """ + ALTER TABLE feeds ADD COLUMN open_articles_with TEXT NOT NULL DEFAULT '' + """.trimIndent() + ) + } +} + +@FlowPreview +@ExperimentalCoroutinesApi +@Suppress("ClassName") +object MIGRATION_12_13 : Migration(12, 13) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL( + """ + ALTER TABLE feeds ADD COLUMN fulltext_by_default INTEGER NOT NULL DEFAULT 0 + """.trimIndent() + ) + } +} + +@FlowPreview +@ExperimentalCoroutinesApi +@Suppress("ClassName") +object MIGRATION_11_12 : Migration(11, 12) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL( + """ + ALTER TABLE feed_items ADD COLUMN primary_sort_time INTEGER NOT NULL DEFAULT 0 + """.trimIndent() + ) + } +} + +@FlowPreview +@ExperimentalCoroutinesApi +@Suppress("ClassName") +object MIGRATION_10_11 : Migration(10, 11) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL( + """ + ALTER TABLE feed_items ADD COLUMN first_synced_time INTEGER NOT NULL DEFAULT 0 + """.trimIndent() + ) + } +} + +@FlowPreview +@ExperimentalCoroutinesApi +@Suppress("ClassName") +object MIGRATION_9_10 : Migration(9, 10) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL( + """ + CREATE TABLE IF NOT EXISTS `feed_items_new` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `guid` TEXT NOT NULL, `title` TEXT NOT NULL, `plain_title` TEXT NOT NULL, `plain_snippet` TEXT NOT NULL, `image_url` TEXT, `enclosure_link` TEXT, `author` TEXT, `pub_date` TEXT, `link` TEXT, `unread` INTEGER NOT NULL, `notified` INTEGER NOT NULL, `feed_id` INTEGER, FOREIGN KEY(`feed_id`) REFERENCES `feeds`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE ) + """.trimIndent() + ) + + database.execSQL( + """ + INSERT INTO `feed_items_new` (`id`, `guid`, `title`, `plain_title`, `plain_snippet`, `image_url`, `enclosure_link`, `author`, `pub_date`, `link`, `unread`, `notified`, `feed_id`) + SELECT `id`, `guid`, `title`, `plain_title`, `plain_snippet`, `image_url`, `enclosure_link`, `author`, `pub_date`, `link`, `unread`, `notified`, `feed_id` FROM `feed_items` + """.trimIndent() + ) + + // Iterate over all items using the minimum query. Also restrict the text field to + // 1 MB which should be safe enough considering the window size is 2MB large. + database.query( + """ + SELECT id, substr(description,0,1000000) FROM feed_items + """.trimIndent() + )?.use { cursor -> + cursor.forEach { + val feedItemId = cursor.getLong(0) + val description = cursor.getString(1) + + blobOutputStream(feedItemId, FeederApplication.staticFilesDir).bufferedWriter().use { + it.write(description) + } + } + } + + database.execSQL( + """ + DROP TABLE feed_items + """.trimIndent() + ) + + database.execSQL( + """ + ALTER TABLE feed_items_new RENAME TO feed_items + """.trimIndent() + ) + + database.execSQL( + """ + CREATE UNIQUE INDEX IF NOT EXISTS `index_feed_items_guid_feed_id` ON `feed_items` (`guid`, `feed_id`) + """.trimIndent() + ) + + database.execSQL( + """ + CREATE INDEX IF NOT EXISTS `index_feed_items_feed_id` ON `feed_items` (`feed_id`) + """.trimIndent() + ) + + // And reset response hash on all feeds to trigger parsing of results next sync so items + // are written disk (in case migration substring was too short) + database.execSQL( + """ + UPDATE `feeds` SET `response_hash` = 0 + """.trimIndent() + ) + } +} + +object MIGRATION_8_9 : Migration(8, 9) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL( + """ + ALTER TABLE feeds ADD COLUMN response_hash INTEGER NOT NULL DEFAULT 0 + """.trimIndent() + ) + } +} + +object MIGRATION_7_8 : Migration(7, 8) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL( + """ + ALTER TABLE feeds ADD COLUMN last_sync INTEGER NOT NULL DEFAULT 0 + """.trimIndent() + ) + } +} + +object MIGRATION_6_7 : Migration(6, 7) { + override fun migrate(database: SupportSQLiteDatabase) { + legacyMigration(database, 6) + } +} + +object MIGRATION_5_7 : Migration(5, 7) { + override fun migrate(database: SupportSQLiteDatabase) { + legacyMigration(database, 5) + } +} + +private fun legacyMigration(database: SupportSQLiteDatabase, version: Int) { + // Create new tables and indices + // Feeds + database.execSQL( + """ + CREATE TABLE IF NOT EXISTS `feeds` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `title` TEXT NOT NULL, `custom_title` TEXT NOT NULL, `url` TEXT NOT NULL, `tag` TEXT NOT NULL, `notify` INTEGER NOT NULL, `image_url` TEXT) + """.trimIndent() + ) + database.execSQL( + """ + CREATE UNIQUE INDEX `index_Feed_url` ON `feeds` (`url`) + """.trimIndent() + ) + database.execSQL( + """ + CREATE UNIQUE INDEX `index_Feed_id_url_title` ON `feeds` (`id`, `url`, `title`) + """.trimIndent() + ) + + // Items + database.execSQL( + """ + CREATE TABLE IF NOT EXISTS `feed_items` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `guid` TEXT NOT NULL, `title` TEXT NOT NULL, `description` TEXT NOT NULL, `plain_title` TEXT NOT NULL, `plain_snippet` TEXT NOT NULL, `image_url` TEXT, `enclosure_link` TEXT, `author` TEXT, `pub_date` TEXT, `link` TEXT, `unread` INTEGER NOT NULL, `notified` INTEGER NOT NULL, `feed_id` INTEGER, FOREIGN KEY(`feed_id`) REFERENCES `feeds`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE ) + """.trimIndent() + ) + database.execSQL( + """ + CREATE UNIQUE INDEX `index_feed_item_guid_feed_id` ON `feed_items` (`guid`, `feed_id`) + """.trimIndent() + ) + database.execSQL( + """ + CREATE INDEX `index_feed_item_feed_id` ON `feed_items` (`feed_id`) + """.trimIndent() + ) + + // Migrate to new tables + database.query( + """ + SELECT _id, title, url, tag, customtitle, notify ${if (version == 6) ", imageUrl" else ""} + FROM Feed + """.trimIndent() + )?.use { cursor -> + cursor.forEach { _ -> + val oldFeedId = cursor.getLong(0) + + val newFeedId = database.insert( + "feeds", + SQLiteDatabase.CONFLICT_FAIL, + contentValues { + setString("title" to cursor.getString(1)) + setString("custom_title" to cursor.getString(4)) + setString("url" to cursor.getString(2)) + setString("tag" to cursor.getString(3)) + setInt("notify" to cursor.getInt(5)) + if (version == 6) { + setString("image_url" to cursor.getString(6)) + } + } + ) + + database.query( + """ + SELECT title, description, plainTitle, plainSnippet, imageUrl, link, author, + pubdate, unread, feed, enclosureLink, notified, guid + FROM FeedItem + WHERE feed = $oldFeedId + """.trimIndent() + )?.use { cursor -> + database.inTransaction { + cursor.forEach { _ -> + database.insert( + "feed_items", + SQLiteDatabase.CONFLICT_FAIL, + contentValues { + setString("guid" to cursor.getString(12)) + setString("title" to cursor.getString(0)) + setString("description" to cursor.getString(1)) + setString("plain_title" to cursor.getString(2)) + setString("plain_snippet" to cursor.getString(3)) + setString("image_url" to cursor.getString(4)) + setString("enclosure_link" to cursor.getString(10)) + setString("author" to cursor.getString(6)) + setString("pub_date" to cursor.getString(7)) + setString("link" to cursor.getString(5)) + setInt("unread" to cursor.getInt(8)) + setInt("notified" to cursor.getInt(11)) + setLong("feed_id" to newFeedId) + } + ) + } + } + } + } + } + + // Remove all legacy content + database.execSQL("DROP TRIGGER IF EXISTS trigger_tag_updater") + + database.execSQL("DROP VIEW IF EXISTS WithUnreadCount") + database.execSQL("DROP VIEW IF EXISTS TagsWithUnreadCount") + + database.execSQL("DROP TABLE IF EXISTS Feed") + database.execSQL("DROP TABLE IF EXISTS FeedItem") +} + +fun SupportSQLiteDatabase.inTransaction(init: (SupportSQLiteDatabase) -> Unit) { + beginTransaction() + try { + init(this) + setTransactionSuccessful() + } finally { + endTransaction() + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/db/room/Converters.kt b/app/src/main/java/com/nononsenseapps/feeder/db/room/Converters.kt new file mode 100644 index 0000000..df6dd91 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/db/room/Converters.kt @@ -0,0 +1,46 @@ +package com.nononsenseapps.feeder.db.room + +import androidx.room.TypeConverter +import com.nononsenseapps.feeder.util.sloppyLinkToStrictURLNoThrows +import org.threeten.bp.Instant +import org.threeten.bp.ZonedDateTime +import java.net.URL + +class Converters { + + @TypeConverter + fun dateTimeFromString(value: String?): ZonedDateTime? { + var dt: ZonedDateTime? = null + if (value != null) { + try { + dt = ZonedDateTime.parse(value) + } catch (t: Throwable) { + } + } + return dt + } + + @TypeConverter + fun stringFromDateTime(value: ZonedDateTime?): String? = + value?.toString() + + @TypeConverter + fun stringFromURL(value: URL?): String? = + value?.toString() + + @TypeConverter + fun urlFromString(value: String?): URL? = + value?.let { sloppyLinkToStrictURLNoThrows(it) } + + @TypeConverter + fun instantFromLong(value: Long?): Instant? = + try { + value?.let { Instant.ofEpochMilli(it) } + } catch (t: Throwable) { + null + } + + @TypeConverter + fun longFromInstant(value: Instant?): Long? = + value?.toEpochMilli() +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/db/room/Feed.kt b/app/src/main/java/com/nononsenseapps/feeder/db/room/Feed.kt new file mode 100644 index 0000000..95497f9 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/db/room/Feed.kt @@ -0,0 +1,51 @@ +package com.nononsenseapps.feeder.db.room + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.Ignore +import androidx.room.Index +import androidx.room.PrimaryKey +import com.nononsenseapps.feeder.db.COL_CUSTOM_TITLE +import com.nononsenseapps.feeder.db.COL_FULLTEXT_BY_DEFAULT +import com.nononsenseapps.feeder.db.COL_ID +import com.nononsenseapps.feeder.db.COL_IMAGEURL +import com.nononsenseapps.feeder.db.COL_LASTSYNC +import com.nononsenseapps.feeder.db.COL_NOTIFY +import com.nononsenseapps.feeder.db.COL_RESPONSEHASH +import com.nononsenseapps.feeder.db.COL_TAG +import com.nononsenseapps.feeder.db.COL_TITLE +import com.nononsenseapps.feeder.db.COL_URL +import com.nononsenseapps.feeder.db.COL_OPEN_ARTICLES_WITH +import com.nononsenseapps.feeder.db.FEEDS_TABLE_NAME +import com.nononsenseapps.feeder.util.sloppyLinkToStrictURL +import org.threeten.bp.Instant +import java.net.URL + +const val OPEN_ARTICLE_WITH_APPLICATION_DEFAULT = "" + +@Entity( + tableName = FEEDS_TABLE_NAME, + indices = [ + Index(value = [COL_URL], unique = true), + Index(value = [COL_ID, COL_URL, COL_TITLE], unique = true) + ] +) +data class Feed @Ignore constructor( + @PrimaryKey(autoGenerate = true) + @ColumnInfo(name = COL_ID) var id: Long = ID_UNSET, + @ColumnInfo(name = COL_TITLE) var title: String = "", + @ColumnInfo(name = COL_CUSTOM_TITLE) var customTitle: String = "", + @ColumnInfo(name = COL_URL) var url: URL = sloppyLinkToStrictURL(""), + @ColumnInfo(name = COL_TAG) var tag: String = "", + @ColumnInfo(name = COL_NOTIFY) var notify: Boolean = false, + @ColumnInfo(name = COL_IMAGEURL) var imageUrl: URL? = null, + @ColumnInfo(name = COL_LASTSYNC, typeAffinity = ColumnInfo.INTEGER) var lastSync: Instant = Instant.EPOCH, + @ColumnInfo(name = COL_RESPONSEHASH) var responseHash: Int = 0, + @ColumnInfo(name = COL_FULLTEXT_BY_DEFAULT) var fullTextByDefault: Boolean = false, + @ColumnInfo(name = COL_OPEN_ARTICLES_WITH) var openArticlesWith: String = "" +) { + constructor() : this(id = ID_UNSET) + + val displayTitle: String + get() = (if (customTitle.isBlank()) title else customTitle) +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedDao.kt b/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedDao.kt new file mode 100644 index 0000000..2f87efe --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedDao.kt @@ -0,0 +1,134 @@ +package com.nononsenseapps.feeder.db.room + +import androidx.room.Dao +import androidx.room.Delete +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import androidx.room.Update +import com.nononsenseapps.feeder.db.COL_CUSTOM_TITLE +import com.nononsenseapps.feeder.db.COL_ID +import com.nononsenseapps.feeder.db.COL_TAG +import com.nononsenseapps.feeder.db.COL_TITLE +import com.nononsenseapps.feeder.model.FeedUnreadCount +import kotlinx.coroutines.flow.Flow +import java.net.URL + +@Dao +interface FeedDao { + + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insertFeed(feed: Feed): Long + + @Update + suspend fun updateFeed(feed: Feed) + + @Delete + suspend fun deleteFeed(feed: Feed) + + @Query("DELETE FROM feeds WHERE id IS :feedId") + suspend fun deleteFeedWithId(feedId: Long) + + @Query( + """ + DELETE FROM feeds WHERE id IN (:ids) + """ + ) + suspend fun deleteFeeds(ids: List) + + @Query("SELECT * FROM feeds WHERE id IS :feedId") + fun loadLiveFeed(feedId: Long): Flow + + @Query("SELECT DISTINCT tag FROM feeds ORDER BY tag COLLATE NOCASE") + suspend fun loadTags(): List + + @Query("SELECT * FROM feeds WHERE id IS :feedId") + suspend fun loadFeed(feedId: Long): Feed? + + @Query( + """ + SELECT * FROM feeds + WHERE id is :feedId + AND last_sync < :staleTime + """ + ) + suspend fun loadFeedIfStale(feedId: Long, staleTime: Long): Feed? + + @Query("SELECT * FROM feeds WHERE tag IS :tag") + suspend fun loadFeeds(tag: String): List + + @Query("SELECT * FROM feeds WHERE tag IS :tag AND last_sync < :staleTime") + suspend fun loadFeedsIfStale(tag: String, staleTime: Long): List + + @Query("SELECT notify FROM feeds WHERE tag IS :tag") + fun loadLiveFeedsNotify(tag: String): Flow> + + @Query("SELECT notify FROM feeds WHERE id IS :feedId") + fun loadLiveFeedsNotify(feedId: Long): Flow> + + @Query("SELECT notify FROM feeds") + fun loadLiveFeedsNotify(): Flow> + + @Query("SELECT * FROM feeds") + suspend fun loadFeeds(): List + + @Query("SELECT * FROM feeds WHERE last_sync < :staleTime") + suspend fun loadFeedsIfStale(staleTime: Long): List + + @Query("SELECT * FROM feeds WHERE url IS :url") + suspend fun loadFeedWithUrl(url: URL): Feed? + + @Query("SELECT id FROM feeds WHERE notify IS 1") + suspend fun loadFeedIdsToNotify(): List + + @Query( + """ + SELECT id, title, url, tag, custom_title, notify, image_url, unread_count + FROM feeds + LEFT JOIN (SELECT COUNT(1) AS unread_count, feed_id + FROM feed_items + WHERE unread IS 1 + GROUP BY feed_id + ) + ON feeds.id = feed_id + """ + ) + fun loadLiveFeedsWithUnreadCounts(): Flow> + + @Query("UPDATE feeds SET notify = :notify WHERE id IS :id") + suspend fun setNotify(id: Long, notify: Boolean) + + @Query("UPDATE feeds SET notify = :notify WHERE tag IS :tag") + suspend fun setNotify(tag: String, notify: Boolean) + + @Query("UPDATE feeds SET notify = :notify") + suspend fun setAllNotify(notify: Boolean) + + @Query("SELECT $COL_ID, $COL_TITLE, $COL_CUSTOM_TITLE FROM feeds WHERE id IS :feedId") + suspend fun getFeedTitle(feedId: Long): List + + @Query( + """ + SELECT $COL_ID, $COL_TITLE, $COL_CUSTOM_TITLE + FROM feeds + WHERE $COL_TAG IS :feedTag + """ + ) + suspend fun getFeedTitlesWithTag(feedTag: String): List + + @Query("SELECT $COL_ID, $COL_TITLE, $COL_CUSTOM_TITLE FROM feeds") + suspend fun getAllFeedTitles(): List +} + +/** + * Inserts or updates feed depending on if ID is valid. Returns ID. + */ +suspend fun FeedDao.upsertFeed(feed: Feed): Long = when (feed.id > ID_UNSET) { + true -> { + updateFeed(feed) + feed.id + } + false -> { + insertFeed(feed) + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedItem.kt b/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedItem.kt new file mode 100644 index 0000000..50ae9da --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedItem.kt @@ -0,0 +1,158 @@ +package com.nononsenseapps.feeder.db.room + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.ForeignKey +import androidx.room.ForeignKey.CASCADE +import androidx.room.Ignore +import androidx.room.Index +import androidx.room.PrimaryKey +import com.nononsenseapps.feeder.db.COL_AUTHOR +import com.nononsenseapps.feeder.db.COL_ENCLOSURELINK +import com.nononsenseapps.feeder.db.COL_FEEDID +import com.nononsenseapps.feeder.db.COL_FIRSTSYNCEDTIME +import com.nononsenseapps.feeder.db.COL_GUID +import com.nononsenseapps.feeder.db.COL_ID +import com.nononsenseapps.feeder.db.COL_IMAGEURL +import com.nononsenseapps.feeder.db.COL_LINK +import com.nononsenseapps.feeder.db.COL_NOTIFIED +import com.nononsenseapps.feeder.db.COL_PLAINSNIPPET +import com.nononsenseapps.feeder.db.COL_PLAINTITLE +import com.nononsenseapps.feeder.db.COL_PRIMARYSORTTIME +import com.nononsenseapps.feeder.db.COL_PUBDATE +import com.nononsenseapps.feeder.db.COL_TITLE +import com.nononsenseapps.feeder.db.COL_UNREAD +import com.nononsenseapps.feeder.db.FEED_ITEMS_TABLE_NAME +import com.nononsenseapps.feeder.ui.text.HtmlToPlainTextConverter +import com.nononsenseapps.feeder.util.relativeLinkIntoAbsolute +import com.nononsenseapps.feeder.util.sloppyLinkToStrictURL +import com.nononsenseapps.jsonfeed.Item +import kotlinx.coroutines.FlowPreview +import org.threeten.bp.Instant +import org.threeten.bp.ZoneOffset +import org.threeten.bp.ZonedDateTime +import java.net.URI +import java.net.URL + +const val MAX_TITLE_LENGTH = 200 +const val MAX_SNIPPET_LENGTH = 200 + +@FlowPreview +@Entity( + tableName = FEED_ITEMS_TABLE_NAME, + indices = [ + Index(value = [COL_GUID, COL_FEEDID], unique = true), + Index(value = [COL_FEEDID]) + ], + foreignKeys = [ + ForeignKey( + entity = Feed::class, + parentColumns = [COL_ID], + childColumns = [COL_FEEDID], + onDelete = CASCADE + ) + ] +) +data class FeedItem @Ignore constructor( + @PrimaryKey(autoGenerate = true) + @ColumnInfo(name = COL_ID) override var id: Long = ID_UNSET, + @ColumnInfo(name = COL_GUID) var guid: String = "", + @Deprecated("This is never different from plainTitle", replaceWith = ReplaceWith("plainTitle")) + @ColumnInfo(name = COL_TITLE) var title: String = "", + @ColumnInfo(name = COL_PLAINTITLE) var plainTitle: String = "", + @ColumnInfo(name = COL_PLAINSNIPPET) var plainSnippet: String = "", + @ColumnInfo(name = COL_IMAGEURL) var imageUrl: String? = null, + @ColumnInfo(name = COL_ENCLOSURELINK) var enclosureLink: String? = null, + @ColumnInfo(name = COL_AUTHOR) var author: String? = null, + @ColumnInfo(name = COL_PUBDATE, typeAffinity = ColumnInfo.TEXT) var pubDate: ZonedDateTime? = null, + @ColumnInfo(name = COL_LINK) override var link: String? = null, + @ColumnInfo(name = COL_UNREAD) var unread: Boolean = true, + @ColumnInfo(name = COL_NOTIFIED) var notified: Boolean = false, + @ColumnInfo(name = COL_FEEDID) var feedId: Long? = null, + @ColumnInfo(name = COL_FIRSTSYNCEDTIME, typeAffinity = ColumnInfo.INTEGER) var firstSyncedTime: Instant = Instant.EPOCH, + @ColumnInfo(name = COL_PRIMARYSORTTIME, typeAffinity = ColumnInfo.INTEGER) var primarySortTime: Instant = Instant.EPOCH +) : FeedItemForFetching { + + constructor() : this(id = ID_UNSET) + + fun updateFromParsedEntry(entry: Item, entryGuid: String, feed: com.nononsenseapps.jsonfeed.Feed) { + val converter = HtmlToPlainTextConverter() + // Be careful about nulls. + val text = entry.content_html ?: entry.content_text ?: "" + val summary: String? = ( + entry.summary ?: entry.content_text + ?: converter.convert(text) + ).take(MAX_SNIPPET_LENGTH) + + // Make double sure no base64 images are used as thumbnails + val safeImage = when { + entry.image?.startsWith("data") == true -> null + else -> entry.image + } + + val absoluteImage = when { + feed.feed_url != null && safeImage != null -> { + relativeLinkIntoAbsolute(sloppyLinkToStrictURL(feed.feed_url!!), safeImage) + } + else -> safeImage + } + + this.guid = entryGuid + entry.title?.let { this.plainTitle = it.take(MAX_TITLE_LENGTH) } + @Suppress("DEPRECATION") + this.title = this.plainTitle + summary?.let { this.plainSnippet = it } + + this.imageUrl = absoluteImage + this.enclosureLink = entry.attachments?.firstOrNull()?.url + this.author = entry.author?.name ?: feed.author?.name + this.link = entry.url + + this.pubDate = + try { + // Allow an actual pubdate to be updated + ZonedDateTime.parse(entry.date_published) + } catch (t: Throwable) { + // If a pubdate is missing, then don't update if one is already set + this.pubDate ?: ZonedDateTime.now(ZoneOffset.UTC) + } + primarySortTime = minOf(firstSyncedTime, pubDate?.toInstant() ?: firstSyncedTime) + } + + val pubDateString: String? + get() = pubDate?.toString() + + val enclosureFilename: String? + get() { + enclosureLink?.let { enclosureLink -> + var fname: String? = null + try { + fname = URI(enclosureLink).path.split("/").last() + } catch (e: Exception) { + } + return if (fname == null || fname.isEmpty()) { + null + } else { + fname + } + } + return null + } + + val domain: String? + get() { + val l: String? = enclosureLink ?: link + if (l != null) { + try { + return URL(l).host.replace("www.", "") + } catch (e: Throwable) { + } + } + return null + } +} + +interface FeedItemForFetching { + val id: Long + val link: String? +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedItemDao.kt b/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedItemDao.kt new file mode 100644 index 0000000..f039168 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedItemDao.kt @@ -0,0 +1,335 @@ +package com.nononsenseapps.feeder.db.room + +import androidx.paging.DataSource +import androidx.room.Dao +import androidx.room.Delete +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import androidx.room.Update +import com.nononsenseapps.feeder.db.COL_URL +import com.nononsenseapps.feeder.db.FEEDS_TABLE_NAME +import com.nononsenseapps.feeder.model.PreviewItem +import com.nononsenseapps.feeder.model.previewColumns +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.flow.Flow +import java.net.URL + +@FlowPreview +@Dao +interface FeedItemDao { + @Insert(onConflict = OnConflictStrategy.IGNORE) + suspend fun insertFeedItem(item: FeedItem): Long + + @Insert(onConflict = OnConflictStrategy.IGNORE) + suspend fun insertFeedItems(items: List): List + + @Update + suspend fun updateFeedItem(item: FeedItem): Int + + @Update + suspend fun updateFeedItems(items: List): Int + + @Delete + suspend fun deleteFeedItem(item: FeedItem) + + @Query( + """ + DELETE FROM feed_items WHERE id IN (:ids) + """ + ) + suspend fun deleteFeedItems(ids: List) + + @Query( + """ + SELECT id FROM feed_items + WHERE feed_id IS :feedId + ORDER BY primary_sort_time DESC, pub_date DESC + LIMIT -1 OFFSET :keepCount + """ + ) + suspend fun getItemsToBeCleanedFromFeed(feedId: Long, keepCount: Int): List + + @Query("SELECT * FROM feed_items WHERE guid IS :guid AND feed_id IS :feedId") + suspend fun loadFeedItem(guid: String, feedId: Long?): FeedItem? + + @Query("SELECT * FROM feed_items WHERE id IS :id") + suspend fun loadFeedItem(id: Long): FeedItem? + + @Query( + """ + SELECT $feedItemColumnsWithFeed + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE feed_items.id IS :id + """ + ) + suspend fun loadFeedItemWithFeed(id: Long): FeedItemWithFeed? + + @Query( + """ + SELECT $FEEDS_TABLE_NAME.$COL_URL + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE feed_items.id IS :id + """ + ) + suspend fun loadFeedUrlOfFeedItem(id: Long): URL? + + @Query( + """ + SELECT * + FROM feed_items + WHERE feed_items.feed_id = :feedId + ORDER BY primary_sort_time DESC, pub_date DESC + """ + ) + suspend fun loadFeedItemsInFeedDesc(feedId: Long): List + + @Query( + """ + SELECT * + FROM feed_items + WHERE feed_items.feed_id = :feedId + ORDER BY primary_sort_time ASC, pub_date ASC + """ + ) + suspend fun loadFeedItemsInFeedAsc(feedId: Long): List + + @Query( + """ + SELECT $feedItemColumnsWithFeed + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE feed_items.id IS :id + """ + ) + fun loadLiveFeedItem(id: Long): Flow + + @Query( + """ + SELECT $previewColumns + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE feed_id IS :feedId + ORDER BY primary_sort_time DESC, pub_date DESC + """ + ) + fun loadLivePreviewsDesc(feedId: Long): DataSource.Factory + + @Query( + """ + SELECT $previewColumns + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE feed_id IS :feedId + ORDER BY primary_sort_time ASC, pub_date ASC + """ + ) + fun loadLivePreviewsAsc(feedId: Long): DataSource.Factory + + @Query( + """ + SELECT $previewColumns + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE tag IS :tag + ORDER BY primary_sort_time DESC, pub_date DESC + """ + ) + fun loadLivePreviewsDesc(tag: String): DataSource.Factory + + @Query( + """ + SELECT $previewColumns + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE tag IS :tag + ORDER BY primary_sort_time ASC, pub_date ASC + """ + ) + fun loadLivePreviewsAsc(tag: String): DataSource.Factory + + @Query( + """ + SELECT $previewColumns + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + ORDER BY primary_sort_time DESC, pub_date DESC + """ + ) + fun loadLivePreviewsDesc(): DataSource.Factory + + @Query( + """ + SELECT $previewColumns + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + ORDER BY primary_sort_time ASC, pub_date ASC + """ + ) + fun loadLivePreviewsAsc(): DataSource.Factory + + @Query( + """ + SELECT $previewColumns + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE feed_id IS :feedId AND unread IS :unread + ORDER BY primary_sort_time DESC, pub_date DESC + """ + ) + fun loadLiveUnreadPreviewsDesc(feedId: Long?, unread: Boolean = true): DataSource.Factory + + @Query( + """ + SELECT $previewColumns + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE feed_id IS :feedId AND unread IS :unread + ORDER BY primary_sort_time ASC, pub_date ASC + """ + ) + fun loadLiveUnreadPreviewsAsc(feedId: Long?, unread: Boolean = true): DataSource.Factory + + @Query( + """ + SELECT $previewColumns + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE tag IS :tag AND unread IS :unread + ORDER BY primary_sort_time DESC, pub_date DESC + """ + ) + fun loadLiveUnreadPreviewsDesc(tag: String, unread: Boolean = true): DataSource.Factory + + @Query( + """ + SELECT $previewColumns + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE tag IS :tag AND unread IS :unread + ORDER BY primary_sort_time ASC, pub_date ASC + """ + ) + fun loadLiveUnreadPreviewsAsc(tag: String, unread: Boolean = true): DataSource.Factory + + @Query( + """ + SELECT $previewColumns + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE unread IS :unread + ORDER BY primary_sort_time DESC, pub_date DESC + """ + ) + fun loadLiveUnreadPreviewsDesc(unread: Boolean = true): DataSource.Factory + + @Query( + """ + SELECT $previewColumns + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE unread IS :unread + ORDER BY primary_sort_time ASC, pub_date ASC + """ + ) + fun loadLiveUnreadPreviewsAsc(unread: Boolean = true): DataSource.Factory + + @Query( + """ + SELECT $feedItemColumnsWithFeed + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE feed_id IN (:feedIds) AND notified IS 0 AND unread IS 1 + """ + ) + suspend fun loadItemsToNotify(feedIds: List): List + + @Query("UPDATE feed_items SET unread = 0") + suspend fun markAllAsRead() + + @Query("UPDATE feed_items SET unread = 0 WHERE feed_id IS :feedId") + suspend fun markAllAsRead(feedId: Long?) + + @Query( + """ + UPDATE feed_items + SET unread = 0 + WHERE id IN ( + SELECT feed_items.id + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE tag IS :tag + )""" + ) + suspend fun markAllAsRead(tag: String) + + @Query("UPDATE feed_items SET unread = :unread WHERE id IS :id") + suspend fun markAsRead(id: Long, unread: Boolean = false) + + @Query("UPDATE feed_items SET unread = :unread WHERE id IN (:ids)") + suspend fun markAsRead(ids: List, unread: Boolean = false) + + @Query("UPDATE feed_items SET notified = :notified WHERE id IN (:ids)") + suspend fun markAsNotified(ids: List, notified: Boolean = true) + + @Query("UPDATE feed_items SET notified = :notified WHERE id IS :id") + suspend fun markAsNotified(id: Long, notified: Boolean = true) + + @Query( + """ + UPDATE feed_items + SET notified = :notified + WHERE id IN ( + SELECT feed_items.id + FROM feed_items + LEFT JOIN feeds ON feed_items.feed_id = feeds.id + WHERE tag IS :tag + )""" + ) + suspend fun markTagAsNotified(tag: String, notified: Boolean = true) + + @Query("UPDATE feed_items SET notified = :notified") + suspend fun markAllAsNotified(notified: Boolean = true) + + @Query("UPDATE feed_items SET unread = 0, notified = 1 WHERE id IS :id") + suspend fun markAsReadAndNotified(id: Long) +} + +@FlowPreview +suspend fun FeedItemDao.upsertFeedItem(item: FeedItem): Long = when (item.id > ID_UNSET) { + true -> { + updateFeedItem(item) + item.id + } + false -> insertFeedItem(item) +} + +@FlowPreview +suspend fun FeedItemDao.upsertFeedItems( + itemsWithText: List>, + block: suspend (FeedItem, String) -> Unit +) { + val updatedItems = itemsWithText.filter { (item, _) -> + item.id > ID_UNSET + } + updateFeedItems(updatedItems.map { (item, _) -> item }) + + val insertedItems = itemsWithText.filter { (item, _) -> + item.id <= ID_UNSET + } + val insertedIds = insertFeedItems(insertedItems.map { (item, _) -> item }) + + updatedItems.forEach { (item, text) -> + block(item, text) + } + + insertedIds.zip(insertedItems).forEach { (itemId, itemToText) -> + val (item, text) = itemToText + + item.id = itemId + + block(item, text) + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedItemWithFeed.kt b/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedItemWithFeed.kt new file mode 100644 index 0000000..e43f8eb --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedItemWithFeed.kt @@ -0,0 +1,124 @@ +package com.nononsenseapps.feeder.db.room + +import android.os.Bundle +import androidx.room.ColumnInfo +import androidx.room.Ignore +import com.nononsenseapps.feeder.db.COL_AUTHOR +import com.nononsenseapps.feeder.db.COL_CUSTOM_TITLE +import com.nononsenseapps.feeder.db.COL_ENCLOSURELINK +import com.nononsenseapps.feeder.db.COL_FEEDCUSTOMTITLE +import com.nononsenseapps.feeder.db.COL_FEEDID +import com.nononsenseapps.feeder.db.COL_FEEDTITLE +import com.nononsenseapps.feeder.db.COL_FEEDURL +import com.nononsenseapps.feeder.db.COL_FULLTEXT_BY_DEFAULT +import com.nononsenseapps.feeder.db.COL_GUID +import com.nononsenseapps.feeder.db.COL_ID +import com.nononsenseapps.feeder.db.COL_IMAGEURL +import com.nononsenseapps.feeder.db.COL_LINK +import com.nononsenseapps.feeder.db.COL_PLAINSNIPPET +import com.nononsenseapps.feeder.db.COL_PLAINTITLE +import com.nononsenseapps.feeder.db.COL_PUBDATE +import com.nononsenseapps.feeder.db.COL_TAG +import com.nononsenseapps.feeder.db.COL_TITLE +import com.nononsenseapps.feeder.db.COL_UNREAD +import com.nononsenseapps.feeder.db.COL_URL +import com.nononsenseapps.feeder.db.FEEDS_TABLE_NAME +import com.nononsenseapps.feeder.db.FEED_ITEMS_TABLE_NAME +import com.nononsenseapps.feeder.ui.ARG_AUTHOR +import com.nononsenseapps.feeder.ui.ARG_DATE +import com.nononsenseapps.feeder.ui.ARG_ENCLOSURE +import com.nononsenseapps.feeder.ui.ARG_FEED_TITLE +import com.nononsenseapps.feeder.ui.ARG_FEED_URL +import com.nononsenseapps.feeder.ui.ARG_ID +import com.nononsenseapps.feeder.ui.ARG_IMAGEURL +import com.nononsenseapps.feeder.ui.ARG_LINK +import com.nononsenseapps.feeder.ui.ARG_TITLE +import com.nononsenseapps.feeder.util.setLong +import com.nononsenseapps.feeder.util.setString +import com.nononsenseapps.feeder.util.sloppyLinkToStrictURLNoThrows +import org.threeten.bp.ZonedDateTime +import java.net.URI +import java.net.URL + +const val feedItemColumnsWithFeed = "$FEED_ITEMS_TABLE_NAME.$COL_ID AS $COL_ID, $COL_GUID, $FEED_ITEMS_TABLE_NAME.$COL_TITLE AS $COL_TITLE, " + + "$COL_PLAINTITLE, $COL_PLAINSNIPPET, $FEED_ITEMS_TABLE_NAME.$COL_IMAGEURL, $COL_ENCLOSURELINK, " + + "$COL_AUTHOR, $COL_PUBDATE, $COL_LINK, $COL_UNREAD, $FEEDS_TABLE_NAME.$COL_TAG AS $COL_TAG, $FEEDS_TABLE_NAME.$COL_ID AS $COL_FEEDID, " + + "$FEEDS_TABLE_NAME.$COL_TITLE AS $COL_FEEDTITLE, " + + "$FEEDS_TABLE_NAME.$COL_CUSTOM_TITLE AS $COL_FEEDCUSTOMTITLE, " + + "$FEEDS_TABLE_NAME.$COL_URL AS $COL_FEEDURL, " + + "$FEEDS_TABLE_NAME.$COL_FULLTEXT_BY_DEFAULT AS $COL_FULLTEXT_BY_DEFAULT" + +data class FeedItemWithFeed @Ignore constructor( + override var id: Long = ID_UNSET, + var guid: String = "", + @Deprecated("This is never different from plainTitle", replaceWith = ReplaceWith("plainTitle")) + var title: String = "", + @ColumnInfo(name = COL_PLAINTITLE) var plainTitle: String = "", + @ColumnInfo(name = COL_PLAINSNIPPET) var plainSnippet: String = "", + @ColumnInfo(name = COL_IMAGEURL) var imageUrl: String? = null, + @ColumnInfo(name = COL_ENCLOSURELINK) var enclosureLink: String? = null, + var author: String? = null, + @ColumnInfo(name = COL_PUBDATE) var pubDate: ZonedDateTime? = null, + override var link: String? = null, + var tag: String = "", + var unread: Boolean = true, + @ColumnInfo(name = COL_FEEDID) var feedId: Long? = null, + @ColumnInfo(name = COL_FEEDTITLE) var feedTitle: String = "", + @ColumnInfo(name = COL_FEEDCUSTOMTITLE) var feedCustomTitle: String = "", + @ColumnInfo(name = COL_FEEDURL) var feedUrl: URL = sloppyLinkToStrictURLNoThrows(""), + @ColumnInfo(name = COL_FULLTEXT_BY_DEFAULT) var fullTextByDefault: Boolean = false +) : FeedItemForFetching { + constructor() : this(id = ID_UNSET) + + val feedDisplayTitle: String + get() = if (feedCustomTitle.isBlank()) feedTitle else feedCustomTitle + + val enclosureFilename: String? + get() { + enclosureLink?.let { enclosureLink -> + var fname: String? = null + try { + fname = URI(enclosureLink).path.split("/").last() + } catch (e: Exception) { + } + return if (fname == null || fname.isEmpty()) { + null + } else { + fname + } + } + return null + } + + val pubDateString: String? + get() = pubDate?.toString() + + val domain: String? + get() { + val l: String? = enclosureLink ?: link + if (l != null) { + try { + return URL(l).host.replace("www.", "") + } catch (e: Throwable) { + } + } + return null + } + + fun storeInBundle(bundle: Bundle): Bundle { + bundle.storeFeedItem() + return bundle + } + + private fun Bundle.storeFeedItem() { + setLong(ARG_ID to id) + setString(ARG_TITLE to plainTitle) + setString(ARG_LINK to link) + setString(ARG_ENCLOSURE to enclosureLink) + setString(ARG_IMAGEURL to imageUrl) + setString(ARG_FEED_TITLE to feedDisplayTitle) + setString(ARG_AUTHOR to author) + setString(ARG_DATE to pubDateString) + setString(ARG_FEED_URL to feedUrl.toString()) + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedTitle.kt b/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedTitle.kt new file mode 100644 index 0000000..cb33f0d --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/db/room/FeedTitle.kt @@ -0,0 +1,18 @@ +package com.nononsenseapps.feeder.db.room + +import androidx.room.ColumnInfo +import androidx.room.Ignore +import com.nononsenseapps.feeder.db.COL_CUSTOM_TITLE +import com.nononsenseapps.feeder.db.COL_ID +import com.nononsenseapps.feeder.db.COL_TITLE + +data class FeedTitle @Ignore constructor( + @ColumnInfo(name = COL_ID) var id: Long = ID_UNSET, + @ColumnInfo(name = COL_TITLE) var title: String = "", + @ColumnInfo(name = COL_CUSTOM_TITLE) var customTitle: String = "" +) { + constructor() : this(id = ID_UNSET) + + val displayTitle: String + get() = (if (customTitle.isBlank()) title else customTitle) +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/di/NetworkModule.kt b/app/src/main/java/com/nononsenseapps/feeder/di/NetworkModule.kt new file mode 100644 index 0000000..17f8a05 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/di/NetworkModule.kt @@ -0,0 +1,24 @@ +package com.nononsenseapps.feeder.di + +import com.nononsenseapps.feeder.model.FeedParser +import com.nononsenseapps.feeder.ui.CustomTabsWarmer +import com.nononsenseapps.jsonfeed.Feed +import com.nononsenseapps.jsonfeed.JsonFeedParser +import com.nononsenseapps.jsonfeed.feedAdapter +import com.squareup.moshi.JsonAdapter +import kotlinx.coroutines.FlowPreview +import okhttp3.OkHttpClient +import org.kodein.di.Kodein +import org.kodein.di.generic.bind +import org.kodein.di.generic.instance +import org.kodein.di.generic.provider +import org.kodein.di.generic.singleton + +@FlowPreview +val networkModule = Kodein.Module(name = "network") { + // Parsers can carry state so safer to use providers + bind>() with provider { feedAdapter() } + bind() with provider { JsonFeedParser(instance(), instance()) } + bind() with provider { FeedParser(kodein) } + bind() with singleton { CustomTabsWarmer(kodein) } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/di/StateModule.kt b/app/src/main/java/com/nononsenseapps/feeder/di/StateModule.kt new file mode 100644 index 0000000..0bc9b3a --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/di/StateModule.kt @@ -0,0 +1,16 @@ +package com.nononsenseapps.feeder.di + +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.channels.ConflatedBroadcastChannel +import org.kodein.di.Kodein +import org.kodein.di.generic.bind +import org.kodein.di.generic.singleton + +@ExperimentalCoroutinesApi +val stateModule = Kodein.Module(name = "state objects") { + bind>(tag = CURRENTLY_SYNCING_STATE) with singleton { + ConflatedBroadcastChannel(value = false) + } +} + +const val CURRENTLY_SYNCING_STATE = "CurrentlySyncingState" diff --git a/app/src/main/java/com/nononsenseapps/feeder/di/ViewModelModule.kt b/app/src/main/java/com/nononsenseapps/feeder/di/ViewModelModule.kt new file mode 100644 index 0000000..764f3a6 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/di/ViewModelModule.kt @@ -0,0 +1,31 @@ +package com.nononsenseapps.feeder.di + +import com.nononsenseapps.feeder.base.KodeinAwareViewModelFactory +import com.nononsenseapps.feeder.base.activityViewModelProvider +import com.nononsenseapps.feeder.base.bindWithKodeinAwareViewModelFactory +import com.nononsenseapps.feeder.model.EphemeralState +import com.nononsenseapps.feeder.model.FeedItemViewModel +import com.nononsenseapps.feeder.model.FeedItemsViewModel +import com.nononsenseapps.feeder.model.FeedListViewModel +import com.nononsenseapps.feeder.model.FeedViewModel +import com.nononsenseapps.feeder.model.SettingsViewModel +import com.nononsenseapps.feeder.model.TextToSpeechViewModel +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.FlowPreview +import org.kodein.di.Kodein +import org.kodein.di.generic.bind +import org.kodein.di.generic.singleton + +@FlowPreview +@ExperimentalCoroutinesApi +val viewModelModule = Kodein.Module(name = "view models") { + bind() with singleton { KodeinAwareViewModelFactory(kodein) } + bindWithKodeinAwareViewModelFactory() + bindWithKodeinAwareViewModelFactory() + bindWithKodeinAwareViewModelFactory() + bindWithKodeinAwareViewModelFactory() + bindWithKodeinAwareViewModelFactory() + bindWithKodeinAwareViewModelFactory() + + bind() with activityViewModelProvider() +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/EphemeralState.kt b/app/src/main/java/com/nononsenseapps/feeder/model/EphemeralState.kt new file mode 100644 index 0000000..8f6032d --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/EphemeralState.kt @@ -0,0 +1,26 @@ +package com.nononsenseapps.feeder.model + +import com.nononsenseapps.feeder.base.KodeinAwareViewModel +import com.nononsenseapps.feeder.db.room.ID_UNSET +import org.kodein.di.Kodein + +/** + * Should only be created with the activity as its lifecycle + */ +class EphemeralState(kodein: Kodein) : KodeinAwareViewModel(kodein) { + var lastOpenFeedId: Long = ID_UNSET + set(value) { + if (value != lastOpenFeedId) { + firstVisibleListItem = null + } + field = value + } + var lastOpenFeedTag: String = "" + set(value) { + if (value != lastOpenFeedTag) { + firstVisibleListItem = null + } + field = value + } + var firstVisibleListItem: Int? = null +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/FeedItemViewModel.kt b/app/src/main/java/com/nononsenseapps/feeder/model/FeedItemViewModel.kt new file mode 100644 index 0000000..185a455 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/FeedItemViewModel.kt @@ -0,0 +1,258 @@ +package com.nononsenseapps.feeder.model + +import android.app.Activity +import android.app.Application +import android.graphics.Point +import android.text.SpannableString +import android.text.Spanned +import android.text.style.ImageSpan +import android.util.Log +import androidx.lifecycle.LiveData +import androidx.lifecycle.LiveDataScope +import androidx.lifecycle.asLiveData +import androidx.lifecycle.liveData +import androidx.lifecycle.viewModelScope +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.base.KodeinAwareViewModel +import com.nononsenseapps.feeder.blob.blobFullFile +import com.nononsenseapps.feeder.blob.blobFullInputStream +import com.nononsenseapps.feeder.blob.blobInputStream +import com.nononsenseapps.feeder.db.room.FeedItemDao +import com.nononsenseapps.feeder.db.room.FeedItemWithFeed +import com.nononsenseapps.feeder.ui.text.UrlClickListener +import com.nononsenseapps.feeder.ui.text.toSpannedWithImages +import com.nononsenseapps.feeder.ui.text.toSpannedWithNoImages +import com.nononsenseapps.feeder.util.TabletUtils +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.withContext +import okhttp3.OkHttpClient +import org.kodein.di.Kodein +import org.kodein.di.generic.instance +import java.io.InputStream +import java.net.URL +import kotlin.math.roundToInt + +@FlowPreview +class FeedItemViewModel(kodein: Kodein) : KodeinAwareViewModel(kodein) { + private val dao: FeedItemDao by instance() + val context: Application by instance() + private val okHttpClient: OkHttpClient by instance() + + private lateinit var liveItem: LiveData + private lateinit var feedItem: FeedItemWithFeed + + private lateinit var liveDefaultText: LiveData + private var currentDefaultTextOptions: TextOptions? = null + + private lateinit var liveFullText: LiveData + private var currentFullTextOptions: TextOptions? = null + + private var fragmentUrlClickListener: UrlClickListener? = null + + fun getLiveItem(id: Long): LiveData { + if (!this::liveItem.isInitialized) { + liveItem = dao.loadLiveFeedItem(id).asLiveData() + } + return liveItem + } + + suspend fun getItem(id: Long): FeedItemWithFeed { + if (!this::feedItem.isInitialized || feedItem.id != id) { + feedItem = dao.loadFeedItemWithFeed(id) ?: error("no such item $id") + } + return feedItem + } + + suspend fun getLiveTextMaybeFull( + options: TextOptions, + urlClickListener: UrlClickListener? + ): LiveData = + when (getItem(options.itemId).fullTextByDefault) { + true -> getLiveFullText(options, urlClickListener) + false -> getLiveDefaultText(options, urlClickListener) + } + + suspend fun getLiveDefaultText( + options: TextOptions, + urlClickListener: UrlClickListener? + ): LiveData { + // Always update urlClickListener + fragmentUrlClickListener = urlClickListener + + if (this::liveDefaultText.isInitialized && currentDefaultTextOptions == options) { + Log.d("FeederItemViewModel", "Requested default text for old options: $options") + return liveDefaultText + } + + Log.d("FeederItemViewModel", "Requested default text for new options: $options") + + liveDefaultText = liveData(context = viewModelScope.coroutineContext) { + loadTextFrom(options) { + blobInputStream( + itemId = options.itemId, + filesDir = context.filesDir + ) + } + } + + currentDefaultTextOptions = options + return liveDefaultText + } + + fun getLiveFullText( + options: TextOptions, + urlClickListener: UrlClickListener? + ): LiveData { + // Always update urlClickListener + fragmentUrlClickListener = urlClickListener + + if (this::liveFullText.isInitialized && currentFullTextOptions == options) { + Log.d("FeederItemViewModel", "Requested full text for old options: $options") + return liveFullText + } + + Log.d("FeederItemViewModel", "Requested full text for new options: $options") + + liveFullText = liveData(context = viewModelScope.coroutineContext) { + val fullTextPresent = fetchFullArticleIfMissing( + itemId = options.itemId + ) + if (fullTextPresent) { + loadTextFrom(options) { + blobFullInputStream( + itemId = options.itemId, + filesDir = context.filesDir + ) + } + } + } + + currentFullTextOptions = options + return liveFullText + } + + suspend fun markAsRead(id: Long, unread: Boolean = false) = dao.markAsRead(id = id, unread = unread) + suspend fun markAsReadAndNotified(id: Long) = dao.markAsReadAndNotified(id = id) + + private suspend fun LiveDataScope.loadTextFrom( + options: TextOptions, + streamProvider: () -> InputStream + ) { + val feedUrl = dao.loadFeedUrlOfFeedItem(id = options.itemId) + ?: URL("https://missing.feedurl") + + Log.d("FeederItemViewModel", "Loading noImages for $options") + val hasImageSpans = try { + val noImages = withContext(Dispatchers.IO) { + streamProvider().bufferedReader().use { reader -> + toSpannedWithNoImages( + kodein = kodein, + source = reader, + siteUrl = feedUrl, + maxSize = options.maxImageSize, + urlClickListener = { link -> + fragmentUrlClickListener?.invoke(link) + } + ) + } + } + emit(noImages) + noImages.getAllImageSpans().isNotEmpty() + } catch (e: Exception) { + Log.e( + "FeederItemViewModel", + "Failed to load text with no images for $options", + e + ) + emit( + SpannableString("Could not read blob for item with id [${options.itemId}]") + ) + false + } + + try { + if (hasImageSpans) { + Log.d("FeederItemViewModel", "Loading withImages for $options") + val withImages = withContext(Dispatchers.IO) { + streamProvider().bufferedReader().use { reader -> + toSpannedWithImages( + kodein = kodein, + source = reader, + siteUrl = feedUrl, + maxSize = options.maxImageSize, + urlClickListener = { link -> + fragmentUrlClickListener?.invoke(link) + } + ) + } + } + emit( + withImages + ) + } + } catch (e: Exception) { + Log.e( + "FeederItemViewModel", + "Failed to load text with images for $options", + e + ) + } + } + + private suspend fun LiveDataScope.fetchFullArticleIfMissing(itemId: Long): Boolean { + return if (blobFullFile(itemId, context.filesDir).isFile) { + true + } else { + Log.d("FeederItemViewModel", "Fetching full text for $itemId") + emit(SpannableString(context.getString(R.string.fetching_full_article))) + + val item = dao.loadFeedItem(itemId) + + if (item == null) { + Log.e("FeederItemViewModel", "No such item: $itemId") + emit(SpannableString(context.getString(R.string.failed_to_fetch_full_article))) + return false + } + + val (result, throwable) = parseFullArticle( + item, + okHttpClient, + context.filesDir + ) + + if (!result) { + var reason = context.getString(R.string.failed_to_fetch_full_article) + if (throwable != null) { + reason += "\n${throwable.message}" + } + emit(SpannableString(reason)) + } + + return result + } + } +} + +internal fun Activity.maxImageSize(): Point { + val size = Point() + windowManager?.defaultDisplay?.getSize(size) + if (TabletUtils.isTablet(this)) { + // Using twice window height since we do scroll vertically + size.set(resources.getDimension(R.dimen.reader_tablet_width).roundToInt(), 2 * size.y) + } else { + // Base it on window size + size.set(size.x - 2 * resources.getDimension(R.dimen.keyline_1).roundToInt(), 2 * size.y) + } + + return size +} + +private fun Spanned.getAllImageSpans(): Array = + getSpans(0, length, ImageSpan::class.java) ?: emptyArray() + +data class TextOptions( + val itemId: Long, + val maxImageSize: Point, + val nightMode: Boolean +) diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/FeedItemsViewModel.kt b/app/src/main/java/com/nononsenseapps/feeder/model/FeedItemsViewModel.kt new file mode 100644 index 0000000..108091d --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/FeedItemsViewModel.kt @@ -0,0 +1,136 @@ +package com.nononsenseapps.feeder.model + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.Transformations +import androidx.paging.DataSource +import androidx.paging.LivePagedListBuilder +import androidx.paging.PagedList +import com.nononsenseapps.feeder.base.KodeinAwareViewModel +import com.nononsenseapps.feeder.db.room.FeedItem +import com.nononsenseapps.feeder.db.room.FeedItemDao +import com.nononsenseapps.feeder.db.room.ID_ALL_FEEDS +import com.nononsenseapps.feeder.db.room.ID_UNSET +import kotlinx.coroutines.FlowPreview +import org.kodein.di.Kodein +import org.kodein.di.generic.instance + +private val PAGE_SIZE = 50 + +@FlowPreview +class FeedItemsViewModel(kodein: Kodein) : KodeinAwareViewModel(kodein) { + private val dao: FeedItemDao by instance() + private val liveOnlyUnread = MutableLiveData() + private val liveNewestFirst = MutableLiveData() + + init { + liveOnlyUnread.value = true + liveNewestFirst.value = true + } + + private lateinit var livePagedAll: LiveData> + private lateinit var livePagedUnread: LiveData> + private lateinit var livePreviews: LiveData> + + fun getLiveDbPreviews(feedId: Long, tag: String): LiveData> { + if (!this::livePreviews.isInitialized) { + livePagedAll = Transformations.switchMap(liveNewestFirst) { newestFirst -> + LivePagedListBuilder( + when { + feedId > ID_UNSET -> loadLivePreviews(feedId = feedId, newestFirst = newestFirst) + feedId == ID_ALL_FEEDS -> loadLivePreviews(newestFirst = newestFirst) + tag.isNotEmpty() -> loadLivePreviews(tag = tag, newestFirst = newestFirst) + else -> throw IllegalArgumentException("Tag was empty, but no valid feed id was provided either") + }, + PAGE_SIZE + ).build() + } + + livePagedUnread = Transformations.switchMap(liveNewestFirst) { newestFirst -> + LivePagedListBuilder( + when { + feedId > ID_UNSET -> loadLiveUnreadPreviews(feedId = feedId, newestFirst = newestFirst) + feedId == ID_ALL_FEEDS -> loadLiveUnreadPreviews(newestFirst = newestFirst) + tag.isNotEmpty() -> loadLiveUnreadPreviews(tag = tag, newestFirst = newestFirst) + else -> throw IllegalArgumentException("Tag was empty, but no valid feed id was provided either") + }, + PAGE_SIZE + ).build() + } + + livePreviews = Transformations.switchMap(liveOnlyUnread) { onlyUnread -> + if (onlyUnread) { + livePagedUnread + } else { + livePagedAll + } + } + } + return livePreviews + } + + fun setOnlyUnread(onlyUnread: Boolean) { + liveOnlyUnread.value = onlyUnread + } + + fun setNewestFirst(newestFirst: Boolean) { + liveNewestFirst.value = newestFirst + } + + suspend fun markAllAsRead(feedId: Long, tag: String) { + when { + feedId > ID_UNSET -> dao.markAllAsRead(feedId) + feedId == ID_ALL_FEEDS -> dao.markAllAsRead() + tag.isNotEmpty() -> dao.markAllAsRead(tag) + } + } + + suspend fun toggleReadState(feedItem: PreviewItem) { + dao.markAsRead(feedItem.id, unread = !feedItem.unread) + cancelNotification(getApplication(), feedItem.id) + } + + suspend fun markAsNotified(feedId: Long, tag: String) = when { + feedId > ID_UNSET -> dao.markAsNotified(feedId) + feedId == ID_ALL_FEEDS -> dao.markAllAsNotified() + tag.isNotEmpty() -> dao.markTagAsNotified(tag) + else -> error("Invalid input for markAsNotified") + } + + suspend fun markAsNotified(ids: List, notified: Boolean = true) = + dao.markAsNotified(ids = ids, notified = notified) + + suspend fun markAsRead(ids: List, unread: Boolean = false) = + dao.markAsRead(ids = ids, unread = unread) + + suspend fun markAsRead(id: Long, unread: Boolean = false) = + dao.markAsRead(id = id, unread = unread) + + suspend fun loadFeedItemsInFeed(feedId: Long, newestFirst: Boolean): List { + return if (newestFirst) dao.loadFeedItemsInFeedDesc(feedId) else dao.loadFeedItemsInFeedAsc(feedId) + } + + fun loadLivePreviews(feedId: Long, newestFirst: Boolean): DataSource.Factory { + return if (newestFirst) dao.loadLivePreviewsDesc(feedId) else dao.loadLivePreviewsAsc(feedId) + } + + fun loadLivePreviews(tag: String, newestFirst: Boolean): DataSource.Factory { + return if (newestFirst) dao.loadLivePreviewsDesc(tag) else dao.loadLivePreviewsAsc(tag) + } + + fun loadLivePreviews(newestFirst: Boolean): DataSource.Factory { + return if (newestFirst) dao.loadLivePreviewsDesc() else dao.loadLivePreviewsAsc() + } + + fun loadLiveUnreadPreviews(feedId: Long?, unread: Boolean = true, newestFirst: Boolean): DataSource.Factory { + return if (newestFirst) dao.loadLiveUnreadPreviewsDesc(feedId, unread) else dao.loadLiveUnreadPreviewsAsc(feedId, unread) + } + + fun loadLiveUnreadPreviews(tag: String, unread: Boolean = true, newestFirst: Boolean): DataSource.Factory { + return if (newestFirst) dao.loadLiveUnreadPreviewsDesc(tag, unread) else dao.loadLiveUnreadPreviewsAsc(tag, unread) + } + + fun loadLiveUnreadPreviews(unread: Boolean = true, newestFirst: Boolean): DataSource.Factory { + return if (newestFirst) dao.loadLiveUnreadPreviewsDesc(unread) else dao.loadLiveUnreadPreviewsAsc(unread) + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/FeedListViewModel.kt b/app/src/main/java/com/nononsenseapps/feeder/model/FeedListViewModel.kt new file mode 100644 index 0000000..90f1c54 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/FeedListViewModel.kt @@ -0,0 +1,53 @@ +package com.nononsenseapps.feeder.model + +import androidx.collection.ArrayMap +import androidx.lifecycle.LiveData +import androidx.lifecycle.liveData +import androidx.lifecycle.viewModelScope +import com.nononsenseapps.feeder.base.KodeinAwareViewModel +import com.nononsenseapps.feeder.db.room.FeedDao +import com.nononsenseapps.feeder.db.room.ID_ALL_FEEDS +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.flow.collectLatest +import org.kodein.di.Kodein +import org.kodein.di.generic.instance +import kotlin.collections.set + +@ExperimentalCoroutinesApi +class FeedListViewModel(kodein: Kodein) : KodeinAwareViewModel(kodein) { + private val dao: FeedDao by instance() + private val feedsWithUnreadCounts = dao.loadLiveFeedsWithUnreadCounts() + + val liveFeedsAndTagsWithUnreadCounts: LiveData> by lazy { + liveData>(viewModelScope.coroutineContext + Dispatchers.Default, 5000L) { + feedsWithUnreadCounts.collectLatest { feeds -> + val topTag = FeedUnreadCount(id = ID_ALL_FEEDS) + val tags: MutableMap = ArrayMap() + val data: MutableList = mutableListOf(topTag) + + feeds.forEach { feed -> + if (feed.tag.isNotEmpty()) { + if (!tags.contains(feed.tag)) { + val tag = FeedUnreadCount(tag = feed.tag) + data.add(tag) + tags[feed.tag] = tag + } + + tags[feed.tag]?.let { tag -> + tag.unreadCount += feed.unreadCount + } + } + + topTag.unreadCount += feed.unreadCount + + data.add(feed) + } + + data.sortWith(Comparator { a, b -> a.compareTo(b) }) + + emit(data) + } + } + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/FeedParser.kt b/app/src/main/java/com/nononsenseapps/feeder/model/FeedParser.kt new file mode 100644 index 0000000..f59f1fa --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/FeedParser.kt @@ -0,0 +1,378 @@ +package com.nononsenseapps.feeder.model + +import android.util.Log +import com.nononsenseapps.feeder.util.asFeed +import com.nononsenseapps.feeder.util.relativeLinkIntoAbsolute +import com.nononsenseapps.feeder.util.relativeLinkIntoAbsoluteOrThrow +import com.nononsenseapps.feeder.util.sloppyLinkToStrictURL +import com.nononsenseapps.jsonfeed.Feed +import com.nononsenseapps.jsonfeed.JsonFeedParser +import com.rometools.rome.io.SyndFeedInput +import com.rometools.rome.io.XmlReader +import kotlinx.coroutines.Dispatchers.IO +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.withContext +import okhttp3.Authenticator +import okhttp3.CacheControl +import okhttp3.Credentials +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response +import okhttp3.Route +import okio.Buffer +import okio.GzipSource +import org.jsoup.Jsoup +import org.jsoup.nodes.Document +import org.kodein.di.Kodein +import org.kodein.di.KodeinAware +import org.kodein.di.generic.instance +import java.io.EOFException +import java.io.IOException +import java.io.InputStream +import java.net.MalformedURLException +import java.net.URL +import java.net.URLDecoder +import java.nio.charset.Charset +import java.util.concurrent.TimeUnit + +val slashPattern = """<\s*slash:comments\s*/>""".toRegex(RegexOption.IGNORE_CASE) +private const val YOUTUBE_CHANNEL_ID_ATTR = "data-channel-external-id" + +@FlowPreview +class FeedParser(override val kodein: Kodein) : KodeinAware { + private val client: OkHttpClient by instance() + private val jsonFeedParser: JsonFeedParser by instance() + + /** + * Finds the preferred alternate link in the header of an HTML/XML document pointing to feeds. + */ + fun findFeedUrl( + html: String, + preferRss: Boolean = false, + preferAtom: Boolean = false, + preferJSON: Boolean = false + ): URL? { + + val feedLinks = getAlternateFeedLinksInHtml(html) + .sortedBy { + val t = it.second.toLowerCase() + when { + preferAtom && t.contains("atom") -> "0" + preferRss && t.contains("rss") -> "1" + preferJSON && t.contains("json") -> "2" + else -> t + } + } + .map { + sloppyLinkToStrictURL(it.first) to it.second + } + + return feedLinks.firstOrNull()?.first + } + + /** + * Returns all alternate links in the header of an HTML/XML document pointing to feeds. + */ + suspend fun getAlternateFeedLinksAtUrl(url: URL): List> { + return try { + val html = curl(url) + when { + html != null -> getAlternateFeedLinksInHtml(html, baseUrl = url) + else -> emptyList() + } + } catch (t: Throwable) { + Log.e("FeedParser", "Error when fetching alternate links", t) + emptyList() + } + } + + /** + * Returns all alternate links in the HTML/XML document pointing to feeds. + */ + fun getAlternateFeedLinksInHtml(html: String, baseUrl: URL? = null): List> { + val doc = Jsoup.parse(html.byteInputStream(), "UTF-8", "") + + val feeds = doc.getElementsByAttributeValue("rel", "alternate") + ?.filter { it.hasAttr("href") && it.hasAttr("type") } + ?.filter { + val t = it.attr("type").toLowerCase() + when { + t.contains("application/atom") -> true + t.contains("application/rss") -> true + // Youtube for example has alternate links with application/json+oembed type. + t == "application/json" -> true + else -> false + } + } + ?.filter { + val l = it.attr("href").toLowerCase() + try { + if (baseUrl != null) { + relativeLinkIntoAbsoluteOrThrow(base = baseUrl, link = l) + } else { + URL(l) + } + true + } catch (_: MalformedURLException) { + false + } + } + ?.map { + when { + baseUrl != null -> relativeLinkIntoAbsolute(base = baseUrl, link = it.attr("href")) to it.attr("type") + else -> sloppyLinkToStrictURL(it.attr("href")).toString() to it.attr("type") + } + } ?: emptyList() + + return when { + feeds.isNotEmpty() -> feeds + baseUrl?.host == "www.youtube.com" || baseUrl?.host == "youtube.com" -> findFeedLinksForYoutube(doc) + else -> emptyList() + } + } + + private fun findFeedLinksForYoutube(doc: Document): List> { + val channelId: String? = doc.body()?.getElementsByAttribute(YOUTUBE_CHANNEL_ID_ATTR) + ?.firstOrNull() + ?.attr(YOUTUBE_CHANNEL_ID_ATTR) + + return when (channelId) { + null -> emptyList() + else -> listOf("https://www.youtube.com/feeds/videos.xml?channel_id=$channelId" to "atom") + } + } + + /** + * @throws IOException if request fails due to network issue for example + */ + private suspend fun curl(url: URL) = client.curl(url) + + /** + * @throws IOException if request fails due to network issue for example + */ + private suspend fun curlAndOnResponse(url: URL, block: (suspend (Response) -> Unit)) = + client.curlAndOnResponse(url, block) + + @Throws(FeedParsingError::class) + suspend fun parseFeedUrl(url: URL): Feed? { + try { + var result: Feed? = null + curlAndOnResponse(url) { + result = parseFeedResponse(it) + } + // Preserve original URL to maintain authentication data and/or tokens in query params + return result?.copy(feed_url = url.toString()) + } catch (e: Throwable) { + throw FeedParsingError(url, e) + } + } + + @Throws(FeedParsingError::class) + fun parseFeedResponse(response: Response): Feed? = + response.safeBody()?.let { body -> + parseFeedResponse(response, body) + } + + /** + * Takes body as bytes to handle encoding correctly + */ + @Throws(FeedParsingError::class) + fun parseFeedResponse(response: Response, body: ByteArray): Feed { + try { + val feed = when ((response.header("content-type") ?: "").contains("json")) { + true -> jsonFeedParser.parseJsonBytes(body) + false -> parseRssAtomBytes(response.request.url.toUrl(), body) + } + + return if (feed.feed_url == null) { + // Nice to return non-null value here + feed.copy(feed_url = response.request.url.toString()) + } else { + feed + } + } catch (e: Throwable) { + throw FeedParsingError(response.request.url.toUrl(), e) + } + } + + /** + * Takes body as bytes to handle encoding correctly + */ + @Throws(FeedParsingError::class) + suspend fun parseFeedResponseOrFallbackToAlternateLink(response: Response): Feed? = + response.body?.use { responseBody -> + responseBody.bytes().let { body -> + // Encoding is not an issue for reading HTML (probably) + val alternateFeedLink = findFeedUrl(String(body), preferAtom = true) + + return if (alternateFeedLink != null) { + parseFeedUrl(alternateFeedLink) + } else { + parseFeedResponse(response, body) + } + } + } + + @Throws(FeedParsingError::class) + internal fun parseRssAtomBytes(baseUrl: URL, feedXml: ByteArray): Feed { + try { + feedXml.inputStream().use { return parseFeedInputStream(baseUrl, it) } + } catch (e: NumberFormatException) { + try { + // Try to work around bug in Rome + var encoding: String? = null + val xml: String = slashPattern.replace( + feedXml.inputStream().use { + XmlReader(it).use { + encoding = it.encoding + it.readText() + } + }, + "" + ) + + xml.byteInputStream(Charset.forName(encoding ?: "UTF-8")).use { + return parseFeedInputStream(baseUrl, it) + } + } catch (e: Throwable) { + throw FeedParsingError(baseUrl, e) + } + } + } + + @Throws(FeedParsingError::class) + internal fun parseFeedInputStream(baseUrl: URL, `is`: InputStream): Feed { + `is`.use { + try { + val feed = XmlReader(`is`).use { SyndFeedInput().build(it) } + return feed.asFeed(baseUrl = baseUrl) + } catch (e: NumberFormatException) { + throw e + } catch (e: Throwable) { + throw FeedParsingError(baseUrl, e) + } + } + } + + class FeedParsingError(val url: URL, e: Throwable) : Exception(e.message, e) +} + +fun Response.safeBody(): ByteArray? { + return this.body?.use { body -> + if (header("Transfer-Encoding") == "chunked") { + val source = + if (header("Content-Encoding") == "gzip") { + GzipSource(body.source()) + } else { + body.source() + } + val buffer = Buffer() + try { + var readBytes: Long = 0 + while (readBytes != -1L) { + readBytes = source.read(buffer, Long.MAX_VALUE) + } + } catch (e: EOFException) { + // This is not always fatal - sometimes the server might have sent the wrong + // content-length (I suspect) + Log.e( + "FeedParser", + "Encountered EOF exception while parsing response with headers: $headers", + e + ) + } + buffer.readByteArray() + } else { + body.bytes() + } + } +} + +suspend fun OkHttpClient.getResponse(url: URL, forceNetwork: Boolean = false): Response { + val request = Request.Builder() + .url(url) + .cacheControl( + CacheControl.Builder() + .let { + if (forceNetwork) { + // Force a cache revalidation + it.maxAge(0, TimeUnit.SECONDS) + } else { + // Do a cache revalidation at most every minute + it.maxAge(1, TimeUnit.MINUTES) + } + } + .build() + ) + .build() + + val clientToUse = if (url.userInfo?.isNotBlank() == true) { + val parts = url.userInfo.split(':') + val user = parts.first() + val pass = if (parts.size > 1) { + parts[1] + } else { + "" + } + val decodedUser = URLDecoder.decode(user, "UTF-8") + val decodedPass = URLDecoder.decode(pass, "UTF-8") + val credentials = Credentials.basic(decodedUser, decodedPass) + newBuilder() + .authenticator(object: Authenticator { + override fun authenticate(route: Route?, response: Response): Request? { + return when { + response.request.header("Authorization") != null -> { + null + } + else -> { + response.request.newBuilder() + .header("Authorization", credentials) + .build() + } + } + } + }) + .proxyAuthenticator(object: Authenticator { + override fun authenticate(route: Route?, response: Response): Request? { + return when { + response.request.header("Proxy-Authorization") != null -> { + null + } + else -> { + response.request.newBuilder() + .header("Proxy-Authorization", credentials) + .build() + } + } + } + + }) + .build() + } else { + this + } + + return withContext(IO) { + clientToUse.newCall(request).execute() + } +} + +suspend fun OkHttpClient.curl(url: URL): String? { + var result: String? = null + curlAndOnResponse(url) { + result = it.body?.string() + } + return result +} + +suspend fun OkHttpClient.curlAndOnResponse(url: URL, block: (suspend (Response) -> Unit)) { + val response = getResponse(url) + + if (!response.isSuccessful) { + throw IOException("Unexpected code $response") + } + + response.use { + block(it) + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/FeedSyncer.kt b/app/src/main/java/com/nononsenseapps/feeder/model/FeedSyncer.kt new file mode 100644 index 0000000..26209d3 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/FeedSyncer.kt @@ -0,0 +1,168 @@ +package com.nononsenseapps.feeder.model + +import android.content.Context +import androidx.work.Constraints +import androidx.work.CoroutineWorker +import androidx.work.ExistingPeriodicWorkPolicy +import androidx.work.NetworkType +import androidx.work.OneTimeWorkRequestBuilder +import androidx.work.PeriodicWorkRequestBuilder +import androidx.work.WorkManager +import androidx.work.WorkerParameters +import androidx.work.workDataOf +import com.nononsenseapps.feeder.db.room.ID_UNSET +import com.nononsenseapps.feeder.di.CURRENTLY_SYNCING_STATE +import com.nononsenseapps.feeder.ui.ARG_FEED_ID +import com.nononsenseapps.feeder.ui.ARG_FEED_TAG +import com.nononsenseapps.feeder.util.Prefs +import com.nononsenseapps.feeder.util.currentlyCharging +import com.nononsenseapps.feeder.util.currentlyConnected +import com.nononsenseapps.feeder.util.currentlyUnmetered +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.channels.ConflatedBroadcastChannel +import org.kodein.di.Kodein +import org.kodein.di.KodeinAware +import org.kodein.di.android.closestKodein +import org.kodein.di.generic.instance +import java.util.concurrent.TimeUnit + +const val ARG_FORCE_NETWORK = "force_network" + +const val UNIQUE_PERIODIC_NAME = "feeder_periodic" +const val PARALLEL_SYNC = "parallel_sync" +const val MIN_FEED_AGE_MINUTES = "min_feed_age_minutes" +const val IGNORE_CONNECTIVITY_SETTINGS = "ignore_connectivity_settings" + +fun isOkToSyncAutomatically(context: Context): Boolean { + val kodein: Kodein by closestKodein(context) + val prefs: Prefs by kodein.instance() + return ( + currentlyConnected(context) && + (!prefs.onlySyncWhileCharging || currentlyCharging(context)) && + (!prefs.onlySyncOnWIfi || currentlyUnmetered(context)) + ) +} + +@FlowPreview +@ExperimentalCoroutinesApi +class FeedSyncer(val context: Context, workerParams: WorkerParameters) : CoroutineWorker(context, workerParams), KodeinAware { + override val kodein: Kodein by closestKodein(context) + private val currentlySyncing: ConflatedBroadcastChannel by instance(tag = CURRENTLY_SYNCING_STATE) + + override suspend fun doWork(): Result { + val goParallel = inputData.getBoolean(PARALLEL_SYNC, false) + val ignoreConnectivitySettings = inputData.getBoolean(IGNORE_CONNECTIVITY_SETTINGS, false) + + var success = false + + if (ignoreConnectivitySettings || isOkToSyncAutomatically(context)) { + if (!currentlySyncing.isClosedForSend) { + currentlySyncing.offer(true) + } + + val feedId = inputData.getLong(ARG_FEED_ID, ID_UNSET) + val feedTag = inputData.getString(ARG_FEED_TAG) ?: "" + val forceNetwork = inputData.getBoolean(ARG_FORCE_NETWORK, false) + val minFeedAgeMinutes = inputData.getInt(MIN_FEED_AGE_MINUTES, 15) + + success = syncFeeds( + context = applicationContext, + feedId = feedId, + feedTag = feedTag, + forceNetwork = forceNetwork, + parallel = goParallel, + minFeedAgeMinutes = minFeedAgeMinutes + ) + // Send notifications for configured feeds + notify(applicationContext) + } + + if (!currentlySyncing.isClosedForSend) { + currentlySyncing.offer(false) + } + + return when (success) { + true -> Result.success() + false -> Result.failure() + } + } +} + +@FlowPreview +@ExperimentalCoroutinesApi +fun requestFeedSync( + kodein: Kodein, + feedId: Long = ID_UNSET, + feedTag: String = "", + ignoreConnectivitySettings: Boolean = false, + forceNetwork: Boolean = false, + parallell: Boolean = false +) { + val workRequest = OneTimeWorkRequestBuilder() + + val data = workDataOf( + ARG_FEED_ID to feedId, + ARG_FEED_TAG to feedTag, + PARALLEL_SYNC to parallell, + IGNORE_CONNECTIVITY_SETTINGS to ignoreConnectivitySettings, + ARG_FORCE_NETWORK to forceNetwork + ) + + workRequest.setInputData(data) + val workManager by kodein.instance() + workManager.enqueue(workRequest.build()) +} + +@FlowPreview +@ExperimentalCoroutinesApi +fun configurePeriodicSync(context: Context, forceReplace: Boolean = false) { + val kodein by closestKodein(context) + val workManager: WorkManager by kodein.instance() + val prefs: Prefs by kodein.instance() + val shouldSync = prefs.shouldSync() + + if (shouldSync) { + val constraints = Constraints.Builder() + .setRequiresBatteryNotLow(true) + .setRequiresCharging(prefs.onlySyncWhileCharging) + + if (prefs.onlySyncOnWIfi) { + constraints.setRequiredNetworkType(NetworkType.UNMETERED) + } else { + constraints.setRequiredNetworkType(NetworkType.CONNECTED) + } + + var timeInterval = prefs.synchronizationFrequency + + if (timeInterval in 1..12 || timeInterval == 24L) { + // Old value for periodic sync was in hours, convert it to minutes + timeInterval *= 60 + prefs.synchronizationFrequency = timeInterval + } + + val workRequestBuilder = PeriodicWorkRequestBuilder( + timeInterval, TimeUnit.MINUTES, + timeInterval / 2, TimeUnit.MINUTES + ) + + val syncWork = workRequestBuilder + .setConstraints(constraints.build()) + .addTag("periodic_sync") + .build() + + val existingWorkPolicy = if (forceReplace) { + ExistingPeriodicWorkPolicy.REPLACE + } else { + ExistingPeriodicWorkPolicy.KEEP + } + + workManager.enqueueUniquePeriodicWork( + UNIQUE_PERIODIC_NAME, + existingWorkPolicy, + syncWork + ) + } else { + workManager.cancelUniqueWork(UNIQUE_PERIODIC_NAME) + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/FeedUnreadCount.kt b/app/src/main/java/com/nononsenseapps/feeder/model/FeedUnreadCount.kt new file mode 100644 index 0000000..4ad29ed --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/FeedUnreadCount.kt @@ -0,0 +1,74 @@ +package com.nononsenseapps.feeder.model + +import androidx.room.ColumnInfo +import androidx.room.Ignore +import com.nononsenseapps.feeder.db.room.ID_ALL_FEEDS +import com.nononsenseapps.feeder.db.room.ID_UNSET +import com.nononsenseapps.feeder.util.sloppyLinkToStrictURLNoThrows +import java.net.URL + +data class FeedUnreadCount @Ignore constructor( + var id: Long = ID_UNSET, + var title: String = "", + var url: URL = sloppyLinkToStrictURLNoThrows(""), + var tag: String = "", + @ColumnInfo(name = "custom_title") var customTitle: String = "", + var notify: Boolean = false, + @ColumnInfo(name = "image_url") var imageUrl: URL? = null, + @ColumnInfo(name = "unread_count") var unreadCount: Int = 0 +) { + constructor() : this(id = ID_UNSET) + + val displayTitle: String + get() = (if (customTitle.isBlank()) title else customTitle) + + val isTop: Boolean + get() = id == ID_ALL_FEEDS + + val isTag: Boolean + get() = id < 1 && tag.isNotEmpty() + + operator fun compareTo(other: FeedUnreadCount): Int { + return when { + // Top tag is always at the top (implies empty tags) + isTop -> -1 + other.isTop -> 1 + // Feeds with no tags are always last + isTag && !other.isTag && other.tag.isEmpty() -> -1 + !isTag && other.isTag && tag.isEmpty() -> 1 + !isTag && !other.isTag && tag.isNotEmpty() && other.tag.isEmpty() -> -1 + !isTag && !other.isTag && tag.isEmpty() && other.tag.isNotEmpty() -> 1 + // Feeds with identical tags compare by title + tag == other.tag -> displayTitle.compareTo(other.displayTitle, ignoreCase = true) + // In other cases it's just a matter of comparing tags + else -> tag.compareTo(other.tag, ignoreCase = true) + } + } + + override fun equals(other: Any?): Boolean { + return when (other) { + null -> false + is FeedUnreadCount -> { + // val f = other as FeedWrapper? + if (isTag && other.isTag) { + // Compare tags + tag == other.tag + } else { + // Compare items + !isTag && !other.isTag && id == other.id + } + } + else -> false + } + } + + override fun hashCode(): Int { + return if (isTag) { + // Tag + tag.hashCode() + } else { + // Item + id.hashCode() + } + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/FeedViewModel.kt b/app/src/main/java/com/nononsenseapps/feeder/model/FeedViewModel.kt new file mode 100644 index 0000000..46986e1 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/FeedViewModel.kt @@ -0,0 +1,87 @@ +package com.nononsenseapps.feeder.model + +import android.content.Context +import androidx.lifecycle.LiveData +import androidx.lifecycle.asLiveData +import com.nononsenseapps.feeder.base.KodeinAwareViewModel +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.db.room.FeedDao +import com.nononsenseapps.feeder.db.room.FeedTitle +import com.nononsenseapps.feeder.db.room.ID_ALL_FEEDS +import com.nononsenseapps.feeder.db.room.ID_UNSET +import com.nononsenseapps.feeder.util.removeDynamicShortcutToFeed +import org.kodein.di.Kodein +import org.kodein.di.generic.instance + +class FeedViewModel(kodein: Kodein) : KodeinAwareViewModel(kodein) { + private val dao: FeedDao by instance() + + private lateinit var liveFeedsNotify: LiveData> + + fun getLiveFeedsNotify(id: Long, tag: String): LiveData> { + if (!this::liveFeedsNotify.isInitialized) { + liveFeedsNotify = when { + id > ID_UNSET -> dao.loadLiveFeedsNotify(feedId = id) + id == ID_UNSET && tag.isNotEmpty() -> dao.loadLiveFeedsNotify(tag = tag) + else -> dao.loadLiveFeedsNotify() + }.asLiveData() + } + return liveFeedsNotify + } + + private lateinit var liveFeed: LiveData + + fun getLiveFeed(id: Long): LiveData { + if (!this::liveFeed.isInitialized) { + liveFeed = dao.loadLiveFeed(feedId = id).asLiveData() + } + return liveFeed + } + + suspend fun getFeed(id: Long): Feed? { + return dao.loadFeed(feedId = id) + } + + suspend fun setNotify(tag: String, notify: Boolean) { + dao.setNotify(tag = tag, notify = notify) + } + + suspend fun setNotify(id: Long, notify: Boolean) { + dao.setNotify(id = id, notify = notify) + } + + suspend fun setAllNotify(notify: Boolean) { + dao.setAllNotify(notify = notify) + } + + suspend fun deleteFeed(id: Long) { + dao.deleteFeedWithId(feedId = id) + + val context: Context by instance() + context.removeDynamicShortcutToFeed(id) + } + + suspend fun deleteFeeds(ids: List) { + dao.deleteFeeds(ids) + + val context: Context by instance() + for (id in ids) { + context.removeDynamicShortcutToFeed(id) + } + } + + suspend fun getVisibleFeeds(id: Long, feedTag: String?): List { + return when { + id == ID_UNSET && feedTag?.isNotEmpty() == true -> { + dao.getFeedTitlesWithTag(feedTag = feedTag) + } + id == ID_UNSET || id == ID_ALL_FEEDS -> { + dao.getAllFeedTitles() + } + id > ID_UNSET -> { + dao.getFeedTitle(id) + } + else -> emptyList() + } + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/FeederService.kt b/app/src/main/java/com/nononsenseapps/feeder/model/FeederService.kt new file mode 100644 index 0000000..42d754b --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/FeederService.kt @@ -0,0 +1,37 @@ +package com.nononsenseapps.feeder.model + +import android.content.Context +import android.content.Intent +import android.net.Uri +import com.nononsenseapps.feeder.base.KodeinAwareIntentService +import com.nononsenseapps.feeder.db.room.FeedItemDao +import kotlinx.coroutines.runBlocking +import org.kodein.di.generic.instance + +const val ACTION_MARK_AS_UNREAD = "MARK_AS_READ" + +class FeederService : KodeinAwareIntentService("FeederService") { + private val dao: FeedItemDao by instance() + + override fun onHandleIntent(intent: Intent?) { + when (intent?.action) { + ACTION_MARK_AS_UNREAD -> intent.data?.let { markAsUnread(it) } + } + } + + private fun markAsUnread(data: Uri) { + data.lastPathSegment?.toLongOrNull()?.let { id -> + runBlocking { + dao.markAsRead(id = id, unread = true) + } + } + } + + companion object { + fun getIntentForId(context: Context, feedItemId: Long): Intent = + Intent(context, FeederService::class.java).apply { + action = ACTION_MARK_AS_UNREAD + data = Uri.parse("com.nononsenseapps.feeder/feeditem/$feedItemId") + } + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/FullTextParser.kt b/app/src/main/java/com/nononsenseapps/feeder/model/FullTextParser.kt new file mode 100644 index 0000000..ffe271d --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/FullTextParser.kt @@ -0,0 +1,141 @@ +package com.nononsenseapps.feeder.model + +import android.content.Context +import android.util.Log +import androidx.work.CoroutineWorker +import androidx.work.OneTimeWorkRequestBuilder +import androidx.work.WorkManager +import androidx.work.WorkerParameters +import androidx.work.workDataOf +import com.nononsenseapps.feeder.blob.blobFullFile +import com.nononsenseapps.feeder.blob.blobFullOutputStream +import com.nononsenseapps.feeder.db.room.FeedItemForFetching +import com.nononsenseapps.feeder.db.room.ID_UNSET +import com.nononsenseapps.feeder.di.CURRENTLY_SYNCING_STATE +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.channels.ConflatedBroadcastChannel +import kotlinx.coroutines.withContext +import net.dankito.readability4j.Readability4J +import okhttp3.OkHttpClient +import org.kodein.di.Kodein +import org.kodein.di.KodeinAware +import org.kodein.di.android.closestKodein +import org.kodein.di.generic.instance +import java.io.File +import java.net.URL + +const val ARG_FEED_ITEM_ID = "feed_item_id" +const val ARG_FEED_ITEM_LINK = "feed_item_link" + +@FlowPreview +@ExperimentalCoroutinesApi +fun scheduleFullTextParse( + kodein: Kodein, + feedItem: FeedItemForFetching +) { + val workRequest = OneTimeWorkRequestBuilder() + + val data = workDataOf( + ARG_FEED_ITEM_ID to feedItem.id, + ARG_FEED_ITEM_LINK to feedItem.link + ) + + workRequest.setInputData(data) + val workManager by kodein.instance() + workManager.enqueue(workRequest.build()) +} + +@FlowPreview +@ExperimentalCoroutinesApi +class FullTextWorker( + val context: Context, + workerParams: WorkerParameters +) : CoroutineWorker(context, workerParams), KodeinAware { + override val kodein: Kodein by closestKodein(context) + private val currentlySyncing: ConflatedBroadcastChannel by instance(tag = CURRENTLY_SYNCING_STATE) + private val okHttpClient: OkHttpClient by instance() + + override suspend fun doWork(): Result { + val ignoreConnectivitySettings = inputData.getBoolean(IGNORE_CONNECTIVITY_SETTINGS, false) + var success = false + + if (ignoreConnectivitySettings || isOkToSyncAutomatically(context)) { + val feedItemId: Long = inputData.getLong(ARG_FEED_ITEM_ID, ID_UNSET) + val link: String? = inputData.getString(ARG_FEED_ITEM_LINK) + ?: throw RuntimeException("No link provided") + + if (!currentlySyncing.isClosedForSend) { + currentlySyncing.offer(true) + } + + Log.i("FeederFullText", "Worker going to parse $feedItemId: $link") + + success = parseFullArticleIfMissing( + feedItem = object : FeedItemForFetching { + override val id = feedItemId + override val link = link + }, + okHttpClient = okHttpClient, + filesDir = context.filesDir + ) + + if (!currentlySyncing.isClosedForSend) { + currentlySyncing.offer(false) + } + } + + return when (success) { + true -> Result.success() + false -> Result.failure() + } + } +} + +suspend fun parseFullArticleIfMissing( + feedItem: FeedItemForFetching, + okHttpClient: OkHttpClient, + filesDir: File +): Boolean { + val fullArticleFile = blobFullFile(itemId = feedItem.id, filesDir = filesDir) + return fullArticleFile.isFile || parseFullArticle( + feedItem = feedItem, + okHttpClient = okHttpClient, + filesDir = filesDir + ).first +} + +suspend fun parseFullArticle( + feedItem: FeedItemForFetching, + okHttpClient: OkHttpClient, + filesDir: File +): Pair = withContext(Dispatchers.Default) { + return@withContext try { + val url = feedItem.link ?: return@withContext false to null + Log.i("FeederFullText", "Fetching full page ${feedItem.link}") + val html: String = okHttpClient.curl(URL(url)) ?: return@withContext false to null + + // TODO verify encoding is respected in reader + Log.i("FeederFullText", "Parsing article ${feedItem.link}") + val article = Readability4J(url, html).parse() + + // TODO set image on item if none already + // naiveFindImageLink(article.content)?.let { Parser.unescapeEntities(it, true) } + + Log.i("FeederFullText", "Writing article ${feedItem.link}") + withContext(Dispatchers.IO) { + blobFullOutputStream(feedItem.id, filesDir).bufferedWriter().use { writer -> + writer.write(article.contentWithUtf8Encoding) + } + } + true to null + } catch (e: Throwable) { + Log.e( + "FeederFullText", + "Failed to get fulltext for ${feedItem.link}: ${e.message}", + e + ) + false to e + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/Networking.kt b/app/src/main/java/com/nononsenseapps/feeder/model/Networking.kt new file mode 100644 index 0000000..86f299e --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/Networking.kt @@ -0,0 +1,18 @@ +package com.nononsenseapps.feeder.model + +import com.nononsenseapps.feeder.BuildConfig +import okhttp3.Interceptor +import okhttp3.Response + +object UserAgentInterceptor : Interceptor { + override fun intercept(chain: Interceptor.Chain): Response { + return chain.proceed( + chain.request() + .newBuilder() + .header("User-Agent", USER_AGENT_STRING) + .build() + ) + } +} + +const val USER_AGENT_STRING = "Feeder / ${BuildConfig.VERSION_NAME}(${BuildConfig.VERSION_CODE})" diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/OPMLParserToDatabase.kt b/app/src/main/java/com/nononsenseapps/feeder/model/OPMLParserToDatabase.kt new file mode 100644 index 0000000..0740541 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/OPMLParserToDatabase.kt @@ -0,0 +1,9 @@ +package com.nononsenseapps.feeder.model + +import com.nononsenseapps.feeder.db.room.Feed + +interface OPMLParserToDatabase { + suspend fun getFeed(url: String): Feed? + + suspend fun saveFeed(feed: Feed) +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/PreviewItem.kt b/app/src/main/java/com/nononsenseapps/feeder/model/PreviewItem.kt new file mode 100644 index 0000000..28c2b97 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/PreviewItem.kt @@ -0,0 +1,68 @@ +package com.nononsenseapps.feeder.model + +import androidx.room.ColumnInfo +import androidx.room.Ignore +import com.nononsenseapps.feeder.db.room.ID_UNSET +import com.nononsenseapps.feeder.util.sloppyLinkToStrictURLNoThrows +import org.threeten.bp.ZonedDateTime +import java.net.URI +import java.net.URL + +const val previewColumns = "feed_items.id AS id, guid, plain_title, plain_snippet, feed_items.image_url, enclosure_link, " + + "author, pub_date, link, unread, feeds.tag AS tag, feeds.id AS feed_id, feeds.title AS feed_title, feeds.custom_title as feed_customtitle, feeds.url AS feed_url, feeds.open_articles_with AS feed_open_articles_with" + +data class PreviewItem @Ignore constructor( + var id: Long = ID_UNSET, + var guid: String = "", + @ColumnInfo(name = "plain_title") var plainTitle: String = "", + @ColumnInfo(name = "plain_snippet") var plainSnippet: String = "", + @ColumnInfo(name = "image_url") var imageUrl: String? = null, + @ColumnInfo(name = "enclosure_link") var enclosureLink: String? = null, + var author: String? = null, + @ColumnInfo(name = "pub_date") var pubDate: ZonedDateTime? = null, + var link: String? = null, + var tag: String = "", + var unread: Boolean = true, + @ColumnInfo(name = "feed_id") var feedId: Long? = null, + @ColumnInfo(name = "feed_title") var feedTitle: String = "", + @ColumnInfo(name = "feed_customtitle") var feedCustomTitle: String = "", + @ColumnInfo(name = "feed_url") var feedUrl: URL = sloppyLinkToStrictURLNoThrows(""), + @ColumnInfo(name = "feed_open_articles_with") var feedOpenArticlesWith: String = "" +) { + constructor() : this(id = ID_UNSET) + + val feedDisplayTitle: String + get() = if (feedCustomTitle.isBlank()) feedTitle else feedCustomTitle + + val enclosureFilename: String? + get() { + if (enclosureLink != null) { + var fname: String? = null + try { + fname = URI(enclosureLink).path.split("/").last() + } catch (e: Exception) { + } + if (fname == null || fname.isEmpty()) { + return null + } else { + return fname + } + } + return null + } + + val pubDateString: String? + get() = pubDate?.toString() + + val domain: String? + get() { + val l: String? = enclosureLink ?: link + if (l != null) { + try { + return URL(l).host.replace("www.", "") + } catch (e: Throwable) { + } + } + return null + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/RssLocalSync.kt b/app/src/main/java/com/nononsenseapps/feeder/model/RssLocalSync.kt new file mode 100644 index 0000000..00f02df --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/RssLocalSync.kt @@ -0,0 +1,262 @@ +package com.nononsenseapps.feeder.model + +import android.content.Context +import android.util.Log +import com.nononsenseapps.feeder.blob.blobFile +import com.nononsenseapps.feeder.blob.blobOutputStream +import com.nononsenseapps.feeder.db.room.AppDatabase +import com.nononsenseapps.feeder.db.room.FeedDao +import com.nononsenseapps.feeder.db.room.FeedItem +import com.nononsenseapps.feeder.db.room.ID_UNSET +import com.nononsenseapps.feeder.db.room.upsertFeed +import com.nononsenseapps.feeder.db.room.upsertFeedItems +import com.nononsenseapps.feeder.util.Prefs +import com.nononsenseapps.feeder.util.sloppyLinkToStrictURLNoThrows +import com.nononsenseapps.jsonfeed.Feed +import kotlinx.coroutines.CoroutineExceptionHandler +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.asCoroutineDispatcher +import kotlinx.coroutines.launch +import kotlinx.coroutines.supervisorScope +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext +import okhttp3.OkHttpClient +import okhttp3.Response +import org.kodein.di.Kodein +import org.kodein.di.android.closestKodein +import org.kodein.di.generic.instance +import org.threeten.bp.Instant +import org.threeten.bp.temporal.ChronoUnit +import java.io.File +import java.io.IOException +import java.util.concurrent.Executors +import kotlin.math.max +import kotlin.system.measureTimeMillis + +val singleThreadedSync = Executors.newSingleThreadExecutor().asCoroutineDispatcher() +val syncMutex = Mutex() + +@FlowPreview +suspend fun syncFeeds( + context: Context, + feedId: Long = ID_UNSET, + feedTag: String = "", + forceNetwork: Boolean = false, + parallel: Boolean = false, + minFeedAgeMinutes: Int = 15 +): Boolean { + val kodein: Kodein by closestKodein(context) + val prefs: Prefs by kodein.instance() + Log.d("CoroutineSync", "${Thread.currentThread().name}: Taking sync mutex") + return syncMutex.withLock { + withContext(singleThreadedSync) { + syncFeeds( + kodein, + filesDir = context.filesDir, + feedId = feedId, + feedTag = feedTag, + maxFeedItemCount = prefs.maximumCountPerFeed, + forceNetwork = forceNetwork, + parallel = parallel, + minFeedAgeMinutes = minFeedAgeMinutes + ) + } + } +} + +@FlowPreview +internal suspend fun syncFeeds( + kodein: Kodein, + filesDir: File, + feedId: Long = ID_UNSET, + feedTag: String = "", + maxFeedItemCount: Int = 100, + forceNetwork: Boolean = false, + parallel: Boolean = false, + minFeedAgeMinutes: Int = 15 +): Boolean { + val db: AppDatabase by kodein.instance() + var result = false + // Let all new items share download time + val downloadTime = Instant.now() + val time = measureTimeMillis { + try { + supervisorScope { + val staleTime: Long = if (forceNetwork) { + Instant.now().toEpochMilli() + } else { + Instant.now().minus(minFeedAgeMinutes.toLong(), ChronoUnit.MINUTES) + .toEpochMilli() + } + val feedsToFetch = feedsToSync(db.feedDao(), feedId, feedTag, staleTime = staleTime) + + Log.d("CoroutineSync", "Syncing ${feedsToFetch.size} feeds") + + val coroutineContext = when (parallel) { + true -> Dispatchers.Default + false -> this.coroutineContext + } + CoroutineExceptionHandler { _, throwable -> + Log.e("CoroutineSync", "Error during sync", throwable) + } + + feedsToFetch.forEach { + launch(coroutineContext) { + try { + syncFeed( + kodein = kodein, + feedSql = it, + filesDir = filesDir, + maxFeedItemCount = maxFeedItemCount, + forceNetwork = forceNetwork, + downloadTime = downloadTime + ) + } catch (e: Throwable) { + Log.e( + "CoroutineSync", + "Failed to sync ${it.displayTitle}: ${it.url}", + e + ) + } + } + } + + result = true + } + } catch (e: Throwable) { + Log.e("CoroutineSync", "Outer error", e) + } + } + Log.d("CoroutineSync", "Completed in $time ms") + return result +} + +@FlowPreview +private suspend fun syncFeed( + kodein: Kodein, + feedSql: com.nononsenseapps.feeder.db.room.Feed, + filesDir: File, + maxFeedItemCount: Int, + forceNetwork: Boolean = false, + downloadTime: Instant +) { + Log.d("CoroutineSync", "Fetching ${feedSql.displayTitle}") + val db: AppDatabase by kodein.instance() + val feedParser: FeedParser by kodein.instance() + val okHttpClient: OkHttpClient by kodein.instance() + + val response: Response = okHttpClient.getResponse(feedSql.url, forceNetwork = forceNetwork) + + var responseHash = 0 + + val feed: Feed? = + response.use { + val responseBody = it.safeBody() + responseBody?.let { body -> + responseHash = body.contentHashCode() + when { + !response.isSuccessful -> { + throw ResponseFailure("${response.code} when fetching ${feedSql.displayTitle}: ${feedSql.url}") + } + feedSql.responseHash == responseHash -> null // no change + else -> feedParser.parseFeedResponse(it, body) + } + } + }?.let { + // Double check that icon is not base64 + when { + it.icon?.startsWith("data") == true -> it.copy(icon = null) + else -> it + } + } + + // Always update the feeds last sync field + feedSql.lastSync = Instant.now() + + if (feed == null) { + db.feedDao().upsertFeed(feedSql) + } else { + val itemDao = db.feedItemDao() + + val feedItemSqls = + feed.items + ?.map { + val guid = it.id ?: "${it.title}-${it.summary}" + it to guid + } + ?.reversed() + ?.map { (item, guid) -> + val feedItemSql = itemDao.loadFeedItem( + guid = guid, + feedId = feedSql.id + ) ?: FeedItem(firstSyncedTime = downloadTime) + + feedItemSql.updateFromParsedEntry(item, guid, feed) + feedItemSql.feedId = feedSql.id + feedItemSql to (item.content_html ?: item.content_text ?: "") + } ?: emptyList() + + itemDao.upsertFeedItems(feedItemSqls) { feedItem, text -> + if (feedSql.fullTextByDefault) { + scheduleFullTextParse( + kodein = kodein, + feedItem = feedItem + ) + } + + withContext(Dispatchers.IO) { + blobOutputStream(feedItem.id, filesDir).bufferedWriter().use { + it.write(text) + } + } + } + + // Update feed last so lastsync is only set after all items have been handled + // for the rare case that the job is cancelled prematurely + feedSql.responseHash = responseHash + feedSql.title = feed.title ?: feedSql.title + // Not changing feed url because I don't want to override auth or token params + // See https://gitlab.com/spacecowboy/Feeder/-/issues/390 +// feedSql.url = feed.feed_url?.let { sloppyLinkToStrictURLNoThrows(it) } ?: feedSql.url + feedSql.imageUrl = feed.icon?.let { sloppyLinkToStrictURLNoThrows(it) } + ?: feedSql.imageUrl + db.feedDao().upsertFeed(feedSql) + + // Finally, prune database of old items + val ids = db.feedItemDao().getItemsToBeCleanedFromFeed( + feedId = feedSql.id, + keepCount = max(maxFeedItemCount, feed.items?.size ?: 0) + ) + + for (id in ids) { + val file = blobFile(itemId = id, filesDir = filesDir) + try { + if (file.isFile) { + file.delete() + } + } catch (e: IOException) { + Log.e("CoroutineSync", "Failed to delete $file", e) + } + } + + db.feedItemDao().deleteFeedItems(ids) + } +} + +internal suspend fun feedsToSync(feedDao: FeedDao, feedId: Long, tag: String, staleTime: Long = -1L): List { + return when { + feedId > 0 -> { + val feed = if (staleTime > 0) feedDao.loadFeedIfStale(feedId, staleTime = staleTime) else feedDao.loadFeed(feedId) + if (feed != null) { + listOf(feed) + } else { + emptyList() + } + } + tag.isNotEmpty() -> if (staleTime > 0) feedDao.loadFeedsIfStale(tag = tag, staleTime = staleTime) else feedDao.loadFeeds(tag) + else -> if (staleTime > 0) feedDao.loadFeedsIfStale(staleTime) else feedDao.loadFeeds() + } +} + +class ResponseFailure(message: String?) : Exception(message) diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/RssNotificationBroadcastReceiver.kt b/app/src/main/java/com/nononsenseapps/feeder/model/RssNotificationBroadcastReceiver.kt new file mode 100644 index 0000000..bcb4eaa --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/RssNotificationBroadcastReceiver.kt @@ -0,0 +1,39 @@ +package com.nononsenseapps.feeder.model + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.util.Log +import com.nononsenseapps.feeder.db.room.FeedItemDao +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import org.kodein.di.android.closestKodein +import org.kodein.di.generic.instance + +const val ACTION_MARK_AS_NOTIFIED: String = "mark_as_notified" + +const val EXTRA_FEEDITEM_ID_ARRAY: String = "extra_feeditem_id_array" + +class RssNotificationBroadcastReceiver : BroadcastReceiver() { + @FlowPreview + override fun onReceive(context: Context, intent: Intent) { + val ids = intent.getLongArrayExtra(EXTRA_FEEDITEM_ID_ARRAY) + Log.d("RssNotificationReceiver", "onReceive: ${intent.action}; ${ids?.joinToString(", ")}") + val kodein by closestKodein(context) + val dao: FeedItemDao by kodein.instance() + when (intent.action) { + ACTION_MARK_AS_NOTIFIED -> markAsNotified(dao, ids) + } + } +} + +@FlowPreview +private fun markAsNotified(feedItemDao: FeedItemDao, itemIds: LongArray?) { + if (itemIds != null) { + GlobalScope.launch(Dispatchers.Default) { + feedItemDao.markAsNotified(itemIds.toList()) + } + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/RssNotifications.kt b/app/src/main/java/com/nononsenseapps/feeder/model/RssNotifications.kt new file mode 100644 index 0000000..9f69c35 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/RssNotifications.kt @@ -0,0 +1,286 @@ +package com.nononsenseapps.feeder.model + +import android.annotation.TargetApi +import android.app.Notification +import android.app.NotificationChannel +import android.app.NotificationManager +import android.app.PendingIntent +import android.content.Context +import android.content.Context.NOTIFICATION_SERVICE +import android.content.Intent +import android.graphics.BitmapFactory +import android.net.Uri +import android.os.Build +import android.provider.Browser.EXTRA_CREATE_NEW_TAB +import androidx.annotation.RequiresApi +import androidx.core.app.NotificationCompat +import androidx.core.app.NotificationManagerCompat +import androidx.navigation.NavDeepLinkBuilder +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.db.COL_LINK +import com.nononsenseapps.feeder.db.URI_FEEDITEMS +import com.nononsenseapps.feeder.db.room.FeedDao +import com.nononsenseapps.feeder.db.room.FeedItemDao +import com.nononsenseapps.feeder.db.room.FeedItemWithFeed +import com.nononsenseapps.feeder.db.room.ID_ALL_FEEDS +import com.nononsenseapps.feeder.ui.ARG_FEED_ID +import com.nononsenseapps.feeder.ui.ARG_ID +import com.nononsenseapps.feeder.ui.EXTRA_FEEDITEMS_TO_MARK_AS_NOTIFIED +import com.nononsenseapps.feeder.ui.OpenLinkInDefaultActivity +import com.nononsenseapps.feeder.util.bundle +import com.nononsenseapps.feeder.util.notificationManager +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.withContext +import org.kodein.di.Kodein +import org.kodein.di.android.closestKodein +import org.kodein.di.generic.instance + +const val notificationId = 73583 +const val channelId = "feederNotifications" + +@FlowPreview +suspend fun notify(appContext: Context) = withContext(Dispatchers.Default) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + createNotificationChannel(appContext) + } + + val kodein by closestKodein(appContext) + + val nm: NotificationManagerCompat by kodein.instance() + + val feedItems = getItemsToNotify(kodein) + + val notifications: List> = if (feedItems.isEmpty()) { + emptyList() + } else { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N || feedItems.size < 4) { + // Cancel inbox notification if present + nm.cancel(notificationId) + // Platform automatically bundles 4 or more notifications + feedItems.map { + it.id.toInt() to singleNotification(appContext, it) + } + } else { + // In this case, also cancel any individual notifications + feedItems.forEach { + nm.cancel(it.id.toInt()) + } + // Use an inbox style notification to bundle many notifications together + listOf(notificationId to inboxNotification(appContext, feedItems)) + } + } + + notifications.forEach { (id, notification) -> + nm.notify(id, notification) + } +} + +@FlowPreview +suspend fun cancelNotification(context: Context, feedItemId: Long) = withContext(Dispatchers.Default) { + val nm = context.notificationManager + nm.cancel(feedItemId.toInt()) + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { + notify(context) + } +} + +/** + * This is an update operation if channel already exists so it's safe to call multiple times + */ +@TargetApi(Build.VERSION_CODES.O) +@RequiresApi(Build.VERSION_CODES.O) +private fun createNotificationChannel(context: Context) { + val name = context.getString(R.string.notification_channel_name) + val description = context.getString(R.string.notification_channel_description) + + val notificationManager: NotificationManager = context.getSystemService(NOTIFICATION_SERVICE) as NotificationManager + + val channel = NotificationChannel(channelId, name, NotificationManager.IMPORTANCE_LOW) + channel.description = description + + notificationManager.createNotificationChannel(channel) +} + +@FlowPreview +private fun singleNotification(context: Context, item: FeedItemWithFeed): Notification { + val style = NotificationCompat.BigTextStyle() + val title = item.plainTitle + val text = item.feedDisplayTitle + + style.bigText(text) + style.setBigContentTitle(title) + + val contentIntent = + NavDeepLinkBuilder(context) + .setGraph(R.navigation.nav_graph) + .setDestination(R.id.readerFragment) + .setArguments( + bundle { + putLong(ARG_ID, item.id) + } + ) + .createPendingIntent(requestCode = item.id.toInt()) + + val builder = notificationBuilder(context) + + builder.setContentText(text) + .setContentTitle(title) + .setContentIntent(contentIntent) + .setDeleteIntent(getPendingDeleteIntent(context, item)) + .setNumber(1) + + // Note that notifications must use PNG resources, because there is no compatibility for vector drawables here + + item.enclosureLink?.let { enclosureLink -> + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(enclosureLink)) + intent.putExtra(EXTRA_CREATE_NEW_TAB, true) + builder.addAction( + R.drawable.notification_play_circle_outline, + context.getString(R.string.open_enclosed_media), + PendingIntent.getActivity( + context, + item.id.toInt(), + getOpenInDefaultActivityIntent(context, item.id, enclosureLink), + PendingIntent.FLAG_UPDATE_CURRENT + ) + ) + } + + item.link?.let { link -> + builder.addAction( + R.drawable.notification_open_in_browser, + context.getString(R.string.open_link_in_browser), + PendingIntent.getActivity( + context, + item.id.toInt(), + getOpenInDefaultActivityIntent(context, item.id, link), + PendingIntent.FLAG_UPDATE_CURRENT + ) + ) + } + + builder.addAction( + R.drawable.notification_check, + context.getString(R.string.mark_as_read), + PendingIntent.getActivity( + context, + item.id.toInt(), + getOpenInDefaultActivityIntent(context, item.id, link = null), + PendingIntent.FLAG_UPDATE_CURRENT + ) + ) + + style.setBuilder(builder) + return style.build() +} + +@FlowPreview +internal fun getOpenInDefaultActivityIntent(context: Context, feedItemId: Long, link: String? = null): Intent = + Intent( + Intent.ACTION_VIEW, + // Important to keep the URI different so PendingIntents don't collide + URI_FEEDITEMS.buildUpon().appendPath("$feedItemId").also { + if (link != null) { + it.appendQueryParameter(COL_LINK, link) + } + }.build(), + context, + OpenLinkInDefaultActivity::class.java + ) + +/** + * Use this on platforms older than 24 to bundle notifications together + */ +private fun inboxNotification(context: Context, feedItems: List): Notification { + val style = NotificationCompat.InboxStyle() + val title = context.getString(R.string.updated_feeds) + val text = feedItems.map { it.feedDisplayTitle }.toSet().joinToString(separator = ", ") + + style.setBigContentTitle(title) + feedItems.forEach { + style.addLine("${it.feedDisplayTitle} \u2014 ${it.plainTitle}") + } + + val contentIntent = NavDeepLinkBuilder(context) + .setGraph(R.navigation.nav_graph) + .setDestination(R.id.feedFragment) + .setArguments( + bundle { + putLongArray(EXTRA_FEEDITEMS_TO_MARK_AS_NOTIFIED, LongArray(feedItems.size) { i -> feedItems[i].id }) + // We can be a little bit smart - if all items are from the same feed then go to that feed + // Otherwise we should go to All feeds + val feedIds = feedItems.map { it.feedId }.toSet() + if (feedIds.toSet().size == 1) { + feedIds.first()?.let { + putLong(ARG_FEED_ID, it) + } + } else { + putLong(ARG_FEED_ID, ID_ALL_FEEDS) + } + } + ) + .createPendingIntent(requestCode = notificationId) + + val builder = notificationBuilder(context) + + builder.setContentText(text) + .setContentTitle(title) + .setContentIntent(contentIntent) + .setDeleteIntent(getDeleteIntent(context, feedItems)) + .setNumber(feedItems.size) + + style.setBuilder(builder) + return style.build() +} + +private fun getDeleteIntent(context: Context, feedItems: List): PendingIntent { + val intent = Intent(context, RssNotificationBroadcastReceiver::class.java) + intent.action = ACTION_MARK_AS_NOTIFIED + + val ids = LongArray(feedItems.size) { i -> feedItems[i].id } + intent.putExtra(EXTRA_FEEDITEM_ID_ARRAY, ids) + + return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT) +} + +internal fun getDeleteIntent(context: Context, feedItem: FeedItemWithFeed): Intent { + val intent = Intent(context, RssNotificationBroadcastReceiver::class.java) + intent.action = ACTION_MARK_AS_NOTIFIED + intent.data = Uri.withAppendedPath(URI_FEEDITEMS, "${feedItem.id}") + val ids: LongArray = longArrayOf(feedItem.id) + intent.putExtra(EXTRA_FEEDITEM_ID_ARRAY, ids) + + return intent +} + +private fun getPendingDeleteIntent(context: Context, feedItem: FeedItemWithFeed): PendingIntent = + PendingIntent.getBroadcast(context, 0, getDeleteIntent(context, feedItem), PendingIntent.FLAG_UPDATE_CURRENT) + +private fun notificationBuilder(context: Context): NotificationCompat.Builder { + val bm = BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher) + + return NotificationCompat.Builder(context, channelId) + .setSmallIcon(R.drawable.ic_stat_f) + .setLargeIcon(bm) + .setAutoCancel(true) + .setCategory(NotificationCompat.CATEGORY_SOCIAL) + .setPriority(NotificationCompat.PRIORITY_LOW) +} + +@FlowPreview +private suspend fun getItemsToNotify(kodein: Kodein): List { + val feedDao: FeedDao by kodein.instance() + val feedItemDao: FeedItemDao by kodein.instance() + + val feeds = feedDao.loadFeedIdsToNotify() + + return when (feeds.isEmpty()) { + true -> emptyList() + false -> feedItemDao.loadItemsToNotify(feeds) + } +} + +fun NavDeepLinkBuilder.createPendingIntent(requestCode: Int): PendingIntent? = + this.createTaskStackBuilder().getPendingIntent(requestCode, PendingIntent.FLAG_UPDATE_CURRENT) diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/SettingsViewModel.kt b/app/src/main/java/com/nononsenseapps/feeder/model/SettingsViewModel.kt new file mode 100644 index 0000000..7b6afba --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/SettingsViewModel.kt @@ -0,0 +1,83 @@ +package com.nononsenseapps.feeder.model + +import android.app.Application +import android.content.Context +import android.content.SharedPreferences +import android.os.Build +import androidx.annotation.ColorInt +import androidx.annotation.ColorRes +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.asLiveData +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.base.KodeinAwareViewModel +import com.nononsenseapps.feeder.util.CurrentTheme +import com.nononsenseapps.feeder.util.PREF_THEME +import com.nononsenseapps.feeder.util.Prefs +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.channels.ConflatedBroadcastChannel +import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.conflate +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.map +import org.kodein.di.Kodein +import org.kodein.di.generic.instance + +@FlowPreview +@ExperimentalCoroutinesApi +class SettingsViewModel(kodein: Kodein) : KodeinAwareViewModel(kodein), SharedPreferences.OnSharedPreferenceChangeListener { + private val app: Application by instance() + private val prefs: Prefs by instance() + private val sharedPreferences: SharedPreferences by instance() + + private val keyChannel = ConflatedBroadcastChannel() + private val keyFlow = keyChannel.asFlow() + + val liveThemePreferenceNoInitial: LiveData = + keyFlow.filter { it == PREF_THEME } + .map { prefs.currentTheme } + .conflate() + .asLiveData() + + val liveIsNightMode: MutableLiveData by lazy { MutableLiveData(prefs.isNightMode) } + + val backgroundColor: Int + get() = + when (prefs.isNightMode) { + true -> app.getColorCompat(R.color.night_background) + false -> app.getColorCompat(R.color.day_background) + } + + val accentColor: Int + get() = + when (prefs.isNightMode) { + true -> app.getColorCompat(R.color.accentNight) + false -> app.getColorCompat(R.color.accentDay) + } + + init { + sharedPreferences.registerOnSharedPreferenceChangeListener(this) + } + + override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { + if (key != null && !keyChannel.isClosedForSend) { + keyChannel.offer(key) + } + } + + override fun onCleared() { + keyChannel.close() + super.onCleared() + } +} + +@ColorInt +fun Context.getColorCompat(@ColorRes color: Int): Int { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + getColor(color) + } else { + @Suppress("DEPRECATION") + resources.getColor(color) + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/TextToSpeechViewModel.kt b/app/src/main/java/com/nononsenseapps/feeder/model/TextToSpeechViewModel.kt new file mode 100644 index 0000000..c163909 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/TextToSpeechViewModel.kt @@ -0,0 +1,128 @@ +package com.nononsenseapps.feeder.model + +import android.app.Application +import android.content.Context +import android.os.Build +import android.speech.tts.TextToSpeech +import android.speech.tts.TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID +import android.speech.tts.UtteranceProgressListener +import android.util.Log +import android.widget.Toast +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.base.KodeinAwareViewModel +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import org.kodein.di.Kodein +import java.util.Locale + +class TextToSpeechViewModel(kodein: Kodein) : KodeinAwareViewModel(kodein), TextToSpeech.OnInitListener { + + private val textToSpeech = TextToSpeech(getApplication().applicationContext, this) + private val speechListener: UtteranceProgressListener = object : UtteranceProgressListener() { + override fun onDone(utteranceId: String) { + textToSpeechQueue.remove(utteranceId) + } + override fun onStart(utteranceId: String) { + } + override fun onError(utteranceId: String) { + textToSpeechQueue.remove(utteranceId) + } + } + private val textToSpeechQueue = mutableMapOf() + private var textToSpeechId: Int = 0 + private var initialized: Boolean = false + private var startJob: Job? = null + + fun textToSpeechAddText(fullText: String) { + val textArray = fullText.split("\n", ". ") + for (text in textArray) { + if (text.isBlank()) { + continue + } + textToSpeechQueue[textToSpeechId.toString()] = text + textToSpeechId++ + } + } + + fun textToSpeechStart(coroutineScope: CoroutineScope) { + startJob?.cancel() + startJob = coroutineScope.launch { + while (!initialized) { + delay(100) + } + // Can only set this once engine has been initialized + textToSpeech.setOnUtteranceProgressListener(speechListener) + for ((utteranceId, text) in textToSpeechQueue) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + textToSpeech.speak(text, TextToSpeech.QUEUE_ADD, null, utteranceId) + } else { + val params = HashMap() + params[KEY_PARAM_UTTERANCE_ID] = utteranceId + @Suppress("DEPRECATION") + textToSpeech.speak(text, TextToSpeech.QUEUE_ADD, params) + } + } + } + } + + fun textToSpeechPause() { + textToSpeech.stop() + } + + fun textToSpeechClear() { + textToSpeech.stop() + textToSpeechQueue.clear() + } + + override fun onInit(status: Int) { + val context = getApplication().applicationContext + + if (status == TextToSpeech.SUCCESS) { + val selectedLocale = context.getLocales() + .firstOrNull { locale -> + when (textToSpeech.setLanguage(locale)) { + TextToSpeech.LANG_MISSING_DATA, TextToSpeech.LANG_NOT_SUPPORTED -> { + Log.e(LOG_TAG, "${locale.displayLanguage} is not supported!") + false + } + else -> { + true + } + } + } + initialized = true + + if (selectedLocale == null) { + Log.e(LOG_TAG, "None of the user's locales was supported by text to speech") + } + } else { + Log.e(LOG_TAG, "Failed to load TextToSpeech object.") + Toast.makeText(context, R.string.failed_to_load_text_to_speech, Toast.LENGTH_SHORT).show() + } + } + + override fun onCleared() { + super.onCleared() + textToSpeech.shutdown() + } + + companion object { + private const val LOG_TAG = "FeederTextToSpeech" + } +} + +fun Context.getLocales(): Sequence = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + sequence { + val locales = resources.configuration.locales + + for (i in 0..locales.size()) { + yield(locales[i]) + } + } + } else { + @Suppress("DEPRECATION") + sequenceOf(resources.configuration.locale) + } diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/opml/OPMLToRoom.kt b/app/src/main/java/com/nononsenseapps/feeder/model/opml/OPMLToRoom.kt new file mode 100644 index 0000000..d259a3c --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/opml/OPMLToRoom.kt @@ -0,0 +1,27 @@ +package com.nononsenseapps.feeder.model.opml + +import com.nononsenseapps.feeder.db.room.AppDatabase +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.model.OPMLParserToDatabase +import com.nononsenseapps.feeder.util.sloppyLinkToStrictURLNoThrows +import kotlinx.coroutines.FlowPreview + +@FlowPreview +class OPMLToRoom(db: AppDatabase) : OPMLParserToDatabase { + + val dao = db.feedDao() + + override suspend fun getFeed(url: String): Feed? = + dao.loadFeedWithUrl(sloppyLinkToStrictURLNoThrows(url)) + + override suspend fun saveFeed(feed: Feed) { + val existing = dao.loadFeedWithUrl(feed.url) + + // Don't want to remove existing feed on OPML imports + if (existing != null) { + dao.updateFeed(feed.copy(id = existing.id)) + } else { + dao.insertFeed(feed) + } + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/opml/OpmlActions.kt b/app/src/main/java/com/nononsenseapps/feeder/model/opml/OpmlActions.kt new file mode 100644 index 0000000..05399f2 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/opml/OpmlActions.kt @@ -0,0 +1,66 @@ +package com.nononsenseapps.feeder.model.opml + +import android.content.ContentResolver +import android.net.Uri +import android.util.Log +import com.nononsenseapps.feeder.db.room.AppDatabase +import com.nononsenseapps.feeder.db.room.FeedDao +import com.nononsenseapps.feeder.model.requestFeedSync +import com.nononsenseapps.feeder.util.ToastMaker +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.withContext +import org.kodein.di.Kodein +import org.kodein.di.direct +import org.kodein.di.generic.instance +import kotlin.system.measureTimeMillis + +/** + * Exports OPML on a background thread + */ +suspend fun exportOpml(kodein: Kodein, uri: Uri) = withContext(Dispatchers.IO) { + try { + val time = measureTimeMillis { + val contentResolver: ContentResolver by kodein.instance() + val feedDao: FeedDao by kodein.instance() + contentResolver.openOutputStream(uri)?.let { + writeOutputStream( + it, + feedDao.loadTags() + ) { tag -> + feedDao.loadFeeds(tag = tag) + } + } + } + Log.d("OPML", "Exported OPML in $time ms on ${Thread.currentThread().name}") + } catch (e: Throwable) { + Log.e("OMPL", "Failed to export OMPL", e) + kodein.direct.instance().makeToast("Failed to export OMPL") + } +} + +/** + * Imports OPML on a background thread + */ +@FlowPreview +@ExperimentalCoroutinesApi +suspend fun importOpml(kodein: Kodein, uri: Uri) = withContext(Dispatchers.IO) { + val db: AppDatabase by kodein.instance() + try { + val time = measureTimeMillis { + val parser = OpmlParser(OPMLToRoom(db)) + val contentResolver: ContentResolver by kodein.instance() + contentResolver.openInputStream(uri).use { + it?.let { stream -> + parser.parseInputStream(stream) + } + } + requestFeedSync(kodein = kodein, ignoreConnectivitySettings = false, parallell = true) + } + Log.d("OPML", "Imported OPML in $time ms on ${Thread.currentThread().name}") + } catch (e: Throwable) { + Log.e("OMPL", "Failed to import OMPL", e) + kodein.direct.instance().makeToast("Failed to import OMPL") + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/opml/OpmlParser.kt b/app/src/main/java/com/nononsenseapps/feeder/model/opml/OpmlParser.kt new file mode 100644 index 0000000..622c25a --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/opml/OpmlParser.kt @@ -0,0 +1,125 @@ +package com.nononsenseapps.feeder.model.opml + +import com.nononsenseapps.feeder.db.room.Feed +import com.nononsenseapps.feeder.model.OPMLParserToDatabase +import com.nononsenseapps.feeder.util.sloppyLinkToStrictURL +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import org.ccil.cowan.tagsoup.Parser +import org.xml.sax.Attributes +import org.xml.sax.ContentHandler +import org.xml.sax.InputSource +import org.xml.sax.Locator +import org.xml.sax.SAXException +import java.io.File +import java.io.IOException +import java.io.InputStream +import java.util.Stack + +class OpmlParser(val opmlToDb: OPMLParserToDatabase) : ContentHandler { + + val parser: Parser = Parser() + val tagStack: Stack = Stack() + var isFeedTag = false + var ignoring = 0 + var feeds: MutableList = mutableListOf() + + init { + parser.contentHandler = this + } + + @Throws(IOException::class, SAXException::class) + suspend fun parseFile(path: String) { + // Open file + val file = File(path) + + file.inputStream().use { + parseInputStream(it) + } + } + + @Throws(IOException::class, SAXException::class) + suspend fun parseInputStream(inputStream: InputStream) = withContext(Dispatchers.IO) { + feeds = mutableListOf() + tagStack.clear() + isFeedTag = false + ignoring = 0 + + parser.parse(InputSource(inputStream)) + + for (feed in feeds) { + opmlToDb.saveFeed(feed) + } + } + + override fun endElement(uri: String?, localName: String?, qName: String?) { + if ("outline" == localName) { + when { + ignoring > 0 -> ignoring-- + isFeedTag -> isFeedTag = false + else -> tagStack.pop() + } + } + } + + override fun processingInstruction(target: String?, data: String?) { + } + + override fun startPrefixMapping(prefix: String?, uri: String?) { + } + + override fun ignorableWhitespace(ch: CharArray?, start: Int, length: Int) { + } + + override fun characters(ch: CharArray?, start: Int, length: Int) { + } + + override fun endDocument() { + } + + override fun startElement(uri: String?, localName: String?, qName: String?, atts: Attributes?) { + if ("outline" == localName) { + when { + // Nesting not allowed + ignoring > 0 || isFeedTag -> ignoring++ + outlineIsFeed(atts) -> { + isFeedTag = true + val feedTitle = unescape( + atts?.getValue("title") ?: atts?.getValue("text") + ?: "" + ) + val feed = Feed( + title = feedTitle, + customTitle = feedTitle, + tag = if (tagStack.isNotEmpty()) tagStack.peek() else "", + url = sloppyLinkToStrictURL(atts?.getValue("xmlurl") ?: "") + ) + + feeds.add(feed) + } + else -> tagStack.push( + unescape( + atts?.getValue("title") + ?: atts?.getValue("text") + ?: "" + ) + ) + } + } + } + + private fun outlineIsFeed(atts: Attributes?): Boolean = + atts?.getValue("xmlurl") != null + + override fun skippedEntity(name: String?) { + } + + override fun setDocumentLocator(locator: Locator?) { + } + + override fun endPrefixMapping(prefix: String?) { + } + + override fun startDocument() { + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/model/opml/OpmlWriter.kt b/app/src/main/java/com/nononsenseapps/feeder/model/opml/OpmlWriter.kt new file mode 100644 index 0000000..00f42ac --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/model/opml/OpmlWriter.kt @@ -0,0 +1,209 @@ +package com.nononsenseapps.feeder.model.opml + +import android.util.Log +import com.nononsenseapps.feeder.db.room.Feed +import java.io.FileOutputStream +import java.io.IOException +import java.io.OutputStream + +suspend fun writeFile( + path: String, + tags: Iterable, + feedsWithTag: suspend (String) -> Iterable +) { + writeOutputStream(FileOutputStream(path), tags, feedsWithTag) +} + +suspend fun writeOutputStream( + os: OutputStream, + tags: Iterable, + feedsWithTag: suspend (String) -> Iterable +) { + try { + os.bufferedWriter().use { + it.write("\n") + it.write( + opml { + head { + title { +"Feeder" } + } + body { + tags.forEach { + if (it.isEmpty()) { + feedsWithTag(it).forEach { + outline( + title = escape(it.displayTitle), + type = "rss", + xmlUrl = escape(it.url.toString()) + ) {} + } + } else { + outline(title = escape(it)) { + feedsWithTag(it).forEach { + outline( + title = escape(it.displayTitle), + type = "rss", + xmlUrl = escape(it.url.toString()) + ) {} + } + } + } + } + } + }.toString() + ) + } + } catch (e: IOException) { + Log.e("OmplWriter", "Failed to write stream", e) + } +} + +/** + + * @param s string to escape + * * + * @return String with xml stuff escaped + */ +internal fun escape(s: String): String { + return s.replace("&", "&") + .replace("\"", """) + .replace("'", "'") + .replace("<", "<") + .replace(">", ">") +} + +/** + + * @param s string to unescape + * * + * @return String with xml stuff unescaped + */ +internal fun unescape(s: String): String { + return s.replace(""", "\"") + .replace("'", "'") + .replace("<", "<") + .replace(">", ">") + .replace("&", "&") +} + +// OPML DSL + +suspend fun opml(init: suspend Opml.() -> Unit): Opml { + val opml = Opml() + opml.init() + return opml +} + +interface Element { + fun render(builder: StringBuilder, indent: String) +} + +class TextElement(val text: String) : Element { + override fun render(builder: StringBuilder, indent: String) { + builder.append("$indent$text\n") + } +} + +abstract class Tag(val name: String) : Element { + val children = arrayListOf() + val attributes = linkedMapOf() + + protected suspend fun initTag(tag: T, init: suspend T.() -> Unit): T { + tag.init() + children.add(tag) + return tag + } + + override fun render(builder: StringBuilder, indent: String) { + builder.append("$indent<$name${renderAttributes()}") + if (children.isEmpty()) { + builder.append("/>\n") + } else { + builder.append(">\n") + for (c in children) { + c.render(builder, indent + " ") + } + builder.append("$indent\n") + } + } + + private fun renderAttributes(): String { + val builder = StringBuilder() + for (a in attributes.keys) { + builder.append(" $a=\"${attributes[a]}\"") + } + return builder.toString() + } + + override fun toString(): String { + val builder = StringBuilder() + render(builder, "") + return builder.toString() + } +} + +abstract class TagWithText(name: String) : Tag(name) { + operator fun String.unaryPlus() { + children.add(TextElement(this)) + } +} + +class Opml : TagWithText("opml") { + init { + attributes["version"] = "1.1" + } + + suspend fun head(init: suspend Head.() -> Unit) = initTag(Head(), init) + suspend fun body(init: suspend Body.() -> Unit) = initTag(Body(), init) +} + +class Head : TagWithText("head") { + suspend fun title(init: suspend Title.() -> Unit) = initTag(Title(), init) +} + +class Title : TagWithText("title") + +abstract class BodyTag(name: String) : TagWithText(name) { + suspend fun outline( + title: String, + text: String = title, + type: String? = null, + xmlUrl: String? = null, + init: suspend Outline.() -> Unit + ) { + val o = initTag(Outline(), init) + o.title = title + o.text = text + if (type != null) { + o.type = type + } + if (xmlUrl != null) { + o.xmlUrl = xmlUrl + } + } +} + +class Body : BodyTag("body") + +class Outline : BodyTag("outline") { + var title: String + get() = attributes["title"]!! + set(value) { + attributes["title"] = value + } + var text: String + get() = attributes["text"]!! + set(value) { + attributes["text"] = value + } + var type: String + get() = attributes["type"]!! + set(value) { + attributes["type"] = value + } + var xmlUrl: String + get() = attributes["xmlUrl"]!! + set(value) { + attributes["xmlUrl"] = value + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/ui/CustomTabsWarmer.kt b/app/src/main/java/com/nononsenseapps/feeder/ui/CustomTabsWarmer.kt new file mode 100644 index 0000000..b2986db --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/ui/CustomTabsWarmer.kt @@ -0,0 +1,53 @@ +package com.nononsenseapps.feeder.ui + +import android.content.ComponentName +import android.net.Uri +import android.os.Bundle +import androidx.browser.customtabs.CustomTabsCallback +import androidx.browser.customtabs.CustomTabsClient +import androidx.browser.customtabs.CustomTabsServiceConnection +import androidx.browser.customtabs.CustomTabsSession +import kotlinx.coroutines.delay +import org.kodein.di.Kodein +import org.kodein.di.KodeinAware +import org.kodein.di.direct +import org.kodein.di.generic.instance + +class CustomTabsWarmer(override val kodein: Kodein) : KodeinAware { + private var customClient: CustomTabsClient? = null + private var customSession: CustomTabsSession? = null + + init { + // This leaks - make it more static and reusable + val conn = object : CustomTabsServiceConnection() { + override fun onCustomTabsServiceConnected(name: ComponentName?, client: CustomTabsClient?) { + customClient = client + client?.warmup(0) + customSession = client?.newSession(object : CustomTabsCallback() {}) + } + + override fun onServiceDisconnected(name: ComponentName) { + } + } + + CustomTabsClient.bindCustomTabsService( + kodein.direct.instance(), + "com.android.chrome", + conn + ) + } + + suspend fun preLoad(linkProvider: () -> Uri?) { + var time = 50L + while (customSession == null || linkProvider() == null) { + delay(time) + time *= 2 + if (time > 1000L) { + // Give up + return + } + } + + customSession?.mayLaunchUrl(linkProvider(), Bundle.EMPTY, emptyList()) + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/ui/DeleteFeedsDialogFragment.kt b/app/src/main/java/com/nononsenseapps/feeder/ui/DeleteFeedsDialogFragment.kt new file mode 100644 index 0000000..ac13420 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/ui/DeleteFeedsDialogFragment.kt @@ -0,0 +1,64 @@ +package com.nononsenseapps.feeder.ui + +import android.app.Dialog +import android.content.DialogInterface +import android.os.Bundle +import androidx.core.os.bundleOf +import androidx.navigation.fragment.findNavController +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.base.KodeinAwareDialogFragment +import com.nononsenseapps.feeder.db.room.ID_ALL_FEEDS +import com.nononsenseapps.feeder.model.FeedViewModel +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import org.kodein.di.generic.instance + +const val ARG_FEED_IDS = "feed_ids" +const val ARG_FEED_TITLES = "feed_titles" + +class DeleteFeedsDialogFragment : KodeinAwareDialogFragment() { + private val feedViewModel: FeedViewModel by instance() + + private lateinit var feedIds: LongArray + private lateinit var feedTitles: Array + + private val checkedItems by lazy { + BooleanArray(feedIds.size) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + feedIds = arguments?.getLongArray(ARG_FEED_IDS) ?: longArrayOf() + feedTitles = arguments?.getStringArray(ARG_FEED_TITLES) ?: arrayOf() + } + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + val builder = MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.delete_feed) + .setPositiveButton(android.R.string.ok) { _, _ -> + val idsToDelete = feedIds.zip(checkedItems.asIterable()) + .filter { (_, checked) -> + checked + }.map { (id, _) -> + id + } + + GlobalScope.launch { + feedViewModel.deleteFeeds(idsToDelete) + } + + findNavController().navigate( + R.id.action_deleteFeedsDialogFragment_to_feedFragment, + bundleOf(ARG_FEED_ID to ID_ALL_FEEDS) + ) + } + .setNegativeButton(android.R.string.cancel) { _, _ -> } + .setMultiChoiceItems(feedTitles, checkedItems) { _: DialogInterface, position: Int, checked: Boolean -> + checkedItems[position] = checked + } + + return builder.create() + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/ui/DividerColor.java b/app/src/main/java/com/nononsenseapps/feeder/ui/DividerColor.java new file mode 100644 index 0000000..07b7c66 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/ui/DividerColor.java @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.nononsenseapps.feeder.ui; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import android.view.View; + +import com.nononsenseapps.feeder.R; + +public class DividerColor extends RecyclerView.ItemDecoration { + + public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL; + public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL; + + private final Drawable mDivider; + private final int skipHeaders; + + private int mOrientation; + // in pixels + private static final int size = 1; + private final int skipFooters; + + public DividerColor(Context context, int orientation) { + this(context, orientation, 0, 0); + } + + public DividerColor(Context context, int orientation, int skipHeaders, int skipFooters) { + mDivider = context.getResources().getDrawable(R.drawable.simple_divider); + setOrientation(orientation); + this.skipHeaders = skipHeaders; + this.skipFooters = skipFooters; + } + + public void setOrientation(int orientation) { + if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) { + throw new IllegalArgumentException("invalid orientation"); + } + mOrientation = orientation; + } + + @Override + public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { + if (mOrientation == VERTICAL_LIST) { + drawVertical(c, parent); + } else { + drawHorizontal(c, parent); + } + } + + public void drawVertical(Canvas c, RecyclerView parent) { + final int left = parent.getPaddingLeft(); + final int right = parent.getWidth() - parent.getPaddingRight(); + + final int childCount = parent.getChildCount(); + for (int i = skipHeaders; i < childCount - skipFooters; i++) { + final View child = parent.getChildAt(i); + final RecyclerView.LayoutParams params = + (RecyclerView.LayoutParams) child.getLayoutParams(); + final int top = child.getBottom() + params.bottomMargin; + final int bottom = top + size; + mDivider.setBounds(left, top, right, bottom); + mDivider.draw(c); + } + } + + public void drawHorizontal(Canvas c, RecyclerView parent) { + final int childCount = parent.getChildCount(); + for (int i = skipHeaders; i < childCount; i++) { + final View child = parent.getChildAt(i); + final RecyclerView.LayoutParams params = + (RecyclerView.LayoutParams) child.getLayoutParams(); + final int left = child.getRight() + params.rightMargin; + final int right = left + size; + final int top = child.getTop(); + final int bottom = child.getBottom(); + mDivider.setBounds(left, top, right, bottom); + mDivider.draw(c); + } + } + + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, + RecyclerView.State state) { + if (mOrientation == VERTICAL_LIST) { + outRect.set(0, 0, 0, size); + } else { + outRect.set(0, 0, size, 0); + } + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/ui/DividerItemDecoration.java b/app/src/main/java/com/nononsenseapps/feeder/ui/DividerItemDecoration.java new file mode 100644 index 0000000..0f284f4 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/ui/DividerItemDecoration.java @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.nononsenseapps.feeder.ui; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import android.view.View; + +public class DividerItemDecoration extends RecyclerView.ItemDecoration { + + public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL; + public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL; + private static final int[] ATTRS = new int[]{android.R.attr.listDivider}; + private Drawable mDivider; + + private int mOrientation; + + public DividerItemDecoration(Context context, int orientation) { + final TypedArray a = context.obtainStyledAttributes(ATTRS); + mDivider = a.getDrawable(0); + a.recycle(); + setOrientation(orientation); + } + + public void setOrientation(int orientation) { + if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) { + throw new IllegalArgumentException("invalid orientation"); + } + mOrientation = orientation; + } + + @Override + public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { + if (mOrientation == VERTICAL_LIST) { + drawVertical(c, parent); + } else { + drawHorizontal(c, parent); + } + } + + public void drawVertical(Canvas c, RecyclerView parent) { + final int left = parent.getPaddingLeft(); + final int right = parent.getWidth() - parent.getPaddingRight(); + + final int childCount = parent.getChildCount(); + for (int i = 0; i < childCount; i++) { + final View child = parent.getChildAt(i); + final RecyclerView.LayoutParams params = + (RecyclerView.LayoutParams) child.getLayoutParams(); + final int top = child.getBottom() + params.bottomMargin; + final int bottom = top + mDivider.getIntrinsicHeight(); + mDivider.setBounds(left, top, right, bottom); + mDivider.draw(c); + } + } + + public void drawHorizontal(Canvas c, RecyclerView parent) { + final int top = parent.getPaddingTop(); + final int bottom = parent.getHeight() - parent.getPaddingBottom(); + + final int childCount = parent.getChildCount(); + for (int i = 0; i < childCount; i++) { + final View child = parent.getChildAt(i); + final RecyclerView.LayoutParams params = + (RecyclerView.LayoutParams) child.getLayoutParams(); + final int left = child.getRight() + params.rightMargin; + final int right = left + mDivider.getIntrinsicHeight(); + mDivider.setBounds(left, top, right, bottom); + mDivider.draw(c); + } + } + + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, + RecyclerView.State state) { + if (mOrientation == VERTICAL_LIST) { + outRect.set(0, 0, 0, mDivider.getIntrinsicHeight()); + } else { + outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0); + } + } +} diff --git a/app/src/main/java/com/nononsenseapps/feeder/ui/EditFeedActivity.kt b/app/src/main/java/com/nononsenseapps/feeder/ui/EditFeedActivity.kt new file mode 100644 index 0000000..4b65734 --- /dev/null +++ b/app/src/main/java/com/nononsenseapps/feeder/ui/EditFeedActivity.kt @@ -0,0 +1,515 @@ +package com.nononsenseapps.feeder.ui + +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.os.Bundle +import android.util.Log +import android.util.TypedValue +import android.view.KeyEvent +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.WindowManager +import android.view.inputmethod.EditorInfo +import android.view.inputmethod.InputMethodManager +import android.widget.ArrayAdapter +import android.widget.AutoCompleteTextView +import android.widget.Button +import android.widget.CheckBox +import android.widget.EditText +import android.widget.TextView +import android.widget.Toast +import android.widget.Spinner +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.RecyclerView +import com.nononsenseapps.feeder.R +import com.nononsenseapps.feeder.base.KodeinAwareActivity +import com.nononsenseapps.feeder.db.URI_FEEDS +import com.nononsenseapps.feeder.db.room.FeedDao +import com.nononsenseapps.feeder.db.room.ID_UNSET +import com.nononsenseapps.feeder.db.room.OPEN_ARTICLE_WITH_APPLICATION_DEFAULT +import com.nononsenseapps.feeder.db.room.upsertFeed +import com.nononsenseapps.feeder.model.FeedParser +import com.nononsenseapps.feeder.model.requestFeedSync +import com.nononsenseapps.feeder.util.PREF_VAL_OPEN_WITH_BROWSER +import com.nononsenseapps.feeder.util.PREF_VAL_OPEN_WITH_CUSTOM_TAB +import com.nononsenseapps.feeder.util.PREF_VAL_OPEN_WITH_READER +import com.nononsenseapps.feeder.util.PREF_VAL_OPEN_WITH_WEBVIEW +import com.nononsenseapps.feeder.util.Prefs +import com.nononsenseapps.feeder.util.sloppyLinkToStrictURL +import com.nononsenseapps.feeder.util.sloppyLinkToStrictURLNoThrows +import com.nononsenseapps.feeder.views.FloatLabelLayout +import com.nononsenseapps.jsonfeed.Feed +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.mapNotNull +import kotlinx.coroutines.flow.onCompletion +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.launch +import org.kodein.di.generic.instance +import java.net.URL + +const val TEMPLATE = "template" + +@FlowPreview +@ExperimentalCoroutinesApi +class EditFeedActivity : KodeinAwareActivity() { + private var id: Long = ID_UNSET + + // Views and shit + private lateinit var textTitle: EditText + private lateinit var textUrl: EditText + private lateinit var textTag: AutoCompleteTextView + private lateinit var checkboxDefaultFullText: CheckBox + private lateinit var textSearch: EditText + private lateinit var detailsFrame: View + private lateinit var listResults: androidx.recyclerview.widget.RecyclerView + private lateinit var resultAdapter: ResultsAdapter + private lateinit var searchFrame: View + private var feedUrl: String? = null + private lateinit var emptyText: TextView + private lateinit var loadingProgress: View + private lateinit var urlLabel: FloatLabelLayout + private lateinit var titleLabel: FloatLabelLayout + private lateinit var tagLabel: FloatLabelLayout + private lateinit var openArticlesWith: Spinner + + private var feedTitle: String = "" + + internal var searchJob: Job? = null + set(value) { + field?.cancel() + field = value + } + + private val feedParser: FeedParser by instance() + private val feedDao: FeedDao by instance() + private val prefs: Prefs by instance() + + override fun onCreate(savedInstanceState: Bundle?) { + if (shouldBeFloatingWindow()) { + setupFloatingWindow() + } + when (prefs.isNightMode) { + true -> { + R.style.EditFeedThemeNight + } + false -> { + R.style.EditFeedThemeDay + } + }.let { + setTheme(it) + } + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_edit_feed) + + // Setup views + textTitle = findViewById(R.id.feed_title) + titleLabel = textTitle.parent as FloatLabelLayout + textUrl = findViewById(R.id.feed_url) + urlLabel = textUrl.parent as FloatLabelLayout + textTag = findViewById(R.id.feed_tag) + checkboxDefaultFullText = findViewById(R.id.feed_default_full_text) + tagLabel = textTag.parent as FloatLabelLayout + detailsFrame = findViewById(R.id.feed_details_frame) + searchFrame = findViewById(R.id.feed_search_frame) + textSearch = findViewById(R.id.search_view) + listResults = findViewById(R.id.results_listview) + emptyText = findViewById(android.R.id.empty) + loadingProgress = findViewById(R.id.loading_progress) + openArticlesWith = findViewById(R.id.open_articles_with) + resultAdapter = ResultsAdapter() + // listResults.emptyView = emptyText + listResults.setHasFixedSize(true) + listResults.layoutManager = androidx.recyclerview.widget.LinearLayoutManager(this) + listResults.adapter = resultAdapter + + textSearch.setOnEditorActionListener( + TextView.OnEditorActionListener { _, actionId, event -> + if (actionId == EditorInfo.IME_ACTION_GO || + actionId == EditorInfo.IME_NULL && event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER + ) { + // Hide keyboard + val f = currentFocus + if (f != null) { + val imm = getSystemService( + Context.INPUT_METHOD_SERVICE + ) as InputMethodManager + imm.hideSoftInputFromWindow( + f.windowToken, + 0 + ) + } + + try { + // Issue search + val url: URL = sloppyLinkToStrictURL(textSearch.text.toString().trim()) + + listResults.visibility = View.GONE + emptyText.visibility = View.GONE + loadingProgress.visibility = View.VISIBLE + + searchJob = searchForFeeds(url) + } catch (exc: Exception) { + exc.printStackTrace() + Toast.makeText( + this@EditFeedActivity, + R.string.could_not_load_url, + Toast.LENGTH_SHORT + ).show() + } + + return@OnEditorActionListener true + } + false + } + ) + + val addButton = findViewById + + + + + + + + +
    + + +
    + + +
    +
    + + + +
    + +

    + Reduce the size of images even further by reducing number of colors with Gimp +

    +
    + +
    + +
    +

    + In Gimp you go to Image in the top menu bar and select Mode followed by Indexed. Now you see a popup where you can select the number of colors for a generated optimum palette. +You’ll have to experiment a little because it will depend on your image. +I used this approach to shrink the size of the cover image in the_zopfli post from a 37KB (JPG) to just 15KB (PNG, all PNG sizes listed include Zopfli compression btw). +
    +

    +

    + + Read more + +

    +
    + + +
    +
    + +
    +
    + + + +
    + +

    + Don't start service on installation of Debian package +

    +
    + +
    + +
    +

    + A clear difference between Debian/Ubuntu and for example Red Hat/Fedora is that packages which include system services will enable and start those services at install time in Debian/Ubuntu whereas they will not start automatically in Red Hat/Fedora. +Sometimes it would be very convenient if the service would not start automatically, for example if you need to configure the service before starting it for the first time. +To prevent the automatic start of system services at install time in Debian, just set the RUNLEVEL environment variable like so: +
    +

    +

    + + Read more + +

    +
    + + +
    +
    + +
    +
    + + + +
    + +

    + Rebooting on wrong password +

    +
    + +
    + +
    +

    + Having an encrypted hard drive is all well and good, but chances are that if someone is gonna steal your laptop, it’s probably not going to be turned off. Most likely, it will be stolen in a powered-on state. And so your encrypted hard drive doesn’t increase your security at all since it’s currently unlocked. +In my mind, it’s a slight improvement if the computer somehow can shutdown if someone is trying to gain access to it. +
    +

    +

    + + Read more + +

    +
    + + +
    +
    + +
    +
    + + + +
    + +

    + Compress all the images! +

    +
    + +
    + +
    +

    + Update 2016-11-22: Made the Makefile compatible with BSD sed (MacOS) +One advantage that static sites, such as those built by Hugo, provide is fast loading times. Because there is no processing to be done, no server side rendering, no database lookups, loading times are just as fast as you can serve the files that make up the page. This means that bandwidth becomes the primary bottleneck, which incidentally is one of the factors used by Google to calculate your search ranking. +
    +

    +

    + + Read more + +

    +
    + + +
    +
    + +
    +
    + + + +
    + +

    + Migrating from Ghost to Hugo +

    +
    + +
    + +
    +

    + So I recently migrated this site from Ghost to Hugo after reading a nice article about the Hugo in Linux Voice #20 (funnily enough, the same issue also features an article about Ghost). I originally made the switch to Ghost from Jekyll back in 2014 or so mainly because I could not find a good theme to use. Ghost also seemed to have a lot of cool features and it’s fun to try new things. +
    +

    +

    + + Read more + +

    +
    + + +
    +
    + + + + +
    + + + + +
    + + + + + + + + + + + + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/empty_slash_comment.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/empty_slash_comment.xml new file mode 100644 index 0000000..1c9f241 --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/empty_slash_comment.xml @@ -0,0 +1,32 @@ + + + + + Golem.de + IT-News fuer Profis + https://www.golem.de/ + + Sat, 09 Dec 2017 15:49:02 +0100 + FeedCreator 1.6 + + https://www.golem.de/staticrl/images/golem-rss.png + Golem.de + https://www.golem.de/ + Golem.de News Feed + + de + + + Anheuser Busch: US-Brauerei bestellt 40 Tesla-Trucks vor + https://www.golem.de/news/anheuser-busch-us-brauerei-bestellt-40-tesla-trucks-vor-1712-131577-rss.html + Das US-Brau-Unternehmen Anheuser Busch hat 40 der neuen Lkws von Tesla vorbestellt. Dem Hersteller zufolge ist das die grte Vorbestellung bisher. Auch Walmart und DHL haben den Elektro-Truck bereits geordert. (<a href="https://www.golem.de/specials/tesla/">Tesla</a>, <a href="https://www.golem.de/specials/elektroauto/">Elektroauto</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131577&amp;page=1&amp;ts=1512830640" alt="" width="1" height="1" /> + Sat, 09 Dec 2017 15:44:00 +0100 + https://www.golem.de/1712/131577-rss.html + Das US-Brau-Unternehmen Anheuser Busch hat 40 der neuen Lkws von Tesla vorbestellt. Dem Hersteller zufolge ist das die grte Vorbestellung bisher. Auch Walmart und DHL haben den Elektro-Truck bereits geordert. (Tesla, Elektroauto) ]]> + + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/fz.html b/app/src/test/resources/com/nononsenseapps/feeder/model/fz.html new file mode 100644 index 0000000..046eb8b --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/fz.html @@ -0,0 +1,2561 @@ + + + + + + + + + + + #1 - FZ.se + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/golem-de.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/golem-de.xml new file mode 100644 index 0000000..89af15b --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/golem-de.xml @@ -0,0 +1,422 @@ + + + + + Golem.de + IT-News fuer Profis + https://www.golem.de/ + + Sat, 09 Dec 2017 15:49:02 +0100 + FeedCreator 1.6 + + https://www.golem.de/staticrl/images/golem-rss.png + Golem.de + https://www.golem.de/ + Golem.de News Feed + + de + + + Anheuser Busch: US-Brauerei bestellt 40 Tesla-Trucks vor + https://www.golem.de/news/anheuser-busch-us-brauerei-bestellt-40-tesla-trucks-vor-1712-131577-rss.html + Das US-Brau-Unternehmen Anheuser Busch hat 40 der neuen Lkws von Tesla vorbestellt. Dem Hersteller zufolge ist das die grte Vorbestellung bisher. Auch Walmart und DHL haben den Elektro-Truck bereits geordert. (<a href="https://www.golem.de/specials/tesla/">Tesla</a>, <a href="https://www.golem.de/specials/elektroauto/">Elektroauto</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131577&amp;page=1&amp;ts=1512830640" alt="" width="1" height="1" /> + Sat, 09 Dec 2017 15:44:00 +0100 + https://www.golem.de/1712/131577-rss.html + Das US-Brau-Unternehmen Anheuser Busch hat 40 der neuen Lkws von Tesla vorbestellt. Dem Hersteller zufolge ist das die grte Vorbestellung bisher. Auch Walmart und DHL haben den Elektro-Truck bereits geordert. (Tesla, Elektroauto) ]]> + 0 + + + Apple: Jony Ive bernimmt wieder Apples Produktdesign + https://www.golem.de/news/apple-jony-ive-uebernimmt-wieder-apples-produktdesign-1712-131576-rss.html + Der Apple Park ist fertig, also hat Jony Ive wieder Zeit fr Produktdesign: Ab sofort ist der britische Designer wieder fr das Aussehen von Apples Gerten und Software verantwortlich. Die vergangenen zwei Jahre war Ive in die Designentscheidungen von Produkten nicht involviert. (<a href="https://www.golem.de/specials/jonathan-ive/">Jonathan Ive</a>, <a href="https://www.golem.de/specials/apple/">Apple</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131576&amp;page=1&amp;ts=1512824700" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/handy/apple-jony-ive-uebernimmt-wieder-apples-produktdesign/114242,list.html + Sat, 09 Dec 2017 14:05:00 +0100 + https://www.golem.de/1712/131576-rss.html + Der Apple Park ist fertig, also hat Jony Ive wieder Zeit fr Produktdesign: Ab sofort ist der britische Designer wieder fr das Aussehen von Apples Gerten und Software verantwortlich. Die vergangenen zwei Jahre war Ive in die Designentscheidungen von Produkten nicht involviert. (Jonathan Ive, Apple) ]]> + 0 + + + Elon Musk: Tesla will eigene KI-Chips bauen + https://www.golem.de/news/elon-musk-tesla-will-eigene-ki-chips-bauen-1712-131575-rss.html + Auf einer Konferenz hat Tesla-Grnder Elon Musk verraten, dass das Unternehmen eigene KI-Chips fr autonome Fahrzeuge entwickelt. An der Forschung beteiligt ist Jim Keller, der zuvor unter anderem bei AMD Chips entwickelt hat. (<a href="https://www.golem.de/specials/tesla/">Tesla</a>, <a href="https://www.golem.de/specials/ki/">KI</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131575&amp;page=1&amp;ts=1512821340" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/automobil/elon-musk-tesla-will-eigene-ki-chips-bauen/114241,list.html + Sat, 09 Dec 2017 13:09:00 +0100 + https://www.golem.de/1712/131575-rss.html + Auf einer Konferenz hat Tesla-Grnder Elon Musk verraten, dass das Unternehmen eigene KI-Chips fr autonome Fahrzeuge entwickelt. An der Forschung beteiligt ist Jim Keller, der zuvor unter anderem bei AMD Chips entwickelt hat. (Tesla, KI) ]]> + 0 + + + Die Woche im Video: Lauscher auf! + https://www.golem.de/news/die-woche-im-video-lauscher-auf-1712-131540-rss.html + Security ist kaputt und ein Tesla-Mietwagen vllig demoliert. Auerdem drehen wir gleich zwlf smarte Lautsprecher - oder besser Lauschsprecher - auf. Sieben Tage und viele Meldungen im berblick. (<a href="https://www.golem.de/specials/golemwochenrueckblick/">Golem-Wochenrckblick</a>, <a href="https://www.golem.de/specials/apple-tv/">Apple TV</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131540&amp;page=1&amp;ts=1512806580" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/politik-recht/die-woche-im-video-lauscher-auf/114240,list.html + Sat, 09 Dec 2017 09:03:00 +0100 + https://www.golem.de/1712/131540-rss.html + Security ist kaputt und ein Tesla-Mietwagen vllig demoliert. Auerdem drehen wir gleich zwlf smarte Lautsprecher - oder besser Lauschsprecher - auf. Sieben Tage und viele Meldungen im berblick. (Golem-Wochenrckblick, Apple TV) ]]> + 0 + + + Entlassungen: Kaufland beendet Online-Lieferservice fr Lebensmittel + https://www.golem.de/news/entlassungen-kaufland-beendet-online-lieferservice-fuer-lebensmittel-1712-131573-rss.html + Viele Kunden hatten Interesse an dem Online-Lieferservice fr Lebensmittel von Kaufland. Dennoch hrt das Unternehmen jetzt damit auf. Amazon drfte sich freuen. (<a href="https://www.golem.de/specials/amazon/">Amazon</a>, <a href="https://www.golem.de/specials/lieferdienst/">Lieferdienst</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131573&amp;page=1&amp;ts=1512757080" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wirtschaft/entlassungen-kaufland-beendet-online-lieferservice-fuer-lebensmittel/114239,list.html + Fri, 08 Dec 2017 19:18:00 +0100 + https://www.golem.de/1712/131573-rss.html + Viele Kunden hatten Interesse an dem Online-Lieferservice fr Lebensmittel von Kaufland. Dennoch hrt das Unternehmen jetzt damit auf. Amazon drfte sich freuen. (Amazon, Lieferdienst) ]]> + 61 + + + DigiNetz-Gesetz: Unitymedia berbaut keine Glasfaser in Frdergebieten + https://www.golem.de/news/diginetz-gesetz-unitymedia-ueberbaut-keine-glasfaser-in-foerdergebieten-1712-131572-rss.html + Im Streit um ein Open-Access-Modell blieb Unitymedia hart. Wir haben uns vom Leiter Regulatory des Unternehmens die Hintergrnde zur Entscheidung um die Mitverlegung von Glasfaserkabeln in einem Neubaugebiet erklren lassen. (<a href="https://www.golem.de/specials/bundesnetzagentur/">Bundesnetzagentur</a>, <a href="https://www.golem.de/specials/openaccess/">Open Access</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131572&amp;page=1&amp;ts=1512754860" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/politik-recht/diginetz-gesetz-unitymedia-ueberbaut-keine-glasfaser-in-foerdergebieten/114238,list.html + Fri, 08 Dec 2017 18:41:00 +0100 + https://www.golem.de/1712/131572-rss.html + Im Streit um ein Open-Access-Modell blieb Unitymedia hart. Wir haben uns vom Leiter Regulatory des Unternehmens die Hintergrnde zur Entscheidung um die Mitverlegung von Glasfaserkabeln in einem Neubaugebiet erklren lassen. (Bundesnetzagentur, Open Access) ]]> + 4 + + + Telekom: Mobilfunk an neuer ICE-Strecke Mnchen-Berlin ausgebaut + https://www.golem.de/news/telekom-mobilfunk-an-neuer-ice-strecke-muenchen-berlin-ausgebaut-1712-131571-rss.html + Die neue ICE-Strecke zwischen Mnchen und Berlin erforderte auch Anstrengungen von den Mobilfunkbetreibern Deutsche Telekom, Vodafone und Telefnica. Die drei Konkurrenten haben hier zusammengearbeitet. (<a href="https://www.golem.de/specials/deutsche-bahn/">Deutsche Bahn</a>, <a href="https://www.golem.de/specials/wlan/">WLAN</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131571&amp;page=1&amp;ts=1512753900" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wirtschaft/telekom-mobilfunk-an-neuer-ice-strecke-muenchen-berlin-ausgebaut/114237,list.html + Fri, 08 Dec 2017 18:25:00 +0100 + https://www.golem.de/1712/131571-rss.html + Die neue ICE-Strecke zwischen Mnchen und Berlin erforderte auch Anstrengungen von den Mobilfunkbetreibern Deutsche Telekom, Vodafone und Telefnica. Die drei Konkurrenten haben hier zusammengearbeitet. (Deutsche Bahn, WLAN) ]]> + 14 + + + Modems: Huawei und Telekom warnen vor Angriffen auf Wartungsports + https://www.golem.de/news/modems-huawei-und-telekom-warnen-vor-angriffen-auf-wartungsports-1712-131570-rss.html + Ein IoT-Botnetz greift derzeit weltweit Modems von Huawei ber einen Wartungsport an, die Deutsche Telekom spricht von bis zu 100.000 infizierten Gerten. Huawei gibt Sicherheitstipps und will einen Patch bereitstellen. (<a href="https://www.golem.de/specials/huawei/">Huawei</a>, <a href="https://www.golem.de/specials/telekom/">Telekom</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131570&amp;page=1&amp;ts=1512752940" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/modems-huawei-und-telekom-warnen-vor-angriffen-auf-wartungsports/114236,list.html + Fri, 08 Dec 2017 18:09:00 +0100 + https://www.golem.de/1712/131570-rss.html + Ein IoT-Botnetz greift derzeit weltweit Modems von Huawei ber einen Wartungsport an, die Deutsche Telekom spricht von bis zu 100.000 infizierten Gerten. Huawei gibt Sicherheitstipps und will einen Patch bereitstellen. (Huawei, Telekom) ]]> + 5 + + + Antivirus: Microsoft bringt Extra-Patch fr kritische Lcke in Defender + https://www.golem.de/news/antivirus-microsoft-bringt-extra-patch-fuer-kritische-luecke-in-defender-1712-131569-rss.html + Erneut trifft es Windows Defender: Ein Speicherfehler kann Angreifer in die Lage versetzen, den Virenscanner zum Ausfhren von Code zu nutzen. Microsoft hlt aktive Exploits allerdings fr unwahrscheinlich, Patches werden verteilt. (<a href="https://www.golem.de/specials/security/">Security</a>, <a href="https://www.golem.de/specials/virenscanner/">Virenscanner</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131569&amp;page=1&amp;ts=1512747300" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/antivirus-microsoft-bringt-extra-patch-fuer-kritische-luecke-in-defender/114235,list.html + Fri, 08 Dec 2017 16:35:00 +0100 + https://www.golem.de/1712/131569-rss.html + Erneut trifft es Windows Defender: Ein Speicherfehler kann Angreifer in die Lage versetzen, den Virenscanner zum Ausfhren von Code zu nutzen. Microsoft hlt aktive Exploits allerdings fr unwahrscheinlich, Patches werden verteilt. (Security, Virenscanner) ]]> + 6 + + + Bandai Namco: Neue Taktiken fr Prgelspieler in Soul Calibur 6 + https://www.golem.de/news/bandai-namco-neue-taktiken-fuer-pruegelspieler-in-soul-calibur-6-1712-131568-rss.html + Altbekannte Helden, aber auch ein paar Neuzugnge und berarbeitete Taktiken: Bandai Namco hat das Prgelspiel Soul Calibur 6 fr Windows-PC und Konsolen angekndigt. (<a href="https://www.golem.de/specials/soul-calibur/">Soul Calibur</a>, <a href="https://www.golem.de/specials/steam/">Steam</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131568&amp;page=1&amp;ts=1512744660" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/games/bandai-namco-neue-taktiken-fuer-pruegelspieler-in-soul-calibur-6/114234,list.html + Fri, 08 Dec 2017 15:51:00 +0100 + https://www.golem.de/1712/131568-rss.html + Altbekannte Helden, aber auch ein paar Neuzugnge und berarbeitete Taktiken: Bandai Namco hat das Prgelspiel Soul Calibur 6 fr Windows-PC und Konsolen angekndigt. (Soul Calibur, Steam) ]]> + 9 + + + C++ Framework: Qt 5.10 streamt UIs und bringt moderne Crypto + https://www.golem.de/news/c-framework-qt-5-10-streamt-uis-und-bringt-moderne-crypto-1712-131567-rss.html + Mit der aktuellen Version 5.10 von Qt lassen sich UIs per WebGL streamen, Multi-Touch-Eingaben besser bearbeiten und QtQuick-Steuerelemente ber Bilder umsetzen. Darber hinaus kann Qt nun OpenSSL 1.1 nutzen und liefert bessere Zufallszahlen. (<a href="https://www.golem.de/specials/qt/">Qt</a>, <a href="https://www.golem.de/specials/api/">API</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131567&amp;page=1&amp;ts=1512743340" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/software-entwicklung/c-framework-qt-5.10-streamt-uis-und-bringt-moderne-crypto/114233,list.html + Fri, 08 Dec 2017 15:29:00 +0100 + https://www.golem.de/1712/131567-rss.html + Mit der aktuellen Version 5.10 von Qt lassen sich UIs per WebGL streamen, Multi-Touch-Eingaben besser bearbeiten und QtQuick-Steuerelemente ber Bilder umsetzen. Darber hinaus kann Qt nun OpenSSL 1.1 nutzen und liefert bessere Zufallszahlen. (Qt, API) ]]> + 5 + + + Bluehole: Pubg-Wstenkarte Miramar auf Testservern spielbar + https://www.golem.de/news/bluehole-pubg-wuestenkarte-miramar-auf-testservern-spielbar-1712-131566-rss.html + Kurz vor Weihnachten 2017 erscheint die erste finale Version von Playerunknown's Battlegrounds. Bereits jetzt knnen Spieler die Wstenkarte Miramar auf den Testservern ausprobieren. (<a href="https://www.golem.de/specials/playerunknowns-battlegrounds/">Playerunknown&#039;s Battlegrounds</a>, <a href="https://www.golem.de/specials/steam/">Steam</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131566&amp;page=1&amp;ts=1512742200" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/games/bluehole-pubg-wuestenkarte-miramar-auf-testservern-spielbar/114231,list.html + Fri, 08 Dec 2017 15:10:00 +0100 + https://www.golem.de/1712/131566-rss.html + Kurz vor Weihnachten 2017 erscheint die erste finale Version von Playerunknown's Battlegrounds. Bereits jetzt knnen Spieler die Wstenkarte Miramar auf den Testservern ausprobieren. (Playerunknown's Battlegrounds, Steam) ]]> + 4 + + + Bridge: Protonmail startet lokalen IMAP-Server fr Verschlsselung + https://www.golem.de/news/bridge-protonmail-startet-lokalen-imap-server-fuer-verschluesselung-1712-131565-rss.html + Mit einer neuen Software sollen verschlsselte E-Mails praxistauglicher werden: Proton stellt die Bridge vor. Diese bernimmt die Verschlsselung und kommuniziert via IMAP und SMTP mit dem Mailclient. (<a href="https://www.golem.de/specials/protonmail/">Protonmail</a>, <a href="https://www.golem.de/specials/macosx/">Mac OS X</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131565&amp;page=1&amp;ts=1512740760" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/bridge-protonmail-startet-lokalen-imap-server-fuer-verschluesselung/114230,list.html + Fri, 08 Dec 2017 14:46:00 +0100 + https://www.golem.de/1712/131565-rss.html + Mit einer neuen Software sollen verschlsselte E-Mails praxistauglicher werden: Proton stellt die Bridge vor. Diese bernimmt die Verschlsselung und kommuniziert via IMAP und SMTP mit dem Mailclient. (Protonmail, Mac OS X) ]]> + 1 + + + Nvidia Titan V: Die neue schnellste Grafikkarte kostet 3.100 Euro + https://www.golem.de/news/nvidia-titan-v-die-neue-schnellste-grafikkarte-kostet-3-100-euro-1712-131562-rss.html + Nvidia hat mit der Titan V die mit Abstand flotteste Grafikkarte vorgestellt. Fr 3.100 Euro erhalten Kufer den Volta-basierten Pixelbeschleuniger kostenlos geliefert. Ungeachtet des hohen Preises hat Nvidia die Karte aber um ein Viertel beschnitten. (<a href="https://www.golem.de/specials/nvidia-volta/">Nvidia Volta</a>, <a href="https://www.golem.de/specials/grafikhardware/">Grafikhardware</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131562&amp;page=1&amp;ts=1512733020" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/sonstiges/nvidia-titan-v-die-neue-schnellste-grafikkarte-kostet-3.100-euro/114228,list.html + Fri, 08 Dec 2017 12:37:00 +0100 + https://www.golem.de/1712/131562-rss.html + Nvidia hat mit der Titan V die mit Abstand flotteste Grafikkarte vorgestellt. Fr 3.100 Euro erhalten Kufer den Volta-basierten Pixelbeschleuniger kostenlos geliefert. Ungeachtet des hohen Preises hat Nvidia die Karte aber um ein Viertel beschnitten. (Nvidia Volta, Grafikhardware) ]]> + 70 + + + Kilopower: Ein Kernreaktor fr Raumsonden + https://www.golem.de/news/kilopower-ein-kernreaktor-fuer-raumsonden-1712-131418-rss.html + Als Ersatz fr Radioisotopenbatterien entwickelt die Nasa kleine Kernreaktoren, die flexibler, leistungsstrker und beim Start weniger radioaktiv sind. Von Frank Wunderlich-Pfeiffer (<a href="https://www.golem.de/specials/raumfahrt/">Raumfahrt</a>, <a href="https://www.golem.de/specials/nasa/">Nasa</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131418&amp;page=1&amp;ts=1512730920" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/internet/kilopower-ein-kernreaktor-fuer-raumsonden/114227,list.html + Fri, 08 Dec 2017 12:02:00 +0100 + https://www.golem.de/1712/131418-rss.html + Als Ersatz fr Radioisotopenbatterien entwickelt die Nasa kleine Kernreaktoren, die flexibler, leistungsstrker und beim Start weniger radioaktiv sind. Von Frank Wunderlich-Pfeiffer (Raumfahrt, Nasa) ]]> + 58 + + + Trotz Reform: BND lsst neues Kontrollgremium angeblich auflaufen + https://www.golem.de/news/trotz-reform-bnd-laesst-neues-kontrollgremium-angeblich-auflaufen-1712-131561-rss.html + Die BND-Reform nach den Enthllungen des NSA-Ausschusses sollte eine bessere Kontrolle des Geheimdienstes ermglichen. Das scheint jedoch noch nicht zu funktionieren. (<a href="https://www.golem.de/specials/bnd/">BND</a>, <a href="https://www.golem.de/specials/datenschutz/">Datenschutz</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131561&amp;page=1&amp;ts=1512730620" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/internet/trotz-reform-bnd-laesst-neues-kontrollgremium-angeblich-auflaufen/114226,list.html + Fri, 08 Dec 2017 11:57:00 +0100 + https://www.golem.de/1712/131561-rss.html + Die BND-Reform nach den Enthllungen des NSA-Ausschusses sollte eine bessere Kontrolle des Geheimdienstes ermglichen. Das scheint jedoch noch nicht zu funktionieren. (BND, Datenschutz) ]]> + 8 + + + In the Valley of Gods: Firewatch-Macher betreten das Tal der Gtter + https://www.golem.de/news/in-the-valley-of-gods-firewatch-macher-betreten-das-tal-der-goetter-1712-131560-rss.html + Nach Abenteuern in einem US-Nationalpark (Firewatch) wagen die Entwickler vom Studio Campo Santo ein etwas exotischeres Szenario: Ihr nchstes Werk In the Valley of Gods schickt Spieler auf Schatzsuche in ein gyptisches Tal. (<a href="https://www.golem.de/specials/adventure/">Adventure</a>, <a href="https://www.golem.de/specials/playstation4/">Playstation 4</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131560&amp;page=1&amp;ts=1512728880" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/games/in-the-valley-of-gods-firewatch-macher-betreten-das-tal-der-goetter/114222,list.html + Fri, 08 Dec 2017 11:28:00 +0100 + https://www.golem.de/1712/131560-rss.html + Nach Abenteuern in einem US-Nationalpark (Firewatch) wagen die Entwickler vom Studio Campo Santo ein etwas exotischeres Szenario: Ihr nchstes Werk In the Valley of Gods schickt Spieler auf Schatzsuche in ein gyptisches Tal. (Adventure, Playstation 4) ]]> + 8 + + + Dynamics 365: Microsoft verteilt privaten Schlssel an alle Kunden + https://www.golem.de/news/microsoft-dynamics-365-microsoft-leakt-wildcard-zertifikat-for-clouddienst-1712-131542-rss.html + Microsoft hat aus Versehen einen privaten Schlssel fr seinen Clouddienst Dynamics 365 verffentlicht - und schaffte es ber Monate nicht, auf Hinweise zu reagieren. Zwischenzeitlich empfahl der Support sogar, eine Krisenreaktionsfirma aus der lindustrie anzurufen, um das Problem zu beseitigen. Von Hanno Bck (<a href="https://www.golem.de/specials/microsoft/">Microsoft</a>, <a href="https://www.golem.de/specials/serverapps/">Server-Applikationen</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131542&amp;page=1&amp;ts=1512727860" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/dynamics-365-microsoft-verteilt-privaten-schluessel-an-alle-kunden/114220,list.html + Fri, 08 Dec 2017 11:11:00 +0100 + https://www.golem.de/1712/131542-rss.html + Microsoft hat aus Versehen einen privaten Schlssel fr seinen Clouddienst Dynamics 365 verffentlicht - und schaffte es ber Monate nicht, auf Hinweise zu reagieren. Zwischenzeitlich empfahl der Support sogar, eine Krisenreaktionsfirma aus der lindustrie anzurufen, um das Problem zu beseitigen. Von Hanno Bck (Microsoft, Server-Applikationen) ]]> + 20 + + + Apple: Fehler in Homekit ermglichte offenbar unbefugten Zugang + https://www.golem.de/news/apple-fehler-in-homekit-erlaubte-offenbar-unbefugten-zugang-1712-131559-rss.html + Ein Fehler im Homekit-Framework soll dazu gefhrt haben, dass Smart-Devices von auerhalb gesteuert werden konnten. Apple hat einen Fehler eingestanden und bereits eine bergangslsung verteilt, wodurch jedoch bestimmte Funktionen von Homekit zunchst eingeschrnkt sind. (<a href="https://www.golem.de/specials/homekit/">Homekit</a>, <a href="https://www.golem.de/specials/apple/">Apple</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131559&amp;page=1&amp;ts=1512726600" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/applikationen/apple-fehler-in-homekit-ermoeglichte-offenbar-unbefugten-zugang/114216,list.html + Fri, 08 Dec 2017 10:50:00 +0100 + https://www.golem.de/1712/131559-rss.html + Ein Fehler im Homekit-Framework soll dazu gefhrt haben, dass Smart-Devices von auerhalb gesteuert werden konnten. Apple hat einen Fehler eingestanden und bereits eine bergangslsung verteilt, wodurch jedoch bestimmte Funktionen von Homekit zunchst eingeschrnkt sind. (Homekit, Apple) ]]> + 7 + + + Bundesregierung: Mit verdrehten Zahlen gegen die ePrivacy-Verordnung + https://www.golem.de/news/bundesregierung-mit-verdrehten-zahlen-gegen-die-eprivacy-verordnung-1712-131553-rss.html + Die Werbewirtschaft luft weiter Sturm gegen die geplante EU-Verordnung zum Schutz vor Nutzertracking. Doch die Bundesregierung geht in einer Studie offenbar bewusst von nicht belegten Zahlen aus und verkehrt die Nutzererwartungen in ihr Gegenteil. Eine Analyse von Friedhelm Greis (<a href="https://www.golem.de/specials/europaeische-union/">EU</a>, <a href="https://www.golem.de/specials/datenschutz/">Datenschutz</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131553&amp;page=1&amp;ts=1512724620" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/bundesregierung-mit-verdrehten-zahlen-gegen-die-eprivacy-verordnung/114215,list.html + Fri, 08 Dec 2017 10:17:00 +0100 + https://www.golem.de/1712/131553-rss.html + Die Werbewirtschaft luft weiter Sturm gegen die geplante EU-Verordnung zum Schutz vor Nutzertracking. Doch die Bundesregierung geht in einer Studie offenbar bewusst von nicht belegten Zahlen aus und verkehrt die Nutzererwartungen in ihr Gegenteil. Eine Analyse von Friedhelm Greis (EU, Datenschutz) ]]> + 63 + + + Telekom-Klage: Gericht untersagt O2 Falschbehauptungen bei Kundenwerbung + https://www.golem.de/news/telekom-klage-gericht-untersagt-o2-falschbehauptungen-bei-kundenwerbung-1712-131558-rss.html + Ein Gericht hat befunden, dass der Netzanbieter O2 bei der Anwerbung von Kunden gelogen habe. Einige Mitarbeiter hatten unter anderem behauptet, die Telekom werde Anschlsse nicht mehr bedienen, und so versucht, Kunden neue Vertrge aufzuschwatzen. (<a href="https://www.golem.de/specials/telekom/">Telekom</a>, <a href="https://www.golem.de/specials/telefonica/">Telefnica</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131558&amp;page=1&amp;ts=1512722880" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/politik-recht/telekom-klage-gericht-untersagt-o2-falschbehauptungen-bei-kundenwerbung/114214,list.html + Fri, 08 Dec 2017 09:48:00 +0100 + https://www.golem.de/1712/131558-rss.html + Ein Gericht hat befunden, dass der Netzanbieter O2 bei der Anwerbung von Kunden gelogen habe. Einige Mitarbeiter hatten unter anderem behauptet, die Telekom werde Anschlsse nicht mehr bedienen, und so versucht, Kunden neue Vertrge aufzuschwatzen. (Telekom, Telefnica) ]]> + 25 + + + Apps und Games fr VR-Headsets: Der virtuelle Blade Runner und Sport mit Sparc + https://www.golem.de/news/apps-und-games-fuer-vr-headsets-der-virtuelle-blade-runner-und-sport-mit-sparc-1712-131481-rss.html + Eintauchen in die Welt von Blade Runner 2049, aber auch schweitreibende Action von CCP Games (Eve Online) mit Sparc und Horror in fast vlliger Dunkelheit bei Stifled: Golem.de hat sich spannende Neuheiten fr Virtual-Reality-Headsets angeschaut. Von Achim Fehrenbach (<a href="https://www.golem.de/specials/virtuelle-realitaet/">VR</a>, <a href="https://www.golem.de/specials/steam/">Steam</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131481&amp;page=1&amp;ts=1512719820" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/sonstiges/apps-und-games-fuer-vr-headsets-der-virtuelle-blade-runner-und-sport-mit-sparc/114213,list.html + Fri, 08 Dec 2017 08:57:00 +0100 + https://www.golem.de/1712/131481-rss.html + Eintauchen in die Welt von Blade Runner 2049, aber auch schweitreibende Action von CCP Games (Eve Online) mit Sparc und Horror in fast vlliger Dunkelheit bei Stifled: Golem.de hat sich spannende Neuheiten fr Virtual-Reality-Headsets angeschaut. Von Achim Fehrenbach (VR, Steam) ]]> + 14 + + + LEVC: London bekommt Elektrotaxis mit Range Extender + https://www.golem.de/news/levc-london-bekommt-elektrotaxis-mit-range-extender-1712-131557-rss.html + Kurz bevor die Londoner Innenstadt zur Umweltzone wird, sind Elektrotaxis im Stil der alten Taxis der britischen Hauptstadt zugelassen worden. Ganz ohne Verbrennungsmotor kommen die E-Taxis aber nicht aus. (<a href="https://www.golem.de/specials/elektroauto/">Elektroauto</a>, <a href="https://www.golem.de/specials/technologie/">Technologie</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131557&amp;page=1&amp;ts=1512715260" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/automobil/levc-london-bekommt-elektrotaxis-mit-range-extender/114212,list.html + Fri, 08 Dec 2017 07:41:00 +0100 + https://www.golem.de/1712/131557-rss.html + Kurz bevor die Londoner Innenstadt zur Umweltzone wird, sind Elektrotaxis im Stil der alten Taxis der britischen Hauptstadt zugelassen worden. Ganz ohne Verbrennungsmotor kommen die E-Taxis aber nicht aus. (Elektroauto, Technologie) ]]> + 38 + + + Vehicle-to-Grid: Honda macht Elektroautos zu Stromnetz-Puffern + https://www.golem.de/news/vehicle-to-grid-honda-macht-elektroautos-zu-stromnetz-puffern-1712-131556-rss.html + Honda will Elektroautos zu temporren Energiespeichern machen und hat eine bidirektionale Ladetechnologie an seinem europischen Forschungs- und Entwicklungszentrum in Offenbach installiert. Damit kann Energie vom Auto wieder ins Stromnetz eingespeist werden. (<a href="https://www.golem.de/specials/elektroauto/">Elektroauto</a>, <a href="https://www.golem.de/specials/technologie/">Technologie</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131556&amp;page=1&amp;ts=1512714660" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/automobil/vehicle-to-grid-honda-macht-elektroautos-zu-stromnetz-puffern/114211,list.html + Fri, 08 Dec 2017 07:31:00 +0100 + https://www.golem.de/1712/131556-rss.html + Honda will Elektroautos zu temporren Energiespeichern machen und hat eine bidirektionale Ladetechnologie an seinem europischen Forschungs- und Entwicklungszentrum in Offenbach installiert. Damit kann Energie vom Auto wieder ins Stromnetz eingespeist werden. (Elektroauto, Technologie) ]]> + 2 + + + Notebook: AMDs Ryzen Mobile berzeugt im ersten Test + https://www.golem.de/news/notebook-amds-ryzen-mobile-ueberzeugt-im-ersten-test-1712-131555-rss.html + Das Laptop Mag hat zwei HP Envy x360 getestet, einen mit AMDs Ryzen Mobile und einen mit Intels 8th Gen genannten Prozessoren. Beide Notebooks weisen fast die gleiche Akkulaufzeit auf, bei der CPU- und der GPU-Geschwindigkeit hat AMD aber Vorteile. (<a href="https://www.golem.de/specials/zen/">AMD Zen</a>, <a href="https://www.golem.de/specials/notebook/">Notebook</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131555&amp;page=1&amp;ts=1512681960" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/mobile-computing/notebook-amds-ryzen-mobile-ueberzeugt-im-ersten-test/114209,list.html + Thu, 07 Dec 2017 22:26:00 +0100 + https://www.golem.de/1712/131555-rss.html + Das Laptop Mag hat zwei HP Envy x360 getestet, einen mit AMDs Ryzen Mobile und einen mit Intels 8th Gen genannten Prozessoren. Beide Notebooks weisen fast die gleiche Akkulaufzeit auf, bei der CPU- und der GPU-Geschwindigkeit hat AMD aber Vorteile. (AMD Zen, Notebook) ]]> + 49 + + + Lbben: Tele-Columbus-Tochter schliet 3.000 Haushalte an + https://www.golem.de/news/luebben-tele-columbus-tochter-schliesst-3-000-haushalte-an-1712-131554-rss.html + Ein weiteres groes Ausbauprojekt im Spreewald bringt den Menschen dort eine hhere Datenbertagungsrate. Die Tele-Columbus-Tochter Pepcom baut Fiber To The Building. (<a href="https://www.golem.de/specials/tele-columbus/">Tele Columbus</a>, <a href="https://www.golem.de/specials/studie/">Studie</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131554&amp;page=1&amp;ts=1512667440" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wirtschaft/luebben-tele-columbus-tochter-schliesst-3.000-haushalte-an/114208,list.html + Thu, 07 Dec 2017 18:24:00 +0100 + https://www.golem.de/1712/131554-rss.html + Ein weiteres groes Ausbauprojekt im Spreewald bringt den Menschen dort eine hhere Datenbertagungsrate. Die Tele-Columbus-Tochter Pepcom baut Fiber To The Building. (Tele Columbus, Studie) ]]> + 8 + + + Betrug: Bundesnetzagentur sperrt Erotik-Rufnummern + https://www.golem.de/news/betrug-bundesnetzagentur-sperrt-erotik-rufnummern-1712-131552-rss.html + Statt sexwilliger schner Frauen am Handy sind unter einer 0900-Vorwahl nur Warteschleifen geboten worden. Das Geschftsmodell wurde jetzt von der Bundesnetzagentur verboten. (<a href="https://www.golem.de/specials/bundesnetzagentur/">Bundesnetzagentur</a>, <a href="https://www.golem.de/specials/telekommunikation/">Telekommunikation</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131552&amp;page=1&amp;ts=1512664980" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/sonstiges/betrug-bundesnetzagentur-sperrt-erotik-rufnummern/114207,list.html + Thu, 07 Dec 2017 17:43:00 +0100 + https://www.golem.de/1712/131552-rss.html + Statt sexwilliger schner Frauen am Handy sind unter einer 0900-Vorwahl nur Warteschleifen geboten worden. Das Geschftsmodell wurde jetzt von der Bundesnetzagentur verboten. (Bundesnetzagentur, Telekommunikation) ]]> + 25 + + + AI Type: 31 Millionen Kundendaten von Tastaturanbieter verffentlicht + https://www.golem.de/news/ai-type-31-millionen-kundendaten-von-tastaturanbieter-veroeffentlicht-1712-131550-rss.html + Ein peinlicher Fehler, der dazu noch die ungeheure Datensammelwut des Herstellers zeigt: AI Type hat eine Datenbank mit mehr als 500 Gbyte Kundendaten ins Netz gestellt. (<a href="https://www.golem.de/specials/security/">Security</a>, <a href="https://www.golem.de/specials/smartphone/">Smartphone</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131550&amp;page=1&amp;ts=1512657960" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/ai-type-31-millionen-kundendaten-von-tastaturanbieter-veroeffentlicht/114205,list.html + Thu, 07 Dec 2017 15:46:00 +0100 + https://www.golem.de/1712/131550-rss.html + Ein peinlicher Fehler, der dazu noch die ungeheure Datensammelwut des Herstellers zeigt: AI Type hat eine Datenbank mit mehr als 500 Gbyte Kundendaten ins Netz gestellt. (Security, Smartphone) ]]> + 50 + + + Spieleportal: Bitcoin ist Steam zu unbestndig und zu teuer + https://www.golem.de/news/spieleportal-bitcoin-ist-steam-zu-unbestaendig-und-zu-teuer-1712-131551-rss.html + Selbst Bitcoin-Milliardre knnen mit der Cyberwhrung keine Spiele mehr bei Steam kaufen. Das Portal besteht ab sofort auf der Bezahlung mit Euro, Dollar oder anderen klassischen Whrungen. (<a href="https://www.golem.de/specials/steam/">Steam</a>, <a href="https://www.golem.de/specials/valve/">Valve</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131551&amp;page=1&amp;ts=1512656580" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wirtschaft/spieleportal-bitcoin-ist-steam-zu-unbestaendig-und-zu-teuer/114204,list.html + Thu, 07 Dec 2017 15:23:00 +0100 + https://www.golem.de/1712/131551-rss.html + Selbst Bitcoin-Milliardre knnen mit der Cyberwhrung keine Spiele mehr bei Steam kaufen. Das Portal besteht ab sofort auf der Bezahlung mit Euro, Dollar oder anderen klassischen Whrungen. (Steam, Valve) ]]> + 79 + + + Containerd: Container-Laufzeit von Docker allgemein verfgbar + https://www.golem.de/news/containerd-container-laufzeit-von-docker-allgemein-verfuegbar-1712-131549-rss.html + Die Container-Spezialisten von Docker spalten ihren anfangs monolithischen Dienst auf Druck der Community und der Industrie immer weiter auf. Die Laufzeitumgebung Containerd ist nun stabil, in Version 1.0 verfgbar und kann in Kubernetes genutzt werden. (<a href="https://www.golem.de/specials/docker/">Docker</a>, <a href="https://www.golem.de/specials/linux/">Linux</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131549&amp;page=1&amp;ts=1512655440" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/opensource/containerd-container-laufzeit-von-docker-allgemein-verfuegbar/114203,list.html + Thu, 07 Dec 2017 15:04:00 +0100 + https://www.golem.de/1712/131549-rss.html + Die Container-Spezialisten von Docker spalten ihren anfangs monolithischen Dienst auf Druck der Community und der Industrie immer weiter auf. Die Laufzeitumgebung Containerd ist nun stabil, in Version 1.0 verfgbar und kann in Kubernetes genutzt werden. (Docker, Linux) ]]> + 7 + + + Mobilfunknetze: LTE Roaming hat hnliche Probleme wie SS7 + https://www.golem.de/news/mobilfunknetze-lte-roaming-hat-aehnliche-probleme-wie-ss7-1712-131548-rss.html + Forscher demonstrieren auf der Konferenz Black Hat Europe hnliche Sicherheitsprobleme fr das LTE Roaming, wie diese auch fr das vollkommen veraltete SS7 existieren. Schlimmstenfalls lassen sich damit Sprachnachrichten analysieren. (<a href="https://www.golem.de/specials/security/">Security</a>, <a href="https://www.golem.de/specials/lte/">Long Term Evolution</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131548&amp;page=1&amp;ts=1512654000" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/mobilfunknetze-lte-roaming-hat-aehnliche-probleme-wie-ss7/114202,list.html + Thu, 07 Dec 2017 14:40:00 +0100 + https://www.golem.de/1712/131548-rss.html + Forscher demonstrieren auf der Konferenz Black Hat Europe hnliche Sicherheitsprobleme fr das LTE Roaming, wie diese auch fr das vollkommen veraltete SS7 existieren. Schlimmstenfalls lassen sich damit Sprachnachrichten analysieren. (Security, Long Term Evolution) ]]> + 5 + + + Stillfront Group: Hamburger Goodgame Studios fr 270 Millionen Euro bernommen + https://www.golem.de/news/stillfront-group-hamburger-goodgame-studios-fuer-270-millionen-euro-uebernommen-1712-131547-rss.html + Nur wenige Monate nach Querelen mit der Belegschaft und Entlassungen wird der Hamburger Entwickler Goodgame Studios fr rund 270 Millionen Euro von einem schwedischen Unternehmen akquiriert. (<a href="https://www.golem.de/specials/goodgame-studios/">Goodgame Studios</a>, <a href="https://www.golem.de/specials/games/">Games</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131547&amp;page=1&amp;ts=1512650460" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wirtschaft/stillfront-group-hamburger-goodgame-studios-fuer-270-millionen-euro-uebernommen/114201,list.html + Thu, 07 Dec 2017 13:41:00 +0100 + https://www.golem.de/1712/131547-rss.html + Nur wenige Monate nach Querelen mit der Belegschaft und Entlassungen wird der Hamburger Entwickler Goodgame Studios fr rund 270 Millionen Euro von einem schwedischen Unternehmen akquiriert. (Goodgame Studios, Games) ]]> + 16 + + + Amazon: Verkaufsbann fr Apple TV bleibt bestehen + https://www.golem.de/news/amazon-verkaufsbann-fuer-apple-tv-bleibt-bestehen-1712-131546-rss.html + Amazons Verkaufsbann fr das Streaminggert Apple TV bleibt bestehen. Obwohl es fr das Apple TV nun Amazons Video-App gibt, wird Apples Streaminggert weiterhin nicht bei Amazon gelistet. Ob dieser Bann jemals aufgehoben wird, ist ungewiss. (<a href="https://www.golem.de/specials/apple-tv/">Apple TV</a>, <a href="https://www.golem.de/specials/amazon/">Amazon</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131546&amp;page=1&amp;ts=1512648360" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/sonstiges/amazon-verkaufsbann-fuer-apple-tv-bleibt-bestehen/114200,list.html + Thu, 07 Dec 2017 13:06:00 +0100 + https://www.golem.de/1712/131546-rss.html + Amazons Verkaufsbann fr das Streaminggert Apple TV bleibt bestehen. Obwohl es fr das Apple TV nun Amazons Video-App gibt, wird Apples Streaminggert weiterhin nicht bei Amazon gelistet. Ob dieser Bann jemals aufgehoben wird, ist ungewiss. (Apple TV, Amazon) ]]> + 57 + + + Global Technology Services: IBM Deutschland verkauft GTS-Teile mit 1.000 Beschftigten + https://www.golem.de/news/global-technology-services-ibm-deutschland-verkauft-gts-teile-mit-1-000-beschaeftigten-1712-131545-rss.html + IBM Deutschland baut erneut indirekt Arbeitspltze ab, auch in Grobritannien werden IT-Jobs von IBM abgebaut. IBM Global Technology Services hat eine neue Fhrung. (<a href="https://www.golem.de/specials/ibm/">IBM</a>, <a href="https://www.golem.de/specials/verdi/">Verdi</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131545&amp;page=1&amp;ts=1512647460" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wirtschaft/global-technology-services-ibm-deutschland-verkauft-gts-teile-mit-1.000-beschaeftigten/114199,list.html + Thu, 07 Dec 2017 12:51:00 +0100 + https://www.golem.de/1712/131545-rss.html + IBM Deutschland baut erneut indirekt Arbeitspltze ab, auch in Grobritannien werden IT-Jobs von IBM abgebaut. IBM Global Technology Services hat eine neue Fhrung. (IBM, Verdi) ]]> + 0 + + + Alexa-Gerte und ihre Konkurrenz im Test: Der perfekte smarte Lautsprecher ist nicht dabei + https://www.golem.de/news/alexa-geraete-und-ihre-konkurrenz-der-perfekte-smarte-lautsprecher-ist-nicht-dabei-1712-131519-rss.html + Wir haben zwlf smarte Lautsprecher mit Alexa oder dem Google Assistant getestet und waren berrascht, wie schwer es fr einige Firmen aus der Hi-Fi-Branche ist, den Echo-Gerten Paroli zu bieten. Zwei Modelle, die nicht einmal so teuer sind, haben es dann aber doch geschafft. Ein Test von Ingo Pakalski (<a href="https://www.golem.de/specials/smarter-lautsprecher/">Smarter Lautsprecher</a>, <a href="https://www.golem.de/specials/google/">Google</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131519&amp;page=1&amp;ts=1512644520" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/audio-video/alexa-geraete-und-ihre-konkurrenz-im-test-der-perfekte-smarte-lautsprecher-ist-nicht-dabei/114198,list.html + Thu, 07 Dec 2017 12:02:00 +0100 + https://www.golem.de/1712/131519-rss.html + Wir haben zwlf smarte Lautsprecher mit Alexa oder dem Google Assistant getestet und waren berrascht, wie schwer es fr einige Firmen aus der Hi-Fi-Branche ist, den Echo-Gerten Paroli zu bieten. Zwei Modelle, die nicht einmal so teuer sind, haben es dann aber doch geschafft. Ein Test von Ingo Pakalski (Smarter Lautsprecher, Google) ]]> + 81 + + + Firmware-Bug: Codeausfhrung in deaktivierter Intel-ME mglich + https://www.golem.de/news/firmware-bug-codeausfuehrung-in-deaktivierter-intel-me-moeglich-1712-131543-rss.html + Sicherheitsforscher demonstrieren einen Angriff auf Intels ME zum Ausfhren von beliebigem Code, gegen den weder das sogenannte Kill-Bit noch die von Google geplanten Sicherheitsmanahmen fr seine Server helfen. Theoretisch lassen sich Gerte so auch aus der Ferne angreifen. Von Kristian Kiling und Sebastian Grner (<a href="https://www.golem.de/specials/intel/">Intel</a>, <a href="https://www.golem.de/specials/server/">Server</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131543&amp;page=1&amp;ts=1512644100" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/firmware-bug-codeausfuehrung-in-deaktivierter-intel-me-moeglich/114197,list.html + Thu, 07 Dec 2017 11:55:00 +0100 + https://www.golem.de/1712/131543-rss.html + Sicherheitsforscher demonstrieren einen Angriff auf Intels ME zum Ausfhren von beliebigem Code, gegen den weder das sogenannte Kill-Bit noch die von Google geplanten Sicherheitsmanahmen fr seine Server helfen. Theoretisch lassen sich Gerte so auch aus der Ferne angreifen. Von Kristian Kiling und Sebastian Grner (Intel, Server) ]]> + 16 + + + Deutscher Entwicklerpreis: The Surge ist das beste und schnste deutsche Spiel + https://www.golem.de/news/deutscher-entwicklerpreis-the-surge-ist-das-beste-und-schoenste-deutsche-spiel-1712-131541-rss.html + Das Actionspiel The Surge von Deck 13 aus Frankfurt ist der groe Gewinner bei der Verleihung des Deutschen Entwicklerpreises. Es konnte sich in drei Kategorien durchsetzen - darunter in der des Besten deutschen Spiels. (<a href="https://www.golem.de/specials/deutscher-entwicklerpreis/">Deutscher Entwicklerpreis</a>, <a href="https://www.golem.de/specials/games/">Games</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131541&amp;page=1&amp;ts=1512642600" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/games/deutscher-entwicklerpreis-the-surge-ist-das-beste-und-schoenste-deutsche-spiel/114196,list.html + Thu, 07 Dec 2017 11:30:00 +0100 + https://www.golem.de/1712/131541-rss.html + Das Actionspiel The Surge von Deck 13 aus Frankfurt ist der groe Gewinner bei der Verleihung des Deutschen Entwicklerpreises. Es konnte sich in drei Kategorien durchsetzen - darunter in der des Besten deutschen Spiels. (Deutscher Entwicklerpreis, Games) ]]> + 51 + + + Kryptowhrung: 4.700 Bitcoin von Handelsplattform Nicehash gestohlen + https://www.golem.de/news/bitcoin-4-700-bitcoin-von-handelsplattform-nicehash-gestohlen-1712-131538-rss.html + Es soll ein "hochprofessioneller Angriff mit fortgeschrittenem Social Engineering" gewesen sein: Der Handelsplattform Nicehash wurden Bitcoin im Wert von knapp 64 Millionen US-Dollar gestohlen. Nutzer sollen ihre Passwrter ndern. (<a href="https://www.golem.de/specials/bitcoin/">Bitcoin</a>, <a href="https://www.golem.de/specials/internet/">Internet</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131538&amp;page=1&amp;ts=1512641760" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/kryptowaehrung-4.700-bitcoin-von-handelsplattform-nicehash-gestohlen/114194,list.html + Thu, 07 Dec 2017 11:16:00 +0100 + https://www.golem.de/1712/131538-rss.html + Es soll ein "hochprofessioneller Angriff mit fortgeschrittenem Social Engineering" gewesen sein: Der Handelsplattform Nicehash wurden Bitcoin im Wert von knapp 64 Millionen US-Dollar gestohlen. Nutzer sollen ihre Passwrter ndern. (Bitcoin, Internet) ]]> + 53 + + + Elektromobilitt: Porsche plant einen 911er mit Hybridantrieb + https://www.golem.de/news/elektromobilitaet-porsche-plant-einen-911er-mit-hybridantrieb-1712-131539-rss.html + Ein Elektroauto entwickelt Porsche schon. Als Nchstes soll auch der Porsche 911 einen neuen Antrieb erhalten: Die kommende Generation wird es auch als Hybridfahrzeug geben. (<a href="https://www.golem.de/specials/porsche/">Porsche</a>, <a href="https://www.golem.de/specials/technologie/">Technologie</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131539&amp;page=1&amp;ts=1512640740" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/automobil/elektromobilitaet-porsche-plant-einen-911er-mit-hybridantrieb/114193,list.html + Thu, 07 Dec 2017 10:59:00 +0100 + https://www.golem.de/1712/131539-rss.html + Ein Elektroauto entwickelt Porsche schon. Als Nchstes soll auch der Porsche 911 einen neuen Antrieb erhalten: Die kommende Generation wird es auch als Hybridfahrzeug geben. (Porsche, Technologie) ]]> + 25 + + + MacOS 10.13.2: Updates fr High Sierra, Sierra und El Capitan + https://www.golem.de/news/macos-10-13-2-updates-fuer-high-sierra-sierra-und-el-capitan-1712-131536-rss.html + Apple hat High Sierra alias MacOS 10.13 auf eine neue Version aktualisiert, einige Fehler behoben und Verbesserungen hinzugefgt. Zudem beseitigt Apple in der Vorversion von MacOS sowie dem letzten OS X zahlreiche sicherheitsrelevante Fehler. (<a href="https://www.golem.de/specials/macoshighsierra/">MacOS 10.13 High Sierra</a>, <a href="https://www.golem.de/specials/apple/">Apple</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=131536&amp;page=1&amp;ts=1512638760" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/applikationen/macos-10.13.2-updates-fuer-high-sierra-sierra-und-el-capitan/114192,list.html + Thu, 07 Dec 2017 10:26:00 +0100 + https://www.golem.de/1712/131536-rss.html + Apple hat High Sierra alias MacOS 10.13 auf eine neue Version aktualisiert, einige Fehler behoben und Verbesserungen hinzugefgt. Zudem beseitigt Apple in der Vorversion von MacOS sowie dem letzten OS X zahlreiche sicherheitsrelevante Fehler. (MacOS 10.13 High Sierra, Apple) ]]> + 6 + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/nixos.html b/app/src/test/resources/com/nononsenseapps/feeder/model/nixos.html new file mode 100644 index 0000000..df625e7 --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/nixos.html @@ -0,0 +1,376 @@ + + + + + + NixOS Linux + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +

    NixOS

    +

    The Purely Functional Linux Distribution

    + +

    NixOS is a Linux distribution with a unique approach + to package and configuration management. Built on top of the Nix package manager, it is completely + declarative, makes upgrading systems reliable, and has many other advantages.

    + + +
    + +
    + +
    +
    +

    Declarative

    +

    NixOS has a completely declarative approach to + configuration management: you write a specification of the desired + configuration of your system in NixOS’s modular language, and + NixOS takes care of making it happen.

    +
    +
    +

    Reliable

    +

    NixOS has atomic upgrades and rollbacks. It’s + always safe to try an upgrade or configuration change: if things + go wrong, you can always roll back to the previous + configuration.

    +
    +
    +

    DevOps-friendly

    +

    Declarative specs and safe upgrades make NixOS a great system + for DevOps use. NixOps, the NixOS cloud + deployment tool, allows you to provision and manage networks of + NixOS machines in environments like Amazon EC2 and VirtualBox.

    +
    +
    + +
    + +
    +
    +

    + + + + News +

    + NixOS 18.09 released + Oct 06 2018
    + + 18.09 Jellyfish logo + + NixOS 18.09 “Jellyfish” has been released, the tenth stable release branch. + See the release notes + for details. You can get NixOS 18.09 ISOs and VirtualBox appliances + from the download page. + For information on how to upgrade from older release branches + to 18.09, check out the + manual section on upgrading. +
    + Fastly supports NixOS + Oct 04 2018
    + We are happy to announce that we have moved our binary cache to Fastly. Fastly + is a big supporter of open source projects and now NixOS is one of them! Fastly provides us with CDN capability, + which previously was running on AWS CloudFront. Big thanks go to Fastly, in particular Tom Denniston and Elaine + Greenberg, our friends at Infor and Packet.net + and Graham Christensen for making this possible. +
    + Nix 2.1 released + Sep 02 2018
    + Nix 2.1 + has been released. See the release + notes for a list of changes and new features. +
    + NixOS Discourse forum + Aug 14 2018
    + The nix-devel mailing list is now replaced by our discourse forum instance which is also usable by email: + discourse.nixos.org. +
    + NixCon 2018 + May 21 2018
    + We're happy to announce that NixCon 2018, the + third Nix Conference, will take place October 25-27 2018 in London + For more information, see the + NixCon 2018 website. + And please consider + submitting a talk! +
    + NixOS 18.03 released + Apr 04 2018
    + + 18.03 Impala logo + + NixOS 18.03 “Impala” has been released, the ninth stable release branch. + See the release notes + for details. You can get NixOS 18.03 ISOs and VirtualBox appliances + from the download page. + For information on how to upgrade from older release branches + to 18.03, check out the + manual section on upgrading. +
    + Nix 2.0 released + Feb 22 2018
    + Nix 2.0 + has been released. See the release + notes for a list of changes and new features. +
    + NixOS 17.09 released + Oct 02 2017
    + NixOS 17.09 “Hummingbird” has been released, the eigth stable release + branch. See the release notes + for details. You can get NixOS 17.09 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 17.09, check out the manual section on + upgrading. +
    + Nix-dev mailing list moved + Jul 12 2017
    + The nix-dev mailing list has moved to + nix-devel + on Google Groups. +
    + NixCon 2017 + Jun 18 2017
    + We're happy to announce that NixCon 2017, the + second Nix Conference, will take place October 28–31 2017 in Munich + For more information, see the + NixCon 2017 website. + And please consider + submitting a talk! +
    + NixOS 17.03 released + Mar 31 2017
    + NixOS 17.03 “Gorilla” has been released, the seventh stable release + branch. See the release notes + for details. You can get NixOS 17.03 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 17.03, check out the manual section on + upgrading. +
    + NixOS 16.09 released + Oct 03 2016
    + NixOS 16.09 “Flounder” has been released, the sixth stable release + branch. See the release notes + for details. You can get NixOS 16.09 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 16.09, check out the manual section on + upgrading. +
    +

    More »

    +
    +
    + +

    + + + + Blog Posts +

    + + +

    Commits

    520 commits in the last week, 40010 in the last year

    + +

    More »

    + +

    Twitter

    +

    + + +

    + +
    + +
    + + + +
    + + + + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/openstreetmap.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/openstreetmap.xml new file mode 100644 index 0000000..900a9f8 --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/openstreetmap.xml @@ -0,0 +1,341 @@ + + + + OpenStreetMap diary entries + Recent diary entries from users of OpenStreetMap + https://www.openstreetmap.org/diary + + https://www.openstreetmap.org/assets/mag_map-rss2.0-2973595662b8a92522b315b6c69bf5ee9bec75e07d702c5932f114c44a6251ea.png + OpenStreetMap diary entries + 100 + 100 + https://www.openstreetmap.org/diary + + + Begining of a mountain of a task + https://www.openstreetmap.org/user/0235/diary/396687 + https://www.openstreetmap.org/user/0235/diary/396687 + <p>So, Dear Diary, 2021-05-11</p> + + <p>I have decided to take on the task of tracing every building in the town where I live, population about 60,000. Currently the coverage of traced buildings are large retail, large industrial, or the hospital. Almost no houses are mapped, and most of the roads are bare minimum information with no cycleway or footway information.</p> + + <p>This comes after my previous task, as I have just finished basic tracing and labelling of the local amusement park, which was almost barren (and due to the “roller coaster track” tag not rendering, it still look barren!).</p> + + <p>I do plan on trying to get out a bit and visit some of the places, however the area is very sketchy. Since living here there have been a few drive by shootings, and many places are know as “The Stablands” with how much knife crime goes on…. I feel I will get chased out of some areas for wearing a surveying Hi-Vis, and arrested by the police if I don’t wear one!</p> + + <p>I am massively impressed so far with the depth of the Wiki, the ease of use of the ID editor, the wide toolset JOSM has to offer, and the incredibly smooth function of StreetComplete (Quite how it hasn’t had 1mil+ downloads is beyond me!)</p> + + <p>For now, the Armchair awaits, though mapping some of the clearly inaccurate foot “trails” around the area could be a nice break, and lower the risk of a shankin’</p> + + 0235 + Tue, 11 May 2021 22:03:30 +0000 + https://www.openstreetmap.org/user/0235/diary/396687#comments + 52.3993553385688 + -0.728080272674561 + 52.3993553385688 -0.728080272674561 + + + Data Working Group supports vandalism and deletion of data in the project. + https://www.openstreetmap.org/user/Sowa1980/diary/396680 + https://www.openstreetmap.org/user/Sowa1980/diary/396680 + <h2 id="data-working-group---------mavl---------------anakinnn---------------------3---------10-----------">Data Working Group поддерживает вандализм и удаление актуальных данных в проекте, mavl один из участников рабочей группы поддерживает активно вандализм в проекте, а в частности участника AnakinNN массовые вандальные действия данного участника и его “достойный вклад” (ссылки ниже) из-за которого мне был выставлен бан сначала на 3 дня, а после без объяснений причин продлен на 10 лет, за то что я не позволял данному участнику удалять данные.</h2> + <p>Браво Data Working Group даже не дала пояснений о моей блокировки. + Ну как я и писал mavl = царь, не должен давать объяснений. Холопы этого не заслуживают. + Блокировка участников с миллионными вкладами в проект выглядит с его точке зрения нормально, но не один вандал и не один участник не получил блокировку даже за использование и внесение чужих данных в проект, яркий пример тому участник <a href="https://www.openstreetmap.org/user/Nimfea" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/user/Nimfea</a>, вносивший данные из 2GIS и массово удалял существующие данные.</p> + + <p>Напоминаю как усердно данный участник пытался тут показать его достойный вклад читайте комментарии. <a href="https://www.openstreetmap.org/user/Sowa1980/diary/396347" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/user/Sowa1980/diary/396347</a></p> + + <p><a href="https://www.openstreetmap.org/changeset/102932042" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/changeset/102932042</a> - массовое удаление дорожного инфраструктуры, в частности отношений и бордюров.</p> + + <p><a href="https://www.openstreetmap.org/changeset/102869641" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/changeset/102869641</a> - удаления памятника танка Мультти полигона плюс флагштоков. достойный подарок от данного участника нашим ветеранам ВОВ.</p> + + <p><a href="https://www.openstreetmap.org/changeset/102942351" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/changeset/102942351</a> - удаление кодов междугородней связи.</p> + + <p><a href="https://www.openstreetmap.org/changeset/102941820" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/changeset/102941820</a> - удаление контактной информации</p> + + <p><a href="https://www.openstreetmap.org/changeset/102941178" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/changeset/102941178</a> - удаление информации о подстанции.</p> + + <p><a href="https://www.openstreetmap.org/changeset/102941049" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/changeset/102941049</a> - удаление контактной информации</p> + + <p><a href="https://www.openstreetmap.org/changeset/102939485" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/changeset/102939485</a> - удаление емел адреса и названия.</p> + + <p><a href="https://www.openstreetmap.org/changeset/102941979" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/changeset/102941979</a> - удаление тегов. входов.</p> + + <p><a href="https://www.openstreetmap.org/changeset/102752077" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/changeset/102752077</a> - удаление контактной информации и прочее + <a href="https://www.openstreetmap.org/changeset/102752647" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/changeset/102752647</a> - удаление контактной информации</p> + + <p><a href="https://www.openstreetmap.org/changeset/102939976" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/changeset/102939976</a> - удаление мультиполигонов и т.д.</p> + + + Sowa1980 + Tue, 11 May 2021 09:07:14 +0000 + https://www.openstreetmap.org/user/Sowa1980/diary/396680#comments + + + ปักหมุด + https://www.openstreetmap.org/user/Pimnapa/diary/396677 + https://www.openstreetmap.org/user/Pimnapa/diary/396677 + <p>ปักๆๆๆๆ</p> + + Pimnapa + Mon, 10 May 2021 21:30:43 +0000 + https://www.openstreetmap.org/user/Pimnapa/diary/396677#comments + 13.663276 + 102.547489 + 13.663276 102.547489 + + + Klášterec nad Ohří má špatně zakreslené plochy + https://www.openstreetmap.org/user/AF%20HAF%20KARTOGRAF/diary/396674 + https://www.openstreetmap.org/user/AF%20HAF%20KARTOGRAF/diary/396674 + <p>Teď jsem aktuálně v úpravách v Klášterci nad Ohří a jsou tam špatně popsané plochy mimo budov, že je to už práce nad moje síly. Žádám všechny kdo by je chtěl opravit ať do dá do pořádku. Plochy zahrada by měly být slučovány s budovy a všechny další oblasti venkovních ploch které nemají zahrnovat budovy a jiné prvky.</p> + + AF HAF KARTOGRAF + Mon, 10 May 2021 18:01:05 +0000 + https://www.openstreetmap.org/user/AF%20HAF%20KARTOGRAF/diary/396674#comments + 50.3887664603262 + 13.1954920291901 + 50.3887664603262 13.1954920291901 + + + What a mess!! + https://www.openstreetmap.org/user/CartoCrazy/diary/396668 + https://www.openstreetmap.org/user/CartoCrazy/diary/396668 + <p>Re.: (<a href="https://www.openstreetmap.org/edit#map=16/34.9460/-111.6368" rel="nofollow noopener noreferrer">https://www.openstreetmap.org/edit#map=16/34.9460/-111.6368</a>)</p> + + <p>I feel that the area in and around Munds Park, AZ has been very terribly rendered, most especially on the roads (for example, instead of showing smooth curves where they exist on the ground, they appear as jagged angles, or they do not follow the actually road path), and this is most obvious when zooming in</p> + + <p>It is things like this that very greatly annoy me about OpenStreetMap, as it seems like someone did not wish to take the time to do the job right the first time, and now another user will have to make the adjustments and corrections to clean up the mess left behind.</p> + + <p>I don’t know if anyone else feels the way that I do, but I just wanted to express my opinion on what could have otherwise been done properly I apologize if I am stepping on feet on this one… just trying to make OpenStreetMap a beautiful project for all to use.</p> + + CartoCrazy + Mon, 10 May 2021 02:30:13 +0000 + https://www.openstreetmap.org/user/CartoCrazy/diary/396668#comments + + + quán nét khanh ok + https://www.openstreetmap.org/user/Tr%E1%BA%A7n%20Ho%C3%A0ng%20Th%C3%A1i/diary/396667 + https://www.openstreetmap.org/user/Tr%E1%BA%A7n%20Ho%C3%A0ng%20Th%C3%A1i/diary/396667 + <p>khang nguyen</p> + + Trần Hoàng Thái + Sun, 09 May 2021 20:15:45 +0000 + https://www.openstreetmap.org/user/Tr%E1%BA%A7n%20Ho%C3%A0ng%20Th%C3%A1i/diary/396667#comments + 12.6510581337035 + 108.00904199481 + 12.6510581337035 108.00904199481 + + + Super Market + https://www.openstreetmap.org/user/pymgsm/diary/396665 + https://www.openstreetmap.org/user/pymgsm/diary/396665 + <p>افق کوروش سجادیه تبریز</p> + + pymgsm + Sun, 09 May 2021 18:45:21 +0000 + https://www.openstreetmap.org/user/pymgsm/diary/396665#comments + 38.0508749241235 + 46.3140785694122 + 38.0508749241235 46.3140785694122 + + + 不懂就问 + https://www.openstreetmap.org/user/Brian@Stone/diary/396662 + https://www.openstreetmap.org/user/Brian@Stone/diary/396662 + <p>日记到底是干嘛使的?谁能告诉我</p> + + Brian@Stone + Sun, 09 May 2021 14:22:51 +0000 + https://www.openstreetmap.org/user/Brian@Stone/diary/396662#comments + 39.9301261961833 + 116.310356855392 + 39.9301261961833 116.310356855392 + + + Granting permission regarding Kira Maps + https://www.openstreetmap.org/user/testooools/diary/396661 + https://www.openstreetmap.org/user/testooools/diary/396661 + <h2 id="kira">Kira:</h2> + <p>Dear testooools (Mapper), + Regarding the Open-Street-Map Request, Congratulations! we have approved the usage on your behalf using our APIs only for open source usage, Can’t be used for commercial use or any kind of using else open-source projects Specifically Open-Street-Map.</p> + + <p>Kira Team have the right to revoke your key at any time, But what have been used still valid and approved by us forever and ever, Thank you for contacting us! have a great day</p> + + <p>Best Regards. + Kira Team.</p> + + <h2 id="me">Me:</h2> + <p>Hello, I have contacted open street map members and they said the license can’t be used because the osm data is used by everyone even for commercial use! + So if I integrated Kira data on top of open street maps some commercial companies will use this as it is open source to everyone. + Please can you explain if that’s a case considered in my permission or not and how?</p> + + <h2 id="kira-1">Kira:</h2> + <p>Hello, again testooools! + Your concerns are in their place + Actually, we are more than happy to confirm that: + You can use your key for open street maps directly any effect follow this action will be (valid and approved by us forever and ever) as I mentioned earlier + Open street maps are open source you can use our data on it and no worries about any outsider use. + I’m sorry for not clarifying this earlier.</p> + + <p>Thank you for contacting us! have a great day</p> + + <p>Best Regards. + Kira Team.</p> + + <p><img src="https://i.ibb.co/4RQR6py/Screen-Shot-2021-05-10-at-9-36-22-PM.png" alt="Permission"></p> + + testooools + Sun, 09 May 2021 09:39:26 +0000 + https://www.openstreetmap.org/user/testooools/diary/396661#comments + + + هیات والیبال استان اردبیل + https://www.openstreetmap.org/user/hamedjahandideh18509/diary/396659 + https://www.openstreetmap.org/user/hamedjahandideh18509/diary/396659 + <p>هیات والیبال استان اردبیل</p> + + hamedjahandideh18509 + Sun, 09 May 2021 07:16:23 +0000 + https://www.openstreetmap.org/user/hamedjahandideh18509/diary/396659#comments + 38.2374295989212 + 48.2860915520587 + 38.2374295989212 48.2860915520587 + + + Viel hat sich getan! + https://www.openstreetmap.org/user/RanJenner/diary/396658 + https://www.openstreetmap.org/user/RanJenner/diary/396658 + <p>Dank des Feedbacks der sehr aufmerksamen und lieben Community hier, habe ich nun einige Veränderungen an meiner umap zum Thema Bürgerentscheide in Bayern vorgenommen. Zuletzt hatte ich noch eine Gliederung nach erfolgreichem BE. Diese habe ich jedoch fürs Erste verworfen und mich auf die thematische Gliederung konzentriert. Diese gefällt mir deutlich besser! + Ich bin auch schon recht fleißig dabei, BEs einzutragen. Habe jetzt die Jahre 2021 (bisher), 2020 und 2019 eingetragen. Hier ist die Karte zu finden: (<a href="https://umap.openstreetmap.de/de/map/burgerentscheide-in-bayern_11914#7/49.137/11.536" rel="nofollow noopener noreferrer">https://umap.openstreetmap.de/de/map/burgerentscheide-in-bayern_11914#7/49.137/11.536</a>) + Darüber hinaus habe ich die Karte nun in die Website meines Vereins mit integriert und sie mit einem “Bürgerentscheids-Ticker” für anstehende BEs in Bayern eingebunden: (<a href="https://bayern.mehr-demokratie.de/buergerbegehren/buergerentscheids-ticker/" rel="nofollow noopener noreferrer">https://bayern.mehr-demokratie.de/buergerbegehren/buergerentscheids-ticker/</a>)</p> + + <p>Wie bereits gesagt, mir gefällt die neue thematische Gliederung der BEs in meiner Karte schon sehr gut. Nur würde ich mir wünschen, dass ein Pin (also ein BE) mehreren Ebenen zugerechnet werden könnte. Also als Beispiel würde ich gerne den BE “Für einen hauptamtlichen Bürgermeister” nicht nur der Ebene “Satzungsplan” sondern auch einer extra-Ebene “2019” hinzufügen. Geht so etwas?</p> + + <p>LG + Jan</p> + + + RanJenner + Sat, 08 May 2021 14:32:00 +0000 + https://www.openstreetmap.org/user/RanJenner/diary/396658#comments + + + Akhila + https://www.openstreetmap.org/user/MD%20OALIUR%20RAHMAN/diary/396656 + https://www.openstreetmap.org/user/MD%20OALIUR%20RAHMAN/diary/396656 + <p>Akhila, Nachole, Chapainawabganj</p> + + MD OALIUR RAHMAN + Sat, 08 May 2021 09:18:34 +0000 + https://www.openstreetmap.org/user/MD%20OALIUR%20RAHMAN/diary/396656#comments + 24.7665 + 88.3925 + 24.7665 88.3925 + + + الشخصيه + https://www.openstreetmap.org/user/tamimKSA/diary/396655 + https://www.openstreetmap.org/user/tamimKSA/diary/396655 + <p>الضوء يتفوق في سرعة وصوله وإنتشاره.. وكذلك الأهداف النبيلة النقية التي لم تدنسها المصلحة الشخصية</p> + + tamimKSA + Sat, 08 May 2021 05:14:49 +0000 + https://www.openstreetmap.org/user/tamimKSA/diary/396655#comments + 18.2954297312046 + 42.7615432720631 + 18.2954297312046 42.7615432720631 + + + رمضان كريم + https://www.openstreetmap.org/user/tamimKSA/diary/396654 + https://www.openstreetmap.org/user/tamimKSA/diary/396654 + <p>كل عام وانتم بخير بمناسبه رمضان المبارك اعاده الله علينا وعليكم بالخير واليمن والبركات</p> + + tamimKSA + Sat, 08 May 2021 04:51:30 +0000 + https://www.openstreetmap.org/user/tamimKSA/diary/396654#comments + + + Addition of forest Roads in Abau District,Central Province,PNG + https://www.openstreetmap.org/user/Nicxon%20Piaso/diary/396653 + https://www.openstreetmap.org/user/Nicxon%20Piaso/diary/396653 + <p>For quite sometime,I have edited some road networks around the Rigo District and Abau especially in Kupiano and Moreguina Rubber plantation as well as Babauguina Rubber Plantation. I can recall of a Survey field party that we did in 2015 regarding the setup of GPS for control station coordination using TOPCON HiPER system for aero-triangulation.</p> + + <p>Those road were full of dirt and often times we complained of the wild experience along the Magi Highway en-route to Abau District. We were preparing the way for LiDAR(Light Detection and Ranging) work to be undertaken by FUGRO Geospatial for Australia. + Visiting these thick vegetated areas some times inhospitable made Surveyor work really tough. Hu ah!! we did it..When I map these features in OSM, it brings back vivid memories of my travel in the “Land of the Unexpected”,Papua New Guinea</p> + + Nicxon Piaso + Sat, 08 May 2021 02:34:26 +0000 + https://www.openstreetmap.org/user/Nicxon%20Piaso/diary/396653#comments + -10.017241 + 148.474753 + -10.017241 148.474753 + + + Updates of features at Rigo and Abau District,Central Province + https://www.openstreetmap.org/user/Nicxon%20Piaso/diary/396652 + https://www.openstreetmap.org/user/Nicxon%20Piaso/diary/396652 + <p>Seeing a lot of features especially structures and roads)(esp logging roads) are not mapped an I have appended them form the Maxar imagery. + Once these roads networks are mapped ,we can track where illegal logging sites are in Papua New Guinea. + Those Mappers who are in PNG using OSM, please do assist as there are a lot of roads built into thick vegetation of the lowlands and they are not identifiable in Goggle Maps but through OSM we can map these linear infrastructures out.</p> + + Nicxon Piaso + Sat, 08 May 2021 01:48:16 +0000 + https://www.openstreetmap.org/user/Nicxon%20Piaso/diary/396652#comments + + + Is lockdown driving mass POI additions from GMaps by fly-by-night users? + https://www.openstreetmap.org/user/TagaSanPedroAko/diary/396651 + https://www.openstreetmap.org/user/TagaSanPedroAko/diary/396651 + <p>Last January, I’ve just came upon several newbie users in the Philippines who have accumulated over a thousand edits within a few days, adding a thousand POIs, which I discovered by comparing coverage, are more or less copyright violations from Google Maps (with some POIs being at completely odd spots, someting usual with GMaps in some places). I’ve been able to clean up a bunch of their edits, particularly those from a user named <a href="https://www.openstreetmap.org/user/JPBaje" rel="nofollow noopener noreferrer">JP Baje</a> and another working for a new ride-hail service in the Philippines, and asked the user about their source, but they never replied, and with their activity continuing unabated despite concerns from other fellow mappers back home, I have asked the DWG to have one of them blocked until they have read a message from the DWG addressing concerns. The other one hasn’t been blocked, and has stopped editing, but I’m trying to clean up their edits within my favourite locations while I’m trying to focus with mapping in Canada.</p> + + <p>I have no idea why these fly-by-night editors would spring out here with the sole purpose of filling areas of several cities with POIs without providing their source, adding them one by one that make it hard to revert them in one huge sweep and disappearing later when the damage is done, but I think long and strict lockdowns (such as those in the Philippines) are driving this kind of mapping because in such situation, you can’t just go out of home – even within your neighbourhood – without having to present some form of travel authorization from the local government, or you’re a member of a demographic that is likely to get infected with COVID-19 (which in the Philippines, includes those under 14, above 60, or having a serious health condition as of the May 2021 quarantine restrictions) and I assume these users involved are unlikely to have been in those locations, before or during the mass quarantines. Any thoughts?</p> + + TagaSanPedroAko + Sat, 08 May 2021 01:28:06 +0000 + https://www.openstreetmap.org/user/TagaSanPedroAko/diary/396651#comments + + + New Calming Traffic Island + https://www.openstreetmap.org/user/Bill%20Ricker/diary/396649 + https://www.openstreetmap.org/user/Bill%20Ricker/diary/396649 + <p>I saw a new traffic calming traffic island announced on <a href="https://twitter.com/CaughtDot/status/1390380709693566979" rel="nofollow noopener noreferrer">Twitter</a> so i took a small detour and <a href="https://www.openstreetmap.org/changeset/104345669#map=16/42.2941/-71.0757" rel="nofollow noopener noreferrer">added</a> it. I think i’ll add a Note to review it when new imagery is available.</p> + + <p>The neighborhood has a number of other traffic calming measures, speed humps and new lower “Neighborhood” 20mph speed limit. Nice. I didn’t survey or change all the reduced streets, just the ones i drove.</p> + + Bill Ricker + Sat, 08 May 2021 00:48:41 +0000 + https://www.openstreetmap.org/user/Bill%20Ricker/diary/396649#comments + 42.290468 + -71.0739711 + 42.290468 -71.0739711 + + + Potres i torrenti + https://www.openstreetmap.org/user/Matija%20Nalis/diary/396648 + https://www.openstreetmap.org/user/Matija%20Nalis/diary/396648 + <p>Nakon velikog početnog entuzijazma oko mapiranja <a href="https://osm-hr.org/2021/01/31/ostecenja-od-potresa-oton/" rel="nofollow noopener noreferrer">područja oštećenih potresom</a>, uglavnom smo posustali…</p> + + <p>Tako da za pauzu pokušavam dobiti da OSM prihvati <a href="https://github.com/openstreetmap/chef/issues/373" rel="nofollow noopener noreferrer">RSS za .torrent</a> za skidanje Planet OSM datoteka, kako bi se smanjilo opterećenje na download web servere, koji su trenutno ograničeni na 4096 KB/s zbog preopterećenja. Tako da slobodno lajkajte taj github issue :-)</p> + + Matija Nalis + Fri, 07 May 2021 15:03:43 +0000 + https://www.openstreetmap.org/user/Matija%20Nalis/diary/396648#comments + + + Call for Surveyors and Cartographers in Papua New Guinea(PNG) + https://www.openstreetmap.org/user/Nicxon%20Piaso/diary/396645 + https://www.openstreetmap.org/user/Nicxon%20Piaso/diary/396645 + <p>Hi friends, Surveyors and Cartographers,</p> + + <p>If you are in Papua New guinea, we still need most parts of Papua New Guinea almost in all 21 provinces where most parts are unmapped.</p> + + <p>Please wherever you are, do contribute to OSM(OpenStreetMap) and have your place mapped out. It is free of charge and all you have to do is register an account and contribute your map editing there. You can hone your basic cartographic skills there.</p> + + Nicxon Piaso + Fri, 07 May 2021 06:06:57 +0000 + https://www.openstreetmap.org/user/Nicxon%20Piaso/diary/396645#comments + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_anon.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_anon.xml new file mode 100644 index 0000000..896739c --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_anon.xml @@ -0,0 +1,16 @@ + + + + + <![CDATA[ANON]]> + + http://ANON.com/sub + The Grawlix CMS + + 2018-12-13 00:00:00 + <![CDATA[ANON]]> + http://ANON.com/sub/## + + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_cornucopia.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_cornucopia.xml new file mode 100644 index 0000000..a286b9c --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_cornucopia.xml @@ -0,0 +1 @@ +tag:blogger.com,1999:blog-8354057230547055221Sun, 05 Mar 2017 13:52:33 +0000börsenbostadsbubblanpeak oilbostadaktierförsvarteknisk analysRysslandoljatramspolitiklitteraturskuldkrisenguldundersökningbankerOMXS30EUbostadbubblanStockholmUSAjordbruktillväxtInternetförsvaretinflationbloggarmediaskuldbubblanfinanskrisbostadslånkrigGöteborgguldprisenergiräntanUkrainautbildningRiksbankenSP500råvarorrättsväsendetfinanskrisenGreklandskattBNPneosurvivalismreklamsurvivalismeurodemokratibilarklimatförändringarpolisenval2014arbetslöshetSverigeeget företagfossilgaskonjunkturterrorismbolånSwedbankkärnkraftkonsumismMiljöpartietUSDsjukvårdSCBväderSyrienMalmöSEBlönerskattersilverKPIinvandringföreläsningskulderAORDNATOAnders BorgAppledeflationSverigedemokraternaTVmiljöamorteringbörskraschfonderekonomiKanadafildelningfilmtrustervalutaHOXoljeprisNorgeIT-branschenval2010Storbritannienironikonspirationsteorierekologiskt jordbrukarbetsmarknadelbilarvindkraftSkatteverketSRflygbolagföretagandesäkerhetPA ResourcessemesterCO2IT-bubblanSEKinfrastrukturobligationerFrankrikeNikkeiTysklandderivatKinatradingPiratpartietSVTSaudi-Arabienpeak gassparandeMäklarstatistikhumanekologipensionFRAsatirAvanzaIrakjärnvägGotlandStefan LöfvenFredrik ReinfeldtamorteringarskogVolvoNordeaFinansinspektionenTelialandetbiobränsledatorermatskogsbrukObamavetenskapiPhonejournalistikriskhanteringSaabmediakrisenmusikstatspapperFederal ReservepensionssparandeSBABfacketvargelprisPearlaktiefonderförsvarsmaktenkorruptionLundin PetroleumfolkhälsaBitcoinDanmarkräntaAfghanistanteknologivattenkraftvärnpliktenHandelsbankenenergikrisECBFinlandIslandLissabonfördragetförmögenhetkulturpeak coalLiberty SilverjournalisterLibyenValueguardbarnhedgefonderstatsskuldsvart svanCOSbudgetreporäntanÅsa RomsonbredbandhistoriaDAXTesla Motorsavbelåningekologisk matkapitalförsäkringarKungsbackaTurkietbensinjaktrecensionGoogleIrlandWikileaksdieselhumorkollektivtrafikmodebloggpensionerFortumIMFIsraelSpotifyutdelningarIPREDMagdalena AnderssondecembersveketskogsmarkEU-stödFacebookHang SengfiatpengargruvorinsättningsgarantikollapsräntefonderCPGEMUVIXVattenfallmobiltelefonivedeldningIranMSBSeabasedhyreshusmatbloggvågkraftDNO InternationalPPMWTIenergikrisenkolkraftpenningmängdsportDonald TrumpMargot WallströmpensionärersolcellerNASDAQSpanienfordonskrisenjulhandelAftonbladetBPEgyptenItalienhembrukkryptoval2018JapanLundTraderafastighetstaxeringClaes HembergMona SahlincentralbankeretanolexportköttmjölkAleklettAnnie LööfFTSEGLDGeorgienIEAblankningintervjuveteBrexitCAC40EURGustav FridolinNordnetPEYSASbetalkortkommunhybrisobligationsbubblanreligionAnders YgemanHeadwebOPECdatalagringliberalismsocialdemokraternaAndra världskrigetCarl BildtIngvesPeytoPortugalSJTeslaUppsalaförsäkringarinvesteringssparkontoipadJMLänsförsäkringarbilindustrinfofrkförmögenhetsskattBrentPBNTwitterkapitalförsäkringprivatekonomisolenergival2013Jan BjörklundJonas SjöstedtLars OhlyLettlandMarks kommunMassolit MediaPolenUSObokföringdeklarationplatinapolisCypernDABEricssonGöran PerssonHBORiksgäldenauktionbankfackbilindustribonusprogramcensurinfluensajulhandelnmoderaternasolkraftvertical windArbetsförmedlingenDJIADow JonesHSIKondratievNederländernaNordstreamPEABPiratebaySkåneföräldraförsäkringkreditkorträntorungvänsterpartietAlliance OilBretton WoodsEdward SnowdenGMHQIT-konsulterPeter HultqvistRadiotjänstTalebcenterpartietfusionskraftiTunes StoreklimatförändingarkonkursvattenE.OnEIAGöteborg EnergiLOMaud OlofssonPostenkommunismlånmatkrisennyemissionerrecessiontelefoniBovespaBrasilienEstlandLinköpingMicrosoftNCCNicole FossTorontoarbetstidbiogasguldmyntfotjust in timejust-in-timekonkursermaskirovkaAnna Kinberg BatraAustralienBooliOECDPWTSHBfastigheterfolkpartietnyemissionorkanerpsykologisabotagestatistikAlmedalsveckanBelgienBoråsDNOEllevioFörsäkringskassanHTEHelsingborgKarlsborgLASMexicoPR-byråSTPSödraTäbyVitrysslandXACT BearbensinpriskolkristdemokraternarymdensjöfartAfrikaAstraZenecaBen BernankeLitauenM3PVEarvsskattbarnomsorgjobbskatteavdragmedborgarlönsvarta svanarårets julklappDanske BankERFElon MuskJuholtLehmanLondonNetflixNorthlandSP 500SahlinSkanskaVenezuelaclimeonenskild firmajultomtenlivsmedelpeak fosforpreppingskogsindustrival2016AFGXClub of RomeDubaiG20Hillary ClintonMadoffMarc FaberOMXSPISMHISony EricssonStatoilTanganyika OilVolkswagena-kassanhälsainsiderinformationkronofogdenmonopolrederierräntefördelningvinArgentinaBPTBWGEnglandGBPKarin EnströmKarlshamnLöddeköpingeSLVSkottlandTV4TavexTrollhättanTwinglyVästra Götalandbiflationcykeldata mininglågkonjunkturupprorval2015AIGAMF PensionAlmegaCarnegieCelenteGrönlandICAIKEAJim RogersKoenigseggNokiaPer BolundRUBReinfeldtSACOSAPSSABStorytelTjörnUngernVoddlergaskommunermomspodcastymnighetshornetÖrebroÖstrosCAC-40EnquestGunnar LindstedtHOXFLATSWEIndienJohan NorbergKjell AleklettMonsantoNobelprisNorthstreamRadetzkiRya KraftvärmeverkSystembolagetSäpoSödertäljeTunisienVästeråsallemansrättenekobrottsmyndighetenfinankrisinflationenkopparreporäntavan RumpoyAlingsåsAmazonAnadarkoAnnika StrandhällBahrainBear USDX3 HBull OljaCSNCecilia AronssonCervenkaChryslerDBADBCFannieFinancial SenseGazaGazpromJönköpingKalifornienLandshypotekLuleåNigeriaNord StreamNordkoreaRomklubbenStefan FölsterSwishTainterUmeåVästsverigeaktieindexobligationerbankbokboendeeuronidiotikonsultbolagvarselArlaBaltic Dry IndexCHFDBEEnergy PotentialFreddieHMHafslundHalmstadIEFJAKJan JörnmarkKarlstadKeynesKnivstaMarit PaulsenNAIRUNissanPekkaRecorded FutureRick FalkvingeRoburRomneySPISchweizSchymanShellSinopecTTIPTeracomTransportstyrelsenVietnamkrigetVärmdöXACT BullbluffardeleveragingdollarfiskeiRobotkravallermoralpanikoljesandpanamapapersrealräntefonderscenarionsparbankernaÄlvsbynÖstersund19293GAkeliusAlice Bah KuhnkeBulgarienEbba BuschEktornetFTSE-100FolksamFordFred Olsen EnergyFredrik FederleyHUIHans RoslingJevons paradoxLRF KonsultLUPEMyresjöhusNASANOKNouriel RoubiniPagrotskyParisPartillePeter ErikssonPeter SchiffRBSRIGROWERTSRumänienSerbienSkandiaSlovakienSolnaSpelbrädetStenungsundSydafrikaTransoceanTrumpViking LineWallersteinWarren BuffetWibbleamorterabåtdepressioneroeihackingimportkall fusionkapitalismmiljonärmiljöbilarmonarkimänskliga rättigheterpalladiumpresidentvalrealräntanränteplaceringarskogsarbetesmåskalig elproduktionsocialismsolelsäkerställda obligationertidningar2010201234GActaAllan WidmanAlmedalenBMWBahnhofBeatrice AskCFDCOMEXChris MartensonCurrent PowerDeutsche BankESVEkeröEskilstunaEuropaExxonGLHGabriel WikströmGoldMoneyGuldcentralenGöran HägglundHaitiHallandHayekHondaHässleholmISIndonesienJan EricssonJim RodgersJordanienKPIFKameoKaupthingKyle BassLandskronaLehman BrothersLouMaerskMarkMax KeiserMensaMoldavienMölndalNackaNourel RoubiniOMRXBONDPalestinaPlexPontus SchultzPreemPutinRECScaniaSkövdeSollentunaTailsweepTeliaSoneraTjeckienToyotaTyheeVeronica PalmVestasVäxjöaktiespararnaapotekarvskattbildindustrinbli rikcrowdfundingexergifiktiongenetikiTunesinvandringenkapitalkärnkraftenlandräntaoljekonsumtionrealräntariskkapitalstrandvaskarteorinuttagsanstormningwarrantsÖresundÖsterrike2013201770-talister80-talisterAlf HornborgAnna JohanssonAxfoodAzarBear Olja HBirger SchlaugBlocketBolidenBonnierCDEChesapeake EnergyCitigroupCrucellDKKDMEDanderydDavosDnBEFNESMElectroluxEnergy TowerEnströmFalunG8GapMinderGhanaGoogle AdsenseHanif BaliHiQHyperloopIBEX35IfIsabella LövinJakop DalundeJim SinclairKlas EklundKoeniseggKroatienKubaLKABLars CalmforsLinkedInLundinsfärenLysekilMatt SimmonsMetroMorgan JohanssonNeil StraussNew WaveNorsk Svensk GuldOMXOdellPDEPRIOPVE EnterprisePanaxiaPiratparitetPride InternationalSCASIXRXSP-500SSFSamsungSandvikSara SkyttedalSaud-ArabienSchibstedSecuritasShiller-p/eSigmaSlovenienSmögenSomaliaSpotfireSundsvallSvensk ExportkreditSverker LenasTanganyikaTele-2TidalUddevallaVeckans AffärerVellingeViasatVietnamVostok GasVostok NaftaWedgewoodbilindustibiodieselbloggerdatorspelfackfjärrvärmefossil gasfårketglobaliseringguldklockaiZettlelitiumomröstningransoneringrealkapitalrekonstruktionrevolutionskolanskolmatsocial securitysponsratsvartarbetetelefonförsäljningterminerterrortillväxtismtävlingvalfuskvarvskrisenÖrnsköldsvik.2009201624h business campABBAcandoAccentureAlexander StubbAlibabaAllianceAnders BjörkAnticimexArdalan ShekarabiArmenienAudiAvestaBakkenBarbourBlack Earth FarmingBollebygdBorevindBorgerlig FramtidBoxholmBullionstarBurberryBushCADCDOCDOn.comCDSCERACastellumCecilia MalmströmChalmersChevronCitroenConnectaDDRDNDiamond OffshoreE*TradeE85EcuadorEniroErik ÅsbrinkEssungaEtrionEurocineEuronextFagerstaFalkenbergForexFredrik Reinfeldt.GHUSGINIGVAGVZGabriel UrwitzGaveKalGilead SciencesGolarGoldman SachsGunnar HökmarkHarvestHerrljungaHolmenHuddingeHypoHärrydaIOXIPCCIPRED2IkanobankenIngvar CarlssonInvestorIrma RosenbergJPYJeff RubinJemenJohan PehrsonJärfällaKalmarKatolska kyrkanKenyaKinnaKlarnaKoreakrigetKristianstadKronobergKungälvKustbevakningenKyotoKöpingLidingöLightstreamLivestationLjusdalLudvikaLundin MiningMTR ExpressMakedonienMalaysiaMaliMarstrandMercedesMerril LynchMichael RuppertMikael OdenbergModerna FonderMorgan StanleyNestleNykvarnNyköpingOdin fonderOlof PalmeOrustOskarshamnPenatesPetrobrasPfizerPriusQatarREITRJARiksbankRiksrevisionenRobert ShillerRomRussel-2000Ryssland.SAMSKFSTISTIBORSchiffSekabSjöfartsverketSonySorosStenbeckStephen D KingStrömstadSundbybergSvDSvenljungaTV3TanumTaurusTelenorTencentThailandThinkTomas BodströmTomhylsanTrent ReznorTyresöUCUlf KristerssonUlricehamnUpplands-BroUrban AhlinVAxholmVETVallentunaVarbergVeidekkeVictoriaVärmlandWaidelichWallenstamWesterbergXTOYaraaffärsmodelleraktiearbetslösarbitragearvbelåningsgradbensonbesökarebiståndbloggbävningbokförignbostadsbredbandsfilmdenlångakrisendigital allemansrättenergyengelskafascismförsta världskrigetgengasgeotermisk energigoldguidelinegåvoskattindustrijournalistkartanjulgranarjunilistankreditbrevköpcentraliborgatemilkursmodelltestneosurvivalistennäringsfastighetoljeproduktionorganisationpatentpenningmängdenpolitkpopulismporslinpressmeddelandepyramidspelpåvenrapporterremburserreparationsfondskattekontoskuldkrisen.soporstabilitetsplanstatenstrejktidskriftertillgångartoppmötenuranval2011valutaunionervinstÖsthammar-stöd200820148.28%AETAEXAberdeen Asset ManagementAdobeAffiliatorAfghaniationAfrenAlaskaAlectaAlexandra IvanovAlgerietAnders WijkmanAndrew SmithersAnita BrodénAnn LindeAnna TrobergAntarktisArevaArjeplogArkelstenArvidsjaurAsienAspiroAtlas CopcoAtterAurelian OilAustalienAxierBABASFBBCBEL-20BPEBPT InternationalBRCBRPBahnofBancoBernadotteBidenBildtBill GrossBillerudBitGoldBjurforsBjurholmBjuvBlack Earth EastBlekingeBo EkmanBo LundgrenBo PellnäsBob PrechterBodenBorgholmBorlängeBosnien-HercegovinaBosse RingholmBotkyrkaBradford BingleyBrasilien.BrookfieldBrysselBuffetByggmaxBörje LindströmCASOCNYCairnCamecoCamilla LindbergCanplatsCapinordicCapioCarsonCatellaCecilia SkingsleyCheasapeakeChrylserCircuit CityClean Tech EastCoca-ColaColin CampbellCollertConoco-PhilipsCoskataDJIDODale DavidsonDals EdDannemoraDavid MacKayDetroitDevonDilsa Demirbag-StenDixonsDominikanska RepublikenDondald TrumpDoubleDoug NolandEDBENIEQTEbayEkornesEl-GigantenElectric GenerationElectric LineElliotvågorEnköpingEric KingEritreaEuropolitanEvergreenEworkFRAKFTSEItaliaFaradayFiatFicantieriFilm2HomeFinanspolitiska rådetFindusFingerprint CardsFirst MajesticFiskarsFrankieFärgelandaFäröarnaG3GATAGPVGWGGamesaGarnterGeitnerGenstaGetingeGibraltarGlaxo Smith KlineGlitnirGlobal Gaming FactoryGoldcorpGolden StarGordon BrownGotland.GreenspanGrilloGroupOnGrumsGrängesGällivareGävleGöran GreiderGöran SkytteGötenehusHADOPIHIKPHUFHallstahammarHammaröHang SEng.Hank PaulsenHanoiHaparandaHasselbladHembergHochbergHomemaidHoneywellHoustonHugh HendryHutchinsonHärryda.HöganäsHövdingI-landsproblemIAUIBEX-35IBMIda DrouggeIndustriarbetsgivarnaInnergexIntelJJEJan MyrdalJanet YellenJeb BushJenny WenhammarJeremy GranthamJohan ThorénJohn DeereJohn HasslerJokkmokkKPA PensionKandaKarlskronaKasparovKazakhstanKingKinnevikKirunaKivaKjell-Olof FeldtKnivstanKontigo CareKrimKristina PerssonKristinehamnKroatien och TurkietKumlaKungsörKyrguzstanKävlingeLLantmäterietLars AdaktussonLars JonungLeesonLena AnderssonLennart SchönLetlandLibanonLiberaldemokraternaLilla EdetLimits to GrowthLise NordinLjusnarsbergLloydsLouisianaköpetLovefilmLuxemburgLyckoslantenLyxfällanLöfvénM2MMSMOOMTGMag SilverMagnus RedinMalmö.MalthusMandelbrotManpowerMarie AntoinetteMarita UlvskogMariupolMaroccoMarockoMarratechMarshallhjälpenMartin BorgsMekonomenMerValMichael JacksonMichael MooreMijlöpartietMikael HolmströmMinefindersModul-1MojangMonetarMontenegroMorphicMotalaMullsjöMunkedalMunkforsMyrickMärklinMörbylångaNASDAQ-100NGMNIBENSANaturvårdsverketNet EntertainmentNetonnetNevsNexarNextoryNobiaNobinaNoraNorbergNordNordamerikaNordanstigNordic CapitalNordmark NilssonNorrköpingNorrlandNorrtäljeNorstedtsNovavaxNovo NordiskNynäshamnOKOMXS30.OSEAXOccidentalOckelboOdumOhlyOllevikOmanOrangeOrlovOrreforsPAREPMTPOMOPPIPTSPakistanParansPaulo CoelhoPayPalPemexPer GudmunssonPer SchlingmanPerstorpPeter KaplanPetroChinaPhilip BotströmPickensPlastalPooliaPotasch CorpPrebonaPremier OilPär NuderRJIRJNRPIRUTRagundaRedwood PharmaRejlersRenaultRevusRocheRoger TiefenseeRon PaulRonnebyRoosevelts New DealRoskilde BankRosneftRottnerosRörvikSSF AnytimeSIDASIPRISIXRX30SMSNLSNSSPPSalaSchermanSemconSibaSilver WheatonSilvercorpSilviaSingaporeSjöboSkaraSkinnskattebergSkistarSolarcitySolarworldSollefteåSornetteSorseleSotenäsSoundcloudSouthern PacificSpaceXSpanairSpecialfastigheterSpectacureSpykerStabilitetsrådetStatkraftStefan EdmanStefan OlssonStena RecyclingSterling AirwaysSteve KeenStockhlmStrand KapitalförvaltningSudanSun TzuSuncorSurahammarSveSven-Erik BuchtSven-Olof SällströmSverigSwecoSwedish MatchSwissquoteSydamerikaSydkoreaTOGTaiwanTanTasman MetalsTelecaTesliaTessinThomas PikettyThunder HorseTidaholmTietoEnatorTime WarnerTinkTino SanandajiTokyoTomas PousetteTorekovToshibaTractionTradedoublerTranemoTransatlanticTrelleborgTrosaTruecallerTrustbuddyTrygg-HansaTullow OilTyrénsUmeå EnergiUnionenUppvidingeVMTVRVemdalenVirginVista GoldVodafoneVäsbyVästernorrlandVästervikVästmanlandWashington MutualWazeWestinghouseWilhelm AgrellWntResearchWolfhagenXOIYamanaYdreYelpYlva JohanssonYstadZARZimbabweZyngaaakiterallergieramorteraramorteringar.aoilartieravregleringavskrivningarbankgarantibibliotekbilbilpoolerbitpopblakningboktipsbolagsskattbromsenbulshyttbutikerbönderbörsen´börsernacoalconspirecourtagecyklerddadagisdefaltiondeltagarkulturdemokratdevalveringdrakkungegoekologiekoterrorismenegifilmerfinansforumfinanskisfinanskrashfinanskrsfinaschatflashfondeföretagförtetagandegeneralstrejkgersgnällgruppdynamikguldetguldpirsguldpriserhobbyhumanhybriderhygienilver Standardinflaltionjärnkakaokalendariumkaoskappahlkollkraftkonspirationerkonsumtionkontaktannonskravmaskinkristallkulakvartalsrapportkärnkratliteraturlittearturlitteratur.lokaliseringlpslyxmarknadenmassavedmatlagermedicaremetametanhydratmifflationmilitärtmiljöteknikmotionmotorcyklarmånfärdernannollräntanonsensnödlånoffentlig konstoljanoljeoljelagerpapporpeakpeakgaspenionpersonaluthyrningpiratkopieringpoliticpollprivatpysselrantarantorrearecesionresiliensrikspuckorättelseråvaorsamhällesavings-and-loankrisen (90-talets början)sexpartisverigeskuldbubblqnskuldkostnadsindexslamsloseriombudsmannensocialt arbitragespannmålspararespekulanterspråkstekarestädersurvivalismensvenskatebladtelekompaketettextilkrisentramtrastullentygpåsartågundersökningaruppsägningarvalet2014veckansfrågavinEmmavon ClausewitzÄlvkarlebyÄngelholmÅreÅrseleÖhmanÖlandÖstergötlandädelmetallerär eövningsuppgiftCornucopia?Evig tillväxt i en ändlig värld?http://cornucopia.cornubot.se/noreply@blogger.com (Cornucopia?)Blogger12026125tag:blogger.com,1999:blog-8354057230547055221.post-2490656752632862163Sun, 05 Mar 2017 13:34:00 +00002017-03-05T14:35:26.899+01:00börsenkonjunkturOMXS30teknisk analysTredje månaden med överhettad svensk ekonomi - tydlig säljsignal för börsenFör tredje månaden på raken ligger Konjunkturinsitutets barometerindikator ("konjunkturbarometern") kvar i överhettat läge. Det råder alltså en klart och tydligt långsiktig säljsignal i enlighet med konjunkturmodellen.<br /><div style="text-align: justify;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-hD_mqKJx-XY/WLwTIKSEt6I/AAAAAAAAqfI/sztWEjwSYAoN22y_YfnZ-yotKjQsypZHACLcB/s1600/konj.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="396" src="https://1.bp.blogspot.com/-hD_mqKJx-XY/WLwTIKSEt6I/AAAAAAAAqfI/sztWEjwSYAoN22y_YfnZ-yotKjQsypZHACLcB/s640/konj.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">OMXS30 i rött, konjunkturbarometern i rött.</td></tr></tbody></table><a name='more'></a>Börsen är nu dessutom på en lokal topp vilket bara stärker att det är dags att gå ur. Det finns kanske lite uppsida till, men framöver är det försämrad konjunktur som gäller, <i>inklusive i alla prognoser</i>, och med det kommer den överhettade svenska ekonomin vika.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-ecacsrU5mMk/WLwTeQunSjI/AAAAAAAAqfM/ogJP-hDTJbQxMQ3aSXB8sncCIL5U8FRkgCLcB/s1600/omxs30.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="396" src="https://1.bp.blogspot.com/-ecacsrU5mMk/WLwTeQunSjI/AAAAAAAAqfM/ogJP-hDTJbQxMQ3aSXB8sncCIL5U8FRkgCLcB/s640/omxs30.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Dagschart OMXS30.</td></tr></tbody></table>Värt att notera är att börsen antagligen inte kommer vända ner <i>nu</i>. Men går man ur på grund av konjunkturläget och inväntar att det är mörkt, armod, varnagel och tandagnisslan land och rike runt så kommer man vinna på det. Endast den oerfarne försöker pricka börstoppen exakt.<br /><div><br /></div><div>Ännu en indikator är att allmänheten tydligen rusar in i aktiefonder just nu. Kort sagt säljer de lite kunnigare institutionella investerarna och allmänheten får i sedvanlig ordning sitta med Svarte Petter.<br /><br /><i>När alla är överpositiva är det dags att sälja. Svårare än så är det inte.</i></div>http://cornucopia.cornubot.se/2017/03/tredje-manaden-med-overhettad-svensk.htmlnoreply@blogger.com (Cornucopia?)0tag:blogger.com,1999:blog-8354057230547055221.post-3344699881755828202Sat, 04 Mar 2017 15:01:00 +00002017-03-04T16:19:55.914+01:00Andra världskrigetArgentinaEgyptenFinlandFrankrikeförsvarhistoriaIsraelRysslandStorbritannienTysklandvärnpliktenNumerär är inte allt i strid Det svenska försvaret kritiseras ofta för att ha för <i>låga siffror</i>, för liten numerär<i>. </i>Men all erfarenhet visar att en numerärt underlägsen sida kan besegra en överlägsen motståndare. Avgörande är faktorer som kompetens, övning, utbildning, teknologi, stridsvilja och kanske framför allt <i>ledarskap</i>&nbsp;och <i>krigskonst</i>.<br /><div style="text-align: justify;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-zWcUDCjBsYo/WLqeYLz3vvI/AAAAAAAAqec/BvUTpLG55d8dULvPcMZW7oATgyX2UBtqACLcB/s1600/US_Navy_030402-N-5362A-004_U.S._Army_Sgt._Mark_Phiffer_stands_guard_duty_near_a_burning_oil_well_in_the_Rumaylah_Oil_Fields_in_Southern_Iraq.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="420" src="https://1.bp.blogspot.com/-zWcUDCjBsYo/WLqeYLz3vvI/AAAAAAAAqec/BvUTpLG55d8dULvPcMZW7oATgyX2UBtqACLcB/s640/US_Navy_030402-N-5362A-004_U.S._Army_Sgt._Mark_Phiffer_stands_guard_duty_near_a_burning_oil_well_in_the_Rumaylah_Oil_Fields_in_Southern_Iraq.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Från <i>Operation Iraqi Freedom</i>&nbsp;under Irakkriget 2003.</td></tr></tbody></table><a name='more'></a><div>Det brukar sägas att en angripare behöver vara <i>minst</i>&nbsp;tre gånger så stark som försvararen, men motexemplen på detta genom världshistorien är väldigt många. Jag kommer här fokusera på någorlunda modern tid för någraexempel.</div><div><br /></div><div>Avgörande är inte numerären. Numerärt överlägsna värnpliktiga kan besegras i grunden av yrkessoldater, trots att de värnpliktiga har haft månader på sig att genomföra fältarbeten och försvarar sig. <i>Utbildning, övning och stridsvilja</i> - <i>kompetens</i>&nbsp;- är tillsammans med <i>ledarskap</i>&nbsp;och <i>krigskonst </i>ofta avgörande.</div><div><br /></div><div>En numerärt underlägsen styrka kan fortfarande segra, även om man anfaller. Man måste exempelvis inte anfalla överallt samtidigt och det är styrkeförhållandena <i>där man faktiskt strider</i>&nbsp;som är avgörande. En angripare har fördelen att <i>välja sina strider</i>, dvs var man anfaller. Man ska anfalla där motståndaren är som svagast och inget annat, samt kan med små medel binda upp motståndarens större styrkor på annan plats. Något von Clausewitz hustru publicerade i hans bok <i>Om kriget</i>&nbsp;redan år 1832.<br /><blockquote class="tr_bq"><i>”Allmänna principer för offensiv. För en attack måste man välja en punkt i fiendens position och anfalla den med överlägsen styrka, lämnandes hans övriga styrkor i osäkerhet men uppbundna. Detta är det enda sätt man kan använda en likvärdig eller svagare styrka med övertag och därmed med en chans att lyckas. Desto svagare man är, desto färre trupper skall användas för att binda upp fienden på icke avgörande platser, för att vara så stark som möjligt där avgörandet skall ske.” -&nbsp;</i>Carl von Clausewitz, <i>Om kriget</i>, 1832<i> - </i>min&nbsp;egen översättning från <a href="http://clk.tradedoubler.com/click?p=21&amp;a=1559424&amp;g=16159304&amp;url=http://www.adlibris.com/se/bok/midvintermorker-9789174752007"><i>Midvintermörker</i></a>, kapitel <i>Valdemar Atterdag.</i></blockquote><b>Man anfaller givetvis inte om man inte anser sig kunna vinna - det är den offensiva sidans fördel och initiativförmåga. Anfallaren väljer sina strider, det gör inte den som försvarar. Detta innebär att den som inleder en konflikt och angrepp oftast, åtminstone initialt, segrar och når sina mål - <i>annars hade man inte valt att anfalla.</i></b></div><div><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: -webkit-standard; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"></div><br /><div style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; color: black; font-family: -webkit-standard; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px;"><div style="margin: 0px;">Låt oss titta på några exempel. Alla siffror är från Wikipedia.</div></div><br /></div><div>Ett exempel är förstås Falklandskriget, där man i liten skala kan titta på <i>slaget vid Goose Green</i>.</div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-jXVp5L9nisY/WLqfzSJLNDI/AAAAAAAAqeo/4w3Lf5OobSIbZ27HFzBMMxPjnAUiSnFZQCLcB/s1600/The_Falklands_Conflict%252C_April_-_June_1982_FKD267.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="444" src="https://4.bp.blogspot.com/-jXVp5L9nisY/WLqfzSJLNDI/AAAAAAAAqeo/4w3Lf5OobSIbZ27HFzBMMxPjnAUiSnFZQCLcB/s640/The_Falklands_Conflict%252C_April_-_June_1982_FKD267.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Juliet-kompaniet vid 42 Commando, Royal Marines anländer till Goose Green i slagets slutfas.</td></tr></tbody></table><div>De värnpliktiga argentinarna hade i flera månader ockuperat Falklandsöarna och kunnat gräva ner sig i sina försvarsställningar.<br /><br />Vid Darwin och Goose Green genomförde brittiska fallskärmsjägare ett frontalanfall <i>till fots</i> mot de nedgrävda argentinarna. Britterna var 690 man, men argentinarna var numerärt överlägsna med mellan 896 och 1083 man, de flesta värnpliktiga. Arton britter dödades och mellan 45 och 55 argentinare miste livet. I slutändan tillfångatogs 961 argentinare när de efter ett knappt dygns strider gav upp inför den numerärt underlägsna brittiska styrkan.<br /><br />Goose Green visar i sig ensamt det mesta kring numerär kontra kompetens och ledarskap. Visserligen dödades den ursprungliga brittiska befälhavaren, när han själv ledde ett anfall mot ett argentiskt kulsprutenäste, och ersättarens <i>uppdragstaktik</i>&nbsp;sägs av en del varit avgörande för utfallet av slaget.<br /><br />Då anföll ändå britterna baserat på ett felaktigt underrättelseläge och trodde att den försvarande styrkan var avsevärt mindre. Men man kunde anpassa sig och via överlägsen kompetens, stridsvilja och ledarskap nedkämpa en numerärt överlägsen motståndare.<br /><br /><b>Vad gäller Falklandskriget, så utspelade det sig som bekant på ett avsevärt avstånd från Brittiska Öarna. Britterna var alltså övertygade om att de kunde besegra de argentinska värnpliktiga ockupanterna med relativt små brittiska styrkor.</b><br /><br />Vill man titta på lite större konflikter så ser man att anfallssidan ingalunda måste vara överlägsen numerärt, utan att det är andra faktorer som avgör.<br /><br />Irakkriget 2003 hade den angripande amerikanska sidan 380 000 man, varav 192 000 amerikaner. Då ska man ha i minnet att det går någonstans mellan 5-10 amerikanska soldater på <i>funktionsförband</i>&nbsp;per soldat på ett <i>manöverförband</i>&nbsp;och antalet faktiskt stridande amerikaner var betydligt färre.&nbsp;Irak hade 1 142 000 man. Här besegrade angriparen en numerärt tre gånger så stor styrka. Inte tvärt om - att försvararen kan besegra en tre gånger så stark angripare. <b>Även här var man helt övertygade om att man trots dålig numerär med lätthet kunde besegra en numerärt överlägsen motståndare på andra sidan jordklotet.</b><br /><br />I finska fortsättningskriget fick 750 000 finnar och tyskar 650 000 ryssar på reträtt. Visserligen var den finska sidan numerärt marginellt överlägsen, men inte de klassiska tre gånger försvararna, som när 250 000 - 300 000 finnar stoppade det sovjetiska anfallet i Vinterkriget 39-40. Där hade angripande Sovjetunionen en styrka på en miljon man.<br /><br />Under sexdagarskriget 1967 besegrade 264 000 israeler 567 000 egyptier, jordanier och syrier i ett anfall där man erövrade hela Sinai-halvön plus Golanhöjderna och Västbanken. Försvararna var nästan tre gånger så många som angriparna, men det hela var en massiv förlust för framför allt Egypten. Mätt i antalet dödade så dödades upp till 20 gånger så många försvarare som angripare (ca 18 500 kontra 776 - 983 israeler).<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-2vR8CuiRRgw/WLqliGAJE1I/AAAAAAAAqe4/X6kK9Ni7B10xUQLhZz8-a1BUIuv0Fi_BQCLcB/s1600/Bundesarchiv_Bild_146-1972-045-08%252C_Westfeldzug%252C_Rommel_bei_Besprechung_mit_Offizieren.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="426" src="https://3.bp.blogspot.com/-2vR8CuiRRgw/WLqliGAJE1I/AAAAAAAAqe4/X6kK9Ni7B10xUQLhZz8-a1BUIuv0Fi_BQCLcB/s640/Bundesarchiv_Bild_146-1972-045-08%252C_Westfeldzug%252C_Rommel_bei_Besprechung_mit_Offizieren.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Ordergivning med Rommel och <i>spökdivisionen</i>. Det som kan kallas <i>uppdragstaktik</i>&nbsp;tillämpades och Rommel struntade i order från högre ort, utan anpassade sig till läget och tog eget initiativ för att lösa det övergripande uppdraget att besegra motståndaren. Hans pansardivision fick öknamnet <i>spökdivisionen</i>, för att de ryckte fram så fort och långt att de inte längre var i radiokontakt med den tyska ledningen. Rommels och kollegans Guderians <i>initiativförmåga</i>&nbsp;och <i>ledarskap</i>&nbsp;gjorde tillsammans med <i>uppdragstaktik</i>&nbsp;att man fullständigt krossade motståndaren genom att skära de allierades styrkor i två och ringa in bland annat hela brittiska armén, som i princip helt utplånades som stridande förband i samband med evakueringen vid Dunqerque.</td></tr></tbody></table>Vid slaget om Frankrike under andra världskriget 1940 var de angripande tyskarna numerärt jämlika, med 3 300 000 man mot de allierades 3 350 000, men underlägsna numerärt i såväl stridsvagnar och artilleri. Även tekniskt var t ex franska <i>Char B1 bis</i>-stridsvagnen helt överlägsen tyska stridsvagnar i duellsituationer. Men tyskarna valde förstås inte att genomföra sitt huvudanfall där motståndaren var som starkast längs Maginotlinjen (även om man anföll även där för att hålla fransmännen uppbundna - se von Clausewitz ovan). Det tål att upprepas att <i>den som anfaller väljer tid och plats</i>. Likt sexdagarskriget var de allierades förluster mångfaldigt större än de angripande tyskarnas. Ironiskt nog sägs den stridsvagns- och flygbaserade&nbsp;<i>blitzkrieg-</i>tanken varit den franske generalen de Gaulles idé, publicerad 1933, och ska ha inspirera tyske Guderian. Överlägsna teorier är en sak, men det gäller att också få gehör för den och att sedan <i>genomföra</i>.<br /><br /><b>Poängen är att <i>anfallaren väljer sina strider</i>&nbsp;och <i>Sverige måste ha en offensiv förmåga för att anfalla en angripare på vårt eget territorium, </i>samt <i>vältränade och övade förband som är självsäkra nog att ta egna initiativ</i>&nbsp;som en del av landets försvar. Att enbart förlita sig på att <i>värnplikt</i>&nbsp;skulle lösa något är inte bara naivt, det är fördummande.</b><br /><b><br /></b> Det svenska försvarets personal har aldrig varit så bra som den är idag, eftersom vi har yrkessoldater, varav många nu har flera års träning och utbildning, samt många som deltagit i skarpa insatser utomlands. Luckorna i rekryteringen kanske kan fyllas upp med värnpliktiga, men låt oss hoppas att kärnan av yrkesförband kommer bibehållas.<br /><br />Annars kan det i värsta fall gå som vid Goose Green. Oavsett hur bra vi är på att gräva ståvärn så angriparen kan välja att anfalla någon annanstans.<br /><br /><b>Ett anfall mot svenskt territorium kommer bara ske om angriparen är övertygad om att han kommer segra. Ett starkt försvar är därför krigsavhållande. Ett anfall mot Sverige kommer alltid ske där vi är svaga, och det är därför vara nödvändigt att kunna genomföra offensiva insatser mot angriparen i efterhand - vi kommer aldrig kunna försvara hela landets yta mot hypotetiska angrepp.</b><br /><br /><i>Sedan ska man vara medveten om att vår enda möjliga angripare - <b>Ryssland - har riktigt usla värnpliktiga soldater</b>. Riktigt kukiga<sup>1.</sup> faktiskt. Även deras elitförband har under striderna i sydöstra Ukraina och i Syrien visat sig vara ganska kassa även mot Call of Duty-spelande krigsturister och <a href="http://cornucopia.cornubot.se/2016/12/ryssland-utrustar-is-med-vapen.html">förlorade t ex Palmyra och massiva mängder utrustning så fort IS visade lite stridsvilja</a>, även om de kanske är bättre än svenskt hemvärn. Det är också högst tveksamt hur det står till med moral och motivation hos de breda massorna av värnpliktigt rekryterade soldater i den ryska försvarsmakten. <b>Det ryska värnplikts- och militära utbildningsystemet bygger på grupptryck och pennalism, och största risken att dödas som rysk soldat är genom misshandel av sina kamrater och befäl</b>. Visserligen lär sig alltså ryska värnpliktiga att döda, men det handlar om att döda varandra. Mörkertalet är stort men det kan handla om något tusental om året, vilket förstås kallas "olyckor". På högre nivå är ryssarna kompetenta, om än hierarkiska och med dålig känsla för uppdragstaktik och eget initiativ, men i slutändan är det alltid en soldat som måste genomföra. Det finns otaliga redogörelser från sydöstra Ukraina om hur ryska soldater blir helt passiva utan ledning och i princip kan nedkämpas utan att de ens skjuter tillbaka, då de bara hänger och väntar på att någon ska säga till dem att skjuta tillbaka. Den ryska mentaliteten, inte bara i det militära, är att om man inte gör något så har man inte heller gjort något fel.</i><br /><i><br /></i> <i><b>Enbart januari-februari i år har 101 ryssar sökt asyl i Sverige, enligt uppgifter till bloggen mestadels deserterade ryska värnpliktiga, som inte vill riskera att dödas av sina befäl eller kamrater under utbildningen eller senare i sydöstra Ukraina. Siffran är upp från 61 under samma period förra året. 101 på två månader ska också jämföras med 401 asylsökande från Ryssland under hela förra året. Moralen och viljan att dö för sin diktatur och fader Putin hos ryska värnpliktiga lämnar en hel del att önska.</b></i><br /><i><b><br /></b></i> <i>Dock har <a href="http://24-my.info/the-russian-army-is-preparing-for-a-grand-funeral-the-military-buys-a-huge-amount-of-flags-of-the-russian-federation-for-the-decoration-of-coffins/">ryska armén nu beställt 49 000 ryska flaggor</a> som ska användas som svepningar av kistor. Man förbereder sig på massiva förluster, väl medvetna om att det enda man har att komma med är en kötttsunami och en sådan kostar i egna liv.</i><br /><i><br /></i><sup>1. Kuk är på rysk slang (<i>mat</i>) negativt, fitta är positivt. Att vara kukig är att vara dålig, att vara fittig är bra.</sup></div>http://cornucopia.cornubot.se/2017/03/numerar-ar-inte-allt-i-strid.htmlnoreply@blogger.com (Cornucopia?)47tag:blogger.com,1999:blog-8354057230547055221.post-781063288764157469Sat, 04 Mar 2017 13:15:00 +00002017-03-04T14:15:04.719+01:00journalistikmediaMSBpolitiksjukvårdvetenskapEndast vetenskapliga rapporter ska beaktas - Ilmar Reepalus vinstrapport kan alltså kasserasDet senaste i Sverige är att endast vetenskapliga rapporter ska beaktas. Det betyder att alla statliga utredningar, rapporter från politiska partier och all journalistik kan kasseras, då dessa inte är vetenskapligt. Det betyder också att Ilmar Reepalus rapport om förbud mot vinster inom välfärdsföretag kan kasseras. Den är nämligen inte vetenskaplig.<br /><div><a name='more'></a><br /></div><div>Grunden är att Myndigheten för samhällsskydd och beredskap gav <a href="http://www.svt.se/nyheter/inrikes/rapportforfattaren-pierre-durrani-var-med-i-muslimska-brodraskapet">muslimen och tidigare medlemmen i Muslimska brödraskapet, fil kand Pierre Durrani</a>, och terrorismforskaren dr Magnus Norell i uppdrag att göra en förstudie kring det av flera muslimska länder (inklusive av Ryssland, som bekant ett land med tiotalet miljoner muslimer) terroriststämplade så kallade Muslimska Brödraskapet. Rapporten har fått kritik av diverse islamister, samt akademiker, för att <i>inte vara vetenskaplig</i>. Norell har bemött kritiken genom att undra vad kritikerna rökt innan de läst rapporten och att alla svar på deras kritik står i rapporten (vilket väcker lite frågor om de alls har läst).</div><div><br /></div><div>MSB påtalar dock att <a href="https://www.msb.se/sv/Om-MSB/Nyheter-och-press/Nyheter/Nyheter-fran-MSB/MSB-om-forstudien-Muslimska-brodraskapet-i-Sverige/">rapporten är en <i>förstudie</i>&nbsp;och inte var avsedd att vara vetenskaplig</a>.</div><div><br /></div><div>Gott så.</div><div><br /></div><div><b>Eftersom nu endast vetenskapliga rapporter ska beaktas kan vi härmed strunta i all journalistik, alla statliga utredningar, alla rapporter från politiska partier och tankesmedjor. Dessa är nämligen inte <i>vetenskap</i>. Dit räknas t ex Ilmar Reepalus utredning om förbud mot vinster i välfärden.</b></div><div><b><br /></b></div><div>Det är förstås ett mycket positivt och välkommet besked att vi kan kassera alla politiska rapporter på grund av deras ovetenskaplighet.</div><div><br /></div><div>Därmed är hela frågan om vinster i välfärden avgjord.&nbsp;</div><div><br /></div><div>Man kan förstås också bortse från <a href="https://www.mynewsdesk.com/se/vardforetagarna/documents/patienttoppen-2016-59743">rapporten <i>Patienttoppen 2016</i>, där 1 148 vårdcentraler betygssats av 109 065 personer</a>. Den visar ju annars att 16 av de 20 bästa vårdcentralerna (enligt patienterna) är privata och att den bästa vårdcentralen i 16 av landets 21 regioner drivs privat.</div><div><br /></div><div>Men som sagt, inte vetenskapligt - <i>var är kontrollgrupperna till de 109 065 respondenterna - var är den vetenskapligt granskade publikationen -</i>&nbsp;så vi kan bortse även från den.</div><div><br /></div><div><b>Så kom ihåg att nästa gång någon politiker uttalar sig eller presenterar något, säg "<i>inte vetenskapligt"</i>&nbsp;så kan man direkt avfärda det hela.</b></div>http://cornucopia.cornubot.se/2017/03/endast-vetenskapliga-rapporter-ska.htmlnoreply@blogger.com (Cornucopia?)13tag:blogger.com,1999:blog-8354057230547055221.post-7841582487980941818Sat, 04 Mar 2017 08:10:00 +00002017-03-04T09:59:38.830+01:00humanekologivattenÖrebroVattenbrist i Örebro - kan inte hantera befolkningstillväxtenSedan i höstas råder det vattenbrist i Örebro kommun. Kommunen klarar inte av befolkningstillväxten och dränerar sjöarna man har som vattentäkter. Man uppmanar att spara på vattnet och väntas införa bevattningsförbud (på vintern...). Ändå vill kommunen växa.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td><a href="https://4.bp.blogspot.com/-4X8kttPIPBo/WLpyltMx0-I/AAAAAAAAqeA/08h9Cj5PLaI1FQTvSiKL-ZQZ4e_2W3HwgCLcB/s1600/orebro_fors.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="424" src="https://4.bp.blogspot.com/-4X8kttPIPBo/WLpyltMx0-I/AAAAAAAAqeA/08h9Cj5PLaI1FQTvSiKL-ZQZ4e_2W3HwgCLcB/s640/orebro_fors.JPG" width="640" /></a></td></tr><tr><td class="tr-caption" style="font-size: 12.800000190734863px;">Svartån genom Örebro för ett år sedan.</td></tr></tbody></table><a name='more'></a>Som exempel på desperationen är nu vattenståndet mycket lågt i sjöarna Ölen, Storbrjödekn och Toften, som har avrinning till Svartån, som är kommunens vattentäkt. Dräneringen kommer fortsätta och kommunen lutar sig mot en vattendom från 1600-talet, där den fyra meter djupa sjön Ölen tillåts sänkas med 2.6 meter, dvs till 1.4 meters djup.<br /><br />Nerikes Allehandla skriver om det hela (offline).<br /><br />Kommunens VA-chef varnade redan i november och i december gick kommunen ut med uppmaning till Örebroarna att spara på vattnet.<br /><blockquote class="tr_bq"><i>"I mitten av december sänktes den reda låga sjön Ölen ytterligare en halvmeter, ett medvetet beslut av Örebro kommun. Efter nyår ströps flödet i Svartån ännu mer för att behålla vatten i sjöarna, så vattenförsörjningen är säkrad ytterligare en tid."</i></blockquote>Man förväntar sig nu att Örebro kommun ska införa ett <i>bevattningsförbud mitt i vintern</i>, men beslutet är inte taget än.<br /><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-_wE5tWKleQw/WLp1BgSYxRI/AAAAAAAAqeM/RBeHiyCFD5IEYIFLKhH_W92Ln0OXyce5wCLcB/s1600/orebro.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="171" src="https://1.bp.blogspot.com/-_wE5tWKleQw/WLp1BgSYxRI/AAAAAAAAqeM/RBeHiyCFD5IEYIFLKhH_W92Ln0OXyce5wCLcB/s200/orebro.png" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Folkmängden i Örebro. Källa: SCB.</td></tr></tbody></table><br />Problemet är att Örebro kommun växer, i den eviga myten om att <i>fler människor är bra och lönsamt</i>. <a href="http://cornucopia.cornubot.se/2017/01/det-finns-ingen-fordel-med-att-bli-fler.html">I verkligheten finns det inga fördelar med att bli fler. Fler personer innebär linjärt mer utgifter inom välfärd</a>&nbsp;där det också saknas skalningsfördelar.<br /><blockquote class="tr_bq"><i>"Speciellt infrastrukturen är till stora delar betald sedan tidigare och därmed mycket billig i drift, liksom tidigare byggda sjukhus, skolor, vårdcentraler och dagis. När detta måste byggas ut blir det dyrt, även om man bokföringsmässigt kan trixa till det.<br />En ökande befolkning är inga supermänniskor som är friska och inte behöver utbildning. Och inom välfärdstjänster finns inga nämnvärda skalfördelar. [...]<br />Pratet om större befolkning skulle rädda ekonomin baserar sig på att man medvetet försämrar välfärden genom att inte skala upp den och hoppas att folket inte ska märka något." - </i>jag</blockquote>Tvärt om råkar man istället ut för kraftigt höjda investeringskrav och naturgivna begränsningar, likt tillgången på vatten.<br /><br />Örebro kommun är landets sjunde mest folkrika kommun. Sedan år 2000 har kommunen ökat med 18% i befolkning, men mängden vatten är förstås konstant. Naturligtvis har inte ökade intäkter från stigande befolkning lagts på att bygga ut vattenförsörjningen. Om det alls är möjligt att få några ytterligare vattendomar - Örebro ligger som bekant i ett jordbrukslandskap.<br /><br /><b>Normalt kanske Örebro klarar sig, men det räcker alltså att det sägs varit dåligt med nederbörd en sommar för att Sveriges sjunde största kommun ska få problem med vattenförsörjningen till vardags.</b><br /><b><br /></b> Nu återstår att se när och om förbudet mot bevattning tas under senvintern i Sveriges sjunde största kommun. I ett av de länder i världen med bäst tillgång till vatten.<br /><br />Sveriges VA-intrastruktur är enormt eftersatt och vi lever på forna investeringar. Ersättningstakten är i storleksordningen 300 år. Det är dock en annan fråga än själva tillgången till vatten. Men även denna är med sina vattendomar dimensionerad för gamla Folkhemssverige med mindre än åtta miljoner invånare. Eller för den delen domar från 1600-talet.<br /><br /><i>Man ska också komma ihåg att det kommunala utjämningssystemet gör att en kommun inte får några vinster på att öka sin befolkning och kommunalskatt - moms, företagsskatter etc går till staten och ökade kommunala skatteintäkter försvinner in i utjämningssystemet. För övrigt samma anledning som gör att Karlshamns kommun inte kommer tjäna något på sina silverpenningar för Nordstream 2 - fler i jobb i kommunen ger inte ökade intäkter när den kommunala utjämningen gjort sitt.</i><br /><div style="text-align: justify;"></div>http://cornucopia.cornubot.se/2017/03/vattenbrist-i-orebro-kan-inte-hantera.htmlnoreply@blogger.com (Cornucopia?)64tag:blogger.com,1999:blog-8354057230547055221.post-9203478174899567827Fri, 03 Mar 2017 13:53:00 +00002017-03-03T15:09:05.223+01:00tramsFredagsmys: Läser du den här bloggen - du kan vara ett geni!Dags för lite härligt fredagsmys, och denna gång blir det återkoppling på <a href="http://cornucopia.cornubot.se/2017/02/vad-har-du-for-iq.html">senaste enkäten</a>, där 945 av bloggens veckoliga 50 000 - 70 000 läsare gjorde seriösare IQ-test och rapporterade sina resultat. Slutsatsen måste var att <i>om du läser den här bloggen kan du vara ett geni</i>. Eller kraftigt begåvningsbegränsad.<br /><div style="text-align: justify;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-d-FIls8axyA/WLlxec37a3I/AAAAAAAAqdk/zqoqND9bmtAlzjIFItShl-dAfMNA1puIwCLcB/s1600/iq.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="574" src="https://2.bp.blogspot.com/-d-FIls8axyA/WLlxec37a3I/AAAAAAAAqdk/zqoqND9bmtAlzjIFItShl-dAfMNA1puIwCLcB/s640/iq.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Bloggläsarnas IQ enligt Wechslerskalan, samt allmänhetens fördelning.</td></tr></tbody></table><a name='more'></a>Som synes ovan är bloggens läsare överbegåvade, dvs betydligt mer begåvade än normalt. Endast 13.68% av bloggläsarna är normalbegåvade eller under normalbegåvade, vilket innebär att 86.32% av bloggläsarna är överbegåvade.<br /><div><br /></div><div>Därtill tillhör hela 19.17% den procent av svenskarna som har högst IQ, <i>och kan var genier</i>. Helt fantastiskt. Om du läser det här blogginlägget har du alltså nästan en chans på fem att vara bland den mest intelligenta procenten i Sverige.</div><div><br /></div><div>Dock finns det en viss överrisk att man är <i>kraftigt begåvningsbegränsad</i>, eller som det hette förr - <i>förståndshandikappad</i>. Alltså tillhör de 2% av svenskarna som har lägst IQ. Dock föreslog jag ju att de som röstar på SD med fördel kunde välja 69 eller lägre om de inte orkade göra ett lite seriösare IQ-test, <a href="http://cornucopia.cornubot.se/2017/02/tino-sanandaji-upprepar-sdare-har-lagt.html">vilket kan förklara överrepresenationen av <i>kraftigt begåvningsbegränsade</i></a>.</div><div><br /></div><div>Sedan skulle det kunna vara så att läsarna <a href="http://cornucopia.cornubot.se/2017/02/vad-har-du-for-iq.html">trots uttrycklig uppmaning</a> har rapporterat sin IQ enligt Catellskalan och att siffrorna ovan därmed inte helt stämmer med verkligheten. Inte så begåvat att inte kunna ta till sig enkla instruktioner dock. Likväl så ligger överbegåvningen kvar även med Catell, då normalbegåvning även i den skalan ligger runt 100.</div><div><br /></div><div><i>Eller så är personer som har hög intelligens mer benägna att göra IQ-tester, så de kan lämna svar på en sådan här enkät...</i></div><div><br /></div><div>Men som fredagsmys tar vi alla med oss att bloggläsarna uppenbarligen är <i>skitsmarta</i>. Förklarar varför jag har en begränsad läsekrets. Majoriteten (67.26%) av läsarna säger sig tillhöra de 9% smartaste i Sverige, och om det är vad jag tilltalar med mina skriverier så blir det förstås svårt att nå ut till de breda lagren.</div><div><br /></div><div>Så trevligt fredagsmys på er!&nbsp;</div><div><br /></div><div><i>Vilket tal följer på denna talserie: 1 16 35 54 73</i></div>http://cornucopia.cornubot.se/2017/03/fredagsmys-laser-du-den-har-bloggen-du.htmlnoreply@blogger.com (Cornucopia?)66tag:blogger.com,1999:blog-8354057230547055221.post-1287963908043040379Fri, 03 Mar 2017 11:50:00 +00002017-03-03T12:50:51.917+01:00bostadbostadbubblancrowdfundingfastigheterKameoNorgereklamÄr det smart att investera i två fastighetsmarknader?<i>Detta inlägg är sponsrat av <a href="https://www.kameo.se/">Kameo</a>.</i><br /><i><br /></i>Det finns stora skillnader mellan bostadsmarknaderna i Sverige och Norge enligt Kameo, som erbjuder investerare att till hög ränta finansiera bostadsprojekt i de två grannländerna. Man har just nu <a href="https://www.kameo.se/Marknadsplats/9-5-raenta.-Vi-finansierar-byggnation-av-tvaa-bostadsfastigheter-tillsammans">ett projekt i Oslo till 9.5% ränta</a>&nbsp;och ett <a href="https://www.kameo.se/Marknadsplats/7-raenta-Vi-finansierar-renoveringen-av-en-fastighet-i-Goeteborg-tillsammans">projekt i Göteborg till 7.0% ränta</a>. Samtidigt har nu utvandringsvågen från Sverige till Norge vänt och Sverige ser ut att få nettoinvandring av svenskar från Norge för första gången sedan början av 2000-talet.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-fv30XILxjoU/WLlR6Zs-MMI/AAAAAAAAqdU/lLmmoNGKYnw_BdoOEKgPnxoazbKUygaogCLcB/s1600/IMG_1362.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://1.bp.blogspot.com/-fv30XILxjoU/WLlR6Zs-MMI/AAAAAAAAqdU/lLmmoNGKYnw_BdoOEKgPnxoazbKUygaogCLcB/s640/IMG_1362.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Oslo från Holmenkollen.</td></tr></tbody></table><br /><a name='more'></a>Som jag skrivit om tidigare är Norges bostadsmarknad i stort sett <i>fungerande</i>, till skillnad mot den svenska.<br /><br />En avgörande skillnad är att man i Norge <i>äger sin lägenhet</i>, medan svenskarna via bostadsrätter bara äger <i>rätten att bo</i>. Det betyder att norrmännen fritt kan hyra ut sina lägenheter, vilket leder till en fungerande bostadsmarknad med tusentals konkurrerande hyresvärdar istället för enstaka lokala kommunalt ägda oligopol som i Sverige.<br /><br />Både bostadsmarknaden i Norge och Sverige är dock heta, även om det är billigare med bostäder i Oslo än i Stockholm. Bidragande orsaker är enligt Kameo bostadsbristen, samt skattefördelar med bostadsägande. Snittpriser i Stockholm på ca 94 000:- SEK per m2 är högre än de motsvarande 75 000:- SEK per m2 som gäller i Oslo.<br /><br />Bostadspriserna stiger just nu snabbare i Norge än i Sverige, vilket förstås leder till att det byggs mer. Här kommer Kameo in och kan finansiera de topplån, som bankerna kräver egen finansiering på, eller för den delen hela projekt via sin <i>crowdfunding.</i><br /><br />Svenskar börjar nu flytta tillbaka från Norge <a href="http://e24.no/jobb/arbeidsliv/naa-reiser-svenskene-hjem/23663959">rapporterar norska E24</a>, och för första gångens sedan början av 2000-talet flyttar fler svenskar från Norge än till.<br /><br />Kameo lanserar snart en plattform för både svenska och norska fastighetslån, men man kan alltså redan idag vara med och <a href="https://www.kameo.se/Marknadsplats/9-5-raenta.-Vi-finansierar-byggnation-av-tvaa-bostadsfastigheter-tillsammans">till en ränta på 9.5% vara med och finansiera norska bostadsprojekt</a>. Det kommer framöver bli betydligt fler projekt att investera och beroende på riskprofil kommer man alltså kunna välja mellan Sverige eller Norge. Föredrar man Sverige finns <a href="https://www.kameo.se/Marknadsplats/7-raenta-Vi-finansierar-renoveringen-av-en-fastighet-i-Goeteborg-tillsammans">ett projekt i Göteborg med 7.0% i ränta</a>.<br /><joakim proad.se=""><lars wilderang.se=""><vanja kameo.se=""><br /></vanja></lars></joakim><joakim proad.se=""><lars wilderang.se=""><vanja kameo.se="">Det finns förstås de sedvanliga riskerna med denna typ av investeringar. Med investeringar i Norge tillkommer valutarisken, men på medellång till lång sikt är NOK och SEK stabila mot varandra, eller det som Kameos Sebastian Harung kallar <i>skandinaviska kronor.</i></vanja></lars></joakim><br /><joakim proad.se=""><lars wilderang.se=""><vanja kameo.se=""><i><br /></i></vanja></lars></joakim><a href="http://blogg.kameo.se/stockholm-vs-oslo-vilken-bostadsmarknad-ar-hetast/">Ni kan läsa mer om en jämförelse mellan den norska och svenska bostadsmarknaden på Kameos blogg</a>.<br /><joakim proad.se=""><lars wilderang.se=""><vanja kameo.se=""> </vanja></lars></joakim><br /><joakim proad.se=""><lars wilderang.se=""><vanja kameo.se=""><i>Detta inlägg är sponsrat av <a href="https://www.kameo.se/">Kameo</a>.</i></vanja></lars></joakim><br /><joakim proad.se=""><lars wilderang.se=""><vanja kameo.se=""><br /></vanja></lars></joakim>http://cornucopia.cornubot.se/2017/03/ar-det-smart-att-investera-i-tva.htmlnoreply@blogger.com (Cornucopia?)10tag:blogger.com,1999:blog-8354057230547055221.post-5926830160295157511Fri, 03 Mar 2017 09:33:00 +00002017-03-03T10:33:12.492+01:00bredbandförsvarinfrastrukturIT-branschenmobiltelefoniNorgetelefoniNorska PTS rekommenderar 700 Mhz-bandet till kommersiella aktörer - med rätt för krisbrukNorges motsvarighet till PTS rekommenderar likt svenske Patrik Fältström att 700 Mhz-bandet går till civila mobiloperatörer. Dessa ska dock ge kris- och beredskapsmyndigheter möjlighet att bruka samtliga nät. Ett eget nät kostar åtta gånger så mycket som att nyttja fyra kommersiella nät med bättre redundans och täckning.<br /><div style="text-align: justify;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-BOb04MMlud4/WLkk776n1tI/AAAAAAAAqdA/BL2DNlmLlvYOafUwGZ-NrmNdVzvD98j7QCLcB/s1600/norge_oslo_radhus.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="424" src="https://1.bp.blogspot.com/-BOb04MMlud4/WLkk776n1tI/AAAAAAAAqdA/BL2DNlmLlvYOafUwGZ-NrmNdVzvD98j7QCLcB/s640/norge_oslo_radhus.jpg" width="640" /></a></div><div><a name='more'></a>Norska Nasjonal Kommunikationsmyndihet, NKOM, motsvarigheten till den svenska Post- och Telestyrelsen, PTS, rekommenderar alltså att 700 Mhz-banden släpps till de kommersiella mobiloperatörerna. Dessa ska dock ge kris- och beredskapsmyndigheter tillgång till näten.<br /><br />Detta är alltså <a href="http://cornucopia.cornubot.se/2017/02/patrik-falstrom-bygg-inte-ett-eget.html">helt i linje med Patrik Fältströms förslag</a>, och kommer ge betydligt bättre täckning till avsevärt lägre pris för krisberedskapen.</div><br /><a href="http://www.nkom.no/aktuelt/nyheter/_attachment/27620?_download=true&amp;_ts=15a7fd5fdd8">NKOM skriver (PDF)</a>:<br /><blockquote class="tr_bq"><i>"Frekvensbåndene 703-733 MHz og 758-788 MHz refereres ofte til som dupleksbåndene i 700 MHz båndet, og de vil støttes i LTE-nettverksutstyr og brukerterminaler over hele verden. Dette er derfor attraktive frekvenser med stor verdi for flere aktører. Hovedproblemstillingen i denne analysen er hvordan disse frekvensene kan anvendes på en måte som gir mest effektiv utnyttelse av frekvensressursene og er samfunnsøkonomisk mest gunstig. En viktig del av denne vurderingen er hvordan nød- og beredskapsbrukeres behov for mobil bredbåndskommunikasjon kan ivaretas i ulike løsningsmodeller. <b>Etter en samlet vurdering er det vår anbefaling at alle frekvensressursene i det aktuelle båndet gjøres tilgjengelige for offentlige mobilnett, men slik at mobiloperatører som tildelesfrekvenser samtidig pålegges å legge til rette for nød- og beredskapsbrukeres behov."</b></i></blockquote><a href="http://www.nkom.no/aktuelt/nyheter/samfunns%C3%B8konomisk-analyse-av-700-mhz-b%C3%A5ndet">Något kortare står det på hemsidan</a>:<br /><blockquote class="tr_bq"><i>"En sentral del av Nkoms vurderinger vil omhandle nød- og beredskapssektorens og Forsvarets behov for mobile bredbåndtjenester<b>. Den samfunnsøkonomiske analysen anbefaler å legge til rette for en løsning der disse behovene ivaretas i de offentlige mobilnettene.</b>"</i></blockquote><b>Kort sagt: <i>Den samhällsekonomiska analysen är att kris- och beredskapsbehoven tas till vara i de offentliga mobilnäten.</i>&nbsp;</b><br /><b><br /></b>Det finns också siffror i rapporten, på skillnaden i pris. Ett separat nät för kriskommunikation beräknas kosta 27.7 miljarder NOK i totalkostnad. Om man använder de offentliga näten beräknas kostnaden till 3.5 miljarder NOK (sidan 4 i ovan länkade PDF).<br /><br /><b>Ett eget nät är alltså åtta gånger så dyrt.</b><br /><br />Dessutom kommer det alternativet vara bättre eller lika bra på på täckning, tillgänglighet, robusthet, funktionalitet och framtidssäkring som att driva ett eget nät. Enda skillnaden till fördel för eget nät ligger i viss ökad säkerhet (sidan 5 i PDF:en). <i>Vad nu säkerhet är värt om nätet inte har täckning - fyra operatörer kommer garanterat ge bättre täckning tillsammans än en operatör.</i><br /><br /><b>Sammantaget är det alltså billigare och bättre att använda prioriterad trafik i de offentliga näten än att bygga själv. Därmed kan vi vara säkra på att Sverige i sedvanlig ordning väljer den sämsta lösningen - åtta gånger dyrare och sämre.</b>http://cornucopia.cornubot.se/2017/03/norska-pts-rekommenderar-700-mhz-bandet.htmlnoreply@blogger.com (Cornucopia?)9tag:blogger.com,1999:blog-8354057230547055221.post-2914460029146726059Fri, 03 Mar 2017 07:48:00 +00002017-03-03T08:48:08.473+01:00budgetekonomipolitikskattekontoStatens överskott endast 10 miljarder - sparande på skattekonto förklaringenStatens överskott 2016 var inte alls 60 miljarder enligt finansutskottets Jan Ericson (m). 50 miljarder av "överskottet" beror på att företag och privatpersoner använde skattekontot som bank. Nu har räntan satts till noll och pengarna förväntas strömma ut från skattekontot.<br /><div style="text-align: justify;"></div><div><a name='more'></a><br />Skattekontot har på grund av tidigare lagstiftning erbjudit en för ränteläget hög och skattefri ränta. Företag och privatpersoner har därför deponerat likvider på skattekontot, <i>vilket är förklaringen till statens bokföringsmässiga överskott under 2016.&nbsp;</i><br /><i><br /></i> <b>Av statens överskott på 60 miljarder beror 50 miljarder av sparande på skattekonto, som i själva verket är en skuld staten har till medborgarna.</b><br /><br /></div><div><a href="http://www.ericsoniubbhult.se/">Jan Ericson (m), ledamot av finansutskottet i riksdagen, skriver på sin blogg</a>:</div><div><blockquote class="tr_bq"><i>"[H]ela statens överskott beror på att skattebetalarna använt Skattekontot som bank. Det är inte riktiga skatteintäkter som staten får behålla. Nu har regeringen dessutom beslutat att sätta räntan till noll, och därmed förväntas överlikviditeten på skattekontot minska igen, och Riksgälden spår att 2017 blir betydligt sämre. "Underskottet i statsbudgeten väntas bli 20 miljarder kronor 2017" skriver man i sitt pressmeddelande."</i></blockquote>Siffrorna kommer bland annat från <a href="https://www.riksgalden.se/sv/For-investerare/Aktuellt/Nyheter-och-pressmeddelanden/Pressmeddelande/2017/Lagre-underskott-for-staten-2017-ger-minskad-upplaning/">Riksgäldens pressmeddelande i januari</a>.</div><div><blockquote class="tr_bq"><i>"Tolkningen av statsfinanserna försvåras fortsatt av de överinsättningar som finns på skattekontot. Riksgäldens bedömning är att de i dag uppgår till cirka 50 miljarder kronor, vilket är samma bedömning som i oktober. Detta innebär att både Riksgäldens lånebehov och den redovisade statsskulden blir lägre än vad de skulle varit utan överinsättningarna på skattekontot."</i></blockquote><b>Riksgälden förväntar sig nu ett <i>underskott</i>&nbsp;på 20 miljarder kronor för 2017, eller 80 miljarder i skillnad mot de felaktiga siffror som regeringen slänger sig med för 2016.</b><br /></div>http://cornucopia.cornubot.se/2017/03/statens-overskott-endast-10-miljarder.htmlnoreply@blogger.com (Cornucopia?)32tag:blogger.com,1999:blog-8354057230547055221.post-4090588541343199995Thu, 02 Mar 2017 20:51:00 +00002017-03-02T21:54:53.141+01:00försvarRysslandSäpovänsterpartietLäs: Patrik Oksanen exponerar SVR och RISS operationer mot SverigePatrik Oksanen har i en massiv <i>tour de force</i>&nbsp;exponerat en av den ryska utländska underrättelsetjänsten SVR och dess informationskrigsdel RISS operationer mot Sverige. Detta är obligatorisk läsning och inkluderar hur Vänsterpartiets ledamot i inte bara försvarsutskottet och försvarsberedningen utan även det svenska kontraspionagets politiska insynsråd anser att SVR har större rätt att finnas i Sverige än Säpo.<br /><div style="text-align: justify;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-B5Xqt3_JLtQ/WLiD6c8CF3I/AAAAAAAAqcw/84l8GCPOysgunY_92GaQtb10-7YT_z85ACLcB/s1600/personer_patrik_oksanen.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="424" src="https://3.bp.blogspot.com/-B5Xqt3_JLtQ/WLiD6c8CF3I/AAAAAAAAqcw/84l8GCPOysgunY_92GaQtb10-7YT_z85ACLcB/s640/personer_patrik_oksanen.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Patrik Oksanen.</td></tr></tbody></table><a name='more'></a>Det finns inte så mycket att anmärka på <a href="http://www.helahalsingland.se/opinion/ledare/stig-henrikssons-v-markliga-omsorg-om-rysk-underrattelsetjanst">Oksanens ledartext, annat än att det är en lång och obligatorisk läsning</a> som skildrar hur SVR/RISS alltså bedriver sk <i>reflexiv kontroll</i>&nbsp;rätt in i försvarsutskottet och även kontraspionaget Säpos politiska insynsråd.<br /><div><br /></div><div>Anmärkningsvärt är att Vänsterpartiets Stig Henriksson (v) alltså anser att Säpo inte får närvara i Sverige, men väl ryska underrättelsetjänsten SVR och dess informationskrigsdel RISS.&nbsp;</div><div><br /></div><div><b>Dessutom är det nu dokumenterat att Stig Henriksson öppet talar om vad som diskuterats i Säpos insynsråd och alltså publikt diskuterar vad svenskt kontraspionage sysslar med.</b><br /><div><blockquote class="tr_bq"><i>"Och det är på Sveavägen 41 som Stig Henriksson, riksdagsledamot för Vänsterpartiet, ledamot i Säpos insynsråd, i en direktsändning bekräftar uppgifterna att den som Säpo syftat på i intervjun med DN är just chefen för RISS:s rådgivargrupp, Vladimir Kozin."</i></blockquote></div><div><div><a href="http://www.helahalsingland.se/opinion/ledare/stig-henrikssons-v-markliga-omsorg-om-rysk-underrattelsetjanst">Ni hittar alltså texten här</a>. Obligatorisk läsning!<br /><br />Under kalla kriget hölls Vänsterpartiet på mils avstånd från försvarsutskott etc. Kanske dags att överväga detta igen. Det är inte så konstigt att Försvarsmakten är ovilliga att informera försvarsutskottet om saker av hemlig natur, vilket gör att utskottet får problem att fatta rätt beslut.</div></div></div>http://cornucopia.cornubot.se/2017/03/las-patrik-oksanen-exponerar-svr-och.htmlnoreply@blogger.com (Cornucopia?)49tag:blogger.com,1999:blog-8354057230547055221.post-676086801069462893Thu, 02 Mar 2017 13:16:00 +00002017-03-02T14:16:02.561+01:00försvarRysslandUSAUSA:s Constant Phoenix spanade efter strålning utanför KaliningradDet ena amerikanska Boeing WC-135C <i>Constant Phoneix</i>&nbsp;spanade igår efter strålning utanför den Ryska Federationens exklav i Königsberg<sup>1.</sup> vid Östersjön. Detta efter att <a href="http://cornucopia.cornubot.se/2017/02/constant-phoenix-soker-av-barents-hav.html">tidigare spanat efter strålning vid norska gränsen mot Ryssland</a>&nbsp;och Barents Hav.<br /><div style="text-align: justify;"></div><div><blockquote class="twitter-tweet" data-lang="en"><div dir="ltr" lang="en">West of <a href="https://twitter.com/hashtag/Kaliningrad?src=hash">#Kaliningrad</a> over the Baltic Sea <br /><br />🇺🇸 USAF RC135W 62-4138 ABIL087 <a href="https://t.co/etRAbbCQTm">pic.twitter.com/etRAbbCQTm</a></div>— CivMilAir ✈ 🚁 (@CivMilAir) <a href="https://twitter.com/CivMilAir/status/836988425467281410">March 1, 2017</a></blockquote><script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script></div><div><a name='more'></a>Officiellt heter det fortfarande att WC-135C <i>Constant Phoenix</i>&nbsp;är i Europa för att mäta upp en normalbild. Samtidigt har de första två flygningarna varit riktade mot ryska gränsen mot svenska grannländer som Norge eller Polen.</div><div><br /></div><div>Man kan bara spekulera i hur känsliga instrumenten ombord på flygplanet är - kan det t ex detektera närvaron av kärnvapen? Det känns högst tveksamt, då dessa normalt finns i skyddade lager, men det är möjligt att <i>flytt</i>&nbsp;av kärnvapen i det öppna, t ex vid lastning på vapenbärare eller omgruppering, skulle kunna ge spår av joniserande strålning. Detta känns dock osannolikt.</div><div><br /></div><div><i>Constant Phoenix</i>&nbsp;närvaro i Europa har kopplats till upptäckten av jod-131, men med tanke på ämnets halveringstid finns det knappast kvar något att mäta just nu.</div><div><br /></div><div><b>En annan hypotes är att&nbsp;<a href="http://cornucopia.cornubot.se/2017/02/har-ryssland-brutit-mot.html">spana efter spår av kärnvapenprov</a>, som ju släpper ut jod-131, men dessa sker inte i Königsberg. Att flyga specifikt till gränsen till Königsberg handlar <i>specifikt</i>&nbsp;om att mäta någon form av rysk kärnvapenrelaterad aktivitet. Hade man bara viljat ha ett normalläge hade man inte <i>enbart</i>&nbsp;spanat av vid gränsen till Königsberg respektive rysk-norska gränsen tidigare.</b><br /><b><br /></b>Därtill flög man alltså an mot den ryska örlogs- och militärbasen vid Baltijsk och inte inne över Polens territorium för att komma närmare andra baseringar i Kaliningrad. Mätningen framstår därmed som inriktad mot främst flottan.</div><div><br />Ryssland har ett antal kärnvapenlager i Königsbergexklaven, bedömt främst avsett för taktiskt bruk, t ex till Iskanderrobotar, eller som kryssningsrobotar eller bomber på attackflyg. Några strategiska kärnvapen finns inte stationerade i exklaven, annat än teoretiskt ombord på kryssningsrobotutrustade örlogsfartyg, likt de Kalibr-bestyckade korvetter som nyligen omgrupperades till Östersjön. Man har dock inga strategiska robotubåtar i Östersjön. Taktiska kärnvapengranater ska sedan tidigare vara avrustade av bägge sidor.<br /><br /></div><div><sup>1. Königsberg är oftast känt som Kaliningrad. Ryssland och Kreml pratar ju om att gamla gränser ska gälla, så vi ser alla fram emot att Königsberg lämnas tillbaka till Tyskland. Dock rensade ryssarna Ostpreussen etniskt, så det finns i princip inte en enda tysk kvar. Finns en del intressant att berätta om de som rensades ut, mer om det och ett blogginlägg om besök i området vid senare tillfälle.</sup></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-TKndtlyHhCc/WLgK6xL44UI/AAAAAAAAqcg/YKaPmY4huWoFfeF1NcaJ73QYslN5DPqcACLcB/s1600/DSC_8912.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="424" src="https://1.bp.blogspot.com/-TKndtlyHhCc/WLgK6xL44UI/AAAAAAAAqcg/YKaPmY4huWoFfeF1NcaJ73QYslN5DPqcACLcB/s640/DSC_8912.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Parasiten mistel är mycket vanlig i forna Ostpreussen. Eget foto.</td></tr></tbody></table>http://cornucopia.cornubot.se/2017/03/usas-constant-phoenix-spanade-efter.htmlnoreply@blogger.com (Cornucopia?)23tag:blogger.com,1999:blog-8354057230547055221.post-397697348304997386Thu, 02 Mar 2017 11:53:00 +00002017-03-02T12:53:24.059+01:00bolånbostadobligationerräntanSBABHar de svenska marknadsräntorna vänt upp?SBAB höjde i dagarna sin listränta för tvååriga bolån. Man hänvisade till höjda upplåningskostnader (dvs högre räntor på bolåneobligationerna), men har svenska marknadsräntor egentligen vänt upp?<br /><div style="text-align: justify;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-w18ETIDH7lo/WLgFcdwK8FI/AAAAAAAAqcQ/M277git1TkoUFT1nsNj2MX2_DOdZP2UZACLcB/s1600/rantor.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="558" src="https://2.bp.blogspot.com/-w18ETIDH7lo/WLgFcdwK8FI/AAAAAAAAqcQ/M277git1TkoUFT1nsNj2MX2_DOdZP2UZACLcB/s640/rantor.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Svenska marknadsräntor under 2016 och 2017. Källa: Sveriges Riksbank.</td></tr></tbody></table><a name='more'></a>För att finansiera bolån med fasta löptider sker <i>upplåning</i>, dvs emitterande av bolåneobligationer. Räntan på dessa styr också räntan mot slutkund. SBAB hävdade att upplåningskostnaden stigit och höjde därför sina oprutade listräntor för tvååriga obligationer.<br /><div><br /></div><div>Som man ser har generellt marknadsräntorna faktiskt stigit sedan i höstas, undantaget den statliga tvååringen. Samtidigt har räntorna fallit tillbaka sedan årsskiftet, för att precis nu ta ett skutt uppåt.</div><div><br /></div><div><b>Min hypotes är att den längre trenden med fallande räntor kan sägas brutits i höstas. Frågan blir om onsdagens skutt uppåt innebär slutet på den rekyl som gällt under delar av januari tills nu?</b></div><div><b><br /></b></div><div>Därmed är inte sagt att det är lönsamt att binda räntan idag. Det kan fortfarande exempelvis ta tre år innan rörlig ränta går över den 5-årsränta du bundit, och givet linjär uppgång kommer du då ändå inte tjäna på bundet lån under en femårsperiod.</div><div><br /></div><div>Marknadsräntorna är fortfarande negativa utom för statliga löptider på över sju år, eller 5-åriga bolåneobligationer. Till och med för tvååriga bostadslån är räntorna negativa, där investerarna alltså är beredda att betala för att få deponera sina medel hos banker som SBAB. Snacka om förtroende för att det inte finns någon svensk bostadsbubbla och att svenskarna kommer kunna betala sina räntor de kommande två åren.</div><div><br /></div><div>I övrigt är det intressant att se hur 5-åriga bolåneobligationer skuggar 10-åriga statsobligationer.</div><div><br /></div><div>Räntan på rörliga lån påverkas inte av obligationsmarknaden, utan av penningmarknaden, där upplåningsräntorna i stort sett följer Riksbankens styrränta reporäntan och tillhörande in- och utlåningsräntor. Inte exakt samma räntor, men det händer exempelvis väldigt lite med STIBOR eller statsskuldväxlar, annat än när Riksbanken ändrar reporäntan. Åtminstone inte mer än att det är ointressant att publicera grafer.</div>http://cornucopia.cornubot.se/2017/03/har-de-svenska-marknadsrantorna-vant-upp.htmlnoreply@blogger.com (Cornucopia?)29tag:blogger.com,1999:blog-8354057230547055221.post-410400829341017273Thu, 02 Mar 2017 09:53:00 +00002017-03-02T11:00:08.538+01:00försvarmediapolitikvärnpliktenVärnplikten: Regeringen riktar bort fokus från behovet av 6.5 miljarderGenom att dagen efter Försvarsmakten och ÖB lämnat sitt budgetunderlag och <a href="http://cornucopia.cornubot.se/2017/02/ob-forsvarsmakten-saknar-65-miljarder.html">konstaterat att det saknas 6.5 miljarder kronor i anslag</a>, så väljer regeringen att återinföra värnpliktsutbildning. Detta sparar inga pengar, men beslutet kommer för att rikta bort uppmärksamheten från Socialdemokraternas och Miljöpartiets ovilja att anslå ytterligare 6.5 miljarder till försvaret för de politiska beslut man redan fattat. Istället kommer vi nu få en okunnig debatt om värnplikt.<br /><div style="text-align: justify;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-cdz7MAcS0R8/WLfk0QEaSjI/AAAAAAAAqb0/JxA4DJdtAdMqOTKvwiOVLEtHqpB7RTeGQCLcB/s1600/DSC_8514.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="424" src="https://3.bp.blogspot.com/-cdz7MAcS0R8/WLfk0QEaSjI/AAAAAAAAqb0/JxA4DJdtAdMqOTKvwiOVLEtHqpB7RTeGQCLcB/s640/DSC_8514.JPG" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">"Stefan, vi behöver 6.5 miljarder kronor till för att kunna genomföra de beslut ni tagit."<br />"Det kan ni glömma. Här betalar vi inte för den försvarspolitik vi klubbat. Låt oss prata om värnplikt istället!"</td></tr></tbody></table><a name='more'></a>Försvarsmakten behöver <i>minst</i>&nbsp;6.5 miljarder kronor till för att kunna genomföra den försvarspolitik regering och riksdag beslutat om. Det är ungefär som att regering och riksdag t ex beslutat om sjukförsäkringar, föräldraförsäkringar, flyktingmottagning mm, och när det visar sig bli dyrare än planerat, <b>så skjuter man till pengarna som behövs för att genomföra de politiska besluten</b>.<br /><div><br /></div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-CTcPthSnKss/WLfmfOzZhUI/AAAAAAAAqcA/bwyRggqVbPgKyKLY0fCRZbUc7JKDuvmpgCLcB/s1600/sakine.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="96" src="https://2.bp.blogspot.com/-CTcPthSnKss/WLfmfOzZhUI/AAAAAAAAqcA/bwyRggqVbPgKyKLY0fCRZbUc7JKDuvmpgCLcB/s320/sakine.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Så här ser vänrpliktsdebatten ut.</td></tr></tbody></table><div>Men Försvarsmakten får inte dessa 6.5 miljarder kronor. För att snabbt ta bort fokus i den mediala debatten klubbar istället minoritetsregeringen igenom ett återinförande av värnpliktsutbildning, väl medvetna om att det kommer leda till en infantil och djupt okunnig debatt kring att ungdomar behöver lära sig bädda sängen och annat rent trams.</div><div><br /></div><div>Det finns bara tre frågor att ta ställning till angående värnplikten.</div><div><br /></div><div><b>Höjer värnpliktsutbildning svensk beredskap? Höjer värnpliktsutbildning krigsdugligheten hos Sveriges krigsförband? Höjer värnpliktsutbildning det svenska försvarets operativa förmåga?</b></div><div><br /></div><div>Svaret på samtliga dessa frågor är <i>nej</i>. Värnpliktsutbildningen sparar och frigör inte ens pengar, då den kommer ske på samma villkor som för frivillig personal. Försvarsmakten säger idag uttryckligen att det inte kommer vara någon skillnad på frivilliga och tvångsrekryterade.</div><div><br /></div><div>Därtill är forna tiders värnpliktssystems infrastruktor och organisation inte längre kvar.&nbsp;</div><div><br /></div><div>Infrastrukturen är borta. Efter GMU:n, när man går in i befattningsutbildning är det <i>bostäder</i>&nbsp;som gäller. Logement finns inte kvar. Istället finns motsvarande lägenheter, ibland delade mellan flera. Detta gäller t ex på övningsfälten där personalhotell upprättats. Efter tjänstedagen är slut är bostaden <i>privat</i>. Inget där någon kan komma och kräva bäddning.</div><div><br /></div><div><b>Den stora ekonomiska vinsten med forna värnplikten låg inte i att soldaterna fick några kronor i timmen i betalt under utbildningen - idag runt 20:- SEK i timmen, en intressant ingångslön att ta med sig i debatten om ingångslöner - utan i <i>grå arbetskraft</i>, som numera är olaglig.</b></div><div><br /></div><div>Dels placerades värnpliktiga som <i>depå- och bevakningssoldater</i>, även känt som <i>malajer</i>, som utförde riktigt arbete som fastighetsskötsel, tvätt, bevakning, sambandstjänst, kontorsarbete mm, medan övriga värnpliktiga lekte krig. Malajerna bar upp försvarets ekonomi. Idag är deras tjänster ersatta med kommersiella underleverantörer till marknadsmässiga priser istället för 2:50 SEK i timmen. Dels användes värnpliktiga till att utföra riktiga jobb i det skarpa försvaret, som radaroperatörer, flygplanstekniker etc, allt till några kronor i timmen i lön. Ingenjörsförbandens värnpliktiga byggde skarpa befästningar och fältarbeten, precis likt man i diktaturen <a href="http://cornucopia.cornubot.se/2017/02/vitryssland-mobiliserar-mot-ost-och.html">Vitryssland nyligen kallat in värnpliktiga för att som slavarbetskraft bygga befästningar mot ryska gränsen</a>.&nbsp;</div><div><br /></div><div>Eftersom grå arbetskraft är avskaffat finns inga ekonomiska vinster med värnplikt. Tvärt om kommer värnplikt utöver den andel av de 4% som ska utbildas varje år att kosta stora belopp när infrastrutkur måste återskapas.</div><div><br /></div><div><b>Det är knappast någon slump att regeringen Löfven dagen efter att Försvarsmakten begärt 6.5 miljarder kronor i extra anslag väljer att rikta bort debatten till värnplikt. Därmed kommer infantiliserade och okunniga debattörer att tro att försvarets ekonomi är löst och helt glömma bort att myndighetschefen igår krävde 6.5 miljarder kronor i tillskott.</b></div><div><br /></div><div><i>Jag gjorde värnpliktsutbildning 1991-92 och en särskild övning befäl 1995. Jag har inget negativt att säga om min egen värnpliktsutbildning, men jag var högt motiverat befäl. Jag togs ut som KB-elev för att bli ställföreträdande plutonchef på pansarskytte, men kompanichefen ansåg efter grundutbildningens gröntjänst att det var slöseri med mina förmågor och jag utbildades istället till kompanistabschef/stabstroppchef/ställföreträdande plutonchef stab- och tross. En mycket givande tjänst med ett antal kvalificerade utbildningsmoment, inklusive att jobba med skarpa C-stridsmedel. Som stabschef&nbsp;</i><i>(aka "pansarattackpärmbärare")&nbsp;</i><i>hade man ansvar för bland annat underrättelsetjänst och säkerhetstjänst, skyddstjänst (ABC/NBC idag CBRN), samband, luftförsvar, samt ledande av stridstrossen. Som stab ingick en stabsgrupp, en skydds- och spaningsgrupp och en pansarbandvagnsgrupp (kompanichefens vagn) i stabsdelarna, men i praktiken turades man om med kvartermästaren att leda hela stridstrossen, inklusive i strid, vilket även inkluderade sjukvårdsgrupp, mekgrupp (idag driftstödsgrupp) och brogrupp. En ställföreträdande kvartermästare tog hand om andra halvan av stab- och trossplutonen, vilket inkluderade kokgrupp och packgrupp, samt ibland brogruppen.&nbsp;</i></div><div><i><br /></i></div><div><i>På min tid gjorde ca 80-90% av alla män i en årskull värnplikten, inklusive vapenfri tjänst vid t ex FRA eller räddningstjänsten, vilket gjorde att värnplikten kunde rättfärdigas. Idag ska högst 4% av en årskull göra värnplikten, vilket gör det hela djupt orättfärdigt.</i></div><div><i><br /></i></div><div><i>Oavsett löser inte värnplikt försvarsmaktens problem, utan kommer istället leda till att debattens fokus ändras från där den borde ligga - <b>ekonomiska anslag och operativ förmåga</b>.</i></div>http://cornucopia.cornubot.se/2017/03/varnplikten-regeringen-riktar-bort.htmlnoreply@blogger.com (Cornucopia?)51tag:blogger.com,1999:blog-8354057230547055221.post-8850196980892351504Thu, 02 Mar 2017 06:28:00 +00002017-03-02T07:44:25.221+01:00arbetsmarknadförsvarlönerpolitikvärnpliktenRegeringen beslutar om återinförd tvångsrekrytering till försvaretEnligt mediauppgifter kommer regeringen idag fatta beslut om återinförande av tvångsrekrytering till det militära försvaret, sk <i>värnplikt</i>. 13% av en årskull ska genomföra mönstring och upp till 4% ska förlora ett år av sin livsinkomst och karriär medan övriga 96% slipper detta. Samtidigt är regeringen emot sänkta ingångslöner i andra sektorer, medan man alltså tvångsrekryterar till Sveriges lägst avlönade yrke - soldatyrket. Lönerna är så låga att man inte ens kan rekrytera 4 000 personer om året.<br /><div style="text-align: justify;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-wAZyuqa5VVY/WLe16r3lLyI/AAAAAAAAqbU/6PR-RD-W4N45wrs4NhlJTdkjBE1qZtEkQCLcB/s1600/svfm_p4_42mekbat.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="424" src="https://4.bp.blogspot.com/-wAZyuqa5VVY/WLe16r3lLyI/AAAAAAAAqbU/6PR-RD-W4N45wrs4NhlJTdkjBE1qZtEkQCLcB/s640/svfm_p4_42mekbat.jpg" width="640" /></a></div><div><a name='more'></a>Enligt mediauppgifter (<a href="http://sverigesradio.se/sida/artikel.aspx?programid=83&amp;artikel=6642527">SR</a>) vägrar vägrar regeringen alltså höja lönerna för att göra det samhällsbärande soldatyrket attraktivt. Istället ska de 4000 utbildningsplatser som inte blir fyllda av frivilliga fyllas av tvångsrekryterade ungdomar. I praktiken <i>lönedumpning</i>.</div><div><br /></div><div><b>Det handlar alltså inte om någon upprustning eller utökning av svenskt försvar, utan bara om att slippa höja yrkets löner genom tvångsrekrytering.</b>&nbsp;<b>ÖB är tydlig i gårdagens budgetunderlag att <i>krigsduglighet</i>&nbsp;prioriteras och antalet soldater eller förband kommer inte ökas.</b></div><div><br /></div><div>De tvångsrekryterade kommer få samma utbildningsersättning som frivilliga, så det är inte heller en fråga om att spara pengar. Tvångsrekryterade ska främst ersätta de sk <i>tidvis tjänstgörande</i>&nbsp;(GSS/T), dit det är svårt att rekrytera. Tvångsrekryterade innebär här dock en <i>ökad kostnad</i>, eftersom deras lön vid krigsförbandsövningar (KFÖ) och repetitionsutbildningar är högre än för GSS/T.</div><div><br /></div><div>GSS/T får den låga soldatlönen på KFÖ eller repetitionsutbildningar. De tvångsrekryterade får sin SGI, dvs 80% av 97% av sin lön med ett tak. Med tvångsrekrytering och krigsplacering som sk GSS/K kommer det nu bli ännu svårare att rekrytera GSS/T.</div><div><br /></div><div><b>För att upprätthålla krigsduglighet blir alltså de tvångsrekryterade <i>dyrare</i>&nbsp;än yrkessoldater, och dränerar försvarsekonomin ytterligare om inte regeringen avser att höja anslagen.</b></div><div><b><br /></b></div><div>Regeringen vägrar på andra områden tillåta sk <i>lönedumpning</i>&nbsp;för att få in folk på arbetsmarknaden, men vill alltså inte anslå medel för att betala attraktiva löner för att riskera livet för att försvara Sveriges frihet och självbestämmande. Soldatyrket är ett av de yrken som har lägst lön i landet.</div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-96y5F4nFNeg/WLe32bgJ2EI/AAAAAAAAqbk/9MkSjzgtMasFaL1lKJdlqsUZdW77lEm8QCLcB/s1600/loner.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="424" src="https://2.bp.blogspot.com/-96y5F4nFNeg/WLe32bgJ2EI/AAAAAAAAqbk/9MkSjzgtMasFaL1lKJdlqsUZdW77lEm8QCLcB/s640/loner.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Löner i Sverige. Soldatyrket är inringat med rött.</td></tr></tbody></table><div>Ett återinförande av tvångsrekryteringen bör ses som förberedande för att faktiskt utöka svenskt försvar. Eftersom man inte vill betala marknadsmässiga löner så lär det vara mycket svårt att utöka krigsorganisationen ytterligare.&nbsp;</div><div><br /></div><div><b>Det är dock viktigt att förstå att det idag inte finns någon kapacitet att utöka krigsförbanden utan att i så fall säga upp yrkessoldaterna och ersätta deras mycket krigsdugliga förband och mycket hög beredskap med tvångsrekryterade med låg beredskap.</b></div><div><b><br /></b></div><div>Förhoppningen är nu att det ska bli lättare att rekrytera och utbilda officerare framöver, så att man kan skala upp krigsorganisationen, men det kommer ta många år innan man får upp numerären som behövs för att utbilda dessa även vid tvångsrekrytering. Lönerna måste upp oavsett, vilket Sveriges framtida regeringar kommer upptäcka.</div><div><br /></div><div><b>Återigen, ett återinförande av värnplikten innebär inte ett starkare försvar utan ett dyrare försvar, utan att regeringen anslår medel för kostnadsökningarna. Alternativet är att man likt förr inte kallar in till krigsförbandsövningar och repetitionsutbildningar och väljer pappersförsvaret istället för krigsduglighet. Sveriges försvar idag är så litet att <i>krigsduglighet</i>&nbsp;och <i>hög beredskap</i>&nbsp;är helt avgörande för förmågan och man kan inte förlita sig på en köttvägg av forna tiders 100 000-tals värnpliktiga.</b></div><div><b><br /></b></div><div>Det är också djupt orättfärdigt att upp till 4% av svenska ungdomar får sin karriär och livsinkomst fördröjd med ett helt år, och kommer få lägre pension mm på grund av att de är borta från arbetsmarknaden ett extra år. Allt tjafs om att man gör <i>"män av pojkar"</i>&nbsp;eller att <i>"ungdomarna får lära sig hyfs"</i>&nbsp;är rent nonsens, då det dels är väldigt få som omfattas, och dels kommer det vara skötsamma ungdomar med fläckfritt förflutet. Med högst 4% uttag kommer man förstås välja de mest begåvade och lovande ungdomarna, speciellt som det ofta är till tjänster inom funktionförbandens specialförmågor det är svårt att rekrytera. <i>Alla vill bli jägare eller åka stridsvagn, ingen vill bli sambandssoldat. </i>Dessutom ska försvaret försvara Sverige och inte ersätta utebliven uppfostran.</div><div><i><br /></i></div><div><b>Det hade varit önskvärt att återinförd tvångsrekrytering av upp till 4% hade åtföljts av en försvarsskatt på de 96% som inte försvarar eller försvarat Sverige. Låt de som inte själva deltar i Sveriges försvar genom att aldrig varit krigsplacerade betala för försvaret.</b></div><div><b><br /></b></div><div><i>Nu återstår att se när regeringen inför tvångsrekrytering till andra offentliga bristyrken, som t ex lärare. Kom också ihåg att de flesta diktaturer har värnplikt, medan det är betydligt vanligare med yrkesförsvar i våra västerländska demokratier. Regeringens argument mot sänkta ingångslöner för personer som står långt från arbetsmarknaden har med införandet av tvångsrekrytering till försvaret nu fallit.</i></div>http://cornucopia.cornubot.se/2017/03/regeringen-beslutar-om-aterinford.htmlnoreply@blogger.com (Cornucopia?)74tag:blogger.com,1999:blog-8354057230547055221.post-1921162613463663198Wed, 01 Mar 2017 18:07:00 +00002017-03-01T19:07:13.464+01:00biobränsleenergiflygbolagpeak oilBiobränsle ständigt tio år bort - även till flygetNu pratas det om bioflygbränsle, och likt alla biobränslen ligger det alltid tio år bort. Svensk produktion av tre gånger så dyrt flygbränsle från skogsavfall <i>kan</i>&nbsp;vara redo om tio år. Men vi minns att <a href="http://cornucopia.cornubot.se/2013/04/ivlchalmers-11-26-fornyelsebara.html"><i>inte ett enda</i>&nbsp;av planerade biobränsleprojekt har blivit av</a>.&nbsp;Så vi kommer stå här om tio år och fortfarande ha tio år tills det blir något av biobränsle för flyget.<br /><div style="text-align: justify;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-kHjPjgMaYVY/WLcJ2WmpaaI/AAAAAAAAqbE/CGlKNr7RvmsFmg_oFPxHhSs3JNWvejeIgCLcB/s1600/flyg_air_greenland_2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="424" src="https://3.bp.blogspot.com/-kHjPjgMaYVY/WLcJ2WmpaaI/AAAAAAAAqbE/CGlKNr7RvmsFmg_oFPxHhSs3JNWvejeIgCLcB/s640/flyg_air_greenland_2.jpg" width="640" /></a></div><div><a name='more'></a>Biobränslen (flytande dito som ersättning för fordon) i större skala är en ständigt undflyende hägring. Av tidigare <a href="http://cornucopia.cornubot.se/2013/04/ivlchalmers-11-26-fornyelsebara.html">sammanställning över större svenska projekt har inte ett enda blivit av</a>, utan har bara varit fria fantasier:</div><div><blockquote class="tr_bq"><i>"Det konstaterades dock att dessa biobränsleprojekt saknade finansiering och existerade bara i lobbyvärlden, eftersom energipriserna var för låga redan år 2013, när oljan låg ganska stabilt runt 100 USD. Dessutom väntade man på klara politiska riktlinjer, vilket man aldrig fick."</i></blockquote>Det blev inte ens något av&nbsp;<a href="http://cornucopia.cornubot.se/2015/09/goteborg-energis-biogassatsning-skrivs.html">den enda som verkade faktiskt bli något, Göteborg Energis Gobigas</a>.<br /><br />Gisslet för dessa stora projekt är att de aldrig hinner bli klara i tid innan man får en av de återkommande dipperna i oljepriset.<br /><br />Nu pratas det, antagligen desperat, om biobränslen i stor skala till flyget. Den aktuella flygskatten som Sverige ensidigt ska införa hotar nämligen svensk flygtrafik och hobbyprojekten för diverse kommuner som sponsrar trafik till olika flygplatser landet runt, och därför måste man vifta med att det minsann går att flyga på biobränslen. Om tio år, förstås. <a href="http://www.nyteknik.se/fordon/gront-svenskt-bransle-blir-fardigt-om-tio-ar-6827096">Ny Teknik skriver</a>:<br /><blockquote class="tr_bq"><i>"Om allt rullar på kan vi ha en demonstrationsanläggning inom sju till tio år. En fullskalig produktion av jetbränsle – det är mer än tio år innan vi är där.</i><i><br /></i><i>I dag finns inget bioflygbränsle med lignin som råvara som är godkänt för flygtrafik. Så certifieringsprocessen återstår också."</i></blockquote>Som vanligt en väldigt massa <i>om</i>. Biobränsle för flyg kostar idag ungefär tre gånger så mycket som det sinande fossila flygbränslet. Väldigt lite talar för att det blir billigare.<br /><br />Regeringen vill förstås få fram biobränslen och slänger därför en flygskatt på flyget i tron att det magiskt uppenbarar sig biobränslen då. Vad som istället kommer uppenbara sig är att alla internationella flygsträckor från Sverige, undantaget till våra direkta grannländer, kommer försvinna. Allt internationellt flyg framöver, undantaget till grannländerna, kommer gå till Köpenhamn, där man får byta till ett skattebefriat flyg vidare till andra länder.<br /><br />Så kan man fundera på hur många år efter <i>peak oil </i>vi ligger om tio år? Hela frågan om <i>peak oil</i>&nbsp;försvann effektivt under den nuvarande tillfälliga nedgången i oljepriset, men kommer antagligen bli medialt intressant igen när priset når 100 - 150 USD igen framöver.<br /><br />Oavsett har inte billigt flyg någon framtid, så ni kan lika gärna passa på att flyga medan ni kan göra det billigt. Så har ni något att berätta för barnbarnen om.<br /><br /><b><a href="http://cornucopia.cornubot.se/2014/03/de-tre-villfarelserna.html">Kom ihåg ihåg de tre villfarelserna</a>. Bara för att man kan framställa några kubikmeter biobränsle från frityrolja i Kalifornien så betyder det inte att man kan göra det i några volymer som spelar någon som helst roll för samhället.</b></div>http://cornucopia.cornubot.se/2017/03/biobransle-standigt-tio-ar-bort-aven.htmlnoreply@blogger.com (Cornucopia?)44tag:blogger.com,1999:blog-8354057230547055221.post-3263617897821515361Wed, 01 Mar 2017 15:14:00 +00002017-03-01T16:21:08.168+01:00bostadkonsumismteknologiTvå vintrar med det smarta hemmet - överskattat och självutplånandeVi fortsätter på dagens tekniktema. Jag har nu haft ett sk <i>smart hem</i>&nbsp;i ungefär ett och ett halvt år, inklusive två mörka vintrar och kan egentligen bara upprepa tidigare slutsatser. Det smarta hemmet är för teknofiler och nördar, men löser inga egentliga problem och är som transparent teknik något man glömmer bort och som sådan alltså är självutplånande. Däremot finns det stora vinster i robotisering <i>av faktiska problem</i>.<br /><div style="text-align: justify;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-FiQWUvgie9s/WLbZRCcqUfI/AAAAAAAAqa0/d6iAEB56Fj8zMXdL_HYaPfMl18c6YmnyQCLcB/s1600/IMG_2923.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://3.bp.blogspot.com/-FiQWUvgie9s/WLbZRCcqUfI/AAAAAAAAqa0/d6iAEB56Fj8zMXdL_HYaPfMl18c6YmnyQCLcB/s640/IMG_2923.JPG" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Philips Hue "smarta" spotlights. Här färgschema "Söderhavet".</td></tr></tbody></table><a name='more'></a>Det <i>"smarta hemmet"</i>&nbsp;handlar om uppkopplade hushållsfunktioner, som kan styras över Internet eller via appar, och förstås automatiseras. Skillnaden mot vanliga rörelsedetektorer och tidsreläer handlar just om möjligheten till extern styrning med varierande tillhörande <i>programmering</i>, felaktigt kallat <i>intelligens</i>&nbsp;eller <i>smarthet</i>.<br /><div><br /></div><div>I praktiken automatiserar man problem som egentligen inte finns, som att tända en lampa i ett rum. Det tar en tiondels sekund att tända lampan för hand, men att säga till Siri att tända lampan tar sin lilla tid.&nbsp;</div><div><br /></div><div><b>När väl man är nöjd med konfigurationen av sitt <i>smarta hem</i>&nbsp;så blir det i praktiken transparent och inget man tänker på och som sådant inte heller uppskattar, då det <i>smarta hemmet</i>&nbsp;inte löser några existerande problem.</b></div><div><br /></div><div>Utvidgar man däremot begreppet till andra uppkopplade eller robotiserade lösningar med rörliga hushållsrobotar (stationära hushållsrobotar har vi haft länge - tvättmaskiner, diskmaskiner, torktumlare mm), så finns det däremot en del vinster. Med hushållsrobotar får man mer tid över till att jobba istället för att t ex dammsuga eller klippa gräset.</div><div><br /></div><div>Men först en titt på vad som är så <i>smart</i>.&nbsp;</div><div><br /></div><div>Som tillbedjare av <i>Church of S:t Jobs</i>&nbsp;har jag valt <i>Apple Homekit</i>&nbsp;som lösning. Säkerheten ska vara hög, då alla produkter rent av har ett av Apples Homekit-chip i sig just för säkerheten, i bemärkelsen cyberangreppssäkerhet. '</div><div><br /></div><div><i>Detta inlägg berör inte riktiga säkerhetsfunktioner och intrångsskydd (t ex larm med åtgärd (grannar, väktare etc), extra gallergrindar, gästboende när man är bortrest (har djur så hemmet är aldrig tomt när jag är borta), larmcentralkopplad brandvarnare, övervakningskameror, dimgeneratorer (mkt effektivt - kan rekommenderas om man samtidigt har larm med åtgärd - dimman är inte försvunnen förrän åtgärd är på plats och gör hemmet helt ogenomträngligt tills dess), concertinatråd, utbildad vakthund, larmminor (rådjur ställer till det där ibland), snubbeltråd etc), som använder andra lösningar och separata system, som inte kommer beröras i några blogginlägg, ej heller detta.</i></div><div><div><br /></div></div><div>De Homekitprodukter som testats är framför allt Philips <i>Hue</i>-system med styrbar belysning, som kopplas in i form av LED-lampor i befintliga armaturer. Dessa kompletteras med ett antal Homekit-styrda reläer och sensorer från <i>Elgato&nbsp;Eve</i>.&nbsp;</div><div><br /></div><div>Ljusen löser icke-problemet med att behöva tända och släcka själv. Hue-lampor i sovrummet är kopplade till väckarklockeappen på mobilen och tonas upp när det är dags att vakna. Samtidigt slås även ljuset på på olika platser i huset om solen ännu inte gått upp. Lamporna släcks sedan när det är tillräckligt ljust.</div><div><br /></div><div>TV:n har ett Eve-relä, som ser till att den är bortkopplad nattetid.</div><div><br /></div><div>Funktioner som att släcka lamporna utifrån GPS om jag lämnar hus eller gård användes initialt, men är inte uppskattat av övriga hushållet av förklarliga skäl. Istället ges ett manuellt kommando till Siri om huset är tomt när man lämnar, så allt går in i <i>ej hemma</i>-läge.</div><div><br /></div><div>Däremot slås lampor på automatiskt om jag kommer hem (GPS-baserat) och om det sker från skymning och framåt tonas också utebelysningen, som är Hue-baserad - dock endast Hue White, upp maximalt.</div><div><br /></div><div>När man lägger sig släcks allt antingen automatiskt vid en viss tidpunkt, eller på Sirikommandot <i>god natt</i>, vilket släcker eller tonar ner alla lampor i huset. På kvällen efter det är tänkt att man ska sluta jobba (ja, jag vet att jag är skämtsam ibland) byts belysningens färger inomhus om till ett mer avslappnande ljus.</div><div><br /></div><div><b>Fast vid normala rutiner behöver man aldrig röra en lampa, utom där det inte finns Huestöd pga icke kompatibla installationer. Allt tänds och släcks automatiskt vid behov. Man glömmer bort systemets existens och det blir alltså självutplånande. Det går lika bra med en vanlig timer för t ex golvvärme i badrummet.</b></div><div><b><br /></b></div><div>En del saker används i princip inte alls. Det t ex finns ett Everelä på vattenkokaren. Tanken är att ha vattenkokaren fylld med vatten och påslagen, men bortkopplad med relät, och sedan slå på det när man närmar sig hemmet för att ha varmt vatten redo. Eller på morgonen. Används sällan, rent av nästan aldrig. Det är inte speciellt jobbigt att sätta på vatten själv när man vill ha kaffe eller te - <i>man måste ändå fylla på vatten och sätta vattenkokaren och reläet i rätt läge</i>. Det handlar bara om <i>när</i>&nbsp;man förbereder sitt varma vatten - f<i>öre</i>&nbsp;man går och lägger sig eller lämnar hemmet, eller <i>efter </i>man vaknat eller kommer hem. Arbetsinsatsen är den samma och man löser inga problem.</div><div><br /></div><div>Sedan kan det vara kul att göra olika ljussättningar med Huelampornas färgmöjligheter, eller med ett ord till mobilen ställa om huset till partyläge eller filmläge, eller kanske läsbelysning. Men det löser som sagt inga faktiska problem.</div><div><br /></div><div>Överlag rätt oanvändbart. Visst, det är väl skönt att inte behöva programmera om tidreläer för utebelysning i takt med årstiderna.</div><div><br /></div><div>Väderstationen, som inte kör Homekit, utan är Netatmobaserad och ett separat system, är förstås roande om man är en datanörd (data som i faktapunkter, inte som i datorer) som jag, men löser sällan några speciella problem.&nbsp;</div><div><br /></div><div><b>Det som faktiskt är användbart är rörliga hushållsrobotar, som dammsugarrobot, mopprobot och gräsklipparrobot. De löser till skillnad mot det <i>smarta hemmet</i> faktiska problem, eller åtminstone sådant som annars tar bort värdefull arbetstid.&nbsp;</b></div><div><b><br /></b></div><div>Utvärdering av ett och ett halvt år med städrobotar kommer i ett senare inlägg. Sammanfattningsvis kan jag konstatera att jag aldrig har för avsikt att gå tillbaka till manuell damsugning och moppning igen. Det samma gäller gräsklippande. Däremot måste man underhålla robotarna och byta en del slitagedelar, men frånvaron av t ex dammsugarpåsar kompenserar detta kostnadsmässigt.</div><div><br /></div><div><b>Men övrig hemautomation tilltalar antagligen bara en teknofil och nörd, men löser inte några egentliga problem. För de flesta skulle vanliga dumma timers, rörelsedetektorer eller ljusreläer lösa problematiken, men då har man förstås inte någon app att styra dem med. Kort sagt kommer <i>smarta hem</i>&nbsp;knappast vara någon storsäljare idag.</b></div><div><b><br /></b></div><div><a href="http://cornucopia.cornubot.se/2017/01/gartners-hypecykel-ny-teknik-tar-lang.html">Som med all teknik gäller <i>hypecykeln</i>&nbsp;även de smarta hemmen</a>. Smarta hem lever inte upp till någon hype, löser inte några existerande problem. De kommer säkert vara allerstädes närvarande någon gång i framtiden när man hittat <i>vad de faktiskt ska användas till</i>. Men där är vi inte idag. Dagens smarta hem fyller ingen funktion och löser inga problem. <a href="http://cornucopia.cornubot.se/2015/07/fredagsmys-vad-ska-vi-med-smarta-hem.html">Min slutsats från juli 2015 gäller alltså fortfarande</a>.&nbsp;</div><div><br /></div><div>Idag kan man antagligen rent tekniskt göra <i>vad som helst</i>&nbsp;med ett smart hem om leverantörer och kunder ville. Men med tanke på att problemen är icke-existerande och därmed behoven icke-existerande så har inte det smarta hemmet fått något genomslag. Jag kan inte heller se hur det ska få något genomslag i närtid heller, om nu ingen uppfinner en verklig <i>killer app</i>. Och det finns inte idag.</div><div><br /></div><div><i>Tvättroboten (Miele) totalhaverarde nyligen efter 16 års felfri drift, då trumman lossnade och det började ryka lite. Enligt servicetekniker per telefon skulle det kosta lika mycket att byta trumma och lager som att köpa en ny. Vid besök på Mediamarkt för akut inköp av en ny Miele fanns det uppkopplade appstyrda tvättrobotar från t ex LG och Samsung. Bland säljargumenten uppsatta på skyltar över dessa fanns t ex "få en notifiering på din mobil över vad som gått fel"</i>. <i>Öh, nej, jag vill inte ha en tvättrobot där något går fel. Jag vill ha ren tvätt. Så det blev en dum Miele av enklaste modell. Visade sig hantera sju kilo tvätt mot fyra kilo på den gamla, till samma pris som en reparation, så nyinköp gav bättre produkt än reparation. Enda andra skillnaden var en display som visade hur lång tid det är kvar på tvätten. Det behövs inte någon app och Wifiuppkopplng för det. Vad skulle man ha en "smart tvättrobot" till? Starta maskinen via en app? Men man stoppar ju ändå in tvätten för hand och det är inget problem att starta den själv därefter. Fast visst, någon av de uppkopplade tvättrobotarna kunde ge fina grafer som visade var i tvättcykeln din maskin befann sig...</i></div>http://cornucopia.cornubot.se/2017/03/tva-vintrar-med-det-smarta-hemmet.htmlnoreply@blogger.com (Cornucopia?)50tag:blogger.com,1999:blog-8354057230547055221.post-6795704712126181336Wed, 01 Mar 2017 10:03:00 +00002017-03-01T15:18:07.122+01:00bredbandInternetlandetmobiltelefonipreppingteknologiTeliaPrepping: Automatisk Internet-redundans med failover till mobilt bredbandJag har nu på grund av återkommande driftsavbrott för min DSL-uppkoppling, införskaffat automatisk failover till mobilt bredband om den fasta förbindelsen till Internet går ner. Tillsammans med avbrottsfri kraft ger detta goda möjligheter att kunna fortsätta leverera blogguppdateringar även vid infrastrukturstörningar utan att behöva lämna hemmet. Även tillgången till Internet sorterar jag ner under <i>prepping</i>. Jämförande förbindelsetest nedan skvallrar lite om hur mobilt bredband står sig mot DSL på landsbygden, nu när Telia river kopparnäten.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/--Qsf2dTqWgs/WLaU9-9kY9I/AAAAAAAAqZ4/mfbpWzWoEq0lErimUyi3-hZZqHfP4P5oQCLcB/s1600/asus.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="510" src="https://3.bp.blogspot.com/--Qsf2dTqWgs/WLaU9-9kY9I/AAAAAAAAqZ4/mfbpWzWoEq0lErimUyi3-hZZqHfP4P5oQCLcB/s640/asus.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Huvudskärmen för <a href="http://clk.tradedoubler.com/click?p=46&amp;a=1559424&amp;url=https://cdon.se/hemelektronik/asus-4g-ac55u-p36527252">Asus 4G-AC55U</a>. Den fasta WAN-anslutningen är aktiv och det mobila bredbandet står redo att ta över. Notera att uppkopplingen är LTE, dvs 4G och inte 3G.</td></tr></tbody></table><div><a name='more'></a><div style="text-align: justify;"></div>Eftersom mitt fasta bredband slutar att fungera några gånger om året, vilket stör produktionen av blogguppdateringar, så har jag nu införskaffat en <a href="http://clk.tradedoubler.com/click?p=46&amp;a=1559424&amp;url=https://cdon.se/hemelektronik/asus-4g-ac55u-p36527252">Asus 4G-AC55U</a>. Det är en bredbandsrouter med inbyggt 3G/4G (LTE)-modem och WAN-port för uppkoppling mot fast bredband via gigabit ethernet. Efter i mitt fall tio sekunders avbrott på det fasta bredbandet går routern istället över till mobilt "bredband" och sedan tillbaka igen när den fasta uppkopplingen fungerar.<br /><div><br /></div><div>Man upplever en kortare paus i uppkopplingen och i mitt fall sedan en något förändrad hastighet. Lägre nedladdningshastighet med mobilt bredband, men snabbare uppladdning, som delvis kompenserar upplevelsen och även sänker svarstiderna.<br /><div><br /></div><div>Mobilt bredband är förstås ingen långsiktigt hållbar lösning, då jag för över mellan 20 och 100 gigabyte data per dygn normalt. Men det ger en viss redundans och yrkesmässigt är det förstås helt avgörande med en uppkoppling.&nbsp;</div></div><div><br /></div><div>Sedan finns det åtminstone en hel del överföringskapacitet i beredskap. I den sparade potten på mitt mobilabonnemang hos Telia ligger det drygt 80 gigabyte av maximalt 100 och väntar. Med ett extra SIM-kort för data går det att använda i Asusroutern och mobilen samtidigt. Jag har även via något erbjudande från Telia fått ett <i>gratis</i> 20 gigabytes mobilt bredbandsabonnemang med än så länge 40 gig i potten av maximalt 100. Därtill finns ett <i>gratis&nbsp;</i>5 gigabytes mobilt bredbandsabonnemang, där man för 199:- SEK kan fylla på med 100 gigabyte i nödfall. I värsta fall får man successivt byta SIM-kort i routern, och fördelen är också att man förstås kan välja SIM-kort från olika leverantörer. Telia har dock klart bäst täckning där jag bor.</div><div><br /></div><div>Routern har inget eget DSL-modem, utan där används Telias "gratis" (=inbakat i abonnemangskostnaden) DSL-router/modem, som körs i DMZ-läge (http://192.168.1.1/dmz.lp) istället för bryggat läge. Genom att köra i DMZ-läge istället för bryggat får jag fortfarande tillgång till administratörsfunktioerna på Teliaroutern, men bara brandväggsfunktionerna hos Asus-routern används för att skydda övriga nätet. En fördel med frånvaron av DSL-modem och bara en gigabit ethernetport som WAN är att samma uppsättning sömlöst kan flyttas över till fiberuppkopplingen, som kommer senare under året.</div><div><br /></div><div>Routrarna sitter på en liten väggmonterad <a href="https://ad.zanox.com/ppc/?39804462C1841175593&amp;ulp=[[dator-natverk/datortillbehor/ups/apc-es-700-va-ups-p44097?utm_source=zanox_%23%23WebsiteID%23%23&amp;utm_medium=affiliate&amp;utm_content=text&amp;utm_campaign=aff_1_2015]]">APC Back-UPS ES700</a> som avbrottsfri kraft, som vid testkörning visat sig ge ungefär två timmars strömförsörjning och med det Internet. Bärbara datorer idag har upp till tolv timmars batteri och behöver knappast köras på UPS:en. Viktigt är att välja en korrekt dimensionerad UPS, som kan köra på de mycket låga strömförbrukningarna som två routrar ger. Det finns UPS:ar med betydligt mer batteri, men de kräver ofta större förbrukning för att köra.</div><div><br /></div><div>Med 300 W sinusväxelriktare och flera sk <i>fritidsbatterier</i>&nbsp;stående på laddning finns det gott om tid att inom två timmar koppla in reservkraft till den avbrottsfria kraften. Ett fulladdat sådant 75 Ah fritidsbatteri bör kunna köra routrarna i ungefär två dygn, men vid det laget kan det bli nödvändigt att även ladda datorer.</div><div><br /></div><div><b>Mobilt bredband <i>fungerar</i>&nbsp;hyfsat, men är hastigheten kan variera stort beroende på andra brukare. Listade "säljhastigheter" är som bekant helt teoretiska. Största problemet är att man inte likt fast förbindelse har fri överföring. Nedan följer mätningar av skillnaden i överföringskvalitet.</b></div><div><b><br /></b></div><div>Vi börjar med att titta på det mobila bredbandet. Samtliga mätningar har skett med samma nätverksuppsättning och går från en dator över gigabit ethernet till routern, och sedan vidare över Telia DSL 12-30 Mbit/s eller Telia mobilt bredband.</div><div><br /></div><div>Uppkopplingen är LTE, dvs 4G även om hastigheterna mer är 3G i praktiken.</div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-m5aYDoQHLcQ/WLaUhiMRa3I/AAAAAAAAqZs/fTBOlCEzliYqyuLgw3xbs4Nn33UP-RcpQCLcB/s1600/mobil_kvalitet.png" imageanchor="1" style="margin-left: auto; margin-right: auto; text-align: center;"><img border="0" height="402" src="https://3.bp.blogspot.com/-m5aYDoQHLcQ/WLaUhiMRa3I/AAAAAAAAqZs/fTBOlCEzliYqyuLgw3xbs4Nn33UP-RcpQCLcB/s640/mobil_kvalitet.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Uppkopplingens kvalitet med tillhörande förkortningar för den intresserade.</td></tr></tbody></table><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-Vza48wjlsBY/WLaWhQDTI3I/AAAAAAAAqaI/ukC_4dH5IwwhoO3zOgJhVktiXIscLy1agCLcB/s1600/mobilt_ping.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://3.bp.blogspot.com/-Vza48wjlsBY/WLaWhQDTI3I/AAAAAAAAqaI/ukC_4dH5IwwhoO3zOgJhVktiXIscLy1agCLcB/s640/mobilt_ping.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Svarstider från en egen server på Internet. IP-adressen har dolts av förklarliga skäl. Som man märker är inte pingtiderna stabila, utan varierar stort. Detta beror på andra brukare av det mobila bredbandet, då man inte ser denna variation med DSL (se nedan).</td></tr></tbody></table><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-7TLEoLiYFw4/WLaW2cLALCI/AAAAAAAAqaM/9f6Itb75opIiRQYniaxwcyDzO5yn-e-VACLcB/s1600/mobilt_bredbandskollen.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="640" src="https://2.bp.blogspot.com/-7TLEoLiYFw4/WLaW2cLALCI/AAAAAAAAqaM/9f6Itb75opIiRQYniaxwcyDzO5yn-e-VACLcB/s640/mobilt_bredbandskollen.png" width="392" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Mätning med Bredbandskollens app på MacOS, som identifierar Stockholmsservern som den nätverksmässigt närmaste servern. &nbsp;&nbsp;Telia kör sin marknadsföring med <b><i>"Surfa med upp till 300 Mbit/s"</i>. </b>Ovanstående 11.42 Mbit/s är verkligheten i mitt fall med cirka 1.5 kilometer till basstationen, men få som knör i samma cell.&nbsp;Uppladdningshastigheten är dock avsevärt snabbare än DSL, och snabbare uppåt ger också lägre svarstider än DSL.</td></tr></tbody></table><div>Nedan följer motsvarande för DSL-uppkopplingen, som inte har några överföringsbegränsningar.&nbsp;</div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-mkBjo6hV2Q4/WLaXnOy7VwI/AAAAAAAAqaU/a3aJrIQqxi4j0y5H3zzkn9x_XAeL5DxUACLcB/s1600/dsl.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="458" src="https://4.bp.blogspot.com/-mkBjo6hV2Q4/WLaXnOy7VwI/AAAAAAAAqaU/a3aJrIQqxi4j0y5H3zzkn9x_XAeL5DxUACLcB/s640/dsl.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Kvalitet på DSL-kopplingen, som är såld som en 12-30 Mbit/s DSL. Lyckas förhandla fram drygt 18 Mbit/s nedåt, vilket får anses vara väntat med två kilometer kabel till DSLAM i telestationen. Notera 387 gigabyte nedladdning på tre dygn och fem timmar, eller drygt 100 gigabyte per dygn.</td></tr></tbody></table><div><br /></div><div class="separator" style="clear: both; text-align: center;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-ir3O9VnDAWM/WLaYNjuYl1I/AAAAAAAAqac/b9AgFnWNucMPsYQz7C_Q_tCpDo4_MvV-QCLcB/s1600/dsl_ping.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="520" src="https://3.bp.blogspot.com/-ir3O9VnDAWM/WLaYNjuYl1I/AAAAAAAAqac/b9AgFnWNucMPsYQz7C_Q_tCpDo4_MvV-QCLcB/s640/dsl_ping.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Avsevärt stabilare ping mot extern server (IP dolt även här). Dock är svarstiderna längre än de kortaste svarstiderna på det mobila bredbandet, vilket förklaras av den högre hastigheten uppåt på mobilt bredband.</td></tr></tbody></table><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-ZMJuzNWZ18Y/WLaYfRuDtbI/AAAAAAAAqag/-OftqTht_AoG1JIBC2_A0x5z0LPEAou7QCLcB/s1600/dsl_bredbandskollen.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="640" src="https://1.bp.blogspot.com/-ZMJuzNWZ18Y/WLaYfRuDtbI/AAAAAAAAqag/-OftqTht_AoG1JIBC2_A0x5z0LPEAou7QCLcB/s640/dsl_bredbandskollen.png" width="394" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Mätning med Bredbandskollens app på MacOS. Här identifieras Göteborgsservern som närmast nätverksmässigt. Högre nedladdningshastighet, men sämre uppåt och längre svarstider.</td></tr></tbody></table><div>Telia klipper nu kopparkablarna på landsbygden och man kan konstatera att <i>i ovanstående exempel</i>&nbsp;är mobilt bredband någorlunda jämförtbart med DSL. Detta är även utan externt monterade riktantenner, men jag har alltså relativt nära till Telias basstation. Personer som får sin kopparledning och DSL klippt nu kan dock bo längre bort från än jag, som ändå bor bara någon kilometer utanför en större by.</div><div><br /></div><div>Problemet är att inte ens 100 gigabyte per månad är tillräckligt <i>för att kunna jobba</i>&nbsp;över Internet idag. Klippandet av kablarna på landsbygden omöjliggör kvalificerat distansarbete och nyttjandet av moderna tjänster. Det inkluderar t ex backuplösningar och fillagring i <i>molnet</i>, videokonferenser, research över onlinevideo mm. Idag synkas t ex bilder automatiskt från din telefon och upp i molnet, en telefon som också backas upp automatiskt till molnet. Naturligtvis går sådant att stänga av, men det innebär alltså att man inte kan nyttja moderna lösnignar.</div></div><div><br /></div><div>Ett hushåll om fyra där alla har iPrylar får en rätt hårt smäll vid mjukvaruuppdateringar. Det samma gäller datorer där man kan ha en uppsjö programvaror som regelbundet slukar gigabyte i uppdateringar.</div><div><br /></div><div>Senare under året kommer <i>civilsamhället</i>&nbsp;leverera fiber via en fiberförening och det interna gigabitethernetet kommer få en adekvat uppkoppling mot omvärlden. Då kommer det mobila bredbandet som backuplösning inte ha en chans i jämförelse. Det är dock inte poängen med det mobila bredbandet. Poängen är att ha en flexibel och automatisk redundans, så jag kan leverera blogguppdateringar även vid infrastrukturavbrott.</div><div><br /></div><div><b>Flaskhalsen ligger nu som jag ser det bortom min kontroll och handlar om strömförsörjning hos leverantörernas telestation och mobilbassationer. Med dubbla uppkopplingar, avbrottsfri kraft och reservkraft för några dygn har jag gjort vad jag kan.</b></div><div><b><br /></b></div><div><a href="http://clk.tradedoubler.com/click?p=46&amp;a=1559424&amp;url=https://cdon.se/hemelektronik/asus-4g-ac55u-p36527252">Asus 4G-AC55U kostar 2049:- SEK hos CDON</a>. Lösningen kan fungera för det mindre företaget, men för större arbetsplatser finns det förstås lösningar med högre kapacitet på brandväggen. Det är också tveksamt om en större arbetsplats skulle klara sig på den låga överföringskapaciteten mobilt bredband innebär.</div>http://cornucopia.cornubot.se/2017/03/prepping-automatisk-internet-redundans.htmlnoreply@blogger.com (Cornucopia?)47tag:blogger.com,1999:blog-8354057230547055221.post-4496493817615883723Wed, 01 Mar 2017 08:17:00 +00002017-03-01T09:17:17.691+01:00Annika StrandhällpensionpensionssparandePPMStefan LöfvenSocialdemokraterna tänker nu skrota PPM - oavsett vad oppositionen tyckerRegeringen med statsminister Stefan Löfven (s) och socialförsäkringsminister Annika Strandhäll (s) avser nu skrota premiepensionssystemet, oavsett vad oppositionen tycker. Degen ska in och premiepensionerna är satta åt sidan till skillnad mot övriga pensionsinbetalningar.<br /><div style="text-align: justify;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-uWOSiZG6MTI/WLaBX2Yzp3I/AAAAAAAAqZE/B94TD83Z4gYgfaa9hTeerUONGZky1yKlwCLcB/s1600/personer_stefan_lofven.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="424" src="https://4.bp.blogspot.com/-uWOSiZG6MTI/WLaBX2Yzp3I/AAAAAAAAqZE/B94TD83Z4gYgfaa9hTeerUONGZky1yKlwCLcB/s640/personer_stefan_lofven.JPG" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Läs mina läppar: Du blir lurad. Av mig.</td></tr></tbody></table><a name='more'></a>Socialdemokraterna har tröttnat på att den sk premiepensionen förvaltas av spararna själva och faktiskt finns avsatta som existerande pensionskapital. Man vill därför avskaffa premiepensionssystemet.<br /><div><br />Socialförsäkringsminister Strandhäll säger <a href="https://www.svd.se/s-redo-overge-premiepensionen/om/allras-usla-avkastning">enligt SvD</a>:</div><div><blockquote class="tr_bq"><i>"Visst det var en bärande del av pensionsöverenskommelsen när det nya pensionssystemet kom på plats, men vi kommer inte framåt kunna stå bakom en konstruktion som utsätter våra sparare för en så här stor risk [...] Det här är ett extremt system och vi har en situation som ingen har kunnat förutse."</i></blockquote><div>Beskedet är tydligt. Premiepensionssystemet ska bort.<br /><blockquote class="tr_bq"><i>"Om de borgerliga inte är beredda att förändra systemet med premiepension i grunden, så är Socialdemokraterna beredda att överge systemet, som de aldrig varit riktigt förtjusta i."</i></blockquote>Kort sagt kommer Socialdemokraterna skrota PPM oavsett vad oppositionen säger. Så var det med den leken. Vi är rätt många som inte tagit premiepensionssystemet på allvar, väl medvetna om att det kommer avskaffas. Pensionssystemet är ständigt bara ett riksdagsbeslut från att göras om, och oppositionen orkar väl inte rösta emot avskaffandet.<br /><br />Lustiga är när Stefan Löfven säger följande:<br /><blockquote class="tr_bq"><i>"Ingen ska riskera att bli lurad i vårt allmänna pensionssystem"</i></blockquote>Samtidigt lurar man alltså bort premiepensionerna. I ett första steg ska man inte få förvalta dem hur man vill. Nästa steg kommer blir att de helt avskaffas och går in i statskassan likt övriga pensionsinbetalningar och man får en skuldsedel undertecknad Stefan Löfven istället. För socialdemokraterna har ju aldrig lurat någon...<br /><br /><b>Ett pensionssystem är och förblir alltid en syltburk för politikerna att stoppa sina giriga fingrar i - det handlar om enorma belopp och därmed frestelser som är alldeles för stora.</b><br /><b><br /></b>I dagarna sägs många ha fått sitt sk orange kuvert. Jag har inte fått det, eller så har jag som vanligt reflexmässigt slängt det oläst i pappersåtervinnen, väl medveten om att jag som 70-talist aldrig kommer få någon statlig pension värd namnet. Fast det sägs finnas någon siffran <i>hur länge man måste jobba</i>. Kan ju vara spännande att se hur den siffran kryper upp ett år varje år...</div></div>http://cornucopia.cornubot.se/2017/03/socialdemokraterna-tanker-nu-skrota-ppm.htmlnoreply@blogger.com (Cornucopia?)124tag:blogger.com,1999:blog-8354057230547055221.post-2878655652206236271Tue, 28 Feb 2017 20:13:00 +00002017-02-28T21:15:19.066+01:00folkhälsapolitiksjukvårdKomplettering om sjukhusbäddar - psykiatrireformen och äldrevårdenNågra korta kompletteringar kring antalet minskade sjukhusbäddar. Till modernisering och effektivisering av medicin och kirurgi, så kommer även psykiatrireformen och äldrevårdsreformerna, som minskat antalet sjukhusbäddar rejält. Det betyder inte att dessa inte får vård.<br /><div style="text-align: justify;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-lVqkdjndM1M/WLXYXH2g2gI/AAAAAAAAqYw/KXrXfscSOlMzj0jyp4QJhUEZMDQyPclaACLcB/s1600/1000.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="442" src="https://1.bp.blogspot.com/-lVqkdjndM1M/WLXYXH2g2gI/AAAAAAAAqYw/KXrXfscSOlMzj0jyp4QJhUEZMDQyPclaACLcB/s640/1000.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Antalet sjukhusbäddar per 100 invånare i Norden 1960 - 2012.</td></tr></tbody></table><a name='more'></a>I förra inlägget påtalade jag moderniseringen av vården (avseende kirurgi och medicin) som stor anledning till minskade antal sjukhusbäddar. Men antagligen minst lika viktiga är psykiatrireformen och tillhörande förbättrade mediciner (främst SSRI antar jag), samt reformerna av äldrevården.<br /><div><br /></div><div>Som bekant innebar psykiatrireformen att endast särskilt ömmande fall vårdas inlagda på sk <i>slutenvård</i>. Övriga under psykiatrisk behandling bor på egen hand och tillsammans med betydligt bättre mediciner med tillhörande självmedicinering har det faktiska behovet av institutionsvård av psykiatriska patienter minskat rejält. Det är knappast en förlust att sjukhusbäddar minskat, när man istället fått ut patienterna till att vara (i varierande grad) fungerande människor i samhället istället för på institution. I mänsklig värdighet och livskvalitet har öppenvården antagligen hjälpt många patienter, relativt hur det hade varit på 80-talet eller tidigare. Naturligtvis finns det mer eller mindre tragiska anekdoter om motsatsen.</div><div><br /></div><div>Det samma gäller äldre, som i allt högre grad kan bo kvar i hemmet och få vård där. Den sk <i>långvården</i>&nbsp;finns inte kvar.&nbsp;Även det är antagligen en rejäl livskvalitetshöjning jämfört med att ligga på institution. Men det finns förstås även här mer eller mindre tragiska anekdoter om motsatsen.</div><div><br /></div><div>Kom bara ihåg att anekdoter inte nödvändigtvis ger en korrekt bild av helheten. <a href="http://cornucopia.cornubot.se/2015/06/fakta-vs-anekdoter-medellivslangd-och.html">Exempelvis dör endast 2.8% av männen vid medellivslängden</a>. Det är ett medel, men det är inte vanligt.</div><div><br /></div><div><b>Det går inte att stirra sig blind på sjukhusbäddar som kvalitetsmätare på svensk sjukvård. Det är säkerligen så att antalet faktiska sjukhusbäddar på medicin och kirurgi inte ökat i samma takt som befolkningen, kanske rent av minskat, men det finns inget självändamål i att ha fem gånger så många sjukhusbäddar som idag.</b></div>http://cornucopia.cornubot.se/2017/02/komplettering-om-sjukhusbaddar.htmlnoreply@blogger.com (Cornucopia?)21tag:blogger.com,1999:blog-8354057230547055221.post-521715775671809281Tue, 28 Feb 2017 12:33:00 +00002017-02-28T17:10:26.959+01:00DanmarkFinlandfolkhälsaIslandNorgepolitiksjukvårdskuldkrisenAntalet sjukhusbäddar ner 78% sedan 1990Antalet sjukhusbäddar per capita i Sverige har&nbsp;sedan 1990 minskat med 78% och 83% sedan början av 70-talet. Det är dock inte någon unik svensk utveckling, utan beror främst på förändrade vårdmetoder. Sverige har dock lägst antal bäddar per capita i Norden, men undantaget Finland är skillnaden inte speciellt stor.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-0iybL4jJXw0/WLWg1iyDxwI/AAAAAAAAqYg/c7UjOhhDrGczAPRNe_KWnFofBfUJ6hO_QCLcB/s1600/1000.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="442" src="https://2.bp.blogspot.com/-0iybL4jJXw0/WLWg1iyDxwI/AAAAAAAAqYg/c7UjOhhDrGczAPRNe_KWnFofBfUJ6hO_QCLcB/s640/1000.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Antalet sjukhusbäddar per 1 000 invånare i Norden 1960 - 2012. Källa: Världsbanken</td></tr></tbody></table><br /><a name='more'></a><br />Det framhävs ofta hur antalet sjukhusbäddar per capita minskat kraftigt, vilket i sig stämmer. &nbsp;Sedan toppen på 70-talet har antalet bäddar per capita fallit med 83% och sedan 1990 med 78%. Just 1990 är intressant, då året inledde den sk <i>90-talskrisen</i>, där Sverige fick göra upp med det gamla så kallade välfärdssamhället, som levde på skuldsättning och devalveringar av en fast växelkurs. Som bekant fick sedan svensk välfärd ställas om till att faktiskt vara finansierad av skatteintäkter och inte av lån.<br /><div><br /></div><div>Men den stora anledningen till neddragningarna handlar om <i>modernisering av sjukvården</i>. Det finns inget självändamål i att patienter ska ligga kvar över natten för att de har fått eller ska få kirurgi. Istället har man gått över till <i>dagkirurgi</i>&nbsp;och att skicka hem patienter till vad som oftast är ett betydligt bättre boende i hemmet. Dock läggs man faktiskt ibland in även idag, även om man cyniskt annars kan konstatera att <i>sjukhusbäddar har bytts ut till korridorsovande</i>. För med reducerat antal bäddar finns ingen redundans vid stora skadeutfall, smittoutbrott eller t ex medicinskt stängande av avdelningar pga t ex smittorisk.</div><div><br /></div><div><b>Att det handlar om modernisering av sjukvården och inte om någon svensk <i>systemkollaps</i>&nbsp;påvisas av att bäddar per capita har gått ner även hos våra mer funktionsdugliga nordiska fränder.&nbsp;</b></div><div><br /></div><div>Kvaliteten på den svenska vården har faktiskt blivit bättre, och även om vi har minst antal sjukhusbäddar per capita i Norden så har vi bäst canceröverlevnad. <a href="http://cornucopia.cornubot.se/2014/05/sverige-bast-pa-cancervard-i-norden.html">Cancervården är inte perfekt, långt ifrån, men den är alltså bäst i Norden</a>. Man ska komma ihåg att den som fått vård vederbörande är nöjd med inte får några rubriker hos Aftonbladet.&nbsp;</div><div><br /></div><div><b>Sverige har dock minst antal bäddar per capita i Norden. Ja, Sverige är sämst i Norden på antalet sjukhusbäddar per capita, och även om det delvis beror på faktiska neddragningar av välfärden till en finansierad nivå så handlar det i mycket om en modernisering som speglas hos våra grannländer.</b></div><div><b><br /></b></div><div><div>2012 hade Sverige 2.7 bäddar per 1 000 invånare. Island var nere på 3.2 efter att till synes fått reducera rejält i spåren av skuldkrisen, likt Sverige gjorde på 90-talet. Norge ligger på 3.3, Danmark på 3.5 och Finland sticker ut med 5.5.</div></div><div><br /></div><div>Man kan konstatera att Norge och Danmark aldrig hade det höga antalet bäddar per capita som Sverige, Island och Finland hade, och förändringen av vården kanske därmed inte <i>upplevs</i>&nbsp;lika dramatisk i de länderna.<br /><br /><b>Att skicka hem sjuka människor är inte en systemkollaps, utan en avsiktlig och fullt medveten förändring av vården. Sedan kan hemskickandet mycket väl ha gått för långt, men det kan inte avgöras av rubriker om tragiska anekdoter i kvällspressen.</b></div><div><br /></div><div><i>Världsbankens siffror sträcker sig till 2012 och säger inget om utvecklingen sedan dess. Då data fram till 90-talet inte förekommer med varje år - även sporadiskt för Island hela tiden - så har senaste statistiken upprepats fram till nästa datapunkt - ingen extrapolering har skett. Det gör t ex att Islands bäddar ser ut att krascha 2002, men det handlar antagligen snarare om en linjär nedgång. Den svenska utvecklingen har dock data år för år sedan 90-talet. Extrapolerade grafer lämnas som en övning åt läsaren.</i></div>http://cornucopia.cornubot.se/2017/02/antalet-sjukhusbaddar-ner-78-sedan-1990.htmlnoreply@blogger.com (Cornucopia?)38tag:blogger.com,1999:blog-8354057230547055221.post-4926042377853741565Tue, 28 Feb 2017 09:44:00 +00002017-02-28T11:00:37.382+01:00försvarÖB: Försvarsmakten saknar 6.5 miljarder kronor - anskaffning luftvärn skjuts upp<blockquote class="tr_bq"><i>"Marginalerna är borta. Ekonomi som inte finns på 6.5 miljarder kronor." - </i>Överbefälhavare Micael Bydén</blockquote>Försvarsmakten saknar enligt ÖB Micael Bydén 6.5 miljarder kronor och måste dra ner på och försena ett antal projekt och förmågor. Ett antal viktiga investeringar måste skjutas på framtiden och aktuellt försvarsbeslut kan alltså inte genomföras i tid. Därtill viker oavsett förmågan efter 2020. Bland annat kommer inget medelräckviddigt luftvärn anskaffas om inte pengar skjuts till.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-F0aE1Vfv6mE/WLVGWhsEvkI/AAAAAAAAqYQ/u9pf2OgiERgCQUsPyXMicjqz8N6rUYT8ACLcB/s1600/svfm_micael_byden_fofrk_4.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="424" src="https://2.bp.blogspot.com/-F0aE1Vfv6mE/WLVGWhsEvkI/AAAAAAAAqYQ/u9pf2OgiERgCQUsPyXMicjqz8N6rUYT8ACLcB/s640/svfm_micael_byden_fofrk_4.JPG" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">ÖB Micael Bydén.</td></tr></tbody></table><a name='more'></a>Främst får man skjuta upp investeringar till efter 2020, vilket innebär att ett antal system måste skjutas upp. Bland annat skjuter man rent konkret upp ledningssystem för brigad.<br /><div style="text-align: justify;"></div><div><br /></div><div>Regeringen har fått ett dokument på vad för brister och neddragningar man behöver göra, men handlingarna är av förklarliga skäl hemligstämplade då det avslöjar det svenska försvarets brister.<br /><br /><a href="http://www.forsvarsmakten.se/sv/aktuellt/2017/02/hart-arbete-kravs-for-starkt-formaga/">Försvarsmakten skriver på sin hemsida</a>:<br /><blockquote class="tr_bq"><i>"Urholkningseffekt och kostnadsökningar för underhåll och vidmakthållande av materielsystem medför att Försvarsmakten behöver <b>ta bort, reducera eller skjuta fram tidigare planerade åtgärder för drygt 6,5 miljarder</b>."</i></blockquote><b>I budgetunderlaget (<a href="http://www.forsvarsmakten.se/siteassets/4-om-myndigheten/dokumentfiler/budgetunderlag/budgetunderlag-2018/fm2016-10870-28-huvuddokument-bu-18.pdf">PDF</a>) nämns uttryckligen att <i>medelräckviddigt luftvärn inte kan anskaffas om inte man får mer pengar.&nbsp;</i></b><br /><blockquote class="tr_bq"><i>"Den hittills genomförda beredningen indikerar dock att anskaffningen av [medelräckviddigt luftvärn] är så omfattande att ekonomiska tillskott under perioden 2018 - 2020 erfordras."</i></blockquote>Kort sagt skjuter man upp anskaffningen av modernt luftvärn, istället för våra nuvarande HAWK-system från initialt 1960.</div>http://cornucopia.cornubot.se/2017/02/ob-forsvarsmakten-saknar-65-miljarder.htmlnoreply@blogger.com (Cornucopia?)31tag:blogger.com,1999:blog-8354057230547055221.post-2487564271668296642Tue, 28 Feb 2017 08:12:00 +00002017-02-28T10:11:04.607+01:00AftonbladetförsvarMiljöpartietpolitikRysslandRysk infiltration av Miljöpartiets riksdagskansli - diskutera i små grupperEnligt Aftonbladet får nu SD sällskap av Miljöpartiet, som också utsatts för infiltration av ryska intressen i riksdagskansliet. En hög politisk tjänsteman hos Miljöpartiet påstås ha fått sparken på grund av att vederbörande agerat inflytelseagent åt ryska ambassaden. Tjänstemannen förnekar allt och ingen vill offentligt säga något i ärendet.<br /><div style="text-align: justify;"></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-RIXmqMXpTVc/WLUuYR0oKfI/AAAAAAAAqXg/Vq_RWiIlx-ssdNqaQkxM4azEEYVJJQOdgCLcB/s1600/valurna.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="332" src="https://2.bp.blogspot.com/-RIXmqMXpTVc/WLUuYR0oKfI/AAAAAAAAqXg/Vq_RWiIlx-ssdNqaQkxM4azEEYVJJQOdgCLcB/s640/valurna.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Genomskinlig rysk valurna på ryska ambassaden med fönster för möjlighet att titta på vad individer röstar på. <a href="http://cornucopia.cornubot.se/2016/09/skenvalet-pa-ryska-ambassaden-i.html">Från Dumaskenvalet i höstas</a>.</td></tr></tbody></table><div><a name='more'></a>En hög fd politisk tjänsteman hos Miljöpartiets riksdagskansli har alltså fått sparken sedan vederbörande enligt uppgifter till Aftonbladet har gått ryska ambassadens ärenden i försök att få Miljöpartiet att acceptera diktaturen i Kremls linjer i internationell politik. Detta rimligtvis inklusive stöd för invasionen av Krim och Sydöstra Ukraina, samt hävande av sanktioner mot diktaturen och dess kreatur.</div><div><br /></div><div>Den fd höge (och då menas i organisationen och inte, ja, ni vet ... svamp och diverse örter) politiske tjänstemannen <a href="http://www.aftonbladet.se/nyheter/samhalle/a/PQdBJ/mp-mannen-om-anklagelserna-det-kan-jag-inte-tro">förnekar allt</a> och det påstås istället handla om en sprucken kärleksrelation mellan personer i organisationen. Alla inblandade förnekar allt och <a href="http://www.aftonbladet.se/nyheter/samhalle/a/epGjy/miljopartiet-vagrar-kommentera-uppgifterna">vägrar kommentera officiellt</a>, men anonymt är man <a href="http://www.aftonbladet.se/nyheter/samhalle/a/1aM2e/hog-mp-tjansteman-fick-sparken--efter-misstankta-rysskopplingar">väldigt tydliga till Aftonbladet</a>.</div><div><blockquote class="tr_bq"><i>"Men flera källor - både riksdagsledamöter och högt uppsatta MP-politiker - bekräftar för Aftonbladet att det i själva verket handlade om att mannens chef ansåg att han utgjorde en säkerhetsrisk. [...] Syftet med de ryska kontakterna var enligt Aftonbladets uppgiftslämnare att få partiet att ändra inställning till Ryssland och anamma en mer vänlig Rysslandspolitik. Men det fanns också farhågor att han försökt lämna uppgifter till Ryssland"</i></blockquote></div><div>Med tanke på de Kreml- och diktaturvänliga åsikterna hos vissa riksdagsledamöter hos Miljöpartiet är det förstås föga överraskande, men får ändå sägas vara positivt att man alltså gav mannen sparken. Han ska också sedan försökt få jobb på UD, men nekats på grund av att <i>"det finns en mapp på honom"</i>.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-w7GGEEFwXZc/WLUyyyc68eI/AAAAAAAAqXs/YhIWe1A2HEc-EbKKUlCtyV3wPnhrKRoHACLcB/s1600/IMG_0744.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="350" src="https://4.bp.blogspot.com/-w7GGEEFwXZc/WLUyyyc68eI/AAAAAAAAqXs/YhIWe1A2HEc-EbKKUlCtyV3wPnhrKRoHACLcB/s640/IMG_0744.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Ryska ambassaden på Gjörwellsgatan på Kungsholmen i Stockholm.</td></tr></tbody></table>Expressen har mer information. Bland annat ska tjänstemannen fått ersättning från ambassaden i form av presentkort (=transaktionerna kan inte spåras). Får man betalt av främmande makt kallas man för <i>agent</i>&nbsp;eller om man får betalt för att lämna uppgifter för <i>spion</i>. <a href="http://www.expressen.se/nyheter/mp-tjansteman-fick-sluta--var-sakerhetsrisk/">Expressen</a>:<br /><blockquote class="tr_bq"><i>"Tjänstemannen har haft kontakter med den ryska ambassaden och även fått gåvor därifrån i form av presentkort, säger en uppgiftslämnare.</i><i><br /></i><i>Syftet bakom de täta kontakterna med Rysslands ambassad ska ha varit att få MP att ändra riktning till en mer ryssvänlig inställning. Tjänstemannen har tidigare uttalat sig för sitt partis räkning i frågor som rör Nato och synen på Ryssland, och bland annat hävdat att närområdet är stabilt och att Sverige inte skulle ha något mer mervärde av ett medlemskap utan konstaterat att Ryssland skulle ha känt sig trängt av en sådan Natoexpansion."</i></blockquote>Samtidigt väcker förstås detta funderingar kring vilka inflyteleoperationer som går oupptäckta. Det är även intressant att Kreml och Ryssland alltså genomför dessa inflytelseoperationer rakt in i svenska &nbsp;riksdagen och mot ett regeringsparti. Genom sin fientlighet mot samarbete med västerländska demokratier inom NATO och EU har Miljöpartiet förstås öppnat upp för att på detta vis utsättas för yttre påverkan från diktaturen i Kreml.<br /><br />Sedan blir det otroligt roande när Aftonbladet först skriver och rubriksätter Ryssland för att i intervju sedan låta <a href="http://www.aftonbladet.se/nyheter/kolumnister/a/moKbl">Lena Mellin prata om <i>främmande makt</i></a>. Rent löjeväckande, men det är förstås positivt att Aftonbladet för en gångs skull faktiskt granskar ett av de två socialistiska regeringspartierna.<br /><br />Diskutera i små grupper.</div>http://cornucopia.cornubot.se/2017/02/rysk-infiltration-av-miljopartiets.htmlnoreply@blogger.com (Cornucopia?)39tag:blogger.com,1999:blog-8354057230547055221.post-2244965555964456356Tue, 28 Feb 2017 06:52:00 +00002017-02-28T07:54:17.500+01:00bilarkollektivtrafikskattStockholmTrängselskatten höjs i Stockholm - igenDagens Industri glädjer oss alla med att trängselskatterna ska höjas igen i Stockholm. Trafikverket vänder på varje sten för att få ut mer pengar ur de som fortfarande envisas med att köa på Essingeleden eller andra trevliga platser runt Stockholm.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-gR8_YVhd7mc/WLUc6kooDyI/AAAAAAAAqXI/1BxsYddznzI8Gv3JOlok18745QG3CFXEACLcB/s1600/IMG_4986.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://4.bp.blogspot.com/-gR8_YVhd7mc/WLUc6kooDyI/AAAAAAAAqXI/1BxsYddznzI8Gv3JOlok18745QG3CFXEACLcB/s640/IMG_4986.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Skattebetalare.</td></tr></tbody></table><a name='more'></a><div><a href="http://di.se/nyheter/trangselskatten-hojs-igen">Dagens Industri skriver följande</a>:</div><div><blockquote class="tr_bq"><i>"Skatten på Essingeleden höjs från 30 till 35 kronor under rusningstid.</i><i><br /></i><i>Skatt införs även på vissa dagar före helgdagar, som i dag är skattebefriade.</i><i><br /></i><i>Skatten tas ut redan från klockan 6 på morgonen, i stället som i dag från 6.30."</i></blockquote></div><div>Pengarna ska användas till att bygga en ny spårvagnslinje och att bygga ut tunnelbanan. DI skriver också vad argumentet var för införande av trängselskatt ursprungligen var:<br /><blockquote class="tr_bq"><i>"Även om trängselskatten är en viktig finansieringskälla är det ursprungliga syftet med skatten att minska utsläppen och öka framkomligheten på vägarna."</i></blockquote>Som bekant har det inte blivit så - vare sig i Göteborg eller Stockholm, utan effekterna varade högst tillfälligt tills bekvämlighet och tillvänjning infann sig.<br /><br /><b>Trängselskatt är numera endast ett sätt att få in mer pengar till statskassan och har inget med <i>trängsel</i>&nbsp;att göra. Korrekt benämning är <i>vägtullar</i>&nbsp;och inte något med trängsel. Höjningarna för att finansiera andra projekt visar tydligt att det handlar om <i>beskattning</i>&nbsp;och inget annat.</b><br /><b><br /></b>Något slut på intäktskällans existens finns inte heller. I Norge har man haft vägtullar specifikt för att uttryckligen finansiera specifika projekt. När tullarna har dragit in önskat belopp har de sedan avskaffats, men i Sverige är detta nu en permanent försörjningsväg för staten. Vilket är synd, då det gör att man inte vill bli av med biltrafiken på riktigt, för då blir man av med inkomsterna.</div>http://cornucopia.cornubot.se/2017/02/trangselskatten-hojs-i-stockholm-igen.htmlnoreply@blogger.com (Cornucopia?)57tag:blogger.com,1999:blog-8354057230547055221.post-4647589022017093930Mon, 27 Feb 2017 15:26:00 +00002017-02-27T16:28:29.928+01:00försvarkonsumismtramsMÖP-måndag: Casio G-Shock - när operatören själv får väljaSå var det dags för MÖP-måndag igen, och idag konstaterar vi att Casio G-Shock är det som gäller när Försvarsmaktens specialoperatörer själva får välja. Om ni funderat på vad det är för klocka som syns på Försvarsmaktens senaste SOG-film, så behöver ni inte fundera på vilken längre. Modellnummer följer i artikeln nedan, och priset är endast cirka 1000:- SEK.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-4-FtacihO9E/WLRBV1w3x6I/AAAAAAAAqWs/N3wKUPCOwxsxJl-L-fumsVYH8swW-KV5wCLcB/s1600/IMG_2467.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://2.bp.blogspot.com/-4-FtacihO9E/WLRBV1w3x6I/AAAAAAAAqWs/N3wKUPCOwxsxJl-L-fumsVYH8swW-KV5wCLcB/s640/IMG_2467.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Casio G-Shock Mudman på ärmen hos en civilklädd men beväpnad operatör i tjänst hos Försvarsmakten.</td></tr></tbody></table><a name='more'></a><div>Ända sedan det enligt reportaget och boken Black Hawk Down visade sig att amerikanska <i>Delta Force:s</i>&nbsp;operatörer använde prisvärda Casio G-Shock, har klockan fått en allt större spridning hos militärer och även svansen av MÖP:ar. Men också hos t ex blåljusmyndigheterna.</div><div><br /></div><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-VFP4heAAWYI/WLRC-_hv1NI/AAAAAAAAqW4/Pg-oxuI1hl8hAS01YeH3iNbmwAcQ9qLpACLcB/s1600/ber.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="116" src="https://3.bp.blogspot.com/-VFP4heAAWYI/WLRC-_hv1NI/AAAAAAAAqW4/Pg-oxuI1hl8hAS01YeH3iNbmwAcQ9qLpACLcB/s200/ber.png" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">G-Shock GD-100-1BER.<br /><a href="https://www.youtube.com/watch?v=xsZUcShUzRQ">Från 5:25 in i SOG-filmen</a>. Syns även<br />vid fler tillfällen.</td></tr></tbody></table>Senast syntes klockvarumärket i SOG-filmen, <a href="http://cornucopia.cornubot.se/2016/12/film-pa-sog-bekraftar-lwrci-ic-som-ny.html">där man visade upp Särskilda Operationsgruppens nya automatkarbiner</a>, som ni tidigare <a href="http://cornucopia.cornubot.se/2016/11/mop-nytt-ny-m4-baserad-automatkarbin.html">kunde läsa om här på bloggen</a>. Nu kan man förvisso välja vad man vill betala för sin G-Shock, men i SOG-filmen lägger MÖP:en mäkre till den enklare <a href="http://www.casio-europe.com/se/produkter/armbandsur/g-shock/gd-100-1ber/">G-Shock GD-100-1BER</a>, som kostar runt 1000:- SEK att köpa.<br /><br />Dyrare utgåvor inom G-Shockserien är t ex Rangeman för ca 3000 - 5000:- SEK, Mudmaster för 3000 - 8000:- SEK, Frogman för 11000 - 12000:-, Gravitymaster för 3000 - 12000:-, Gulfmaster för 5000 - 12000:- SEK och Waveman för upp till 22 000:-. Mudmanmodellen ovan är alltså lite dyrare än en tusenlapp.<br /><br />Men för fältbruk (eller åtminstone bordning av en passagerarfärja) går det uppenbarligen lika bra med en G-Shock för runt tusenlappen, om man ska lita på kofösarna i Särskilda operationsgruppen. Antagligen får man mycket hållbarhet för pengarna i det nedre prisintervallet.<br /><br /><i>Ingen form av ersättning har utgått för detta blogginlägg, som alltså bara är MÖP:erier och inte reklam.</i></div>http://cornucopia.cornubot.se/2017/02/mop-mandag-casio-g-shick-nar-operatoren.htmlnoreply@blogger.com (Cornucopia?)52tag:blogger.com,1999:blog-8354057230547055221.post-7572191339310713232Mon, 27 Feb 2017 11:04:00 +00002017-02-27T13:32:17.282+01:00bredbandförsvarinfrastrukturIT-branschenmobiltelefonitelefoniPatrik Fältström: Bygg inte ett eget statligt mobilt bredband<div>Svenska staten har stoppat utbyggnaden av nästa generations mobilnät, 5G, eftersom staten vill ha 700 Mhz-bandet för sig själva för en ersättare till Rakel. Det blir en dyrare, sämre och mindre redundant lösning än att låta staten vara en <i>virtuell operatör</i>&nbsp;som använder alla kommersiella aktörers nät samtidigt. Den svenske Internetpionjären Patrik Fältström är mycket kritisk.<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-rHpzaYv1jDw/WLQHrQEMFeI/AAAAAAAAqWc/YGs1tK4qhfcIub1KIcC03fgKYr-LO22OQCLcB/s1600/infrastruktur_teracom_mast_satila.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://2.bp.blogspot.com/-rHpzaYv1jDw/WLQHrQEMFeI/AAAAAAAAqWc/YGs1tK4qhfcIub1KIcC03fgKYr-LO22OQCLcB/s640/infrastruktur_teracom_mast_satila.JPG" width="640" /></a></div><br /></div><div><a name='more'></a>Kriskommunikationsradiosystemet Rakel kostar enbart i drift cirka 600 MSEK om året för staten. Till detta kommer abonnemangskostnader för de olika kundernas 60 000 användare.</div><div><br /></div><div>Rakel har dock inte tillräckliga funktioner för moderna datatjänster och staten vill därför bygga ett nytt kriskommunikationssystem, som ska ta upp 700 Mhz-bandet som i övriga världen ska användas för 5G - nästa generation mobilt bredband.</div><div><br /></div><div>Den legendariske svenska Internetpionjären <a href="http://sverigesradio.se/sida/artikel.aspx?programid=83&amp;artikel=6639973">Patrik Fältström är mycket kritisk och menar att det vore bättre om staten skapar en virtuell operatör</a> som fungerar i samtliga kommersiella nät.</div><div><blockquote class="tr_bq"><i>"Den bästa lösningen är att man skapar en virtuell operatör som ledar ut sim-kort och så köper den virtuella operatören plats i alla nätägarens nät. Precis på samma sätt som Telia hyrde in sig Tele2:s 3G-nät, så skulle den här speciella virtuella operatören kunna finnas i alla nät i Sverige"</i></blockquote></div><div>Därmed får man inte bara tillgång till ett eget nät som kommer vara en prioriterad måltavla för en angripare - både frekvenserna och infrastrukturen - utan man får tillgång till fyra kommersiella nät med massivt bättre redundans. Behovet av kryptering sköts via en APN+VPN-lösning och man kan också ha system för trafikprioritering där den statliga virtuella operatören prioriteras i ett krisläge, så trängseln är inte ett problem.<br /><br />Därtill vill inte en angripare i hybridkriget slå ut befolkningens mobilkommunikation, eftersom informationsoperationer och desinformation via sociala medier inte fungerar då. Det minskar angreppsviljan mot de kommersiella näten, i ett försök att slå ut kriskommunikationen för blåljusmyndigheterna.<br /><br /><b>Det ter sig självklart att det är billigare att hyra in sig i fyra nät byggda för att hantera åtta miljoner kunder än att bygga ett eget nät för 60 000 användare. Med tanke på svensk upphandlingskompetens blir det ännu värre att bygga själv. Därtill kommer det statliga virtuella nätet fungera med vanliga kommersiella standardutrustning direkt från hyllan, istället för att likt med Rakel ta fram speciella terminaler i för branschen mycket små (och dyra) serier.</b><br /><b><br /></b>Naturligtvis får man välja 5G-terminaler som uppfyller säkerhetskraven, men likt inom 3G och 4G kommer det existera en uppsjö av sådana. Framför allt handlar det om mjukvara för kommunikationen. Man kommer oavsett vara beroende av externa leverantörer för utrustning, routrar, fiberanslutningar etc om man bygger ett eget nät. Man kommer oavsett behöva kryptering etc.</div><div><br />Istället hamnar nu Sverige rejält på efterkälken vad gäller 5G och den allmänna teknik- och samhällsutvecklingen.<br /><br /><b>En lösning med virtuell operatör i samtliga kommersiella nät kommer vara billigare, gå snabbare och ha högre redundans och bättre täckning än att bara ha tillgång till ett eget nät. Gör inte om de dyrbara misstagen med Rakel.</b></div>http://cornucopia.cornubot.se/2017/02/patrik-falstrom-bygg-inte-ett-eget.htmlnoreply@blogger.com (Cornucopia?)59tag:blogger.com,1999:blog-8354057230547055221.post-3545665673284073678Mon, 27 Feb 2017 08:39:00 +00002017-02-27T11:34:13.198+01:00filmintervjulitteraturTVvinEmmaFörfattar- och vinintervju med migEmma Kreü på <a href="http://bykw.se/2017/02/27/bykw-intervjuar-lars-wilderang/">podden <i>Because You Know Wines</i>, inriktad på litteratur och vin</a>, har gjort en författarintervju med mig nu när jag var i Stockholm förra veckan. Ni hittar den nedan. Pratar bland annat om Höstsol och TV-serien av Stjärnklart. Tipsar också om vin.<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-BGqJPet6Ac0/WLQAbuwDaiI/AAAAAAAAqWM/w8Tf1K5rxhYMLrFht8s9nV7a3Kx5YVcvACLcB/s1600/17016349_10154886956080569_912489904_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="480" src="https://3.bp.blogspot.com/-BGqJPet6Ac0/WLQAbuwDaiI/AAAAAAAAqWM/w8Tf1K5rxhYMLrFht8s9nV7a3Kx5YVcvACLcB/s640/17016349_10154886956080569_912489904_o.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Selfie med Emma Kreü och Lars Wilderäng. Foto: Emma Kreü</td></tr></tbody></table><div class="separator" style="clear: both; text-align: center;"></div><div><div style="text-align: justify;"></div><div><a name='more'></a></div><div>Ljudet lämnar väl en del att önska, men dra upp volymen maximalt så bör ni höra vad jag säger utom när jag sluddrar.</div><div><iframe allowfullscreen="" frameborder="0" height="360" src="https://www.youtube.com/embed/JrPmuN8d_6A" width="640"></iframe></div></div>http://cornucopia.cornubot.se/2017/02/forfattar-och-vinintervju-med-mig.htmlnoreply@blogger.com (Cornucopia?)25 \ No newline at end of file diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_cowboy.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_cowboy.xml new file mode 100644 index 0000000..f230753 --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_cowboy.xml @@ -0,0 +1,1875 @@ + + + + Cowboy Programmer + https://cowboyprogrammer.org/index.xml + Recent content on Cowboy Programmer + Hugo -- gohugo.io + en-us + Powered by [Hugo](//gohugo.io) and [Icarus Theme](http://themes.gohugo.io/theme/hugo-icarus/). + Wed, 28 Sep 2016 22:57:21 +0200 + + + + https://cowboyprogrammer.org/css/images/logo.png + + Rebooting on wrong password + https://cowboyprogrammer.org/2016/09/reboot_machine_on_wrong_password/ + Wed, 28 Sep 2016 22:57:21 +0200 + + https://cowboyprogrammer.org/2016/09/reboot_machine_on_wrong_password/ + + + + <p>Having an encrypted hard drive is all well and good, but chances are + that if someone is gonna steal your laptop, it&rsquo;s probably not going to + be turned off. Most likely, it will be stolen in a powered-on + state. And so your encrypted hard drive doesn&rsquo;t increase your security + at all since it&rsquo;s currently unlocked.</p> + + <p>In my mind, it&rsquo;s a slight improvement if the computer somehow can + shutdown if someone is trying to gain access to it. That way, the hard + drive is no longer accessible and the number of possible attack + vectors go down drastically. And so, if you type the wrong password 3 + times on my laptop, it shuts down.</p> + + <p>This is accomplished by using <code>PAM</code>, and its ability to invoke an + arbitrary script as part of the login flow via <code>pam_exec.so</code>. The + script itself looks like this:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span><span style="color: #60a0b0; font-style: italic">#!/bin/bash</span> + <span style="color: #60a0b0; font-style: italic"># Do not add -eu, you need to allow empty variables here!</span> + + <span style="color: #60a0b0; font-style: italic"># To be used with PAM. Look in /etc/pam.d for the script that your</span> + <span style="color: #60a0b0; font-style: italic"># screensaver etc uses. Typically it references common-account and common-auth.</span> + <span style="color: #60a0b0; font-style: italic">#</span> + <span style="color: #60a0b0; font-style: italic"># In common-auth, add this as the first line</span> + <span style="color: #60a0b0; font-style: italic">#auth optional pam_exec.so debug /path/to/wrongpassword.sh</span> + <span style="color: #60a0b0; font-style: italic">#</span> + <span style="color: #60a0b0; font-style: italic"># In common-account, add this as the first line</span> + <span style="color: #60a0b0; font-style: italic">#account required pam_exec.so debug /path/to/wrongpassword.sh</span> + <span style="color: #60a0b0; font-style: italic">#</span> + + <span style="color: #bb60d5">COUNTFILE</span><span style="color: #666666">=</span><span style="color: #4070a0">&quot;/var/log/failed_login_count&quot;</span> + + <span style="color: #60a0b0; font-style: italic"># Make sure file exists</span> + <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">[</span> ! -f <span style="color: #4070a0">&quot;</span><span style="color: #70a0d0; font-style: italic">${</span><span style="color: #bb60d5">COUNFILE</span><span style="color: #70a0d0; font-style: italic">}</span><span style="color: #4070a0">&quot;</span> <span style="color: #666666">]</span>;<span style="color: #007020; font-weight: bold">then</span> + touch <span style="color: #4070a0">&quot;</span><span style="color: #70a0d0; font-style: italic">${</span><span style="color: #bb60d5">COUNTFILE</span><span style="color: #70a0d0; font-style: italic">}</span><span style="color: #4070a0">&quot;</span> + chmod <span style="color: #40a070">777</span> <span style="color: #4070a0">&quot;</span><span style="color: #70a0d0; font-style: italic">${</span><span style="color: #bb60d5">COUNTFILE</span><span style="color: #70a0d0; font-style: italic">}</span><span style="color: #4070a0">&quot;</span> + <span style="color: #007020; font-weight: bold">fi</span> + + <span style="color: #60a0b0; font-style: italic"># Read value in it</span> + <span style="color: #bb60d5">COUNT</span><span style="color: #666666">=</span><span style="color: #007020; font-weight: bold">$(</span>cat <span style="color: #4070a0">&quot;</span><span style="color: #70a0d0; font-style: italic">${</span><span style="color: #bb60d5">COUNTFILE</span><span style="color: #70a0d0; font-style: italic">}</span><span style="color: #4070a0">&quot;</span><span style="color: #007020; font-weight: bold">)</span> + <span style="color: #60a0b0; font-style: italic"># Increment it</span> + <span style="color: #bb60d5">COUNT</span><span style="color: #666666">=</span><span style="color: #007020; font-weight: bold">$((</span>COUNT+1<span style="color: #007020; font-weight: bold">))</span> + <span style="color: #007020">echo</span> <span style="color: #4070a0">&quot;</span><span style="color: #70a0d0; font-style: italic">${</span><span style="color: #bb60d5">COUNT</span><span style="color: #70a0d0; font-style: italic">}</span><span style="color: #4070a0">&quot;</span> &gt; <span style="color: #4070a0">&quot;</span><span style="color: #70a0d0; font-style: italic">${</span><span style="color: #bb60d5">COUNTFILE</span><span style="color: #70a0d0; font-style: italic">}</span><span style="color: #4070a0">&quot;</span> + + <span style="color: #60a0b0; font-style: italic"># if authentication</span> + <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">[</span> <span style="color: #4070a0">&quot;</span><span style="color: #70a0d0; font-style: italic">${</span><span style="color: #bb60d5">PAM_TYPE</span><span style="color: #70a0d0; font-style: italic">}</span><span style="color: #4070a0">&quot;</span> <span style="color: #666666">==</span> <span style="color: #4070a0">&quot;auth&quot;</span> <span style="color: #666666">]</span>; <span style="color: #007020; font-weight: bold">then</span> + <span style="color: #60a0b0; font-style: italic"># The count will be at 4 after 3 wrong tries</span> + <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">[</span> <span style="color: #4070a0">&quot;</span><span style="color: #70a0d0; font-style: italic">${</span><span style="color: #bb60d5">COUNT</span><span style="color: #70a0d0; font-style: italic">}</span><span style="color: #4070a0">&quot;</span> -ge <span style="color: #40a070">4</span> <span style="color: #666666">]</span>; <span style="color: #007020; font-weight: bold">then</span> + <span style="color: #60a0b0; font-style: italic"># Shutdown in 1 min</span> + <span style="color: #60a0b0; font-style: italic">#/usr/bin/shutdown --no-wall -h +1</span> + <span style="color: #60a0b0; font-style: italic"># This is a hack because the line above gives a segfault in logind</span> + <span style="color: #007020">echo</span> <span style="color: #4070a0">&quot;0&quot;</span> &gt; <span style="color: #4070a0">&quot;</span><span style="color: #70a0d0; font-style: italic">${</span><span style="color: #bb60d5">COUNTFILE</span><span style="color: #70a0d0; font-style: italic">}</span><span style="color: #4070a0">&quot;</span> + systemctl poweroff + <span style="color: #007020; font-weight: bold">fi</span> + <span style="color: #60a0b0; font-style: italic"># If authentication succeeded, and we are now in account phase</span> + <span style="color: #007020; font-weight: bold">elif</span> <span style="color: #666666">[</span> <span style="color: #4070a0">&quot;</span><span style="color: #70a0d0; font-style: italic">${</span><span style="color: #bb60d5">PAM_TYPE</span><span style="color: #70a0d0; font-style: italic">}</span><span style="color: #4070a0">&quot;</span> <span style="color: #666666">==</span> <span style="color: #4070a0">&quot;account&quot;</span> <span style="color: #666666">]</span>; <span style="color: #007020; font-weight: bold">then</span> + <span style="color: #007020">echo</span> <span style="color: #4070a0">&quot;0&quot;</span> &gt; <span style="color: #4070a0">&quot;</span><span style="color: #70a0d0; font-style: italic">${</span><span style="color: #bb60d5">COUNTFILE</span><span style="color: #70a0d0; font-style: italic">}</span><span style="color: #4070a0">&quot;</span> + <span style="color: #60a0b0; font-style: italic"># Cancel shutdown which was just issued</span> + shutdown -c + <span style="color: #007020; font-weight: bold">fi</span> + + <span style="color: #007020">exit</span> <span style="color: #40a070">0</span> + </code></pre></div> + + <p>On my Debian system, PAM ends up looking at <code>/etc/pam.d/common-auth</code> + and <code>/etc/pam.d/common-account</code>. These are invoked in different parts + of the authentication flow. In <code>common-auth</code>, add this as the first + line:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span>auth optional pam_exec.so debug /path/to/wrongpassword.sh + </code></pre></div> + + <p>And then in <code>common-account</code>, add this as the first line:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span>account required pam_exec.so debug /path/to/wrongpassword.sh + </code></pre></div> + + <p>You can try it immediately if it works. Lock your screen, and type the + wrong password 4 times. If it works, your computer should shut down.</p> + + <h2 id="warning-do-not-enable-on-servers">WARNING: DO NOT ENABLE ON SERVERS</h2> + + <p>This is <strong>NOT</strong> something you want to do on any machine. Most notably, + it&rsquo;s probably a huge mistake to copy this verbatim on a machine which + accepts remote connections. In that case, you essentially enable + anyone to DOS you by entering the wrong password via SSH or + similarly. So don&rsquo;t do this if you allow remote connections to your + machine (which shouldn&rsquo;t be a thing on a laptop).</p> + + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Compress all the images! + https://cowboyprogrammer.org/2016/08/zopfli_all_the_things/ + Fri, 26 Aug 2016 13:17:40 +0200 + + https://cowboyprogrammer.org/2016/08/zopfli_all_the_things/ + + + + <p><em>Update 2016-11-22: Made the Makefile compatible with BSD sed (MacOS)</em></p> + + <p>One advantage that static sites, such as those built by <a href="https://gohugo.io">Hugo</a>, + provide is fast loading times. Because there is no processing to be + done, no server side rendering, no database lookups, loading times are + just as fast as you can serve the files that make up the page. This + means that bandwidth becomes the primary bottleneck, which + incidentally is + <a href="https://webmasters.googleblog.com/2010/04/using-site-speed-in-web-search-ranking.html">one of the factors used by Google to calculate your search ranking</a>. See + also + <a href="https://developers.google.com/speed/pagespeed/insights">Pagespeed Insights</a>.</p> + + <h2 id="compressing-images">Compressing images</h2> + + <p>Because the largest pieces of a page typically consist of images, it + stands to reason that if we can make the images smaller, we can make + the page load faster. Luckily there exists methods that can compress + images <em>losslessly</em>. That means that the quality stays exactly the + same, the page only loads faster. That seemed like a no-brainer to me + so I compressed all the images on the site using <a href="http://advsys.net/ken/utils.htm">PNGout</a> as + <a href="https://blog.codinghorror.com/getting-the-most-out-of-png/">advised by Jeff Atwood</a>. I mean, who doesn&rsquo;t + like free bandwidth?</p> + + <p>A new algorithm called <a href="https://github.com/google/zopfli">Zopfli</a> (open sourced by Google, + <a href="https://blog.codinghorror.com/zopfli-optimization-literally-free-bandwidth/">also mentioned by Jeff</a>) claims even better + results than PNGout though. Results on this site&rsquo;s images confirm + those claims. Running the tool on images <em>already compressed by + PNGout</em> gives output such as this:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span>./zopflipng --prefix=&quot;zopfli_&quot; static/images/2014/Dec/Screenshot-from-2014-12-29-13-28-29.png + Optimizing static/images/2014/Dec/Screenshot-from-2014-12-29-13-28-29.png + Input size: 89420 (87K) + Result size: 90361 (88K). Percentage of original: 101.052% + Preserving original PNG since it was smaller + + ./zopflipng --prefix=&quot;zopfli_&quot; static/images/2014/Jun/Jenkins_install_git.png + Optimizing static/images/2014/Jun/Jenkins_install_git.png + Input size: 189406 (184K) + Result size: 166362 (162K). Percentage of original: 87.834% + Result is smaller + + ./zopflipng --prefix=&quot;zopfli_&quot; static/images/2014/Jun/jenkins_batch.png + Optimizing static/images/2014/Jun/jenkins_batch.png + Input size: 21933 (21K) + Result size: 16255 (15K). Percentage of original: 74.112% + Result is smaller + + ./zopflipng --prefix=&quot;zopfli_&quot; static/images/2014/Jun/jenkins_build_step.png + Optimizing static/images/2014/Jun/jenkins_build_step.png + Input size: 8184 (7K) + Result size: 6809 (6K). Percentage of original: 83.199% + Result is smaller + + ./zopflipng --prefix=&quot;zopfli_&quot; static/images/2014/Jun/jenkins_config_git.png + Optimizing static/images/2014/Jun/jenkins_config_git.png + Input size: 57897 (56K) + Result size: 47164 (46K). Percentage of original: 81.462% + Result is smaller + </code></pre></div> + + <p>The first result in the example output shows a case where Zopfli would + actually have made the file bigger (because it was already compressed + by PNGout, remember). This is nothing you have to worry about because + it&rsquo;s actually smart enough that it simply copies the original file in + that case.</p> + + <p>Comparing to both before any compression, and PNGout, yielded the + following results:</p> + + <table> + <thead> + <tr> + <th></th> + <th>Mean relative size</th> + </tr> + </thead> + <tbody> + + <tr> + <td>Before</td> + <td>1.00</td> + </tr> + + <tr> + <td>PNGout</td> + <td>0.84</td> + </tr> + + <tr> + <td>ZopfliPNG</td> + <td>0.77</td> + </tr> + + </tbody> + </table> + + <p><a href="https://en.wikipedia.org/wiki/Box_plot">Box plot</a> of results on all images:</p> + + <p><img src="https://cowboyprogrammer.org/images/zopfli_boxplot.png" alt="Compression results" /></p> + + <p>Source files: <a href="https://cowboyprogrammer.org/csv/before.csv">before.csv</a>, + <a href="https://cowboyprogrammer.org/csv/pngout.csv">pngout.csv</a>, <a href="https://cowboyprogrammer.org/csv/zopfli.csv">zopfli.csv</a></p> + + <p>And this is with the default arguments. It is possible squeeze yet a + couple of more bytes out of this if you&rsquo;re willing to wait longer.</p> + + <h2 id="automate-it-with-make">Automate it with Make</h2> + + <p>Another joy of using a simple static site is that it is possible to + compose regular tools to do useful things. Tools like + <a href="https://www.gnu.org/software/make/">Make</a>. And we can use Make to build the site, as well as + compressing images which have not already been compressed. You could + do it manually for each new image that you add of course but be + honest, you <em>know</em> that you&rsquo;re gonna forget to do it at some point. So + let&rsquo;s automate it instead!</p> + + <p>This is the Makefile that I use to build this site with, note that + <code>public</code> depends on <code>$(PNG_SENTINELS)</code>, so I literally can&rsquo;t forget to + compress any new images added:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span><span style="color: #06287e">.PHONY</span><span style="color: #666666">:</span> help build server server-with-drafts clean zopfli + + <span style="color: #bb60d5">PNG_SENTINELS</span><span style="color: #666666">:=</span> <span style="color: #007020; font-weight: bold">$(</span>shell find . -path ./public -prune -o -name <span style="color: #4070a0">&#39;*.png&#39;</span> -print | sed <span style="color: #4070a0">&#39;s|\(.\+/\)\(.\+.png\)|\1.\2.zopfli|g&#39;</span><span style="color: #007020; font-weight: bold">)</span> + + <span style="color: #06287e">help</span><span style="color: #666666">:</span> <span style="color: #60a0b0; font-style: italic">## Print this help text</span> + @grep -E <span style="color: #4070a0">&#39;^[a-zA-Z_-]+:.*?## .*$$&#39;</span> <span style="color: #007020; font-weight: bold">$(</span>MAKEFILE_LIST<span style="color: #007020; font-weight: bold">)</span> | awk <span style="color: #4070a0">&#39;BEGIN {FS = &quot;:.*?## &quot;}; {printf &quot;\033[36m%-30s\033[0m %s\n&quot;, $$1, $$2}&#39;</span> + + <span style="color: #06287e">server</span><span style="color: #666666">:</span> <span style="color: #60a0b0; font-style: italic">## Run hugo server</span> + hugo server + + <span style="color: #06287e">server-with-drafts</span><span style="color: #666666">:</span> <span style="color: #60a0b0; font-style: italic">## Run hugo server and include drafts</span> + hugo server -D + + <span style="color: #06287e">build</span><span style="color: #666666">:</span> public <span style="color: #60a0b0; font-style: italic">## Build site (will also compress images using zopfli)</span> + + <span style="color: #06287e">zopfli</span><span style="color: #666666">:</span> <span style="color: #007020; font-weight: bold">$(</span><span style="color: #bb60d5">PNG_SENTINELS</span><span style="color: #007020; font-weight: bold">)</span> <span style="color: #60a0b0; font-style: italic">## Compress new images using zopfli</span> + + <span style="color: #06287e">clean</span><span style="color: #666666">:</span> <span style="color: #60a0b0; font-style: italic">## Remove the built directory</span> + @rm -rf public + + <span style="color: #06287e">public</span><span style="color: #666666">:</span> <span style="color: #007020; font-weight: bold">$(</span><span style="color: #bb60d5">PNG_SENTINELS</span><span style="color: #007020; font-weight: bold">)</span> + @rm -rf public + hugo + + <span style="color: #60a0b0; font-style: italic"># Zopfli sentinel rule, assumes zopflipng binary is in the same folder</span> + <span style="color: #06287e">.%.png.zopfli</span><span style="color: #666666">:</span> %.png + ./zopflipng --prefix<span style="color: #666666">=</span><span style="color: #4070a0">&quot;zopfli_&quot;</span> $&lt; + @mv <span style="color: #007020; font-weight: bold">$(</span>dir $&lt;<span style="color: #007020; font-weight: bold">)</span>zopfli_<span style="color: #007020; font-weight: bold">$(</span>notdir $&lt;<span style="color: #007020; font-weight: bold">)</span> $&lt; + @touch <span style="color: #bb60d5">$@</span> + </code></pre></div> + + <p>For best performance, run make with parallel jobs (change 4 to your + number CPUs): <code>make -j4 zopfli</code>.</p> + + <p>To know which files have already been compressed without actually + running Zopfli on it again (which takes a while), sentinel files are + created with this pattern: <code>.&lt;imgfilename&gt;.zopfli</code>. Thus, the next + time around, zopfli is only invoked for files which have <em>not</em> already + been compressed, making it a one-time operation. And when everything + has already been compressed, you&rsquo;ll just get this:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span>make: Nothing to be done for &#39;zopfli&#39;. + </code></pre></div> + + + + + <hr/> + <p>Other posts in the <b>Migrating from Ghost to Hugo</b> series:</p> + + + <ul class="series"> + + <li>2016-08-26 &mdash; + + Compress all the images! + + </li> + + <li>2016-07-25 &mdash; + + <a href="https://cowboyprogrammer.org/2016/07/migrating_from_ghost_to_hugo/">Migrating from Ghost to Hugo</a> + + </li> + + </ul> + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Migrating from Ghost to Hugo + https://cowboyprogrammer.org/2016/07/migrating_from_ghost_to_hugo/ + Mon, 25 Jul 2016 23:55:38 +0200 + + https://cowboyprogrammer.org/2016/07/migrating_from_ghost_to_hugo/ + + + + <p>So I recently migrated this site from <a href="https://ghost.org">Ghost</a> to <a href="https://gohugo.io">Hugo</a> + after reading a nice article about the Hugo in + <a href="https://www.linuxvoice.com/download-linux-voice-issue-20/">Linux Voice #20</a> (funnily enough, the same issue also + features an article about Ghost). I originally made the switch to + Ghost from <a href="https://jekyllrb.com/">Jekyll</a> back in 2014 or so mainly because I could + not find a good theme to use. Ghost also seemed to have a lot of cool + features and it&rsquo;s fun to try new things.</p> + + <p>I think it&rsquo;s safe to say that I am hardly a prolific blogger. I mainly + write about stuff which I personally cannot find on the web which I + think should exist, because I will likely need it myself sometime in + the future. So it&rsquo;s hardly a surprise that I am not in the target + audience for Ghost.</p> + + <h2 id="things-about-ghost-which-annoy-me">Things about Ghost which annoy me</h2> + + <ul> + <li>It&rsquo;s written in NodeJS &mdash; people who think JS is a good server + language also tend to think that it&rsquo;s a good idea to depend on just + about any package, and download it in every single build. Which + becomes really <a href="http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/">funny sometimes</a>.</li> + <li>Poor selection of <a href="http://marketplace.ghost.org/">themes</a> &mdash; this is subjective of + course, but it seems to me that the free options don&rsquo;t have much in + terms of diversity. Heck, they even call it a <em>marketplace</em> which + rubs me the wrong way.</li> + <li>Themes end up being quite reliant on JS if you want necessary + features like syntax highlighting on code snippets &mdash; I often + browse with JS disabled and should be able to view my own site.</li> + <li>Markdown parser treats newlines as significant &mdash; meaning you can&rsquo;t + have properly aligned paragraphs in your editor.</li> + </ul> + + <p>That last point irritates me deeply but it&rsquo;s not as bad as the next point.</p> + + <ul> + <li>You can effectively lock an account by entering the wrong password 3 + times.</li> + </ul> + + <p>This requires some explanation. So Ghost, targeting teams of bloggers + really, naturally have an account system much like Wordpress. Now, as + I was surveying the security status of other services I am running, I + was wondering how Ghost handled someone trying to brute force your + account and decided to simply try it out. Type the wrong password once + too many, and this happens:</p> + + <p><img src="https://cowboyprogrammer.org/images/ghost_wrong_password.png" alt="Ghost: typing the wrong password too many times locks your account" /></p> + + <p>It doesn&rsquo;t lock it for a single IP address (I tried from several), it + locks the entire account. Effectively, someone can just set up a + script to try an account indefinitely simply with the intention to + block someone from logging in.</p> + + <p>The log doesn&rsquo;t even show login attempts, so there is no way to + implement sensible blocking strategies using something like <a href="http://www.fail2ban.org">fail2ban</a>.</p> + + <p>The whole thing left a bad taste my mouth so it was a very suitable timing to read an article on <a href="https://gohugo.io">Hugo</a>.</p> + + <h2 id="things-about-hugo-which-excite-me">Things about Hugo which excite me</h2> + + <ul> + <li>Markdown parser treats newlines correctly</li> + <li>It&rsquo;s a static site generator and not a service &mdash; this meant 100MB + (10%) of RAM became available on my server and there is no account + to hack (or block).</li> + <li>Supports everything of Ghost (that I am aware of).</li> + <li>The simplicity of Hugo makes it <a href="https://npf.io/2014/08/making-it-a-series/">quite painless</a> to + do useful things compared to + <a href="https://github.com/TryGhost/Ghost/issues/4818">ignored feature requests</a> for the same in Ghost.</li> + <li>Can do server side syntax highlighting using Pygments.</li> + <li>Some really nice <a href="http://themes.gohugo.io/">themes</a> are available, and they are + all free.</li> + </ul> + + <h2 id="migrating-all-data-from-ghost">Migrating all data from Ghost</h2> + + <p>Migrating from Ghost also turned about to be really painless. There + were several scripts around for exactly this but they all turned out + to be written in <a href="https://gist.github.com/vjeantet/d1f6cf824a2344dd6b4e">odd languages</a>, and did not actually + migrate all the metadata in Ghost. So I wrote my own in Python with + these <em>killer features</em>:</p> + + <ul> + <li>Migrates tags.</li> + <li>Migrates dates.</li> + <li>Migrates drafts as drafts.</li> + <li>Creates aliases in your posts which makes sure that old permalinks + will still work!</li> + <li>Migrates cover pictures as banner images, just select a theme which + support them.</li> + <li>Rewrites all relative links so they all still work (this includes + images).</li> + <li>Code blocks with language definitions like <code>```language-java</code> + are changed to <code>```java</code>.</li> + </ul> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span><span style="color: #60a0b0; font-style: italic">#!/usr/bin/env python3</span> + <span style="color: #60a0b0; font-style: italic"># -*- coding: utf-8 -*-</span> + <span style="color: #4070a0; font-style: italic">&#39;&#39;&#39;</span> + <span style="color: #4070a0; font-style: italic">A simple program which migrates an exported Ghost blog to Hugo.</span> + <span style="color: #4070a0; font-style: italic">It assumes your blog is using the hugo-icarus theme, but should</span> + <span style="color: #4070a0; font-style: italic">work for any theme. The script will migrate your posts, including</span> + <span style="color: #4070a0; font-style: italic">tags and banner images. Furthermore, it will make sure that</span> + <span style="color: #4070a0; font-style: italic">all your old post urls will keep working by adding aliases to them.</span> + + <span style="color: #4070a0; font-style: italic">The only thing you need to do yourself is copying the `images/`</span> + <span style="color: #4070a0; font-style: italic">directory in your ghost directory to `static/images/` in your hugo</span> + <span style="color: #4070a0; font-style: italic">directory. That way, all images will work. The script will rewrite</span> + <span style="color: #4070a0; font-style: italic">all urls linking to `/content/images` to just `/images`.</span> + <span style="color: #4070a0; font-style: italic">&#39;&#39;&#39;</span> + + <span style="color: #007020; font-weight: bold">import</span> <span style="color: #0e84b5; font-weight: bold">argparse</span> + <span style="color: #007020; font-weight: bold">import</span> <span style="color: #0e84b5; font-weight: bold">json</span> + <span style="color: #007020; font-weight: bold">from</span> <span style="color: #0e84b5; font-weight: bold">datetime</span> <span style="color: #007020; font-weight: bold">import</span> date + <span style="color: #007020; font-weight: bold">from</span> <span style="color: #0e84b5; font-weight: bold">os</span> <span style="color: #007020; font-weight: bold">import</span> path + <span style="color: #007020; font-weight: bold">from</span> <span style="color: #0e84b5; font-weight: bold">collections</span> <span style="color: #007020; font-weight: bold">import</span> defaultdict + <span style="color: #007020; font-weight: bold">import</span> <span style="color: #0e84b5; font-weight: bold">re</span> + + _post <span style="color: #666666">=</span> <span style="color: #4070a0">&#39;&#39;&#39;</span> + <span style="color: #4070a0">+++</span> + <span style="color: #4070a0">date = &quot;{date}&quot;</span> + <span style="color: #4070a0">draft = {draft}</span> + <span style="color: #4070a0">title = &quot;&quot;&quot;{title}&quot;&quot;&quot;</span> + <span style="color: #4070a0">slug = &quot;{slug}&quot;</span> + <span style="color: #4070a0">tags = {tags}</span> + <span style="color: #4070a0">banner = &quot;{banner}&quot;</span> + <span style="color: #4070a0">aliases = {aliases}</span> + <span style="color: #4070a0">+++</span> + + <span style="color: #4070a0">{markdown}</span> + <span style="color: #4070a0">&#39;&#39;&#39;</span> + + + <span style="color: #007020; font-weight: bold">def</span> <span style="color: #06287e">migrate</span>(filepath, hugodir): + <span style="color: #4070a0; font-style: italic">&#39;&#39;&#39;</span> + <span style="color: #4070a0; font-style: italic"> Parse the Ghost json file and write post files</span> + <span style="color: #4070a0; font-style: italic"> &#39;&#39;&#39;</span> + <span style="color: #007020; font-weight: bold">with</span> <span style="color: #007020">open</span>(filepath, <span style="color: #4070a0">&quot;r&quot;</span>) <span style="color: #007020; font-weight: bold">as</span> fp: + ghost <span style="color: #666666">=</span> json<span style="color: #666666">.</span>load(fp) + + data <span style="color: #666666">=</span> ghost[<span style="color: #4070a0">&#39;db&#39;</span>][<span style="color: #40a070">0</span>][<span style="color: #4070a0">&#39;data&#39;</span>] + + tags <span style="color: #666666">=</span> {} + <span style="color: #007020; font-weight: bold">for</span> tag <span style="color: #007020; font-weight: bold">in</span> data[<span style="color: #4070a0">&quot;tags&quot;</span>]: + tags[tag[<span style="color: #4070a0">&quot;id&quot;</span>]] <span style="color: #666666">=</span> tag[<span style="color: #4070a0">&quot;name&quot;</span>] + + posttags <span style="color: #666666">=</span> defaultdict(<span style="color: #007020">list</span>) + + <span style="color: #007020; font-weight: bold">for</span> posttag <span style="color: #007020; font-weight: bold">in</span> data[<span style="color: #4070a0">&quot;posts_tags&quot;</span>]: + posttags[posttag[<span style="color: #4070a0">&quot;post_id&quot;</span>]]<span style="color: #666666">.</span>append(tags[posttag[<span style="color: #4070a0">&quot;tag_id&quot;</span>]]) + + <span style="color: #007020; font-weight: bold">for</span> post <span style="color: #007020; font-weight: bold">in</span> data[<span style="color: #4070a0">&#39;posts&#39;</span>]: + draft <span style="color: #666666">=</span> <span style="color: #4070a0">&quot;true&quot;</span> <span style="color: #007020; font-weight: bold">if</span> post[<span style="color: #4070a0">&quot;status&quot;</span>] <span style="color: #666666">==</span> <span style="color: #4070a0">&quot;draft&quot;</span> <span style="color: #007020; font-weight: bold">else</span> <span style="color: #4070a0">&quot;false&quot;</span> + ts <span style="color: #666666">=</span> <span style="color: #007020">int</span>(post[<span style="color: #4070a0">&quot;created_at&quot;</span>]) <span style="color: #666666">/</span> <span style="color: #40a070">1000</span> + + banner <span style="color: #666666">=</span> <span style="color: #4070a0">&quot;&quot;</span> <span style="color: #007020; font-weight: bold">if</span> post[<span style="color: #4070a0">&quot;image&quot;</span>] <span style="color: #007020; font-weight: bold">is</span> <span style="color: #007020">None</span> <span style="color: #007020; font-weight: bold">else</span> post[<span style="color: #4070a0">&quot;image&quot;</span>] + <span style="color: #60a0b0; font-style: italic"># /content/ should not be part of uri anymore</span> + banner <span style="color: #666666">=</span> re<span style="color: #666666">.</span>sub(<span style="color: #4070a0">&quot;^.*/content[s]?/&quot;</span>, <span style="color: #4070a0">&quot;/&quot;</span>, banner) + + target <span style="color: #666666">=</span> path<span style="color: #666666">.</span>join(hugodir, <span style="color: #4070a0">&quot;content/post&quot;</span>, + <span style="color: #4070a0">&quot;{}.md&quot;</span><span style="color: #666666">.</span>format(post[<span style="color: #4070a0">&quot;slug&quot;</span>])) + + aliases <span style="color: #666666">=</span> [<span style="color: #4070a0">&quot;/{}/&quot;</span><span style="color: #666666">.</span>format(post[<span style="color: #4070a0">&quot;slug&quot;</span>])] + + <span style="color: #007020; font-weight: bold">print</span>(<span style="color: #4070a0">&quot;Migrating &#39;{}&#39; to {}&quot;</span><span style="color: #666666">.</span>format(post[<span style="color: #4070a0">&quot;title&quot;</span>], + target)) + + hugopost <span style="color: #666666">=</span> _post<span style="color: #666666">.</span>format(markdown<span style="color: #666666">=</span>post[<span style="color: #4070a0">&quot;markdown&quot;</span>], + title<span style="color: #666666">=</span>post[<span style="color: #4070a0">&quot;title&quot;</span>], + draft<span style="color: #666666">=</span>draft, + slug<span style="color: #666666">=</span>post[<span style="color: #4070a0">&quot;slug&quot;</span>], + date<span style="color: #666666">=</span>date<span style="color: #666666">.</span>fromtimestamp(ts)<span style="color: #666666">.</span>isoformat(), + tags<span style="color: #666666">=</span>posttags[post[<span style="color: #4070a0">&quot;id&quot;</span>]], + banner<span style="color: #666666">=</span>banner, + aliases<span style="color: #666666">=</span>aliases) + + <span style="color: #60a0b0; font-style: italic"># this is no longer relevant</span> + hugopost <span style="color: #666666">=</span> hugopost<span style="color: #666666">.</span>replace(<span style="color: #4070a0">&quot;```language-&quot;</span>, <span style="color: #4070a0">&quot;```&quot;</span>) + <span style="color: #60a0b0; font-style: italic"># /content/ should not be part of uri anymore</span> + hugopost <span style="color: #666666">=</span> hugopost<span style="color: #666666">.</span>replace(<span style="color: #4070a0">&quot;/content/&quot;</span>, <span style="color: #4070a0">&quot;/&quot;</span>) + hugopost <span style="color: #666666">=</span> re<span style="color: #666666">.</span>sub(<span style="color: #4070a0">&quot;^.*/content[s]?/&quot;</span>, <span style="color: #4070a0">&quot;/&quot;</span>, hugopost) + + <span style="color: #007020; font-weight: bold">with</span> <span style="color: #007020">open</span>(target, <span style="color: #4070a0">&#39;w&#39;</span>) <span style="color: #007020; font-weight: bold">as</span> fp: + <span style="color: #007020; font-weight: bold">print</span>(hugopost, <span style="color: #007020">file</span><span style="color: #666666">=</span>fp) + + + <span style="color: #007020; font-weight: bold">def</span> <span style="color: #06287e">main</span>(): + parser <span style="color: #666666">=</span> argparse<span style="color: #666666">.</span>ArgumentParser( + description<span style="color: #666666">=</span><span style="color: #4070a0">&quot;Migrate an exported Ghost blog to Hugo&quot;</span>) + req <span style="color: #666666">=</span> parser<span style="color: #666666">.</span>add_argument_group(title<span style="color: #666666">=</span><span style="color: #4070a0">&quot;required arguments&quot;</span>) + req<span style="color: #666666">.</span>add_argument(<span style="color: #4070a0">&quot;-f&quot;</span>, <span style="color: #4070a0">&quot;--file&quot;</span>, help<span style="color: #666666">=</span><span style="color: #4070a0">&quot;JSON file exported from Ghost&quot;</span>, + required<span style="color: #666666">=</span><span style="color: #007020">True</span>) + req<span style="color: #666666">.</span>add_argument(<span style="color: #4070a0">&quot;-d&quot;</span>, <span style="color: #4070a0">&quot;--dir&quot;</span>, help<span style="color: #666666">=</span><span style="color: #4070a0">&quot;Directory (root) of Hugo site&quot;</span>, + required<span style="color: #666666">=</span><span style="color: #007020">True</span>) + + args <span style="color: #666666">=</span> parser<span style="color: #666666">.</span>parse_args() + + migrate(args<span style="color: #666666">.</span>file, args<span style="color: #666666">.</span>dir) + + + <span style="color: #007020; font-weight: bold">if</span> <span style="color: #bb60d5">__name__</span> <span style="color: #666666">==</span> <span style="color: #4070a0">&quot;__main__&quot;</span>: + main() + </code></pre></div> + + <p>Next post, I might write about what changes I made to the theme, and + some nifty Nginx tricks you can use to stay compatible with old links.</p> + + + + + <hr/> + <p>Other posts in the <b>Migrating from Ghost to Hugo</b> series:</p> + + + <ul class="series"> + + <li>2016-08-26 &mdash; + + <a href="https://cowboyprogrammer.org/2016/08/zopfli_all_the_things/">Compress all the images!</a> + + </li> + + <li>2016-07-25 &mdash; + + Migrating from Ghost to Hugo + + </li> + + </ul> + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Set refresh rate of screen from script + https://cowboyprogrammer.org/2016/05/set-refresh-rate-of-screen-from-script/ + Wed, 18 May 2016 00:00:00 +0000 + + https://cowboyprogrammer.org/2016/05/set-refresh-rate-of-screen-from-script/ + + <p>Getting a great new 100 Hz Ultra Wide monitor does not come without its share of tweaking. So it turns out that the refresh you set on your monitor in Nvidia settings (as explained in a <a href="https://cowboyprogrammer.org/nvidia-gsync-on-linux/">previous post</a> does not apply to all the display ports. They apparently count as different screens with different settings or something.</p> + + <p>So, here&rsquo;s a handy script which you can add to your window manager&rsquo;s autostart applications to set the refresh rate and resolution of your screen, regardless of which actual port you use:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span><span style="color: #60a0b0; font-style: italic">#!/bin/bash -eu</span> + <span style="color: #bb60d5">RES</span><span style="color: #666666">=</span><span style="color: #4070a0">&quot;3440x1440&quot;</span> + <span style="color: #bb60d5">RR</span><span style="color: #666666">=</span><span style="color: #4070a0">&quot;100&quot;</span> + + <span style="color: #60a0b0; font-style: italic"># Do for every output, so that it doesn&#39;t matter where you plug in</span> + <span style="color: #60a0b0; font-style: italic"># your monitor.</span> + <span style="color: #007020; font-weight: bold">for</span> output in <span style="color: #007020; font-weight: bold">$(</span>xrandr | grep <span style="color: #4070a0">&quot;DP-&quot;</span> | sed -e <span style="color: #4070a0">&quot;s/\(DP-.\).*/\1/&quot;</span><span style="color: #007020; font-weight: bold">)</span>; <span style="color: #007020; font-weight: bold">do</span> + <span style="color: #007020">echo</span> <span style="color: #4070a0">&quot;Trying to set mode on </span><span style="color: #bb60d5">$output</span><span style="color: #4070a0">&quot;</span> + <span style="color: #007020; font-weight: bold">if</span> xrandr --output <span style="color: #4070a0">&quot;</span><span style="color: #bb60d5">$output</span><span style="color: #4070a0">&quot;</span> --mode <span style="color: #4070a0">&quot;</span><span style="color: #bb60d5">$RES</span><span style="color: #4070a0">&quot;</span> -r <span style="color: #4070a0">&quot;</span><span style="color: #bb60d5">$RR</span><span style="color: #4070a0">&quot;</span>; <span style="color: #007020; font-weight: bold">then</span> + <span style="color: #007020">echo</span> <span style="color: #4070a0">&quot;Success: </span><span style="color: #bb60d5">$RES</span><span style="color: #4070a0"> </span><span style="color: #bb60d5">$RR</span><span style="color: #4070a0"> Hz set on </span><span style="color: #bb60d5">$output</span><span style="color: #4070a0">&quot;</span> + <span style="color: #007020; font-weight: bold">fi</span> + <span style="color: #007020; font-weight: bold">done</span> + </code></pre></div> + + <p>It iterates over all the display ports on your graphics card, so it doesn&rsquo;t matter where you plug your monitor in.</p> + + <p>In XFCE, you&rsquo;d add this script to <em>Application Autostart</em>:</p> + + <p><img src="https://cowboyprogrammer.org/images/2016/05/Session-and-Startup_033.png" alt="XFCE Application Autostart" /></p> + + + + + <hr/> + <p>Other posts in the <b>Linux 100Hz gaming</b> series:</p> + + + <ul class="series"> + + <li>2016-05-18 &mdash; + + Set refresh rate of screen from script + + </li> + + <li>2016-03-05 &mdash; + + <a href="https://cowboyprogrammer.org/2016/03/nvidia-gsync-on-linux/">Nvidia G-Sync and Linux</a> + + </li> + + </ul> + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Fixing the up button in Python shell history + https://cowboyprogrammer.org/2016/04/fixing-the-up-button-in-python-shell-history/ + Sat, 02 Apr 2016 00:00:00 +0000 + + https://cowboyprogrammer.org/2016/04/fixing-the-up-button-in-python-shell-history/ + + <p>In case your python/ipython shell doesn&rsquo;t have a working history, e.g. pressing &#8593; only prints some nonsensical <code>^[[A</code>, then you are missing either the <code>readline</code> or <code>ncurses</code> library.</p> + + <p><img src="https://cowboyprogrammer.org/images/2016/04/Selection_021.png" alt="Python shell where up doesn't work" /></p> + + <p>Ipython is more descriptive that something is wrong, but if you&rsquo;re in the habit of mostly using python as a quick calculator, you might never notice:</p> + + <p><img src="https://cowboyprogrammer.org/images/2016/04/Selection_022.png" alt="iPython shell where up doesn't work" /></p> + + <p>If you&rsquo;re using <a href="http://conda.pydata.org/miniconda.html">Miniconda</a> then just do:</p> + + <pre><code>conda install ncurses readline + </code></pre> + + <p>And &#8593; should work:</p> + + <p><img src="https://cowboyprogrammer.org/images/2016/04/Selection_023.png" alt="iPython with working up" /></p> + + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Nvidia G-Sync and Linux + https://cowboyprogrammer.org/2016/03/nvidia-gsync-on-linux/ + Sat, 05 Mar 2016 00:00:00 +0000 + + https://cowboyprogrammer.org/2016/03/nvidia-gsync-on-linux/ + + + + <p>After getting a fancy new monitor with G-Sync support, I was eager to try it out in my Linux gaming setup. While Nvidia fully supports G-Sync in their Linux drivers, it turns out that other components of the system can get in the way. As explained by a <a href="https://devtalk.nvidia.com/default/topic/854184/gsync-is-not-working/?offset=1">post on the Nvidia forums</a>:</p> + + <blockquote> + <p>For G-SYNC to work, the application has to be able to flip and the symptoms you&rsquo;re describing here sound like it&rsquo;s not able to flip in your configuration. There are a variety of reasons why flipping might not be working, but the most likely culprits here are either the compositor getting in the way, or the game not being completely full-screen. The full-screen requirement includes the game being completely unoccluded, so if your window manager is drawing something on top of the game, even just by one pixel, it will prevent flipping. Full-screen also means that it has to cover the entire X screen, which includes both monitors if you have them both enabled.</p> + + <p>Can you please try a different window manager / desktop environment to see if the behavior changes?</p> + </blockquote> + + <p>Since only a minority of PC-gamers are actually on Linux, and only a minority of those actually have G-Sync capable monitors, Googling for assistance was&hellip; challenging. So, for any other Linux gamers out there, here is a short guide on how to enable G-Sync and verify that it works. Some of the steps are XFCE specific, as this is my window manager of choice on my gaming PC. If you are using a different window manager, you&rsquo;ll have to look through your options to find the equivalent settings.</p> + + <h2 id="nvidia-settings">Nvidia settings</h2> + + <ul> + <li>Sync to VBlank: Optional</li> + <li>Allow Flipping: Required</li> + <li>Allow G-SYNC: Required</li> + <li>Enable G-SYNC Visual Indicator: Optional</li> + </ul> + + <p>The only two required settings are <em>flipping</em> and <em>G-Sync</em>, the others are optional. Enabling <em>Sync to VBlank</em> (VSync) in combination with G-Sync only prevents the GPU from generating an FPS beyond your monitor&rsquo;s max refresh rate (which you can&rsquo;t see anyway). It is turned off below the max refresh rate when G-Sync is enabled.</p> + + <p>The visual indicator is useful here to see that G-Sync is working. If all goes well, you should see a green &ldquo;G-SYNC&rdquo; text in the corner when running a game.</p> + + <p><img src="https://cowboyprogrammer.org/images/2016/03/NVIDIA-X-Server-Settings_007.png" alt="Nvidia settings" /></p> + + <h2 id="disable-compositor">Disable compositor</h2> + + <p>As mentioned in the forum post, a compositor will prevent G-Sync from activating because essentially something is rendering above the game. The same reason prevents G-Sync from working in Window mode (unlike Windows, where G-Sync does not require fullscreen).</p> + + <p>For XFCE, go to <em>Window Manager Tweaks</em> under <em>Settings</em> + <img src="https://cowboyprogrammer.org/images/2016/03/Selection_004.png" alt="XFCE Settings" /></p> + + <p>Then under the <em>Compositor</em> tab, make sure the compositor is disabled + <img src="https://cowboyprogrammer.org/images/2016/03/Selection_005.png" alt="Window Manager Tweaks" /></p> + + <p>In addition, depending on your setup, make sure you don&rsquo;t have things like <a href="https://wiki.archlinux.org/index.php/Compton">Compton</a> or <a href="https://wiki.archlinux.org/index.php/Compiz">Compiz</a> enabled.</p> + + <h2 id="start-a-game-in-fullscreen">Start a game in fullscreen</h2> + + <p>As mentioned, you must run the game in fullscreen mode. G-Sync does not work with window mode in Linux.</p> + + <p>I did notice that there are games which do not enable G-Sync. One example is &ldquo;Cities: Skylines&rdquo;. So make sure to try several games if you don&rsquo;t see the G-Sync logo.</p> + + <p>A good candidate here is Dota 2 since it is free to play. Dota 2 running in &ldquo;Desktop-Friendly Fullscreen&rdquo; does enable G-Sync. As does Portal 2 and XCOM 2.</p> + + + + + <hr/> + <p>Other posts in the <b>Linux 100Hz gaming</b> series:</p> + + + <ul class="series"> + + <li>2016-05-18 &mdash; + + <a href="https://cowboyprogrammer.org/2016/05/set-refresh-rate-of-screen-from-script/">Set refresh rate of screen from script</a> + + </li> + + <li>2016-03-05 &mdash; + + Nvidia G-Sync and Linux + + </li> + + </ul> + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Encrypt a BTRFS RAID5-array in-place + https://cowboyprogrammer.org/2014/12/encrypt-a-btrfs-raid5-array-in-place/ + Sun, 28 Dec 2014 00:00:00 +0000 + + https://cowboyprogrammer.org/2014/12/encrypt-a-btrfs-raid5-array-in-place/ + + + + <p>When I decided I needed more disk space for media and virtual machine (VM) images, I decided to throw some more money at the problem and get three 3TB hard drives and run <a href="https://btrfs.wiki.kernel.org/index.php/Main_Page">BTRFS</a> in <a href="http://en.wikipedia.org/wiki/RAID#Standard_levels">RAID5</a>. It&rsquo;s still somewhat experimental, but has proven very solid for me.</p> + + <p>RAID5 means that one drive can completely fail, but all the data is still intact. All one has to do is insert a new drive and the drive will be reconstructed. While RAID5 protects against a complete drive failure, it does nothing to prevent a single bit to be flipped to due cosmic rays or electricity spikes.</p> + + <p>BTRFS is a new filesystem for Linux which does what ZFS does for BSD. The two important features which it offers over previous systems is: copy-on-write (COW), and bitrot protection. See, when running RAID with BTRFS, if a single bit is flipped, BTRFS will detect it when you try to read the file and correct it (if running in RAID so there&rsquo;s redundancy). COW means you can take snapshots of the entire drive instantly without using extra space. Space will only be required when stuff change and diverge from your snapshots.</p> + + <p>See <a href="http://arstechnica.com/information-technology/2014/01/bitrot-and-atomic-cows-inside-next-gen-filesystems/">Arstechnica</a> for why <em>BTRFS</em> is da shit for your next drive or system.</p> + + <p>What I did not do at the time was encrypt the drives. <a href="http://www.linuxvoice.com/">Linux Voice #11</a> had a very nice article on encryption so I thought I&rsquo;d set it up. And because I&rsquo;m using RAID5, it is actually possible for me to encrypt my drives using <a href="https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption">dm-crypt/LUKS</a> in-place, while the whole shebang is mounted, readable and usable :)</p> + + <p>Some initial mistakes meant I had to actually reboot the system, so I thought I&rsquo;d write down how to do it correctly. So to summarize, the goal is to convert three disks to three encrypted disks. BTRFS will be moved from using the drives directly, to using the LUKS-mapped.</p> + + <h3 id="unmount-the-raid-system-time-1-second">Unmount the raid system (time 1 second)</h3> + + <p>Sadly, we need to unmount the volume to be able to &ldquo;remove&rdquo; the drive. This needs to be done so the system can understand that the drive has &ldquo;vanished&rdquo;. It will only stay unmounted for about a minute though.</p> + + <pre><code>sudo umount /path/to/vol + </code></pre> + + <p>This is assuming you have configured your <strong>fstab</strong> with all the details. For example, with something like this (ALWAYS USE UUID!!)</p> + + <pre><code># BTRFS Systems + UUID=&quot;ac21dd50-e6ee-4a9e-abcd-459cba0e6913&quot; /mnt/btrfs btrfs defaults 0 0 + </code></pre> + + <p>Note that no modification of the <strong>fstab</strong> will be necessary if you have used UUID.</p> + + <h3 id="encrypt-one-of-the-drives-time-10-seconds">Encrypt one of the drives (time 10 seconds)</h3> + + <p>Pick one of the drives to encrypt. Here it&rsquo;s <code>/dev/sdc</code>:</p> + + <pre><code>sudo cryptsetup luksFormat -v /dev/sdc + </code></pre> + + <h3 id="open-the-encrypted-drive-time-30-seconds">Open the encrypted drive (time 30 seconds)</h3> + + <p>To use it, we have to open the drive. You can pick any name you want:</p> + + <pre><code>sudo cryptsetup luksOpen /dev/sdc DRIVENAME + </code></pre> + + <p>To make this happen on boot, find the new <em>UUID</em> of <code>/dev/sdc</code> with <code>blkid</code>:</p> + + <pre><code>sudo blkid + </code></pre> + + <p><img src="https://cowboyprogrammer.org/images/2014/Dec/Screenshot-from-2014-12-29-13-28-29.png" alt="Output of blkid" /></p> + + <p>So for me, the drive has a the following <em>UUID:</em> <code>f5d3974c-529e-4574-bbfa-7f3e6db05c65</code>. Add the following line to <code>/etc/crypttab</code> with your desired drive name and your <em>UUID</em> (without any quotes):</p> + + <pre><code>DRIVENAME UUID=your-uuid-without-quotes none luks + </code></pre> + + <p>Now the system will ask for your password on boot.</p> + + <h3 id="add-the-encrypted-drive-to-the-raid-time-20-seconds">Add the encrypted drive to the raid (time 20 seconds)</h3> + + <p>First we have to remount the raid system. This will fail because there is a missing drive, unless we add the option <em>degraded</em>.</p> + + <pre><code>sudo mount -o degraded /path/to/vol + </code></pre> + + <p>There will be some complaints about missing drives and such, which is exactly what we expect. Now, just add the new drive:</p> + + <pre><code>sudo btrfs device add /dev/mapper/DRIVENAME /path/to/vol + </code></pre> + + <h3 id="remove-the-missing-drive-time-14-hours">Remove the missing drive (time 14 hours)</h3> + + <p>The final step is to remove the old drive. We can use the special name <em>missing</em> to remove it:</p> + + <pre><code>sudo btrfs device delete missing /path/to/vol + </code></pre> + + <p>This can take a really long time, and by long I mean ~15 hours if you have a terrabyte of data. But, you can still use the drive during this process so just be patient.</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Dec/Screenshot-from-2014-12-29-12-48-45.png" alt="Balance took 14 hours" /></p> + + <p>For me it took 14 hours 34 minutes. The reason for the delay is because the <em>delete</em> command will force the system to rebuild the missing drive on your new encrypted volume.</p> + + <h3 id="next-drive-rinse-and-repeat">Next drive, rinse and repeat</h3> + + <p>Just unmount the raid, encrypt the drive, add it back and delete the missing. Repeat for all drives in your array. Once the last drive is done, unmount the array and remount it without the <code>-o degraded</code> option. Now you have an encrypted RAID array.</p> + + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Making an RSS reader app + https://cowboyprogrammer.org/2014/08/making-an-rss-reader-app/ + Thu, 28 Aug 2014 00:00:00 +0000 + + https://cowboyprogrammer.org/2014/08/making-an-rss-reader-app/ + + + + <p>So I&rsquo;ve been busy building my own RSS reader for the last few weeks. My motivation to make this app is because I got angry at <em>gReader</em> for displaying fullscreen-ads. The source is available on <a href="https://github.com/spacecowboy/Feeder">GitHub</a>.</p> + + <p>I started with an idea of targeting <em>Android-L</em>, but because it&rsquo;s only in preview any app targeting <em>L</em> will be completely incompatible with earler versions. Hence I was forced to refrain from using the new RecyclerView which I really liked. In general I&rsquo;ve been stealing as much code as possible from the <a href="https://github.com/google/iosched">Google-IO app</a>.</p> + + <p>It&rsquo;s early still, but here are two screenshots of current progress:</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Aug/Screenshot_2014-08-28-15-02-40.png" alt="Feeds with tags" width=50% /></p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Aug/Screenshot_2014-08-28-15-03-21.png" alt="Reader activity" width=50% /></p> + + <p>To parse RSS feeds I have <a href="https://github.com/spacecowboy/Simplistic-RSS">forked Simplistic-RSS</a> by <a href="https://github.com/ShirwaM/Simplistic-RSS">ShirwaM</a>. To display images I am using <a href="http://square.github.io/picasso/">Picasso by Square</a> (awesome library). I don&rsquo;t have any intention of uploading this app to the Play store at this time, at least not until I feel that it is fairly stable and feature complete. I am building it all for myself as this is the only kind of app which I actually use everyday. I figure I can talk about the difficulties that I encounter and how to solve them. So today&rsquo;s topic will be:</p> + + <h2 id="displaying-formatted-text-with-images">Displaying formatted text with images</h2> + + <p>RSS feeds generally have stories formatted in HTML. For example, see the <a href="http://cowboyprogrammer.org/rss/">RSS feed of this blog</a>. This is good because it means all we need to do is decode it and display it. You could use a WebView, but that would be unacceptably ugly and disgusting for an app of mine. A nicer solution is to use a normal TextView. You can actually format HTML easily and display it with:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span>textview<span style="color: #666666">.</span><span style="color: #4070a0">setText</span><span style="color: #666666">(</span>android<span style="color: #666666">.</span><span style="color: #4070a0">text</span><span style="color: #666666">.</span><span style="color: #4070a0">Html</span><span style="color: #666666">.</span><span style="color: #4070a0">fromHtml</span><span style="color: #666666">(</span>htmlString<span style="color: #666666">));</span> + </code></pre></div> + + <p>This simple act gets you most of the way. Here&rsquo;s what a story looks like with this:</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Aug/Screenshot_2014-08-28-15-27-44_photo.png" alt="Using just fromHtml img" width=50% /></p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Aug/Screenshot_2014-08-28-15-28-08_code_bad.png" alt="Using just fromHtml code" width=50% /></p> + + <p>Notice that in the first image, the image is missing and you don&rsquo;t see that there is a list in the beginning. In the second image, the source code has no special formatting and it&rsquo;s hard to tell when it starts or stops.</p> + + <p><em>fromHtml</em> is great, but it is missing functionality to handle some tags. Lucky for us, it is possible to hand it some tagHandlers for those cases. Because I am downloading images, I do the formatting in a background thread using a Loader. To this end I created the <a href="https://github.com/spacecowboy/Feeder/blob/master/app/src/main/java/com/nononsenseapps/feeder/model/ImageTextLoader.java">ImageTextLoader</a>. What it does instead is:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span>android<span style="color: #666666">.</span><span style="color: #4070a0">text</span><span style="color: #666666">.</span><span style="color: #4070a0">Html</span><span style="color: #666666">.</span><span style="color: #4070a0">fromHtml</span><span style="color: #666666">(</span>text<span style="color: #666666">,</span> imageHandler<span style="color: #666666">,</span> TagHandler<span style="color: #666666">);</span> + </code></pre></div> + + <p>Where the imageHandler is really simple (notice that I use Picasso to get the image from the network):</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span>imgThing <span style="color: #666666">=</span> <span style="color: #007020; font-weight: bold">new</span> Html<span style="color: #666666">.</span><span style="color: #4070a0">ImageGetter</span><span style="color: #666666">()</span> <span style="color: #666666">{</span> + <span style="color: #60a0b0; font-style: italic">/**</span> + <span style="color: #60a0b0; font-style: italic"> * This methos is called when the HTML parser encounters an</span> + <span style="color: #60a0b0; font-style: italic"> * &lt;img&gt; tag. The &lt;code&gt;source&lt;/code&gt; argument is the</span> + <span style="color: #60a0b0; font-style: italic"> * string from the &quot;src&quot; attribute; the return value should be</span> + <span style="color: #60a0b0; font-style: italic"> * a Drawable representation of the image or &lt;code&gt;null&lt;/code&gt;</span> + <span style="color: #60a0b0; font-style: italic"> * for a generic replacement image. Make sure you call</span> + <span style="color: #60a0b0; font-style: italic"> * setBounds() on your Drawable if it doesn&#39;t already have</span> + <span style="color: #60a0b0; font-style: italic"> * its bounds set.</span> + <span style="color: #60a0b0; font-style: italic"> *</span> + <span style="color: #60a0b0; font-style: italic"> * @param source</span> + <span style="color: #60a0b0; font-style: italic"> */</span> + <span style="color: #555555; font-weight: bold">@Override</span> + <span style="color: #007020; font-weight: bold">public</span> Drawable <span style="color: #06287e">getDrawable</span><span style="color: #666666">(</span><span style="color: #007020; font-weight: bold">final</span> String source<span style="color: #666666">)</span> <span style="color: #666666">{</span> + Drawable d <span style="color: #666666">=</span> <span style="color: #007020; font-weight: bold">null</span><span style="color: #666666">;</span> + <span style="color: #007020; font-weight: bold">try</span> <span style="color: #666666">{</span> + <span style="color: #007020; font-weight: bold">final</span> Bitmap b <span style="color: #666666">=</span> Picasso<span style="color: #666666">.</span><span style="color: #4070a0">with</span><span style="color: #666666">(</span>appContext<span style="color: #666666">).</span><span style="color: #4070a0">load</span><span style="color: #666666">(</span>source<span style="color: #666666">).</span><span style="color: #4070a0">get</span><span style="color: #666666">();</span> + <span style="color: #60a0b0; font-style: italic">// Get original size</span> + <span style="color: #902000">int</span> w <span style="color: #666666">=</span> b<span style="color: #666666">.</span><span style="color: #4070a0">getWidth</span><span style="color: #666666">();</span> + <span style="color: #902000">int</span> h <span style="color: #666666">=</span> b<span style="color: #666666">.</span><span style="color: #4070a0">getHeight</span><span style="color: #666666">();</span> + <span style="color: #60a0b0; font-style: italic">// Shrink if big</span> + <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">(</span>w <span style="color: #666666">&gt;</span> maxSize<span style="color: #666666">.</span><span style="color: #4070a0">x</span> <span style="color: #666666">||</span> h <span style="color: #666666">&gt;</span> maxSize<span style="color: #666666">.</span><span style="color: #4070a0">y</span><span style="color: #666666">)</span> <span style="color: #666666">{</span> + Point newSize <span style="color: #666666">=</span> scaleImage<span style="color: #666666">(</span>w<span style="color: #666666">,</span> h<span style="color: #666666">);</span> + w <span style="color: #666666">=</span> newSize<span style="color: #666666">.</span><span style="color: #4070a0">x</span><span style="color: #666666">;</span> + h <span style="color: #666666">=</span> newSize<span style="color: #666666">.</span><span style="color: #4070a0">y</span><span style="color: #666666">;</span> + <span style="color: #666666">}</span> + <span style="color: #60a0b0; font-style: italic">// Need to return a drawable</span> + d <span style="color: #666666">=</span> <span style="color: #007020; font-weight: bold">new</span> BitmapDrawable<span style="color: #666666">(</span>appContext<span style="color: #666666">.</span><span style="color: #4070a0">getResources</span><span style="color: #666666">(),</span> b<span style="color: #666666">);</span> + d<span style="color: #666666">.</span><span style="color: #4070a0">setBounds</span><span style="color: #666666">(</span><span style="color: #40a070">0</span><span style="color: #666666">,</span> <span style="color: #40a070">0</span><span style="color: #666666">,</span> w<span style="color: #666666">,</span> h<span style="color: #666666">);</span> + <span style="color: #666666">}</span> <span style="color: #007020; font-weight: bold">catch</span> <span style="color: #666666">(</span>IOException e<span style="color: #666666">)</span> <span style="color: #666666">{</span> + Log<span style="color: #666666">.</span><span style="color: #4070a0">e</span><span style="color: #666666">(</span><span style="color: #4070a0">&quot;JONAS&quot;</span><span style="color: #666666">,</span> <span style="color: #4070a0">&quot;&quot;</span> <span style="color: #666666">+</span> e<span style="color: #666666">.</span><span style="color: #4070a0">getMessage</span><span style="color: #666666">());</span> + <span style="color: #666666">}</span> + <span style="color: #007020; font-weight: bold">return</span> d<span style="color: #666666">;</span> + <span style="color: #666666">}</span> + <span style="color: #666666">};</span> + </code></pre></div> + + <p>The tag handler contains a bit more code, and I won&rsquo;t paste all of it here. The tags which are handled can be seen in <em>handleTag</em>:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span><span style="color: #007020; font-weight: bold">public</span> <span style="color: #902000">void</span> <span style="color: #06287e">handleTag</span><span style="color: #666666">(</span><span style="color: #007020; font-weight: bold">final</span> <span style="color: #902000">boolean</span> opening<span style="color: #666666">,</span> <span style="color: #007020; font-weight: bold">final</span> String tag<span style="color: #666666">,</span> + <span style="color: #007020; font-weight: bold">final</span> Editable output<span style="color: #666666">,</span> <span style="color: #007020; font-weight: bold">final</span> XMLReader xmlReader<span style="color: #666666">)</span> <span style="color: #666666">{</span> + <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">(</span>tag<span style="color: #666666">.</span><span style="color: #4070a0">equalsIgnoreCase</span><span style="color: #666666">(</span><span style="color: #4070a0">&quot;ul&quot;</span><span style="color: #666666">))</span> <span style="color: #666666">{</span> + handleUl<span style="color: #666666">(</span>output<span style="color: #666666">,</span> opening<span style="color: #666666">);</span> + <span style="color: #666666">}</span> <span style="color: #007020; font-weight: bold">else</span> <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">(</span>tag<span style="color: #666666">.</span><span style="color: #4070a0">equalsIgnoreCase</span><span style="color: #666666">(</span><span style="color: #4070a0">&quot;ol&quot;</span><span style="color: #666666">))</span> <span style="color: #666666">{</span> + handleOl<span style="color: #666666">(</span>output<span style="color: #666666">,</span> opening<span style="color: #666666">);</span> + <span style="color: #666666">}</span> <span style="color: #007020; font-weight: bold">else</span> <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">(</span>tag<span style="color: #666666">.</span><span style="color: #4070a0">equalsIgnoreCase</span><span style="color: #666666">(</span><span style="color: #4070a0">&quot;li&quot;</span><span style="color: #666666">))</span> <span style="color: #666666">{</span> + handleLi<span style="color: #666666">(</span>output<span style="color: #666666">,</span> opening<span style="color: #666666">);</span> + <span style="color: #666666">}</span> <span style="color: #007020; font-weight: bold">else</span> <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">(</span>tag<span style="color: #666666">.</span><span style="color: #4070a0">equalsIgnoreCase</span><span style="color: #666666">(</span><span style="color: #4070a0">&quot;img&quot;</span><span style="color: #666666">))</span> <span style="color: #666666">{</span> + handleImgEnd<span style="color: #666666">(</span>output<span style="color: #666666">);</span> + <span style="color: #666666">}</span> <span style="color: #007020; font-weight: bold">else</span> <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">(</span>tag<span style="color: #666666">.</span><span style="color: #4070a0">equalsIgnoreCase</span><span style="color: #666666">(</span><span style="color: #4070a0">&quot;code&quot;</span><span style="color: #666666">))</span> <span style="color: #666666">{</span> + handleCode<span style="color: #666666">(</span>output<span style="color: #666666">,</span> opening<span style="color: #666666">);</span> + <span style="color: #666666">}</span> <span style="color: #007020; font-weight: bold">else</span> <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">(</span>tag<span style="color: #666666">.</span><span style="color: #4070a0">equalsIgnoreCase</span><span style="color: #666666">(</span><span style="color: #4070a0">&quot;pre&quot;</span><span style="color: #666666">))</span> <span style="color: #666666">{</span> + handlePre<span style="color: #666666">(</span>output<span style="color: #666666">,</span> opening<span style="color: #666666">);</span> + <span style="color: #666666">}</span> + <span style="color: #666666">}</span> + </code></pre></div> + + <p>Note that fromHtml only notifies your handler about img-tags when they have ended, so I use that to insert a newline after each image. I would have liked to use it to get the configured size of the image, but that will have to wait for another day. For code-tags, I reduce the size of the text and make it Monospace:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span><span style="color: #60a0b0; font-style: italic">// Source code</span> + <span style="color: #007020; font-weight: bold">private</span> <span style="color: #902000">void</span> <span style="color: #06287e">handleCode</span><span style="color: #666666">(</span><span style="color: #007020; font-weight: bold">final</span> Editable text<span style="color: #666666">,</span> + <span style="color: #007020; font-weight: bold">final</span> <span style="color: #902000">boolean</span> start<span style="color: #666666">)</span> <span style="color: #666666">{</span> + <span style="color: #60a0b0; font-style: italic">// Should be monospace</span> + <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">(</span>start<span style="color: #666666">)</span> <span style="color: #666666">{</span> + start<span style="color: #666666">(</span>text<span style="color: #666666">,</span> <span style="color: #007020; font-weight: bold">new</span> Monospace<span style="color: #666666">());</span> + start<span style="color: #666666">(</span>text<span style="color: #666666">,</span> <span style="color: #007020; font-weight: bold">new</span> RelativeSize<span style="color: #666666">());</span> + <span style="color: #666666">}</span> <span style="color: #007020; font-weight: bold">else</span> <span style="color: #666666">{</span> + end<span style="color: #666666">(</span>text<span style="color: #666666">,</span> Monospace<span style="color: #666666">.</span><span style="color: #4070a0">class</span><span style="color: #666666">,</span> + <span style="color: #007020; font-weight: bold">new</span> TypefaceSpan<span style="color: #666666">(</span><span style="color: #4070a0">&quot;monospace&quot;</span><span style="color: #666666">));</span> + end<span style="color: #666666">(</span>text<span style="color: #666666">,</span> RelativeSize<span style="color: #666666">.</span><span style="color: #4070a0">class</span><span style="color: #666666">,</span> + <span style="color: #007020; font-weight: bold">new</span> RelativeSizeSpan<span style="color: #666666">(</span><span style="color: #40a070">0.8f</span><span style="color: #666666">));</span> + <span style="color: #666666">}</span> + <span style="color: #666666">}</span> + </code></pre></div> + + <p>The <em>start</em> and <em>end</em> methods were simply stolen straight from <em>android.Html</em>.</p> + + <h3 id="result">Result</h3> + + <p>Here&rsquo;s the result using the added <em>tagHandlers</em>:</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Aug/Screenshot_2014-08-28-15-03-21-1.png" alt="With image" width=50% /></p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Aug/Screenshot_2014-08-28-15-28-44_code_good.png" alt="With code" width=50% /></p> + + <h3 id="handling-clicks-on-links">Handling clicks on links</h3> + + <p>Thankfully I had already solved the issue of clickable spans in NoNonsense Notes. See [ReaderFragment]() for this:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span><span style="color: #60a0b0; font-style: italic">// Catch clicks on links</span> + mBodyTextView<span style="color: #666666">.</span><span style="color: #4070a0">setOnTouchListener</span><span style="color: #666666">(</span><span style="color: #007020; font-weight: bold">new</span> View<span style="color: #666666">.</span><span style="color: #4070a0">OnTouchListener</span><span style="color: #666666">()</span> <span style="color: #666666">{</span> + <span style="color: #555555; font-weight: bold">@Override</span> + <span style="color: #007020; font-weight: bold">public</span> <span style="color: #902000">boolean</span> <span style="color: #06287e">onTouch</span><span style="color: #666666">(</span><span style="color: #007020; font-weight: bold">final</span> View v<span style="color: #666666">,</span> + <span style="color: #007020; font-weight: bold">final</span> MotionEvent event<span style="color: #666666">)</span> <span style="color: #666666">{</span> + TextView widget <span style="color: #666666">=</span> <span style="color: #666666">(</span>TextView<span style="color: #666666">)</span> v<span style="color: #666666">;</span> + Object text <span style="color: #666666">=</span> widget<span style="color: #666666">.</span><span style="color: #4070a0">getText</span><span style="color: #666666">();</span> + <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">(</span>text <span style="color: #007020; font-weight: bold">instanceof</span> Spanned<span style="color: #666666">)</span> <span style="color: #666666">{</span> + Spanned buffer <span style="color: #666666">=</span> <span style="color: #666666">(</span>Spanned<span style="color: #666666">)</span> text<span style="color: #666666">;</span> + + <span style="color: #902000">int</span> action <span style="color: #666666">=</span> event<span style="color: #666666">.</span><span style="color: #4070a0">getAction</span><span style="color: #666666">();</span> + + <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">(</span>action <span style="color: #666666">==</span> MotionEvent<span style="color: #666666">.</span><span style="color: #4070a0">ACTION_UP</span> <span style="color: #666666">||</span> + action <span style="color: #666666">==</span> MotionEvent<span style="color: #666666">.</span><span style="color: #4070a0">ACTION_DOWN</span><span style="color: #666666">)</span> <span style="color: #666666">{</span> + <span style="color: #902000">int</span> x <span style="color: #666666">=</span> <span style="color: #666666">(</span><span style="color: #902000">int</span><span style="color: #666666">)</span> event<span style="color: #666666">.</span><span style="color: #4070a0">getX</span><span style="color: #666666">();</span> + <span style="color: #902000">int</span> y <span style="color: #666666">=</span> <span style="color: #666666">(</span><span style="color: #902000">int</span><span style="color: #666666">)</span> event<span style="color: #666666">.</span><span style="color: #4070a0">getY</span><span style="color: #666666">();</span> + + x <span style="color: #666666">-=</span> widget<span style="color: #666666">.</span><span style="color: #4070a0">getTotalPaddingLeft</span><span style="color: #666666">();</span> + y <span style="color: #666666">-=</span> widget<span style="color: #666666">.</span><span style="color: #4070a0">getTotalPaddingTop</span><span style="color: #666666">();</span> + + x <span style="color: #666666">+=</span> widget<span style="color: #666666">.</span><span style="color: #4070a0">getScrollX</span><span style="color: #666666">();</span> + y <span style="color: #666666">+=</span> widget<span style="color: #666666">.</span><span style="color: #4070a0">getScrollY</span><span style="color: #666666">();</span> + + Layout layout <span style="color: #666666">=</span> widget<span style="color: #666666">.</span><span style="color: #4070a0">getLayout</span><span style="color: #666666">();</span> + <span style="color: #902000">int</span> line <span style="color: #666666">=</span> layout<span style="color: #666666">.</span><span style="color: #4070a0">getLineForVertical</span><span style="color: #666666">(</span>y<span style="color: #666666">);</span> + <span style="color: #902000">int</span> off <span style="color: #666666">=</span> layout<span style="color: #666666">.</span><span style="color: #4070a0">getOffsetForHorizontal</span><span style="color: #666666">(</span>line<span style="color: #666666">,</span> x<span style="color: #666666">);</span> + + ClickableSpan<span style="color: #666666">[]</span> link <span style="color: #666666">=</span> + buffer<span style="color: #666666">.</span><span style="color: #4070a0">getSpans</span><span style="color: #666666">(</span>off<span style="color: #666666">,</span> off<span style="color: #666666">,</span> ClickableSpan<span style="color: #666666">.</span><span style="color: #4070a0">class</span><span style="color: #666666">);</span> + + <span style="color: #60a0b0; font-style: italic">// Cant click to the right of a span,</span> + <span style="color: #60a0b0; font-style: italic">// if the line ends with the span!</span> + <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">(</span>x <span style="color: #666666">&gt;</span> layout<span style="color: #666666">.</span><span style="color: #4070a0">getLineRight</span><span style="color: #666666">(</span>line<span style="color: #666666">))</span> <span style="color: #666666">{</span> + <span style="color: #60a0b0; font-style: italic">// Don&#39;t call the span</span> + <span style="color: #666666">}</span> <span style="color: #007020; font-weight: bold">else</span> <span style="color: #007020; font-weight: bold">if</span> <span style="color: #666666">(</span>link<span style="color: #666666">.</span><span style="color: #4070a0">length</span> <span style="color: #666666">!=</span> <span style="color: #40a070">0</span><span style="color: #666666">)</span> <span style="color: #666666">{</span> + link<span style="color: #666666">[</span><span style="color: #40a070">0</span><span style="color: #666666">].</span><span style="color: #4070a0">onClick</span><span style="color: #666666">(</span>widget<span style="color: #666666">);</span> + <span style="color: #007020; font-weight: bold">return</span> <span style="color: #007020; font-weight: bold">true</span><span style="color: #666666">;</span> + <span style="color: #666666">}</span> + <span style="color: #666666">}</span> + <span style="color: #666666">}</span> + <span style="color: #007020; font-weight: bold">return</span> <span style="color: #007020; font-weight: bold">false</span><span style="color: #666666">;</span> + <span style="color: #666666">}</span> + <span style="color: #666666">});</span> + </code></pre></div> + + <p>Thus clicking on links in the <em>TextView</em> will open them in the browser. You could do whatever you want instead of calling <em>link[0].onClick()</em> however.</p> + + <p>That&rsquo;s it for today. I&rsquo;ll write more about other pieces of the app soon. Things like how the database is structured or how to use ExpandableListView.</p> + + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Building Python wheels for Windows + https://cowboyprogrammer.org/2014/06/building-python-wheels-for-windows/ + Wed, 04 Jun 2014 00:00:00 +0000 + + https://cowboyprogrammer.org/2014/06/building-python-wheels-for-windows/ + + + + <p>One group in particular suffers from lack of package management in Windows (<a href="http://cowboyprogrammer.org/people-have-been-trained-to-install-malware/">as I griped about here</a>): developers. This post will largely be a big howto on how to build Python packages with Fortran/C-extensions (especially Fortran extensions seem problematic on Windows). You&rsquo;d think that something like that would be clearly explained somewhere. So did I, and I was wrong. So here is my guide to building Python packages with native extensions (both C and Fortran) on Windows.</p> + + <h4 id="installing-python-packages">Installing Python packages</h4> + + <p>The lack of a compiler means most Windows users can&rsquo;t do what *nix users do when faced with a package containing some c or fortran extensions:</p> + + <pre><code>python setup.py install + </code></pre> + + <p>Or if it&rsquo;s publicly available on <a href="https://pypi.python.org/">PyPi</a> for example:</p> + + <pre><code>pip install package + </code></pre> + + <p><em>pip</em> will download the source, and on any system with a compiler, compile it, then install it. So it becomes necessary to provide pre-built binaries for Windows users who don&rsquo;t have a compiler. Something which no one offers a concise explanation of&hellip; until now that is. If you upload your package to <a href="https://pypi.python.org/">PyPi</a>, once you have followed this guide, even Windows users will be able to do <em>pip install package</em>.</p> + + <h2 id="1-set-up-a-windows-machine">1. Set up a Windows machine</h2> + + <p>To build Windows binaries you will need access to a Windows machine. If you don&rsquo;t have a copy of Windows lying around to install in a virtual machine, you can create a <em>free virtual machine</em> on <a href="http://aws.amazon.com/">Amazon</a> with Windows Server 2012. Selecting the most basic options will be fine and the machine will be free for atleast a year, at which point you can pay the few dollars per year or register for another free account.</p> + + <p>Another note: make sure to use <strong>64-bit Windows</strong> (Server 2012 only comes in 64-bit versions).</p> + + <h2 id="2-install-32-bit-compilers">2. Install 32-bit compilers</h2> + + <p>Don&rsquo;t ask me why Microsoft didn&rsquo;t want to ship the 64-bit compiler together with the 32-bit one&hellip; The versions here are final. You <strong>cannot use newer compilers</strong>. In other words, don&rsquo;t get Visual Studio 2012 and expect it to work&hellip; It&rsquo;s a simple fact that you need to compile your packages with the same compiler as was used to build Python itself.</p> + + <h3 id="install-visual-c-2010-express-for-python3">Install Visual C++ 2010 Express (for Python3)</h3> + + <p>Python3.<sup>3</sup>&frasl;<sub>3</sub>.4 is built with 2010 and hence all extensions must be as well.</p> + + <p>Google for it, <a href="http://www.visualstudio.com/downloads/download-visual-studio-vs#DownloadFamilies_4">or try this link</a></p> + + <h3 id="install-visual-c-2008-express-for-python2-7">Install Visual C++ 2008 Express (for Python2.7)</h3> + + <p>For building Python2.7, 2008 version is required. Google for &ldquo;Visual C++ 2008 Express&rdquo; or <a href="http://go.microsoft.com/?linkid=7729279">try this link</a></p> + + <h2 id="3-install-64-bit-compilers">3. Install 64-bit compilers</h2> + + <p>Why did you do this Microsoft, why?!</p> + + <h3 id="install-the-windows-sdk-for-visual-studio-2010-for-python-3">Install the Windows SDK for Visual Studio 2010 (for Python 3)</h3> + + <p>The free Visual C++ 2010 Express compiler does not include 64-bit support. That is what we need the SDK to provide. Google for <strong>&ldquo;Microsoft Windows SDK for Windows 7 and .NET Framework 4&rdquo;</strong> or <a href="http://www.microsoft.com/en-us/download/details.aspx?id=8279">try this link</a>. You need the Windows 7 SDK even if you are running Windows 8. And make sure it is the version with <em>.NET Framework 4</em>, the one with <em>.NET Framework 3</em> is for Visual Studio 2008.</p> + + <p>Note: if you have <em>C++ 2010 Redistributables</em> installed, you might have + to uninstall them first or this install might fail. It might work even if some parts of the installer fails since you only need the compiler bits.</p> + + <h3 id="install-the-windows-sdk-for-visual-studio-2008-for-python-2-7">Install the Windows SDK for Visual Studio 2008 for (Python 2.7)</h3> + + <p>Same story for Visual C++ 2008 Express which is used for Python2.7. Find <strong>&ldquo;Microsoft Windows SDK for Windows 7 and .NET Framework 3.5&rdquo;</strong> or <a href="http://www.microsoft.com/en-us/download/details.aspx?id=3138">try this link</a></p> + + <h2 id="4-install-miniconda-anaconda">4. Install Miniconda/Anaconda</h2> + + <p><a href="http://continuum.io/downloads">Download page</a></p> + + <p>Download both the 32-bit and 64 bit versions. Python2 or Python3 versions do not matter as we will be using conda environments, but you do need both 32-bit and 64-bit versions! During the installation procedure, I recommend you select the following:</p> + + <ul> + <li>Install for current user only (this is the default)</li> + <li>Install into: <em>Users\YOURNAME\Anaconda</em> and <em>Users\YOURNAME\Anaconda-64</em> respectively</li> + <li>Do <strong>NOT modify the PATH</strong>, this will be done explicitly in the build script</li> + <li>Do <strong>NOT make it the default Python</strong>, we need to be able to switch easily</li> + </ul> + + <h2 id="5-create-the-environments">5. Create the environments</h2> + + <p><strong>Do this for both the 32-bit and 64-bit versions.</strong></p> + + <p>Open a command line window and navigate to <em>Users\YOURNAME\Anaconda\Scripts</em> (and same for <em>Anaconda-64</em> later) (Protip: use the file browser to get to the directory then shift-click + somewhere and select &lsquo;open command line here&rsquo;).</p> + + <p>Type the following commands:</p> + + <pre><code>conda create -n py3.4 python=3.4 numpy pip mingw + + conda create -n py3.3 python=3.3 numpy pip mingw + + conda create -n py2.7 python=2.7 numpy pip mingw + </code></pre> + + <p>Remember to repeat that process for the 64-bit/32-bit version as well!</p> + + <h2 id="6-install-git">6. Install git</h2> + + <p>This has nothing to do with the build process, but I will assume that you want to do <em>git clone</em> at some point. <a href="http://git-scm.com/download/win]">Download it here</a>. In this case you absolutely DO want it to modify your PATH.</p> + + <h1 id="actually-building-stuff">Actually building stuff</h1> + + <p>Believe it or not, but you are actually ready to compile your package. Due to multiple compilers and all that, I have made a bat-file which builds wheels for Python 2.7, 3.3 and 3.4, both for 32-bit and 64-bit:</p> + + <script src="https://gist.github.com/spacecowboy/23fcd4d40cfd1c1cd88a.js"></script> + + <p>Edit the information at the top. Now assuming everything was installed in the right place, you should just have to double click the bat-file and have built the wheel files which you can then upload to PyPi.</p> + + <h2 id="building-wheels-automatically-on-commits">Building wheels automatically on commits</h2> + + <p>Having to do this manually is a drag and so I have also come up with a fully automated solution using <a href="jenkins-ci.org">Jenkins</a>, a continuous integration system which monitors your git-repo and clones, builds new files as changes are committed.</p> + + <h3 id="install-jenkins">Install Jenkins</h3> + + <p>Just download the native package from [jenkins-ci.org]().</p> + + <h3 id="configure-jenkins">Configure Jenkins</h3> + + <p>Once Jenkins is installed, it will start itself as a Windows service. Open you web browser and head to <em>[<a href="http://localhost:8080](">http://localhost:8080](</a>)</em>. You then want to go to <em>Manage Jenkins</em>, followed by <em>Manage Plugins</em>:</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Jun/jenkins_manage.png" alt="Manage Jenkins" /></p> + + <p>Go to the <em>available</em> tab, and filter on &ldquo;GIT plugin&rdquo; (already installed in the screenshot):</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Jun/jenkins_git.png" alt="Install the GIT Plugin" /></p> + + <p>OK, now go back to the top (click Jenkins in upper left) and create a <em>New Item</em>. You want to select &ldquo;free-style software project&rdquo; and give it a name:</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Jun/jenkins_newitem.png" alt="Create a new free-style project" /></p> + + <p>First thing you need to configure is the git source. Scroll down to <em>Source Code Management</em>, select <em>git</em>, and fill in the repo-address. If you input a public GitHub address you don&rsquo;t need any credentials:</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Jun/jenkins_config_git.png" alt="Configure Git address" /></p> + + <p>I also recommend you add one <em>Additional behaviour</em>: <em>Clean before checkout</em> to guarantee that builds do not affect each other:</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Jun/jenkins_git_clean.png" alt="Clean before checkout" /></p> + + <p>Next you can setup the automatic behaviour. The easiest way is to have Jenkins poll GitHub every X minutes and check if there&rsquo;s a change. Here I have configured Jenkins to check every 15 minutes:</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Jun/jenkins_scm_poll.png" alt="SCM Polling" /></p> + + <p>So Jenkins knows what to do when it detects a change, you want to add a <em>Build step</em>, specifically <em>Execute a Windows batch file</em>:</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Jun/jenkins_build_step.png" alt="Build step" /></p> + + <p>In the box, just copy paste the batch file I <a href="https://gist.github.com/spacecowboy/23fcd4d40cfd1c1cd88a">included above</a>. Fill in the paths to your Anaconda installs and set the repo to:</p> + + <pre><code>set PKG_REPO=. + </code></pre> + + <p><img src="https://cowboyprogrammer.org/images/2014/Jun/jenkins_batch.png" alt="Pasted batch file" /></p> + + <p>Jenkins will handle the cloning and simply execute the script in the correct directory. As a final configuration step, tell Jenkins to archive build artifacts under <em>Post-Build Actions</em> since you want to be able to download the wheel files:</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Jun/jenkins_post_build.png" alt="Archive wheelfiles" /></p> + + <p>If you don&rsquo;t upload wheels to PyPi, then you can install wheels with pip from anywhere with:</p> + + <pre><code>pip install --no-index -f http://your.site/wheeldir/ yourpackage + </code></pre> + + <h3 id="enjoy-your-build-machine">Enjoy your build machine</h3> + + <p>Now you&rsquo;re all done. You can manually trigger builds in the left menu. Each build will have links for you to download the wheelfiles and the job&rsquo;s main page will always display the links to the latest artifacts.</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Jun/jenkins_result.png" alt="Job result" /></p> + + <p>There are so many plugins and options available for Jenkins so play around if you want even more stuff. Some things you can do include:</p> + + <ul> + <li>Automatically uploading artifacts to an FTP/SSH-server.</li> + <li>Sending E-mail notifications on success/failures.</li> + <li>Build only specific branches/tags.</li> + <li>Make the server public and tie login to GitHub accounts.</li> + <li><a href="https://wiki.jenkins-ci.org/display/JENKINS/ChuckNorris+Plugin">Add Chuck Norris jokes to your builds</a></li> + </ul> + + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + People have been trained to install malware + https://cowboyprogrammer.org/2014/05/people-have-been-trained-to-install-malware/ + Sun, 11 May 2014 00:00:00 +0000 + + https://cowboyprogrammer.org/2014/05/people-have-been-trained-to-install-malware/ + + + + <p><em>disclaimer: I get angry when I have to fix Windows. Expect explicit content. You have been warned.</em></p> + + <p>Being computer literate can be something of a curse. Anyone with even the most rudimentary skill set has probably sometime gotten asked if they could help someone with their computer. The other day I got asked if I could help, let&rsquo;s call him Roger, as he was having some problems with Windows Update. The initial symptoms could be clearly relayed by Roger:</p> + + <blockquote> + <p>The update gets to 30% then it just stops and reboots.</p> + </blockquote> + + <p>First step is always to recreate the problem and see it in action. No problem there. Telling Windows Update to proceed resulted in precisely the described result, after a fair bit of time waiting for a frigging restore point to be created. I&rsquo;d read about the <a href="http://techreport.com/news/26306/windows-8-1-update-failing-for-many-users">failing 8.1 upgrade</a> so I half expected it to be Microsoft&rsquo;s fault, even though this machine was running Windows 7. Roger didn&rsquo;t need anything from the update so worst case I thought, I&rsquo;ll just disable Windows Update entirely.</p> + + <h2 id="first-things-first">First things first</h2> + + <p>Once I had confirmed that there was a problem, I begun by clearing out various <em>crapware</em> that was installed, mainly different kinds of toolbars and some video player that seemed to be a repackaging of VLC mainly. It&rsquo;s hard to see why this software is installed or where it came from. Roger uses only Word and the browser. I figure he&rsquo;s the sort that clicks on various malicious ads for some reason. At least Roger has been coerced into using Chrome instead of IE&hellip;</p> + + <p>So I uninstall everything I don&rsquo;t recognize and reboot, because rebooting is something you do a lot in Windows land&hellip; OK, maybe the update will work now without all the crap installed. It&rsquo;s worth a try at least.</p> + + <blockquote> + <p>Initiate the update&hellip; It creates a restore point&hellip; wait&hellip; wait&hellip; wait&hellip;. Reboot. Update still fails at 30%.</p> + </blockquote> + + <h2 id="trial-and-error">Trial and error</h2> + + <p>Now the real work begins. Maybe Microsoft screwed up their patches or something? There were 5 security patches waiting to be installed so let&rsquo;s try them one by one.</p> + + <ul> + <li>First one fails.</li> + <li>Second one fails.</li> + <li>Everyone but the first and second one fails.</li> + </ul> + + <p>OK&hellip; Let&rsquo;s just do the damn IE patches first. They also fail. And for every try, I&rsquo;m forced to wait for Windows to create another damn restore point which takes several minutes. This on an almost brand new Intel NUC with an SSD.</p> + + <h2 id="bored">Bored&hellip;</h2> + + <p>While waiting for the damn restore points, I am seriously considering if I can just wipe the machine and force Roger to use Linux instead. All he needs is Word. So I decide to download LibreOffice and see how their docx support is these days. Downloading 200MB takes a while on the effectively 2MBit connection. Still quicker than the now <strong>cancelled</strong> restore point. So I click through the installer, get to the progress bar, and wait. And wait. And wait.</p> + + <blockquote> + <p>Why the fuck isn&rsquo;t the progress bar moving?</p> + </blockquote> + + <p>Instinctively, I open the task manager to see what the hold up is. Apparently nothing. No CPU is being used. No memory is consumed. It&rsquo;s an SSD so disk speed is not an issue. Change to the services tab and same thing, nothing obvious. I try disabling the antivirus (Microsoft&rsquo;s own so should be compatible right?). Good try chump, still no difference.</p> + + <p>Second time in the task manager, I notice something though. A service which doesn&rsquo;t really sound very official: <em>safetynut</em>. I find out where <em>safetynut.exe</em> lives and sure enough, it lives in something like:</p> + + <blockquote> + <p>C:\Program Files (x86)\Movie Toolbar\Safetynut</p> + </blockquote> + + <p>But I uninstalled that! Fine.. End process. To which Windows replies:</p> + + <blockquote> + <p>You don&rsquo;t have permission to end this process</p> + </blockquote> + + <p><strong>W T F</strong></p> + + <p>OK computer, I&rsquo;m going to stop you right there. I am the administrator. I am your <em>GOD</em>. And as said deity, I command you to end that process!</p> + + <blockquote> + <p>God or no god, you still don&rsquo;t have permission to do that</p> + </blockquote> + + <p>OK, fine, be that way. Delete <em>C:\Program Files (x86)\Movie Toolbar\Safetynut</em>.</p> + + <blockquote> + <p>Could not delete safetynut.dll as it is in use</p> + </blockquote> + + <p><em>Shaka, when the walls fell&hellip;</em></p> + + <p>It&rsquo;s an amazing <em>&ldquo;feature&rdquo;</em> in Windows that a program can lock a file and thus prevent you from deleting it. It&rsquo;s also an amazing <em>&ldquo;feature&rdquo;</em> that the administrator can be refused the permission to do something. No recourse left but to reboot into safe mode.</p> + + <h2 id="to-safe-mode-we-go">To safe mode we go!</h2> + + <p>First, I go into the normal safe mode with a desktop. Still can&rsquo;t delete the dll file though as it is &ldquo;in use&rdquo;. Time to open <em>regedit</em> and delete all references to safetynut from the registry. Search, delete. Rince, repeat&hellip;</p> + + <p>Next reboot to safe mode with only a command line window. Navigate to the folder and delete the file and the folder, then reboot.</p> + + <h2 id="success">Success!</h2> + + <p>No more safetynut. Let&rsquo;s try Windows Update again. Ooh, that&rsquo;s a mighty fast restore point creation! And the update succeeds!</p> + + <p>So apparently, safetynut was actively preventing Windows Update from proceeding. Roger promptly got a stern talking to about installing <strong>any</strong> software or clicking on ads/popups (I also installed adblock plus in Chrome). But it got me thinking about malware in general..</p> + + <h2 id="most-people-are-trained-to-install-malware">Most people are trained to install malware</h2> + + <p>In my view, none of this is the user&rsquo;s fault. The fact is that Microsoft has trained everyone to install shitty software from untrusted sources. Let&rsquo;s go back a few years, to the days of yore, in the time of Windows 98 and Windows 2000. If you reinstalled Windows back then, and I did a lot, then you very quickly got a routine for downloading the software you needed once Windows was installed.</p> + + <p>First obvious things to install were the drivers for your network card, sound card and graphics card. You even possibly needed to install SATA-drivers during the actual install or the installer wouldn&rsquo;t find your disk. If you did not have that on a <strong>floppy</strong>, you were screwed. But OK, you had your floppy, and you had your drivers on CD. Next you needed:</p> + + <ul> + <li>A browser, because Internet Explorer is still a gaping security hole</li> + <li>A firewall, because even up to XP, being exposed to the internet directly meant instant infection</li> + <li>Antivirus, anything that wasn&rsquo;t Norton would do&hellip;</li> + <li>PDF-reader</li> + <li>zip/rar-extractor</li> + </ul> + + <p>I&rsquo;d like to draw your attention to the last item. Something so mundane as a zip-extractor was not built in to Windows. XP was the first version (if I remember correctly) to include a built in zip-extractor. This specific flaw trained everyone to download Winzip or Winrar. Quite possibly, they would resort to getting a pirated serial key as well. The problem? Now users are trained to go to any website their 10-year old neighborhood tech support kid tells them to and click <em>Download</em>.</p> + + <p>Here&rsquo;s a screenshot of the pirate bay to illustrate (to clarify, do NOT download your software from torrent sites. It&rsquo;s just an example of this behavior). The big download buttons will lead to ads, online poker or who knows. We can be quite sure that they will lead to endless evil. On the internet, never <strong>FUCKING EVER</strong> press a big styled button with the text &ldquo;Download&rdquo;. The link you want is the smaller green text: &ldquo;get this torrent&rdquo;.</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/May/piratebay-downloadlinks.png" alt="Never press Download!" /></p> + + <p>Now, assuming you managed to avoid the big download buttons to download your program, you have your completely unverified <em>.exe</em> file or <em>.msi</em> file, you double click on it, and what do you get? More <em>fucking bullshit</em>. Here&rsquo;s a screenshot of the Winzip (totally unnecessary program today) installer. Right after you agree to the Winzip Terms of Service, you get another license agreement.</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/May/winzip-malware.png" alt="Toolbars!" /></p> + + <p>How the screaming fuck are ordinary users supposed to understand that pressing Next will lead to untold horrors and pressing Decline is the way to install the software they want? They won&rsquo;t of course. <em>That&rsquo;s the whole point!</em></p> + + <p>I bet this is the source of 99% of all malware on Windows. And the problem is that this is a perfectly acceptable way of getting software. Macs have the same problem to some minor extent. They are also being trained to download strange files from various pages. It is NOT accepted on Linux. The reason you don&rsquo;t need antivirus on Linux is not because the system is more secure. All software is brittle and insecure. The vital difference is in how Linux users get their software.</p> + + <h2 id="the-way-it-should-be">The way it should be</h2> + + <p>Here&rsquo;s a screenshot of the package manager in Debian:</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/May/synaptic.png" alt="Synaptic" /></p> + + <p>Now let&rsquo;s say I need a c++ compiler and one was not installed already. I search for &ldquo;c++ compiler&rdquo; and there&rsquo;s clang. To this day, I have no idea how I can get a compiler on Windows.</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/May/synaptic_clang.png" alt="Searching for a compiler" /></p> + + <p>Installing 99% of all software is super easy and reliable on Linux. All of these packages have been checked by the people working on the distro. If any package were to install a toolbar or other malware, you can bet your ass that it would be removed from the official sources. And because this is how Linux users are trained to install their software, they will have some degree of suspicion against download links on unknown websites. Installing malware becomes notably harder than installing good software.</p> + + <h2 id="the-coming-app-stores">The coming app stores</h2> + + <p>Both OS X and Windows are trying to push their users to use their &ldquo;app stores&rdquo;. While I have many negative things to say about them, they should hopefully reduce the included malware problem and train users to only install garbage from trusted sources.</p> + + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Are iPads actually a step back? + https://cowboyprogrammer.org/2014/04/are-ipads-retarding-us/ + Sat, 26 Apr 2014 00:00:00 +0000 + + https://cowboyprogrammer.org/2014/04/are-ipads-retarding-us/ + + + + <p>Think what you will of the iPad, but it has been a huge success for Apple and people love it. It&rsquo;s one of the few products that appealed (past-tense) to both the geeks and _<a href="http://en.wikipedia.org/wiki/Hoi_polloi">hoi polloi</a>_.</p> + + <p>I remember watching the keynote where the iPhone was introduced and immediately I thought <em>that&rsquo;s the pad from Star-Trek TNG!</em> I <strong>had</strong> to have it. + Apple&rsquo;s initial carrier exclusivity deals meant I had to wait for the iPhone 3g. Not only that, but because they partnered with a company I am sworned to destroy, I payed a guy in Italy to buy one unlocked and ship it to me for 7500SEK. Funny thing is that at the time I was a developer at Sony Ericsson, who did not think kindly of Apple entering their mobile domain. I got a lot of weird looks a work&hellip;</p> + + <p>Then came the iPad. Again I&rsquo;m thinking <em>holy shit that&rsquo;s awesome.</em> At this point I had upgraded to an Android device (an HTC Legend) and had come to the conclusion that Android was far more interesting as a platform because of Apple&rsquo;s restrictions on what apps can do. The customizability and capabilities on Android were far greater and as a developer, you appreciate that. However, <em>there were no Android tablets.</em> And there wouldn&rsquo;t be for a long time.</p> + + <p>I kept my cool though and managed to hold on to my money until the iPad 2 was released. I left early from work and lined up with other enthusiasts at the electronics store. At the time most people had no idea what they were going to do with it, me included, but I <strong>had</strong> to have it. I think my extended family clearly demonstrates how successful a product the iPad was. That same year I saw 3 iPads being gifted away (3 in a group of around 9 people!). By the next year, 3 more iPads were acquired. Everyone had to have one. It was one of those cases where you don&rsquo;t get it until you see it for yourself.</p> + + <h2 id="from-revolutionary-to-evolutionary">From revolutionary to evolutionary</h2> + + <p>It is both a sign of how good the original product was and how little has changed that I never felt a reason to upgrade from the iPad 2.</p> + + <ul> + <li>The battery life was fantastic.</li> + <li>The screen size just right.</li> + <li>The resolution was good enough.</li> + <li>The speed was fine (until recently).</li> + </ul> + + <p>Hardware-wise, it was feature complete. The rest could be fixed in software. They never did though. The problem is iOS. Just as I abandoned the iPhone for Android, I now abandoned the iPad for a Nexus 7. There was so much potential being held back by the limitations of iOS. + <a href="http://stratechery.com/2014/dont-give-ipad/">Stratechery</a> explains some of my frustrations well. He means it as a defense in iOS&rsquo;s favor though. But there is actually more to it than the limitations of iOS. Something inherent in the touch screen and the current mobile paradigm.</p> + + <h2 id="limitations-of-the-touch-screen">Limitations of the touch screen</h2> + + <p>I was playing <a href="https://play.google.com/store/apps/details?id=com.dotemu.rtype2">R-Type 2</a> on my Nexus 10 and kept dying on the boss in the second level. And I realized that while I might get lucky and finish the level, I would never be able to play the game well due to the touch screen.</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Apr/rtype2-boss.png" alt="R-Type 2 second level boss" /></p> + + <p>See, R-Type is a classic side-scrolling <em>shoot-em-up</em>. You pilot a spaceship and have to avoid enemy fire, hordes of enemies, and not crash into the roof or ceiling. It is a game based entirely on mastering the controls. You can see a good example of what I mean in this clip of a similar game called <em>Gradius</em> for the NES.</p> + + <iframe width="420" height="315" src="//www.youtube.com/embed/3PMpbPYB0iY" frameborder="0" allowfullscreen></iframe> + + <p>The problem I was having was that I kept crashing into the floor as I tried to manouever around the boss. Having played for and hour or two (and still being stuck on level 2!) I came to realize that it wasn&rsquo;t I that sucked, it was the controls. I had reached the limit of what was possible (precision-wise) with a touch screen.</p> + + <h3 id="noobs-forever">Noobs forever</h3> + + <p>And this is where the back-stepping begins. Growing up with NES, SNES, and a PC, I remember many older relatives noting the dexterity and precision in the thumbs of kids due to all the gaming. Video games required:</p> + + <ul> + <li>hand-eye-coordination</li> + <li>hand dexterity</li> + <li>concentration</li> + </ul> + + <p>To beat these games you needed <em>mastery</em> and <em>focus</em>. Not only was mastery required, it was the <em>reward</em>. The games suitable for touch screens can require neither. So tablet games will remain at a level no more advanced than snake or scrabble. (As a side note, what really can work is turn-based strategy games.)</p> + + <h3 id="no-such-thing-as-a-touch-typist">No such thing as a touch typist</h3> + + <p>Just as serious gaming becomes impossible due to the touch interface, serious productivity suffers from the same limitations. It&rsquo;s funny to see things like Microsoft Office being released for the iPad because it&rsquo;s impossible to work with. Serious productivity requires the efficient inputting of language, be it English or Python. The touch keyboard is unable to let you do that. There is no such thing as a touch typist. On a tablet, everyone goes back to tapping with two fingers. There is nothing to master here (due to the lack of feedback) and so everyone will remain as noobs forever.</p> + + <h2 id="the-dark-age-begins">The dark age begins</h2> + + <p>Maybe you&rsquo;re thinking to yourself:</p> + + <blockquote> + <p><em>so what if a touch screen isn&rsquo;t ideal for everything, no input device is!</em></p> + </blockquote> + + <p>If you are, then I agree. Nothing can be great at everything. You use the right tool for the right job. The problem is the tremendous success of the tablet. This is where I think the geeks have a different view of where we are headed.</p> + + <p>Geeks see the benefits of the touch screen. Its strengths, but also its weaknesses. They use it when it&rsquo;s convenient. For more serious work, they move to their workstation, with keyboard and screen.</p> + + <p>Non-geeks see the tablet as <em>&ldquo;the future&rdquo;</em>. They never liked their PC to begin with. It was just something they were forced to acquire to be able to pay their bills. They see the tablet as liberating. Geeks see the tablet as confining.</p> + + <p>The success of the tablet amongst geeks and non-geeks combined means companies are scrambling to push everything into tablet interfaces. Apple is clearly moving towards iOS as OSX is evolving. Microsoft has already gone too far:</p> + + <iframe width="560" height="315" src="//www.youtube.com/embed/WTYet-qf1jo" frameborder="0" allowfullscreen></iframe> + + + <p>But it&rsquo;s not just the tablet interface. It&rsquo;s the whole mobile paradigm that is spreading. With it comes the <em>app stores</em>, where every app is pre-approved by the benevolent corporation that owns your <del>soul</del> apps and music. The corporation reserves the right to remove any app or in-app purchase it deems unworthy of your attention. <a href="http://www.nytimes.com/2009/07/18/technology/companies/18amazon.html?_r=0">Amazon did it</a>, <a href="http://www.pcworld.com/article/2095060/apple-removes-blockchain-last-bitcoin-wallet-app-from-mobile-store.html">Apple does it all the time</a>, <a href="http://www.wired.co.uk/news/archive/2014-01/20/microsoft-removes-tor">and same for Microsoft</a>.</p> + + <p>I would say that Linux is the only alternative going forward, but then again, <a href="https://www.gnu.org/philosophy/ubuntu-spyware.html">Canonical is showing that not even Linux is safe</a>.</p> + + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Advertising, that's not intrusive. Orly? + https://cowboyprogrammer.org/2014/04/advertising-thats-not-intrusive-orly/ + Mon, 07 Apr 2014 00:00:00 +0000 + + https://cowboyprogrammer.org/2014/04/advertising-thats-not-intrusive-orly/ + + + + <p>When you have apps in Google Play (and I imagine, other App stores as well), the amount of spam you receive instantly goes up by a factor of 10. Google&rsquo;s spam filters are pretty well trained but every now and again something gets through.</p> + + <h2 id="advertising-opportunity">Advertising opportunity</h2> + + <p>Today&rsquo;s piece of bullshyt (I really meant to spell it like that) reads as follows (my emphasis):</p> + + <blockquote> + <p>Our premium advertisers are currently looking to buy android traffic at a very high price in apps like Nononsense Notes.</p> + + <p>We think you can generate up to $10 CPM with their <strong>full screen ads</strong>, which are <strong>very clean</strong>. Indeed, most of our advertisers are willing to pay, on average, between $1 and $3 per installation. You&rsquo;re free to display these ads whenever you want in your app so that it&rsquo;s <strong>not intrusive</strong>.</p> + </blockquote> + + <p>Ads are by definition <em>intrusive</em>. That&rsquo;s how they nag you into buying their stupid stuff. And it doesn&rsquo;t matter how clean your ads are. Displaying them fullscreen is <em>beyond</em> intrusive. It is down right <strong>offensive</strong>.</p> + + <p>I uninstall anything that displays obnoxious ads, be they fullscreen or notifications, and promptly give the app a one star review. I sincerely hope others afford me the same &ldquo;courtesy&rdquo; for my apps.</p> + + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Convert to Android Studio and Gradle today! + https://cowboyprogrammer.org/2014/04/convert-to-android-studio-and-gradle-today/ + Mon, 07 Apr 2014 00:00:00 +0000 + + https://cowboyprogrammer.org/2014/04/convert-to-android-studio-and-gradle-today/ + + <p>Took the plunge and converted NoNonsense Notes from Ant and Eclipse to Gradle and Android Studio. It took some googling and a fair bit of frustration but in the end it was very much worth it.</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Apr/android_studio_shot1.png" alt="Android Studio screenshot" /></p> + + <p>Eclipse has been broken for me for about 6 months or so. So very little of it&rsquo;s powerful features were available during development. The ant build worked fine but Eclipse uses its own which is mysterious and requires constant refreshes and cleaning. Often in a particular order on each library project which was a dependency.</p> + + <p>With gradle on the other hand, if it builds in the console then it will build in Android Studio. Once again I am able to use a debugger!</p> + + <p>I can warmly recommend people to take a day and setup some <em>build.gradle</em> files.</p> + + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Dark themes everywhere + https://cowboyprogrammer.org/2014/04/dark-themes-everywhere/ + Mon, 07 Apr 2014 00:00:00 +0000 + + https://cowboyprogrammer.org/2014/04/dark-themes-everywhere/ + + + + <p>I have come to really appreciate dark themes in the programs that I + use. Be it any of my Android devices or my <em>real</em> computers, I prefer + dark themes. In Emacs, it&rsquo;s as easy as <code>M-x load-theme wombat</code>. And + wombat is probably my current favourite dark theme. Dark greys + combined with nice shades of blue, green and red. This entire web site + is (at the time of this post) presented in the wombat colors.</p> + + <p>Of course, a lot of time is spent in the web browser and I have come + to understand that most web designers don&rsquo;t share my love for the + darkness. Long have I suffered in the depressing and blinding white + backgrounds of the &ldquo;Web 2.0&rdquo;.</p> + + <p><strong>N O - M O R E</strong></p> + + <p>I have just come into the possession of some writings that magically + destroys the light infestation in my life. Now I can enjoy the dark + majestic background that is <code>#202020</code> everywhere.</p> + + <p><img src="https://cowboyprogrammer.org/images/2014/Apr/dark-conkeror-google.png" alt="Dark conkeror in Google" /></p> + + <p>This is naturally possible to do in most browsers but I&rsquo;ll talk about + conkeror specifically. What&rsquo;s most interesting is probably the CSS + so you don&rsquo;t have to write that yourself.</p> + + <p>Great thanks to <a href="http://jaderholm.com/blog/programothesis-18-conkeror-color-theme">Scott Jaderholm</a> for doing all the work.</p> + + <h2 id="conkeror">Conkeror</h2> + + <p><a href="http://conkeror.org">Conkeror</a> is a web browser based on the same + underlying tech as Firefox. What makes it unique is its Emacs-like interface. It is essentially what you imagine a good browser in Emacs would be like. Like Emacs, tweaks can be made by adding code (javascript) to its configuration files.</p> + + <p>By default, it loads all <code>.js</code> files in <code>~/.conkerorrc/</code>. So what you want to do is download the <code>color-theme.js</code> and <code>site-css</code> + files/folders from <a href="https://github.com/scottjad/dotfiles/tree/master/.conkerorrc">Scott&rsquo;s repo</a> and put that in your <code>.conkerorrc</code> dir. That&rsquo;s basically it, but a few additional tweaks can be done.</p> + + <h2 id="fixing-github-diff-colors">Fixing GitHub diff colors</h2> + + <p>GitHub must have updated their styles since Scott&rsquo;s post. To fix the diff colors, the following works (replace the existing GitHub entry with this):</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span> make_css_data_uri( + [<span style="color: #4070a0">&#39;.k { font-weight: bold !important; }&#39;</span>, <span style="color: #60a0b0; font-style: italic">// keyword</span> + <span style="color: #4070a0">&#39;a, h1, code, pre {text-shadow: 0px 0px 0px black !important; }&#39;</span>, + <span style="color: #4070a0">&#39;.nv { color: #aaa !important; } &#39;</span>, <span style="color: #60a0b0; font-style: italic">// function name/variable name</span> + <span style="color: #4070a0">&#39;.s { color: #95e454 !important; } &#39;</span>, <span style="color: #60a0b0; font-style: italic">// string</span> + <span style="color: #4070a0">&#39;.c1 { color: #99968b !important; &#39;</span><span style="color: #666666">+</span> + <span style="color: #4070a0">&#39;font-style: normal !important; }&#39;</span>, <span style="color: #60a0b0; font-style: italic">// comment</span> + <span style="color: #4070a0">&#39;.gi, .gi * { color: #1AFF84 !important; }&#39;</span>, <span style="color: #60a0b0; font-style: italic">// inserted line</span> + <span style="color: #4070a0">&#39;.gd, .gd * { color: #ff0080 !important; }&#39;</span> <span style="color: #60a0b0; font-style: italic">// deleted line</span> + ], $domains <span style="color: #666666">=</span> <span style="color: #4070a0">&quot;github.com&quot;</span>) + </code></pre></div> + + <p><img src="https://cowboyprogrammer.org/images/2014/Apr/dark-conkeror-github.png" alt="Dark conkeror GitHub" /></p> + + <h2 id="enabling-dark-theme-by-default">Enabling dark theme by default</h2> + + <p>I always want the dark theme enabled by default. This is the main theme function (I removed all themes but the dark one as well):</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span> <span style="color: #007020; font-weight: bold">function</span> global_color_theme(name, key, styles) { + interactive_cmd <span style="color: #666666">=</span> <span style="color: #4070a0">&quot;toggle-&quot;</span> <span style="color: #666666">+</span> name <span style="color: #666666">+</span> <span style="color: #4070a0">&quot;-mode&quot;</span>; + <span style="color: #60a0b0; font-style: italic">// Enable by default here</span> + <span style="color: #007020; font-weight: bold">for</span>(x <span style="color: #007020; font-weight: bold">in</span> styles) { + register_user_stylesheet(styles[x]); + } + color_theme_toggle[name] <span style="color: #666666">=</span> <span style="color: #007020; font-weight: bold">true</span>; + <span style="color: #60a0b0; font-style: italic">// Add toggle function</span> + interactive(interactive_cmd, <span style="color: #4070a0">&quot;&quot;</span>, + <span style="color: #007020; font-weight: bold">function</span> (I) { + <span style="color: #007020; font-weight: bold">if</span> (color_theme_toggle[name]) { + <span style="color: #007020; font-weight: bold">for</span>(x <span style="color: #007020; font-weight: bold">in</span> styles) { + unregister_user_stylesheet(styles[x]); + } + + color_theme_toggle[name] <span style="color: #666666">=</span> <span style="color: #007020; font-weight: bold">false</span>; + } <span style="color: #007020; font-weight: bold">else</span> { + <span style="color: #007020; font-weight: bold">for</span>(x <span style="color: #007020; font-weight: bold">in</span> styles) { + register_user_stylesheet(styles[x]); + } + color_theme_toggle[name] <span style="color: #666666">=</span> <span style="color: #007020; font-weight: bold">true</span>; + } + }); + <span style="color: #60a0b0; font-style: italic">// Add a disable function</span> + interactive(<span style="color: #4070a0">&quot;disable-&quot;</span><span style="color: #666666">+</span>name<span style="color: #666666">+</span><span style="color: #4070a0">&quot;-theme&quot;</span>,<span style="color: #4070a0">&quot;&quot;</span>, <span style="color: #007020; font-weight: bold">function</span>() { + <span style="color: #007020; font-weight: bold">for</span>(x <span style="color: #007020; font-weight: bold">in</span> styles) { + unregister_user_stylesheet(styles[x]); + } + color_theme_toggle[name] <span style="color: #666666">=</span> <span style="color: #007020; font-weight: bold">false</span>; + }); + <span style="color: #60a0b0; font-style: italic">// Add an enable function</span> + interactive(<span style="color: #4070a0">&quot;enable-&quot;</span><span style="color: #666666">+</span>name<span style="color: #666666">+</span><span style="color: #4070a0">&quot;-theme&quot;</span>,<span style="color: #4070a0">&quot;&quot;</span>, <span style="color: #007020; font-weight: bold">function</span>() { + <span style="color: #007020; font-weight: bold">for</span>(x <span style="color: #007020; font-weight: bold">in</span> styles) { + register_user_stylesheet(styles[x]); + } + color_theme_toggle[name] <span style="color: #666666">=</span> <span style="color: #007020; font-weight: bold">true</span>; + }); + <span style="color: #60a0b0; font-style: italic">// I don&#39;t care for a keybinding for this</span> + <span style="color: #60a0b0; font-style: italic">//define_key(default_global_keymap, key, interactive_cmd);</span> + } + </code></pre></div> + + <h2 id="make-the-wombat-theme-even-darker">Make the Wombat theme even darker</h2> + + <p>I prefer an even darker background than the one provided. I have also learned the importance of the <code>!important</code> tag and semicolons in css (damn you!!!). This is incidentally the wombat css that I&rsquo;m using for syntax highlighting here on the site. If you change anything don&rsquo;t forget to make sure the line ends with <code>!important</code> (and semicolon in case of multiple attributes) or the css won&rsquo;t take.</p> + + <p>The changes are pretty much in the upper section but I re-formatted the file to make it more readable:</p> + <div class="highlight" style="background: #f0f0f0"><pre style="line-height: 125%"><code><span></span> <span style="color: #062873; font-weight: bold">code</span><span style="color: #666666">,</span> <span style="color: #062873; font-weight: bold">pre</span><span style="color: #666666">,</span> <span style="color: #062873; font-weight: bold">code</span> <span style="color: #666666">*,</span> <span style="color: #062873; font-weight: bold">pre</span> <span style="color: #666666">*</span> { + <span style="color: #60a0b0; font-style: italic">/* Code should always be in monospace */</span> + <span style="color: #007020; font-weight: bold">font-family</span>: DejaVu Sans Mono <span style="color: #007020">!important</span>; + <span style="color: #60a0b0; font-style: italic">/*color: #f6f3e8 !important;*/</span> + <span style="color: #60a0b0; font-style: italic">/*background-color: #202020 !important;*/</span> + <span style="color: #60a0b0; font-style: italic">/*font-size: 10pt !important;*/</span> + } + + .<span style="color: #0e84b5; font-weight: bold">linenos</span> <span style="color: #666666">*</span> { + <span style="color: #007020; font-weight: bold">margin-right</span>: <span style="color: #40a070">0.5</span><span style="color: #902000">em</span> <span style="color: #007020">!important</span>; + } + + .<span style="color: #0e84b5; font-weight: bold">highlight</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlighttable</span> { + <span style="color: #007020; font-weight: bold">background</span>: <span style="color: #40a070">#303030</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } + .<span style="color: #0e84b5; font-weight: bold">hll</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">hll</span> { + <span style="color: #007020; font-weight: bold">background-color</span>: <span style="color: #40a070">#ffffcc</span> <span style="color: #007020">!important</span>; + } + .<span style="color: #0e84b5; font-weight: bold">c</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">c</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#99968b</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Comment */</span> + .<span style="color: #0e84b5; font-weight: bold">err</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">err</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Error */</span> + .<span style="color: #0e84b5; font-weight: bold">g</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">g</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Generic */</span> + .<span style="color: #0e84b5; font-weight: bold">k</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">k</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#8ac6f2</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Keyword */</span> + .<span style="color: #0e84b5; font-weight: bold">l</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">l</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal */</span> + .<span style="color: #0e84b5; font-weight: bold">n</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">n</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name */</span> + .<span style="color: #0e84b5; font-weight: bold">o</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">o</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Operator */</span> + .<span style="color: #0e84b5; font-weight: bold">x</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">x</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Other */</span> + .<span style="color: #0e84b5; font-weight: bold">p</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">p</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Punctuation */</span> + .<span style="color: #0e84b5; font-weight: bold">cm</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">cm</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#99968b</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Comment.Multiline */</span> + .<span style="color: #0e84b5; font-weight: bold">cp</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">cp</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#e5786d</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Comment.Preproc */</span> + .<span style="color: #0e84b5; font-weight: bold">c1</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">c1</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#99968b</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Comment.Single */</span> + .<span style="color: #0e84b5; font-weight: bold">cs</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">cs</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#99968b</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Comment.Special */</span> + .<span style="color: #0e84b5; font-weight: bold">gd</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">gd</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Generic.Deleted */</span> + .<span style="color: #0e84b5; font-weight: bold">ge</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">ge</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Generic.Emph */</span> + .<span style="color: #0e84b5; font-weight: bold">gr</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">gr</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Generic.Error */</span> + .<span style="color: #0e84b5; font-weight: bold">gh</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">gh</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-weight</span>: <span style="color: #007020; font-weight: bold">bold</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Generic.Heading */</span> + .<span style="color: #0e84b5; font-weight: bold">gi</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">gi</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Generic.Inserted */</span> + .<span style="color: #0e84b5; font-weight: bold">go</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">go</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#808080</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">background-color</span>: <span style="color: #40a070">#202020</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Generic.Output */</span> + .<span style="color: #0e84b5; font-weight: bold">gp</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">gp</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Generic.Prompt */</span> + .<span style="color: #0e84b5; font-weight: bold">gs</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">gs</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Generic.Strong */</span> + .<span style="color: #0e84b5; font-weight: bold">gu</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">gu</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-weight</span>: <span style="color: #007020; font-weight: bold">bold</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Generic.Subheading */</span> + .<span style="color: #0e84b5; font-weight: bold">gt</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">gt</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Generic.Traceback */</span> + .<span style="color: #0e84b5; font-weight: bold">kc</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">kc</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#8ac6f2</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Keyword.Constant */</span> + .<span style="color: #0e84b5; font-weight: bold">kd</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">kd</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#8ac6f2</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Keyword.Declaration */</span> + .<span style="color: #0e84b5; font-weight: bold">kn</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">kn</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#8ac6f2</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Keyword.Namespace */</span> + .<span style="color: #0e84b5; font-weight: bold">kp</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">kp</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#8ac6f2</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Keyword.Pseudo */</span> + .<span style="color: #0e84b5; font-weight: bold">kr</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">kr</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#8ac6f2</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Keyword.Reserved */</span> + .<span style="color: #0e84b5; font-weight: bold">kt</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">kt</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#cae682</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Keyword.Type */</span> + .<span style="color: #0e84b5; font-weight: bold">ld</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">ld</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.Date */</span> + .<span style="color: #0e84b5; font-weight: bold">m</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">m</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#e5786d</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.Number */</span> + .<span style="color: #0e84b5; font-weight: bold">s</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">s</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#95e454</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.String */</span> + .<span style="color: #0e84b5; font-weight: bold">na</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">na</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#cae682</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Attribute */</span> + .<span style="color: #0e84b5; font-weight: bold">nb</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">nb</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Builtin */</span> + .<span style="color: #0e84b5; font-weight: bold">nc</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">nc</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Class */</span> + .<span style="color: #0e84b5; font-weight: bold">no</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">no</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#e5786d</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Constant */</span> + .<span style="color: #0e84b5; font-weight: bold">nd</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">nd</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#ff0080</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Decorator */</span> + .<span style="color: #0e84b5; font-weight: bold">ni</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">ni</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#e7f6da</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Entity */</span> + .<span style="color: #0e84b5; font-weight: bold">ne</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">ne</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Exception */</span> + .<span style="color: #0e84b5; font-weight: bold">nf</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">nf</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#cae682</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Function */</span> + .<span style="color: #0e84b5; font-weight: bold">nl</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">nl</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Label */</span> + .<span style="color: #0e84b5; font-weight: bold">nn</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">nn</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Namespace */</span> + .<span style="color: #0e84b5; font-weight: bold">nx</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">nx</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Other */</span> + .<span style="color: #0e84b5; font-weight: bold">py</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">py</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Property */</span> + .<span style="color: #0e84b5; font-weight: bold">nt</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">nt</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#8ac6f2</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Tag */</span> + .<span style="color: #0e84b5; font-weight: bold">nv</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">nv</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#cae682</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Variable */</span> + .<span style="color: #0e84b5; font-weight: bold">ow</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">ow</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Operator.Word */</span> + .<span style="color: #0e84b5; font-weight: bold">w</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">w</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Text.Whitespace */</span> + .<span style="color: #0e84b5; font-weight: bold">mf</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">mf</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#e5786d</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.Number.Float */</span> + .<span style="color: #0e84b5; font-weight: bold">mh</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">mh</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#e5786d</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.Number.Hex */</span> + .<span style="color: #0e84b5; font-weight: bold">mi</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">mi</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#e5786d</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.Number.Integer */</span> + .<span style="color: #0e84b5; font-weight: bold">mo</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">mo</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#e5786d</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.Number.Oct */</span> + .<span style="color: #0e84b5; font-weight: bold">sb</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">sb</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#95e454</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.String.Backtick */</span> + .<span style="color: #0e84b5; font-weight: bold">sc</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">sc</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#95e454</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.String.Char */</span> + .<span style="color: #0e84b5; font-weight: bold">sd</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">sd</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#95e454</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.String.Doc */</span> + .<span style="color: #0e84b5; font-weight: bold">s2</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">s2</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#95e454</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.String.Double */</span> + .<span style="color: #0e84b5; font-weight: bold">se</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">se</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#95e454</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.String.Escape */</span> + .<span style="color: #0e84b5; font-weight: bold">sh</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">sh</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#95e454</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.String.Heredoc */</span> + .<span style="color: #0e84b5; font-weight: bold">si</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">si</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#95e454</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.String.Interpol */</span> + .<span style="color: #0e84b5; font-weight: bold">sx</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">sx</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#95e454</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.String.Other */</span> + .<span style="color: #0e84b5; font-weight: bold">sr</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">sr</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#95e454</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.String.Regex */</span> + .<span style="color: #0e84b5; font-weight: bold">s1</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">s1</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#95e454</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.String.Single */</span> + .<span style="color: #0e84b5; font-weight: bold">ss</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">ss</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#95e454</span> <span style="color: #007020">!important</span>; + <span style="color: #007020; font-weight: bold">font-style</span>: <span style="color: #007020; font-weight: bold">italic</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.String.Symbol */</span> + .<span style="color: #0e84b5; font-weight: bold">bp</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">bp</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#f6f3e8</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Builtin.Pseudo */</span> + .<span style="color: #0e84b5; font-weight: bold">vc</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">vc</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#cae682</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Variable.Class */</span> + .<span style="color: #0e84b5; font-weight: bold">vg</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">vg</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#cae682</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Variable.Global */</span> + .<span style="color: #0e84b5; font-weight: bold">vi</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">vi</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#cae682</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Name.Variable.Instance */</span> + .<span style="color: #0e84b5; font-weight: bold">il</span><span style="color: #666666">,</span> .<span style="color: #0e84b5; font-weight: bold">highlight</span> .<span style="color: #0e84b5; font-weight: bold">il</span> { + <span style="color: #007020; font-weight: bold">color</span>: <span style="color: #40a070">#e5786d</span> <span style="color: #007020">!important</span>; + } <span style="color: #60a0b0; font-style: italic">/* Literal.Number.Integer.Long */</span> + </code></pre></div> + + + + + + + + https://cowboyprogrammer.org/css/images/logo.png + + Getting Adblock to work in Conkeror + https://cowboyprogrammer.org/2014/04/getting-adblock-to-work-in-conkeror/ + Mon, 07 Apr 2014 00:00:00 +0000 + + https://cowboyprogrammer.org/2014/04/getting-adblock-to-work-in-conkeror/ + + <p>Conkeror supports firefox addons to varying degrees. I found that a good indicator is if the addon has support for Firefox 3. This means you can use Adblock 2.0. But, the GUI for selecting a filter subscription will not show. Hence the need to install Adblock 1.3 <strong>first</strong>. To get Adblock up and running in Conkeror, do the following:</p> + + <ol> + <li>In your rc-file, set: + <code>javascript + session_pref(&quot;xpinstall.whitelist.required&quot;, false); + </code></li> + <li>Go to <a href="https://addons.mozilla.org/en-US/firefox/addon/adblock-plus/versions/">Adblock versions</a>.</li> + <li>Install <strong>1.3.10</strong>.</li> + <li>Open extensions: <code>M-x extensions</code>.</li> + <li>Go into preferences for Adblock and subscribe to a list, like + <em>Easylist</em>. The list might complain about requiring Adblock 2 for + some filters, which is fine since we will fix that next.</li> + <li>Now go back and download/install version <strong>2.0.1</strong>.</li> + <li>Enjoy the web again.</li> + </ol> + + + + + + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_cyklistbloggen.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_cyklistbloggen.xml new file mode 100644 index 0000000..d8aa31a --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_cyklistbloggen.xml @@ -0,0 +1,557 @@ + + + + Cyklistbloggen + + http://www.cyklistbloggen.se + Två Stockholmscyklister om vardagscyklande, utrustning och politik + Thu, 27 Apr 2017 13:16:30 +0000 + sv-SE + hourly + 1 + https://wordpress.org/?v=4.7.4 + + + http://www.cyklistbloggen.se/wp-content/uploads/2016/10/cropped-WP-ikon_512x_512-1-32x32.png + Cyklistbloggen + http://www.cyklistbloggen.se + 32 + 32 + + + Ingen ombyggning av Danvikstull + http://www.cyklistbloggen.se/2017/04/ingen-ombyggning-av-danvikstull/ + http://www.cyklistbloggen.se/2017/04/ingen-ombyggning-av-danvikstull/#comments + Thu, 27 Apr 2017 13:00:11 +0000 + + + + + + + http://www.cyklistbloggen.se/?p=26187 + Läs vidare ]]> + +

     

    +

    För mer än tre år sedan aviserade dåvarande Allians-styrda Stockholms Stad att man äntligen skulle bredda den extremt smala passagen på pendlingsstråket vid Danvikstull:

    +

    +

    I smalaste passagen är gångdelen bara något tiotal centimeter brett och det är är en väg som används av trafikanter från flera kommuner och stadsdelar, från Nacka, Värmdö, Söderort och de över 30000 i Hammarby Sjöstad.

    +

    När vi ändå skrev om cykelvägen till Skanstull, passade vi på att fråga Stockholms Stad hur det går. Deras svar?

    + +

    +

    ”Ambitionen är fortfarande att öka framkomligheten för cykeltrafiken längs det aktuella stråket. På sikt kommer Hästholmsviadukten, bron även Värmdöleden, behöva ersättas. Om detta görs med en ny konstruktion utan bropelare skulle plats kunna frigöras så att gång- och cykelbanan kan breddas. I dagsläget pågår dock inget aktivt arbete med detta.”

    +


    +I dagsläget pågår dock inget aktivt arbete med detta.

    +

    Hästholmsviadukten är alltså bron som går över pendlingsstråket. Här är platsen på Google Maps. Bilvägen brevid, Värmdöleden, är sexfilig in till Södermalm och innerstaden.

    +

    2014 var tanken att vägen skulle breddas genom att berget sågades bort. Men det gick inte. Så här sa Trafikkontoret då:

    +

    – Arbetet visade sig ta mycket längre tid än beräknat och skulle ha medfört trafikstörningar på Värmdöleden under tre-fyra månader, vilket skulle ha inneburit stora påfrestningar för resandet.

    +

    Tre-fyra månader alltså av meck för dem som vill köra in i innerstaden, på vägen som 2017 leder till Stadsgårdsleden och den i princip avstängda Slussen.

    +

    För er som följt bloggen över tid så vet ni att det tar tid att planera vägarbeten. Ett ärende där det faktiskt pågår aktivt arbete kan ta fyra-fem år att genomföra. Att bygga ny bro förmodligen ännu längre.

    +

    Så ni som cyklar över Danvikstull, förvänta er ingen förändring alls de närmaste tio åren.

    +]]>
    + http://www.cyklistbloggen.se/2017/04/ingen-ombyggning-av-danvikstull/feed/ + 3 +
    + + Nej, SvD, antalet dödade cyklister ökar inte. + http://www.cyklistbloggen.se/2017/04/nej-svd-antalet-dodade-cyklister-okar-inte/ + http://www.cyklistbloggen.se/2017/04/nej-svd-antalet-dodade-cyklister-okar-inte/#comments + Wed, 26 Apr 2017 18:28:25 +0000 + + + + + + http://www.cyklistbloggen.se/?p=26179 + Läs vidare ]]> + +

     

    +

    SvD fortsätter sin serie ”Det är vår, vi drar ihop något om cyklister” och slår fast att:

    +

    +

    ”Antalet cyklister som dör i trafiken ökar”. Jösses, det har vi inte hört sedan 2014.

    +

    Skälet till det är att man måste vara lite selektiv för att få till den där rubriken. 2014 dog enligt VTI 32 (33 enligt Trafa) cyklister i trafiken, mot 16 (14 enligt Trafa) 2013. En dramatisk ökning – som avspeglade sig i rubriker om massdöd bland cyklister i tidningarna under 2015. Under 2016 däremot var det tystare. Skälet var att under 2015 dog ”bara” 16 cyklister igen. Så hepp, det minskade alltså. Och det är inte lika roligt att skriva rubriken ”Antalet döda cyklister i trafiken minskade drastiskt!” av någon anledning.

    +

    Så, 2016 hamnade siffran enligt Trafikanalys rapport som släpptes idag på 22 döda cyklister. Cue alltså ”Antalet döda ökar”. Nu ser den vakne lite ett mönster här. 16, 32, 16, 22. Vi plottar det i ett diagram istället:

    +

    +

    Vi meckade in de två senaste åren där. Som ni ser ökar inte antalet dödade cyklister, annat än i den snäva betydelsen ”sedan förra året”. Tittar man tillbaks hela vägen till 1988 så minskar antalet. Rejält. Man skulle kunna börja tala om att minskningen planat ut sedan 2009-2010 – och det trots att antalet cyklister ökat senaste åren.

    +

    Men ökar gör det inte. Men det är det knepigare att skapa rubriker av.

    +

    Resten av artikeln var faktiskt läsvärd:

    +

    Antalet cyklister som dör i trafiken ökar (SvD)

    +

    Till exempel ska NTF’s generalsekreterare Marie Nordén ha all cred för att hon inte nämner hjälm utan:

    +

    – Trafikmiljön är i mångt och mycket byggd för bilismen, sen har man ofta klämt in cyklister och fotgängare på samma område, säger hon.

    +

    och

    +

    – Ett sätt att försöka minska olyckorna vore också att införa enhetliga lagar så att samma regler gäller vid både cykelpassage och cykelöverfart, tycker Marie Nordén.

    +

    Nu börjar det likna något.

    +

     

    +]]>
    + http://www.cyklistbloggen.se/2017/04/nej-svd-antalet-dodade-cyklister-okar-inte/feed/ + 3 +
    + + ”Vilka är de värsta cyklisterna tycker du?” – Svenska Dagbladet skriver om cykling idag. + http://www.cyklistbloggen.se/2017/04/vilka-ar-de-varsta-cyklisterna-tycker-du-svenska-dagbladet-skriver-om-cykling-idag/ + http://www.cyklistbloggen.se/2017/04/vilka-ar-de-varsta-cyklisterna-tycker-du-svenska-dagbladet-skriver-om-cykling-idag/#comments + Sun, 23 Apr 2017 10:05:26 +0000 + + + + + + http://www.cyklistbloggen.se/?p=26162 + Läs vidare ]]> + +

    Det tydligaste cykelvårtecknet är inte fler cyklister utan att sånt här plötsligt dyker upp i ens Facebookflöde:

    +

    +

    Vilka är de värsta cyklisterna, tycker du?” – sug på den frågan (vill man svara, går det att klicka på bilden för att hamna på inlägget).

    +

    Ja vilka är de värsta cyklisterna? Och varför kör cyklisterna på alla fotgängare hela tiden? Ska vi ha det så här! VA??!!

    +

    Och varför skulle man inte göra en Facebookuppdatering polariserad och se till att piska upp lite ilska mellan olika grupper? Vad kan vara fel med det? Det är väl det sociala medier är till för. Fast vem ska vi peka finger åt?

    +

    Ja vi tar väl det vi brukar, cyklisterna. De är ju fan i vägen överallt.

    +

    Vi kan såklart inte låta bli att klicka och hey, vi blir besvikna. Större delen av SvDs artikel är något så märkligt som en rätt nyanserad och problematiserande bild av det faktum att cyklister i Stockholm i princip alltid cyklar i någon annans vägbana. Antingen avskydda bland bilar, eller avskydda på kombinerade gång- och cykelbanor där de enligt till exempel polisen har att anpassa sig efter fotgängarna.

    +

    Cyklister behöver rätt till egen väg

    +

    +

    Det negativa möjligtvis att man som vanligt buntar ihop två helt olika saker, a) skyldighet att följa trafikregler och b) att antalet skadade i cykelolyckor ökar, det sista paradoxalt nog ifrågasatt nästan direkt i texten:

    +

    Till stor del beror ökningen på att fler akutsjukhus nu anslutit sig till att rapportera till Transportstyrelsen, framhåller Tomas Fredlund, trafiksäkerhetsanalytiker vid Transportstyrelsen.

    +

    Det här är något vi varit inne på förut, nämligen att det kanske är så att antalet olyckor inte ökar, utan att statistiken förbättrats:

    +

    ”Fler cyklister än bilister vårdas på sjukhus” – statistik, statistik, statistik

    +

    +

    Så, det kanske inte ens stämmer.

    +

    Men, överlag rimlig text med citat som:

    +

    – Man bör i alla lägen separera trafikslag och ska helst inte blanda cyklister och gående, säger han.

    +

    – Medan man i Nederländerna och Danmark i högre grad ser på cykeln som ett eget trafikslag, har man i Sverige buntat ihop fotgängare och cyklister på olyckligt sätt.

    +

    Vi håller som sagt med – Stockholms vanföreställning att cyklister bara är ett slags fotgängare är vansinnig.

    +

    Men rimligt hela vägen ner tills man avslutar med ytterligare en formular 1A – random polisman som tycker till:

    +

    – Bilister följer vanligtvis regelverk, vilket jag har en känsla av att många cyklister inte gör. När vi genomför våra spontana kontroller riktade mot cyklister ser vi i regel väldigt många regelbrott.

    +

    Eller hur. En känsla av att ”många” cyklister inte gör. Vi har ju dragit den här diskussionen en miljard varv vid det här laget, så vi sammanfattar kort: Ja, det finns cyklister som bryter mot lagen, ja det är dumt – när det gäller övergångsställen har vi tex skrivit:

    +

    Stanna för fotgängare. Det är inte svårt. Bara gör det.

    +

    +

    Men random polisman den här gången, Hans Nilsson, kommissarie vid trafiksektorn vid Polisen i Stockholm väljer att ta det ett steg till:

    +

    – Bilister följer vanligtvis regelverk,

    +

    Eller hur. Bilister följer lagen och cyklister kör som tokar. Nu tänker vi inte fasta i den här ”Vem är värst”-diskussionen, den ståndpunkt vi tycker vi har stöd för är att det finns bra och det finns dåliga trafikanter och det styrs inte av hur de tar sig fram. Cyklister är inte värre än någon annan, eller bättre för den delen.

    +

    Efter en satsning. Rattfulla bilister mindre oroande än cyklister.

    +

    Men. Det här med att bilister ”vanligtvis” följer regelverk, alltså här i betydelsen ”till skillnad från cyklister”? We beg to differ.
    +

    +

    +

    +


    +

    +

    +

    +

    +

    Och minns när kommunen tvingades installera spårviddshinder på Skeppsbron eftersom ingen brydde sig om att det var förbjudet att köra där. Så här såg det ut:

    +

    +

    Och så här skriver polisen nu 2017, mer än ett år senare:

    +

    +

    Och vi avslutar med att utifrån det konstatera att förståelsen och toleransen för lagbrott beror på vilket trafikslag man tillhör.

    +

    Det är dags att sätta stopp för cykelterroristerna.

    +

    +

    Det är skillnad på ”fort” och ”fort”

    +

    +

    Viljan att förstå trafikbrott är stor. Ibland.

    +

    +

    Här hittar man artikeln:
    +SvD.se: ”80 av 100 cyklister stannar inte för fotgängare

    +

    Läs också:

    +

    Cyklister är trafikens lagbrytare

    +

    +]]>
    + http://www.cyklistbloggen.se/2017/04/vilka-ar-de-varsta-cyklisterna-tycker-du-svenska-dagbladet-skriver-om-cykling-idag/feed/ + 10 +
    + + Så här skulle vi gjort Skanstull-Hammarby Allé + http://www.cyklistbloggen.se/2017/04/sa-har-skulle-vi-gjort-skanstull-hammarby-alle/ + http://www.cyklistbloggen.se/2017/04/sa-har-skulle-vi-gjort-skanstull-hammarby-alle/#comments + Thu, 20 Apr 2017 10:25:09 +0000 + + + + + + + http://www.cyklistbloggen.se/?p=26128 + Läs vidare ]]> + +

    Nu har vi i två inlägg tittat på nya Skansbron-Hammarby Allé, pendlingsväg för dem av de 35000 sjöstadsborna som väljer att cykla in till city. Vi är inte jätteimponerade. Vi tänkte därför lite konstruktivt visa hur vi, som amatörer på trafikplanering, men rätt vana pendlingscyklister, hade gjort. Och nu är vi rädda att det förmodligen mer blir en post för de närmast sörjande, alltså sjöstadsbor och kanske boende i Hammarbyhöjden.

    +

    För det första hade vi utgått från premisserna att Hammarby Sjöstad är a) en stadsdel med extremt höga miljöambitioner b) Hem för alltså 35000 personer och c) bara har en alternativ annan cykelväg till city, som ser ut så här:

    +

    Alltså vägen över Danvikstull. Dubbelriktad cykelväg. Dubbelriktad gångväg. Som förövrigt skulle breddas 2014, men det blev inte av.

    +

     

    +

    I korthet, vi hade utgått från att det är en rätt viktig väg att få fart på cykling på. Och som av en slump hittade vi häromdagen cykelappen Stravas ”heatmap”, där man kan se hur de som använder appen cyklar. Nu ska sägas att många av dem som använder Strava är motionscyklister och som sådana kanske inte helt representativa för oss vardagscyklister. Men det ger ändå en indikation. Här är vägen 2014:

    +

    +

    Ni ser att den höga Skansbron är knallröd av intensiv cykeltrafik. Ni ser också att Hammarby Allé och sträckan mellan de två cirkulationsplatserna (markerat med pedagogiska gröna pilar) är ljus till mörkblå. Notera att 2014-2015 var cykeltrafiken omledd till den mörkblå södra sidan av Hammarby Allé.

    +

    +

    2015 är ena sträckan, den in mot sjöstan också den röd. Trafiken från Hammarbyhöjden ner till Skansbron har också den ökat rejält. Det här är två år sedan. Jag har inte sett aktuella heatmaps, men jag tror inte de minskat.

    +

    Det här är en viktig väg för flera stadsdelar och den blir alltså allt viktigare.

    +

    Så här går cykelvägen idag (grönt södergående, blått norrgående):

    +

    +

    Vi hade också blivit glada över att det finns gott om utrymme att ta av hela vägen. Av någon anledning är det dubbelriktade cykelvägar på bägge sidor av bron, liksom förövrigt dito gångvägar. Som dubbelriktade är de smala, men som enkelriktade blir de plötsligt helt rimliga. Det är alltså rätt lätt att snabbt göra det mycket rymligare.

    +

    När vi alltså ändå skulle bygga ett helt nytt bostadsområde längs Hammarby Allé, hade vi passat på att göra justeringar ända ifrån Bohusgatan. Så här:

    +

    +

    Vi hade alltså lagt en ny cykelväg på ”rätt” sida av vägen och byggt om korsningen, förmodligen med cykelöverfarter. Kom ihåg att det här är en väg viktig främst för cykeltrafiken och buss 74 – som här inte påverkas alls, eller positivt eftersom den här korsningen blir tydligare.

    +

    Det gör att cykeltrafiken nu påbörjar överfarten av Skansbron på ”rätt” sida, vilket gör det lättare när vi sedan kommer bort till cirkulationsplatserna. Dessutom skulle det betyda att cyklisterna slipper sånt här meck:

    +


    +Med ”vår” väg cyklar man bara rakt fram, iakttar väjningsplikten vid övergångsstället och fortsätter sedan rakt fram. Så här ser det ut från andra hållet:

    +

    +

    Nu behövs alltså egentligen ingenting göras förrän man kommer till cirkulationsplatsen på andra sidan bron – möjligtvis kan man passa på att göra cykelöverfarter förbi de två utfarterna, den ena till Eriksdalsbadets parkering, den andra ner till varvet. Cykelvägarna finns där redan.

    +

    Väl framme vid cirkulationsplatsen hade vi gjort cykelvägen till en mer integrerad del, helst efter nederländsk modell. Cyklister fortsätter alltså in i cirkulationsplatsen på egen väg med samma väjningsplikter som övrig trafik (ursäkta för suddig bild, den är tagen genom ett fönster):

    +

    +

    och:

    +

    +

    Här kan cyklister som kommer från Hammarbyhöjden, ner för backen in, invända att de plötsligt måste byta sida. Men det skulle vi fixa när nu Hammarbybacken också den ska få nya bostäder. Vi hade alltså gjort samma lösning längs den och då kommer cyklister in rätt. Röda kryss är de nya husen, grön linje den cykelväg vi skulle bygga:

    +

    +

    Som en parentes ska det bli intressant hur kommunen väljer att göra här. Om de behåller den nuvarande dubbelriktade cykelvägen, eller gör som vi tänker ovan. Någon som sett ritningarna på ”nya” Hammarbybacken-vägen?

    +

    Därefter ner mot sjöstan, igen nu på ”rätt sida”:

    +

    +

    Nere i cirkulationsplatsen under tvärbanebron gör vi på samma sätt, leder cykeltrafiken runt in i cykelfälten på Hammarby Allé. Samma enkla lösning som för biltrafiken.

    +

    I andra riktningen behövs inte så mycket göras alls, annat än utanför bussgaragen. Där hade vi rätat upp den nu enkelriktade cykelvägen och anslutit den direkt till cykelfälten. Först bort med svängen mot tvärgatan:

    +

    +

    Istället anpassar vi den lägre prioriterade tvärgatan till den nu raka cykelvägen. Samtidigt hamnar cykelvägen inne i cirkulationsplatsen, så att cyklisterna får samma enkla lösning som biltrafiken. Och cykeltrafiken hamnar längre från bussgaraget, vilket gör det säkrare och lättare också för dem.

    +

    +

    Så skulle vi gjort om vi hade planerat. Nu är det ju redan färdigbyggt, men tittar man på det är den ändå i princip bara tre ställen som behöver ändras, korsningen vid Bohusgatan och de två cirkulationsplatserna. Samtidigt så löser man breddfrågan, gör det lättare och tydligare att cykla, tar bort allt zigzaggande och ger dessutom mindre trängsel för fotgängarna när cykeltrafiken plötsligt inte längre är dubbelriktad. Samtidigt funkar det plötsligt med sjöstans cykelfält, utan en massa extra korsande av vägarna.

    +

    Hela den nya sträckan ner mot sjöstan,

    +

    Och, man följer kommunens framkomlighetspolicy, genom att prioritera cyklister och fotgängare framför bilar på en väg som framförallt är kritisk för just cyklister och fotgängare. Och buss 74, som i det här fallet inte påverkas alls.

    +

    Så hade vi gjort. Så tycker vi det borde ha gjorts i en stad som säger sig prioritera cyklister framför bilar och som säger sig värna om framkomligheten.

    +

    Men av någon anledning så görs det inte så. Vi undrar varför.

    +

    Här är första och andra delen av inläggen om Hammarby Allé:

    +

    När kommunen bygger nya vägar på gammalt sätt

    +

    +

    Framkomlighet – inte på topplistan över prio för nya cykelvägar

    +

    +]]>
    + http://www.cyklistbloggen.se/2017/04/sa-har-skulle-vi-gjort-skanstull-hammarby-alle/feed/ + 15 +
    + + Framkomlighet – inte på topplistan över prio för nya cykelvägar + http://www.cyklistbloggen.se/2017/04/framkomlighet-inte-pa-topplistan-over-prio-for-nya-cykelvagar/ + http://www.cyklistbloggen.se/2017/04/framkomlighet-inte-pa-topplistan-over-prio-for-nya-cykelvagar/#comments + Thu, 20 Apr 2017 04:00:18 +0000 + + + + + + http://www.cyklistbloggen.se/?p=26062 + Läs vidare ]]> + +

    I förra inlägget tittade vi på hur kommunen utformat den nya cykelvägen för dem av de 35000 sjöstadsborna som cyklar in till stan ur ett trafiksäkerhetsperspektiv. Nu tänkte vi istället titta lite på framkomligheten – alltså hur lätt eller svårt det är att cykla här överhuvudtaget. Framkomlighet tror vi är en av de viktigaste faktorerna för att få folk att vardagscykla. Känns det lätt och säkert att cykla så kommer folk göra det. Känns det osäkert och otydligt så låter man bli.

    +

    Vi konstaterade ju, precis som kommunen, att stadsdelen växer. Vi tänker också att helt nyanlagda cykelvägar visar lite hur kommunen tänker och prioriterar överlag för cyklister.

    +

    Växer alltså.

    +

    Framkomlighet alltså

    +

    I Cykelplanen från 2012 är sträckan ”bara” huvudstråk, vilket är lite sämre än om det vore ett pendlingsstråk. Och det märks att den här vägen inte är något som har fått särskilt hög prioritet när området gjordes om. Vi tar det från början uppe på Skansbron. Här dök i höstas plötsligt ett mittlinje upp i den befintliga dubbelriktade cykelvägen:

    +

    Wut? Toksmalt.

    +

    Och det stod ju rätt omedelbart klart att det inte är tillräckligt för en växande stadsdel. Faktum är att det som smalast är bara 40 centimeter brett till kanten (min sko som skala):
    +
    +Det går ju inte att få plats här. Det handlar alltså om en passage runt cirkulationsplatsen med både dubbelriktade gång- och cykelvägar. I en skymd kurva dessutom. Enligt cykelplanen ska en dubbelriktad cykelbana på huvudstråk vara minst 2,5 meter bred, vilket betyder att varje körfält ska vara minst 1,25 meter brett. Det är det inte här. Det är i snitt sextiofem-sjuttio centimeter brett.

    +

    Och skymd kurva

    +

    Det är inte så att man omedelbart tänker ”Huvudväg för en medelstor kommun” när man tittar på bilden ovan. Ännu mindre för ”medelstor kommun med stark miljöprofil”, som ju Hammarby Sjöstad är.

    +

    Sedan lyckades man glömma bort att affärer tar emot varor. För det behövs en lastplats och eftersom det saknas uppe vid cirkulationsplatsen så har det plötsligt improviserats hop en:

    +

    +

    Rullar man sedan ner mot SL:s bussgarage så fungerar det helt okej, bortsett från de där stolparna vi skrev om i förra inlägget.

    +

    Minskar känslan av framkomlighet en del

    +

    Men körfälten är i princip uppåt 1,20 hela vägen, vilket är nästan 1,25, men inte riktigt. 1,25 är alltså minimåttet för ett körfält på ett dubbelriktad huvudstråk (1,25×2):

    +

    +

     

    +

     

    +

    Nästan 1,25

    +

    Sedan kommer vi ner till cirkulationsplatsen. Där kör man som bilist in, med väjningsplikt, svänger runt och fortsätter på Hammarby Allé. Enkelt och extremt framkomligt.

    +

    Jättenkelt. Väjningsplikt och sedan bara ut ur rondellen.

    +

    Fullt så okomplicerat är det inte som cyklist.

    +

    Först ska man svänga in framför en tvärgata. Vi har redan skrivit om säkerhetsaspekten av den här passagen, så nu tittar vi bara på framkomlighet. Såvitt vi kan bedöma finns i princip allt på plats för att det här ska vara en cykelöverfart, det vill säga med väjningsplikt för korsande trafik. Det är upphöjt med fartgupp. Det råder 30km/h. Det är målat i gatan. Det enda som saknas är en Cykelöverfartsskylt.

    +

    Men, istället har kommunen valt att låta det vara en cykelpassage och dessutom lagt väjningspliktslinjen efter passagen (röd pil):

    +

    +

    Cyklister har alltså väjningsplikt. En cykelöverfart hade såklart gjort det mer framkomligt för cyklister. Men mindre för trafik från tvärgatan.

    +

    Vad säger framkomlighetsstrategin?

    +

    Vi stannar och funderar lite på vad det här betyder. Det här är en plats där ett huvudcykelstråk korsar en liten tvärgata. Det är en av bara två huvudsakliga cykelvägar för snart 35000 sjöstadsbor in till city. Det är en rätt viktig väg i en växande stadsdel med tydligt miljöfokus. Så här ser det ut i Stockholms Stads ”Framkomlighetsstrategi”:

    +

    +

    Gång/Cykel ska alltså prioriteras långt över ”bil”. I teorin. I praktiken är dock alltså framkomligheten från minsta tvärgata viktigare än för cyklister på ett huvudstråk.

    +

    Fortsätter man sedan vidare blir lite zig-zagande. Efter tvärgatan ska man först passera två utfarter för buss (något bussförarna är oroliga för), det vill säga först svänga vänster, över cykelpassagen, sedan höger…

    +

    Se upp för mötande cykeltrafik, banan är alltså dubbelriktad. Se upp för fotgängare. Se upp för bussar. Därefter ska man svänga 45 grader höger, lämna företräde vid ytterligare en cykelpassage (till höger i bild):

    +

    +

    Cykla under bron, lämna företräde igen för ytterligare en cykelpassage och därefter svänga 90 grader in i cykelfältet:

    +

    +

    Nu blev det mycket stillbilder. Vi klippte därför ihop en jämförelse från Skansbron ner i sjöstan. Den väg som är ett huvudstråk för cyklister. Så här skiljer det sig åt om man tar vanliga vägen, i jämförelse med om man tar den sprillans nya cykelvägen:

    +

    +

    Jämför bredden, underlaget, avståndet till sidhinder, behovet av att läsa av konfliktpunkter, alltså platser där man möter andra trafikanter, överskådlighet och begriplighet.

    +

    Notera att det här inte är en viktig väg för biltrafiken. De har redan Skanstullsbron, Johanneshovsbron, Danvikstullsbron och för all del Söderleden. De enda den här vägen är viktig för är buss 74 och för cyklister och fotgängare.

    +

    Samma sak i Hjorthagen

    +

    Vi skrev i gårdagens inlägg att det här visserligen är en väg till och från Hammarby Sjöstad, men att den ändå kan vara intressant för andra – eftersom den visar hur kommunen tänker och planerar när de gör nya cykelvägar 2017l.

    +

    Jämför videon ovan, med den här från andra sidan stan – Hjorthagen (och vi ökade hastigheten på cykelsträckan med 400% för att det skulle bli rimligt kort):

    +


    +Det är samma lika där, först gjorde man infrastruktur för bil och sedan målade man dit cykelvägen. Samma sak i sjöstan, först ritade man det som i praktiken är bilvägen, därefter hus och parkeringar, bussgarage och sist av allt cykelvägen. Som konsekvens går den kors och tvärs över vägen, zigzaggar och är betydligt svårare att begripa. Och stolparna får inte plats, utan hamnar någon centimeter från trafiken. Med usel framkomlighet som följd.

    +

    Och i och med att kommunen i sjöstan valt att använda två olika sätt att bygga cykelvägar – det enda cykelfält, det andra som dubbelriktade cykelbanor, så måste de också hitta ett sätt att ansluta dem. Och då blir det ytterligare korsningar. Samma sak förövrigt som på den andra av vägarna in till stan – Danvikstull och Kanalvägen:

    +

    Också ett jäkla meck.

    +

    Det här är ju inte byggt med framkomlighet på priolistan överhuvudtaget. Åtminstone inte för cyklisterna. I ett tredje och sista inlägg funderar vi över hur vi skulle gjort – om vi fick bestämma.

    +

    Här är sista inlägget:

    +

    Så här skulle vi gjort Skanstull-Hammarby Allé

    +

    +

    och här är det första:

    +

    När kommunen bygger nya vägar på gammalt sätt

    +

    +]]>
    + http://www.cyklistbloggen.se/2017/04/framkomlighet-inte-pa-topplistan-over-prio-for-nya-cykelvagar/feed/ + 5 +
    + + När kommunen bygger nya vägar på gammalt sätt + http://www.cyklistbloggen.se/2017/04/nar-kommunen-bygger-nya-vagar-pa-gammalt-satt/ + http://www.cyklistbloggen.se/2017/04/nar-kommunen-bygger-nya-vagar-pa-gammalt-satt/#comments + Wed, 19 Apr 2017 11:18:10 +0000 + + + + + + http://www.cyklistbloggen.se/?p=26036 + Läs vidare ]]> + +

     

    +

    Under våren 2017 öppnades äntligen nya cykelvägen från Skanstull ner till Hammarby Sjöstad för cykeltrafik. Det kan låta som en affär för de närmast sörjande, men för att sätta det i perspektiv är stadsdelen fullt utbyggd hem för 35000 personer. Det är som en hyggligt stor kommun, som jämförelse är det fler än i till exempel Vaxholm (11 621), Danderyd (32 653) eller Vallentuna (32 785).

    +

    Blir större och större

    +

    Det här är dessutom den ena av bara två huvudsakliga vägar in till Stockholm – den andra är den via Kanalvägen/Danvikstull. Kanalvägen har vi skrivit om tidigare här.

    +

    På Google Maps ligger platsen här, men det är fortfarande gamla satellitbilder och kartor när det här skrivs.

    +

    Det är såklart också intressant att se hur nyutformade cykelvägar ser ut – senaste sju-åtta åren har cykling lyfts som en framtidsfråga för kommunen av två politiskt olika styren, dåvarande Alliansen och nuvarande S/MP/FI-styret. Sedan 2012 finns en cykelplan och där är sträckan visserligen av någon anledning inte utpekad för pendlingsstandard, men väl som huvudstråk.

    +

    Som det ser ut här kan man alltså förmoda att det kommer se ut på andra platser där nya cykelvägar anläggs.

    +

    Sprillans ny cykelväg

    +

    Vi börjar med det positiva.

    +

    Det positiva

    +

    Den nybyggda sträckan är i grunden helt okej. Visserligen dubbelriktad, men hyggligt bred.

    +

    De har valt att lägga cykelvägen innanför bilparkeringarna. Miljöstadsdelen Hammarby Sjöstad är ju annars känd för att ha cykelfält utanför parkeringarna, vilket leder till att de nästan alltid används som ”skabara”-parkering för folk som ska in och hämta pizza, springa in till Konsum eller bara promenera en sväng.

    +

    Skullebara in på Lidl.

    +

    Det leder också på vintrarna till att cykelvägarna försvinner helt.

    +

    +

    Genom att lägga dem innanför minskar risken för ”skabara”-parkeringar och snöröjningen kan skötas. Grymt bra och ett rejält lyft i jämförelse med resten av stadsdelen.

    +

    Cyklar man norrgående – från stadsdelen in mot stan, så har separationen mot fotgängarna ökat och vägen ansluter till cykelfält-systemet utan problem. Det är i huvudsak betydligt mer plats. Så här ser det ut i jämförelse med innan ombyggnaden:

    +

    +

    Jag upplever också att avstånden till portarna känns rimlig och gångvägen är väl tilltagen så att folk inte kliver rätt ut i cykelvägen. Det verkar också som att större delen av svängen uppfyller cykelplanens breddmått för huvudstråk.

    +

    Här har man kanske lärt sig efter byggandet av Hägerstensvägen.

    +

    Och det var det positiva.

    +

    Nu till de mer knepiga grejorna. För att inte göra det hela till ett större inlägg än det måste, delar vi in det i två delar, trafiksäkerhet och framkomlighet. Säkerheten först:

    +

    Trafiksäkerhet

    +

    Först det uppenbara. Av någon anledning valde kommunen att placera trafikstolpar bara någon centimeter från vägbanan:

    +

    Stolpe nära, nära

    +

    Just nu är de helt ouppmärkta, men jag utgår från att de åtminstone utrustas med reflexer framöver. Det syns inte på bilden, men cykelvägen ligger i en hyggligt brant nerförsbacke så farten kan blir rätt hög. Ännu otäckare just nu eftersom hela sträckan har tjockt med grus på sig. De två värsta stolparna är svåra att upptäcka ens i dagsljus. Så här kan det kännas:

    +

    +

    Hur det känns en mörk höstkväll med regn och motljus från mötande biltrafik kan man väl gissa. Och med fotgängare och mötande cyklister – särskilt nu när tvärbanan är avstängd och många väljer att gå och cykla till Skanstull – alltså precis den här vägen.

    +

    Vi frågade kommunen om det verkligen skulle se ut så här, och ja, det ska det:

    +

    ”Tack för din synpunkt!
    +Har med gatuingenjören xx tittat på den bild som du inkommit med och han svarade att det är så det ska se ut enligt dom riktlinjer som Trafikkontoret följer.
    +Med vänlig hälsning””

    +

    Vilket känns lite märkligt. När jag tittar i kommunens handbok ”Cykel i staden 2009” (PDF) så står det att avståndet ska vara minst 0,4 meter:

    +

    +

    Men det är väl rekommendationer gissar jag. Det vill säga till skillnad från när det gäller andra vägar finns inga tvingande regler. Stolparna kan stå hur nära som helst.

    +

    Det är också fullständigt värdelöst för ett huvudstråk till och från city för en stadsdel med över 30,000 innevånare.

    +

    Vi fortsätter ner för backen. Och för att göra det lite tydligare än bara med stillbilder, så ser hela svängen ner mot sjöstan ut så här:

    +

    +

    Där motortrafiken på ”vanliga vägen” leds in i en cirkulationsplats, med egentligen bara en, tydlig, väjningsplikt, så leds cyklisterna in framför utfarten till SL:s nya bussgarage.

    +

    Här finns först en tvärgata, därefter in- och utfart till bussgaraget och därefter en ramp. Det är både dubbelriktad cykeltrafik och dubbelriktad gångtrafik. Nu blir det knepigt. Cykelvägen har anpassats efter tvärgatan istället för tvärtom, vilket gör att den rätas upp i en sväng istället för att fortsätta rakt fram. Jag gissar att anledningen är att man ville få till en 90-gradig vinkel mot tvärgatan. Det ser ut så här:

    +

    +

     

    +

    Här är man alltså i slutet av en lång backe. Man har ett övergångsställe rakt fram, ett till höger och man ska korsa vägen efter en sväng 45 grader åt vänster. Vi lämnar framkomligheten åt sidan ett tag och koncentrerar oss på hur mycket som händer på en gång. Framförallt är sikten in till tvärgatan helt skymd av huset. Här förväntas man som cyklist titta snett bakåt efter anslutande trafik 135 grader åt vänster. Så här ser det ut från sidan:

    +

    +

     

    +

    Ni ser cyklisten till vänster i bild – han har ingen chans att se om det kommer någon bil nerifrån tvärgatan, förrän sista metern när huset är ur vägen. Och eftersom väjningspliktslinjen ligger efter cykelpassagen, så blir det till att stanna för cyklister:

    +

    +

    Vi återkommer till det här senare, men det här är alltså en plats där cyklister bör stanna för säkerhets skull. Samma sak gäller som av en händelse även åt andra hållet.

    +

    När man kommer från cykelfältet och svänger upp på plattan framför bussgaragen så har man även där en 135 graders koll att göra över axeln. Så här ser det ut:

    +

    +

    Ni ser precis där personen i rock går. Upp till höger är det en utfart som överhuvudtaget inte går att se – eftersom den ligger *inuti* byggnaden. Så här ser det ut från andra hållet:

    +

    +

    Jag har såklart ingen aning om den där tunnelvägen kommer användas ofta eller sällan, men det vet man ju inte heller när man kommer cyklandes. Här är ingen väjningspliktslinje utmålad alls, så det är oklart hur det är tänkt att utfartstrafiken ska bete sig. Så ska man cykla säkert gäller i princip att stanna även här.

    +

    Sedan en sista fundering. Det här övergångsstället:

    +

    +

     

    +

    Här leder man alltså in en dubbelriktad cykelväg rakt in i ett övergångsställe. Vi utgår från att det bara är felritat. Annars är det såklart vansinnigt.

    +

    Det här är alltså en av huvudsakligen två vägar in till stan för de av 35000 boende i miljöstadsdelen Hammarby Sjöstad som väljer att cykla. Och sammanfattningsvis känns det som att man använt samma sätt att bygga här, som man alltid gjort – det vill säga rita in cykelvägen när allt annat är färdigt och anpassa den efter det.

    +

    Det var det om säkerheten. I nästa inlägg tittar vi istället närmare på hur det här huvudstråket ser ut när det gäller framkomlighet.

    +

    Här är del två och tre:

    +

    Framkomlighet – inte på topplistan över prio för nya cykelvägar

    +

    +

    Så här skulle vi gjort Skanstull-Hammarby Allé

    +

    +]]>
    + http://www.cyklistbloggen.se/2017/04/nar-kommunen-bygger-nya-vagar-pa-gammalt-satt/feed/ + 6 +
    + + NU ÄR DET SOMMAR(CYKLISTER) IGEN! WOOHOO! + http://www.cyklistbloggen.se/2017/04/nu-ar-det-sommarcyklister-igen-woohoo/ + http://www.cyklistbloggen.se/2017/04/nu-ar-det-sommarcyklister-igen-woohoo/#comments + Tue, 11 Apr 2017 04:14:43 +0000 + + + + + http://www.cyklistbloggen.se/?p=26026 + Läs vidare ]]> + +
    Low tide cycling on Brighton beach

    Low tide cycling on Brighton beach Foto: Katariina Järvinen (CC BY-NC-ND 2.0)

    +

    SOMMARN KOMMER! OCH DET HÄR KAN VARA TIDIGASTE SOMMARINLÄGGET VI GJORT!

    +

    Vi har nog aldrig sett så många cyklister ute på vägarna så tidigt. I eftermiddags var det kö runt spårviddshindren i Gamla Stan.

    +

    Idel ryggar

    +

    Det här gillar vi. Men med många cyklister ställs lite högre krav än när man hojjar i småklungor i januari. Det krävs samspel när tusentals cyklister ska fram i en infrastruktur som byggdes för kanske maximalt tio ensamma entusiaster. Och här är därför Cyklistbloggens surt erövrade tips för hur man bäst klarar av att ta sig fram hänsynsfullt och vänligt i cykeltrafiken!

    +


    +Vi har i några års tid publicerat varianter på denna lista som lite kontrast till pekpinnar, hot om böter och annat ovett som media och ordningsmakten ganska frekvent riktar mot cyklister.

    +

    Med följande råd vill vi underlätta så mycket som möjligt för alla cykelpendlare att ta sig fram. Då kör vi:

    +
      +
    • Håll till höger. Vill någon stressa förbi dig till vänster, låt dem göra det.
    • +
    +
      +
    • Stanna för fotgängare vid övergångsställen. När tjugo cyklister kör i klunga och ingen av dem stannar vid övergångsstället kan man undra. Don’t be that person. Stanna vid övergångsställen, visa hänsyn. Och ser du att någon framför dig stannat och lämnat företräde, kör inte om! Inte nog med att det är förbjudet, det är också farligt.
    • +
    +
      +
    • Tänk på var du kör om. När du kör om långsammare cyklister, tänk på att inte göra det vid fel tillfälle. Fel tillfälle är innan backkrön, innan eller på övergångsställen, eller där det råder väjningsplikt och där det är för smalt. Och kommer du i god fart vid ett trafikljus som precis slår om till grönt – tänk på att de som stått och väntat kommer vingla till i starten. Utgå från att stadens cykelbanor och -fält alltid är för smala för att köra om utan att plinga. Och glöm inte kasta en blick över axeln – det kan mycket väl komma en annan omkörande cyklist.
    • +
    +
      +
    • Stanna vid rött ljus. Det är bara irriterande med folk som tråcklar sig förbi ett rött ljus. Om du ändå har så bråttom att du absolut måste köra mot rött ljus, fortsätt då ha bråttom även när du passerat trafikljuset. De som väntat på grönt kommer annars med utvilade ben att hinna i fatt dig på några sekunder och bli irriterade över att tvingas köra om. Eftersom Stockholms cyklister (förutom på Götgatan) i praktiken har ”röd våg” och måste stanna vid precis varenda trafikljus så kan det bli en del omkörningar. Det blir heller inte lagligare för att du rullar jäättelångsamt förbi rödljuset.
    • +
    +
      +
    • Tänk på att göra tecken. Tecken när man ska svänga och stanna gör att både bilister och cyklister ser vart du ska. En bra grej.
    • +
    +
      +
    • Plinga! Är du osäker på om någon sett dig, flyttar sig inte den framför när du vill om, traskar någon i cykelbanan? Använd ringklockan! Gör det gärna en bit i förväg, så du får tid att planera hur du ska ta dig runt den förskräckta reaktion som inte är ovanlig när man plingar.
    • +
    +
      +
    • Utgå från att de som planerade cykelfälten inte visste vad de skulle användas till. Det här är en viktig regel. Cykelvägarna ligger där de ligger för att det fanns yta över, inte för att det är bästa platsen för cyklar att befinna sig på. Räkna med att du kommer behöva improvisera ibland, till exempel genom att inte cykla upp till höger om en lastbil. Eller genom att lämna cykelfältet för att undvika en taxikö, ett vägarbete, en container, eller som vid Nybroplan, ett stort träd.
    • +
    +
      +
    • Lastbilar och högersväng = död. Utgå från att lastbilschaufförer aldrig ser dig. Undvik att stå till höger om lastbilar vid rödljus, även om det finns ett cykelfält där.
    • +
    +
      +
    • Laxa inte. Håll koll på de enkelriktade cykelbanorna, som t. ex. på Skanstullsbron Låt bli att cykla mot strömmen som en parningssugen lax. Du riskerar en frontalkrock med andra cyklistkollegor i värsta fall, och i bästa fall arga tillrop. Låt bli.
    • +
    +
      +
    • Kliv av = lämna. Om du kliver av och leder cykeln är du inte längre cyklist utan fotgängare. Traska in på gångbanan för allas bästa.
    • +
    +
      +
    • Var försiktig med att cykla i par. Cykelfälten är sällan breda nog för det, tyvärr. Ifall du vill cykla bredvid, håll bra koll bakåt efter snabbare cyklister som vill om – och framåt efter fotgängare. Eller containrar, taxibilar, frontlastare eller annat som också ofta befinner sig i fältet.
    • +
    • Håll avstånden! I biltrafiken brukar man prata om tresekunders-regeln. Du ska helt enkelt ha tre sekunder till trafikanten framför dig. Samma gäller i cykeltrafiken – du vet aldrig när cyklisten framför dig måste tvärnita för plötsligt uppdykande big-bag, stolpe, träd, hus eller annat som har en förmåga att hamna mitt i vägen.
    • +
    +
      +
    • Utbilda dig! Trafikreglerna för cyklister är inte utformade för cyklister så de kan vara knepigt att förstå vad som gäller. Vi har gjort vårt bästa för att reda ut begreppen och samlat allt under taggen Trafikskola. De vanligaste frågorna brukar gälla väjningsplikt, så de finns i en stor megapost.
    • +
    +
      +
    • Le och vinka. Du kommer att råka ut för medtrafikanter som bryter mot alla dessa råd, men försök att inte bli arg. Lyft blicken se till att du är del av en stor trafikapparat. Ta det lugnt, var tydlig, lämna företräde med ett leende och du ska se att folk är hyggliga tillbaka.
    • +
    +

    Välkommen till en friskare vardag och ett roligare sätt att ta dig till jobbet. Sprid gärna dessa tips till andra som du vet cyklar, så ses vi ute på stan! (och har ni fler tips? Lämna i kommentarsfältet nedan!)

    +]]>
    + http://www.cyklistbloggen.se/2017/04/nu-ar-det-sommarcyklister-igen-woohoo/feed/ + 4 +
    + + En stolpe placerad enligt konstens alla regler + http://www.cyklistbloggen.se/2017/04/en-stolpe-placerad-enligt-konstens-alla-regler/ + http://www.cyklistbloggen.se/2017/04/en-stolpe-placerad-enligt-konstens-alla-regler/#comments + Mon, 10 Apr 2017 18:26:45 +0000 + + + + + + http://www.cyklistbloggen.se/?p=26016 + Läs vidare ]]> + +

    Den här stolpen är helt ny. Cykelvägen blev precis klar, den öppnade härom veckan.

    +


    +Såg ni den?

    +

    Så här ser den ut i stillbild:

    +


    +Formellt sett är det 50 km/h här, fram till 30-skylten. Den är knapp urskiljbar i dagsljus när jag passerade i lågtrafik. Fundera över hur lätt den är att uppfatta i nerförsbacke i ett annat trafikläge, med mötande cykeltrafik och fullt med fotgängare.

    +

    Eller en mörk regnig höstkväll med mötande biltrafiks lampor i ansiktet. Eller samtidigt som någon öppnar en bildörr i en parkerad bil och kliver ur.

    +

    Jag kollade med kommunen. De svarade:

    +

    +

    ”Har med gatuingenjören Mikael tittat på den bild som du inkommit med och han svarade att det är så det ska se ut enligt dom riktlinjer som Trafikkontoret följer.”

    +

    Dåså. Då är det ingen fara såklart.

    +

    Samtidigt läser vi VTI-rapporten ”Cyklisters singelolyckor”:

    +

    I de genomförda studierna framkommer med all tydlighet vilket stort ansvar väghållaren har för cyklisternas säkerhet. Nästan hälften av alla singelolyckor med svår skada som följd, kan relateras till vägutformning eller drift och underhåll. Det behöver skapas en mer förlåtande trafikmiljö där cyklister tillåts begå misstag (i nollvisionens anda).

    +

    (Och som en liten extragrej, noterar ni kanske den rätt stora mängden grus på vägen. I nerförsbacke. Det står en del om det i VTI:s rapport också, för den som vill fördjupa sig)

    +

    Det här är bara en stolpe på en väg i Stockholm. Det finns flera. Och alla följer samma tillåtande riktlinjer. Till exempel den andra stolpe som står en bit upp i samma backe:

    +

    +

    Glöm inte hjälmen.

    +

     

    +]]>
    + http://www.cyklistbloggen.se/2017/04/en-stolpe-placerad-enligt-konstens-alla-regler/feed/ + 11 +
    + + Cyklist körde in i bildörr. Igen. + http://www.cyklistbloggen.se/2017/04/cyklist-korde-in-i-bildorr-igen/ + http://www.cyklistbloggen.se/2017/04/cyklist-korde-in-i-bildorr-igen/#comments + Thu, 06 Apr 2017 08:10:19 +0000 + + + + + + http://www.cyklistbloggen.se/?p=26003 + Läs vidare ]]> + +

    I morse blev en cyklist dörrad. Expressen skrev:

    +

    +

    ”Cyklisten såg inte när personen i bilen slog upp ena dörren på Hantverkargatan i centrala Stockholm.
    +Kraschen var oundviklig.”

    +

    Ja, det var ju klantigt att missa att en bilist öppnade sin bildörr.

    +

    Ett alternativt sätt att beskriva det hade varit:

    +

    ”Bilisten öppnade sin bildörr utan att titta efter först samtidigt som en cyklist kom. Kraschen var oundviklig. Personen på cykel är förd till sjukhus med smärtor i rygg och nacke”.

    +

    Hur vi beskriver verkligheten med ord formar hur vi förstår den. Tittar man i lagtexten är ansvaret tydligt. Trafikförordningen, 3 kap 50 §:

    +

    Ett fordons dörrar eller andra anordningar får inte öppnas på sådant sätt att fara eller onödig olägenhet uppstår.

    +

    Vi tänker på en tidigare text vi skrivit här på bloggen:

    +

    Det är cyklisters eget fel om de dörras

    +

    +

    ”Jag vill bara skriva och tacka. För ca en månad sen skrev jag till er och frågade vad som gäller när man blir ”dörrad” i cykelbanan. Av polisen fick jag ett dumt svar att felet var helt mitt.”

    +

    Och det är vad det verkar en vanligt förekommande åsikt, att en plötsligt öppnad dörr är något man får räkna med. Men det är det alltså inte. Kanske särskilt inte med tanke på hur Stockholms cykelvägar ser ut, där dörrzoner ofta saknas.

    +

    Ingen dörrzon här

    +

    Just nu, några timmar efter att bildörren öppnades, står det på polisens hemsida:

    +

    Olyckan har inträffat på Hantverkargatan och enligt initiala uppgifter ligger cyklisten kvar på marken.

    +

    Patrullen berättar att olyckan har inträffat då bilisten öppnade bildörren och cyklisten körde in i den.

    +

    Cyklisten är förd till sjukhus med smärtor i rygg och nacke. Ingen är i nuläget delgiven brottsmisstanke.

    +

    Det står också att texten kan komma att ändras. Till exempel undrar vi lite om sista meningen. Om det fortsätter vara så att ingen brottsmisstanke finns, till vilken nytta är då Trafikförordningen?

    +

    Läs mer om att dörras:

    +

    Att någon smäller upp en bildörr räknas som en singelolycka

    +

    +

    Och här: Dörrad.

    +

     

    +

    EDIT: Nu har Expressen ändrat texten:

    +

    +]]>
    + http://www.cyklistbloggen.se/2017/04/cyklist-korde-in-i-bildorr-igen/feed/ + 17 +
    + + Aftonbladet: Myror smartare än cyklister + http://www.cyklistbloggen.se/2017/03/aftonbladet-myror-smartare-an-cyklister/ + http://www.cyklistbloggen.se/2017/03/aftonbladet-myror-smartare-an-cyklister/#comments + Mon, 27 Mar 2017 11:44:08 +0000 + + + + + + + http://www.cyklistbloggen.se/?p=25995 + Läs vidare ]]> + +

    Aftonbladet ledare: ”Myror är smartare än cyklister”

    +

    +

    Myror? Jo:

    +

    ”I ett laboratorium på universitetet i Toulouse i Frankrike har myrforskaren Audrey Dussutour studerat varför myror aldrig krockar med varandra eller hamnar i trafikstockningar.”

    +

    För det stora problemet i cykeltrafiken är alla trafikstockningar och cykelkrockar som inträffar.

    +

    Hej Aftonbladet: Tror det är ett annat trafikantslag som avses. Men låt inte det stå i vägen för lite ryggradsmässigt cyklistgnäll.

    +

    (Länkar inte pga då tror ledarskribenter att de gjort något rätt. Läs istället: Cyklisternas egen Godwins lag och Slappa journalister sprider cykelmyter (Expressen) )

    +

     

    +]]>
    + http://www.cyklistbloggen.se/2017/03/aftonbladet-myror-smartare-an-cyklister/feed/ + 5 +
    +
    +
    + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_diskuse.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_diskuse.xml new file mode 100644 index 0000000..e2cbf87 --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_diskuse.xml @@ -0,0 +1,33 @@ + + + Diskuse na Jak psát web + https://diskuse.jakpsatweb.cz/ + O tvorbě, údržbě a zlepšování internetových stránek + cs + Copyright 2004, Yuhů + Doublethink + dusan@pc-slany.cz (Yuhů) + dusan@pc-slany.cz (Yuhů) + + https://diskuse.jakpsatweb.cz/img/logo-rss.png + DJPW + https://diskuse.jakpsatweb.cz/ + 60 + 60 + + + Wed, 15 Apr 2020 16:30:29 +0200 + + Kajman, O této diskusi: test &lt;pre&gt; in &lt;description&gt; and &lt;b&gt;bold&lt;/b&gt; in title + Code text in &lt;pre&gt;... + <br><div class="pre"><pre>SELECT * + FROM tbl + WHERE date &gt; Now() + ORDER BY date + LIMIT 10</pre></div> + <br>Code text in &lt;code&gt; <code>SELECT</code> and <code>WHERE</code>. + Wed, 15 Apr 2020 16:30:29 +0200 + https://diskuse.jakpsatweb.cz/?action=vthread&forum=18&topic=173233#post-1112174 + https://diskuse.jakpsatweb.cz/?action=vpost&post=1112174 + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_fz.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_fz.xml new file mode 100644 index 0000000..bb0d9ae --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_fz.xml @@ -0,0 +1,313 @@ + + + + Nyheter från FZ.se + http://www.fz.se/nyheter/ + + + Enterprise (c) Egmont Publishing + + sv-se + Egmont Publishing + 60 + + + http://www.fz.se/information/fzlogotyp_rss.jpg + Nyheter från FZ.se + http://www.fz.se/nyheter/ + + + + + Nier: Automata bjuder på maffig lanseringstrailer + http://www.fz.se/artiklar/nyheter/20170307/nier-automata-bjuder-pa-maffig-lanseringstrailer/ + + Johan Olander + http://www.fz.se/artiklar/nyheter/20170307/nier-automata-bjuder-pa-maffig-lanseringstrailer/ + Tue, 07 Mar 2017 18:43:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTI3OTM7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6IjU5YjA2YjgyZjkyY2IxZjBiMDZjZmI5MmE3NTk5NjMzMjIyMmU4NGMiO30= + + + Joey Ramone sjunger in ny trailer för Lego Worlds + http://www.fz.se/artiklar/nyheter/20170307/joey-ramone-sjunger-in-ny-trailer-for-lego-worlds/ + + Johan Olander + http://www.fz.se/forum/artikelkommentarer/joey-ramone-sjunger-in-ny-trailer-for-lego-worlds-397544 + http://www.fz.se/artiklar/nyheter/20170307/joey-ramone-sjunger-in-ny-trailer-for-lego-worlds/ + Tue, 07 Mar 2017 17:12:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTI3OTI7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6ImE3NmViNjA0MzFkOGQ3YTNhZmFhNThjY2IwNzc5NDUxYzA5MTUyZTUiO30= + + + Se Olander recensionsspela Ghost Recon: Wildlands + http://www.fz.se/artiklar/nyheter/20170307/se-olander-recensionsspela-ghost-recon-wildlands/ + + Carl Johansson-Sundelius + http://www.fz.se/forum/artikelkommentarer/se-olander-recensionsspela-ghost-recon-wildlands-397543 + http://www.fz.se/artiklar/nyheter/20170307/se-olander-recensionsspela-ghost-recon-wildlands/ + Tue, 07 Mar 2017 16:33:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTI3ODA7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6IjYzNzQxY2Q4MjdmNjYxMDJjMTgyZDgwYmNjNmZmNGE3NTllMWMxOWIiO30= + + + Se läckra miljöer i senaste Mass Effect: Andromeda-trailern + http://www.fz.se/artiklar/nyheter/20170307/se-lackra-miljoer-i-senaste-mass-effect-andromeda-trailern/ + + Carl Johansson-Sundelius + http://www.fz.se/forum/artikelkommentarer/se-lackra-miljoer-i-senaste-mass-effect-andromeda-trailern-397541 + http://www.fz.se/artiklar/nyheter/20170307/se-lackra-miljoer-i-senaste-mass-effect-andromeda-trailern/ + Tue, 07 Mar 2017 15:43:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTI3MzI7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6ImVkOWE1Y2FkYzQ2MWNlMmM5YWUwYTFiYThmYjQzOWIwZGU4NTE4NTUiO30= + + + Joycon-problemet hos Switch verkar gå att lösa + http://www.fz.se/artiklar/nyheter/20170307/joycon-problemet-hos-switch-verkar-ga-att-losa/ + + Tomas Helenius + http://www.fz.se/forum/artikelkommentarer/joycon-problemet-hos-switch-verkar-ga-att-losa-397539 + http://www.fz.se/artiklar/nyheter/20170307/joycon-problemet-hos-switch-verkar-ga-att-losa/ + Tue, 07 Mar 2017 13:14:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTI1Njk7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6IjcyZDNlNGUwYjI3ODQ0YTIxM2IxOTgwMjQ0NTBiYWRlNmU4Njg5MjgiO30= + + + Första Wildlands-recensionerna ute – stabila betyg + http://www.fz.se/artiklar/nyheter/20170307/forsta-wildlands-recensionerna-ute-stabila-betyg/ + + Tomas Helenius + http://www.fz.se/forum/artikelkommentarer/forsta-wildlands-recensionerna-ute-stabila-betyg-397536 + http://www.fz.se/artiklar/nyheter/20170307/forsta-wildlands-recensionerna-ute-stabila-betyg/ + Tue, 07 Mar 2017 10:35:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTIzNzA7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6IjQ3NWY1NzI5ZTdmZmVjMDIzNTc0MzJhOTBmOGJiNmZmOTgzMmYzNjIiO30= + + + Bästa recepten i Zelda: Breath of the Wild + http://www.fz.se/artiklar/nyheter/20170307/basta-recepten-i-zelda-breath-of-the-wild/ + + Carl Johansson-Sundelius + http://www.fz.se/forum/artikelkommentarer/basta-recepten-i-zelda-breath-of-the-wild-397535 + http://www.fz.se/artiklar/nyheter/20170307/basta-recepten-i-zelda-breath-of-the-wild/ + Tue, 07 Mar 2017 09:37:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTIzMDU7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6IjMxZWY1Y2MyODE4NTExY2NhNzViZmE4OTJmNjk5ZTI1ZjcxMmI4NzkiO30= + + + Switch är Nintendos snabbast säljande konsol någonsin + http://www.fz.se/artiklar/nyheter/20170307/switch-ar-nintendos-snabbast-saljande-konsol-nagonsin/ + + Tomas Helenius + http://www.fz.se/forum/artikelkommentarer/switch-ar-nintendos-snabbast-saljande-konsol-nagonsin-397534 + http://www.fz.se/artiklar/nyheter/20170307/switch-ar-nintendos-snabbast-saljande-konsol-nagonsin/ + Tue, 07 Mar 2017 08:51:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTIyOTk7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6ImE1ODdkMjJjYWJmY2Q4YjUzM2VhMDBiYzJlYmVhYWU1NzIwYmEyMzkiO30= + + + CliffyB-shootern Lawbreakers på väg mot beta + http://www.fz.se/artiklar/nyheter/20170307/cliffyb-shootern-lawbreakers-pa-vag-mot-beta/ + + Tomas Helenius + http://www.fz.se/forum/artikelkommentarer/cliffyb-shootern-lawbreakers-pa-vag-mot-beta-397533 + http://www.fz.se/artiklar/nyheter/20170307/cliffyb-shootern-lawbreakers-pa-vag-mot-beta/ + Tue, 07 Mar 2017 07:20:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTIyNjc7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6ImNjMWRmMTRlZjEyNDE5MTM5NzdkMGFhNDgwYWUzNjQwYjc2MTk0NWUiO30= + + + Här är lanseringstrailern för Ghost Recon: Wildlands + http://www.fz.se/artiklar/nyheter/20170306/har-lanseringstrailern-for-ghost-recon-wildlands/ + + Johan Olander + http://www.fz.se/forum/artikelkommentarer/har-ar-lanseringstrailern-for-ghost-recon-wildlands-397528 + http://www.fz.se/artiklar/nyheter/20170306/har-lanseringstrailern-for-ghost-recon-wildlands/ + Mon, 06 Mar 2017 20:45:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTIyMTE7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6IjFlMjI4NDI5NDU3MThhOGQ0MTBmMDA5YTBlNTk2NzBjMDA5NWFlYjQiO30= + + + Jämför Wii U- och Switch-versionen av Zelda: Breath of the Wild + http://www.fz.se/artiklar/nyheter/20170306/jamfor-wii-u-och-switch-versionen-av-zelda-breath-of-the-wild/ + + Johan Olander + http://www.fz.se/forum/artikelkommentarer/jamfor-wii-u-och-switch-versionen-av-zelda-breath-of-the-wild-397527 + http://www.fz.se/artiklar/nyheter/20170306/jamfor-wii-u-och-switch-versionen-av-zelda-breath-of-the-wild/ + Mon, 06 Mar 2017 19:43:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTIxOTU7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6IjI0YzM1MGM4ZjE2NDQ0MDMwZjEzMTM1MTUwMDI0OGE1YTRmOWZlZWUiO30= + + + Nintendo Switch säljer dubbelt så mycket som Wii U + http://www.fz.se/artiklar/nyheter/20170306/nintendo-switch-saljer-dubbelt-sa-mycket-som-wii-u/ + + Johan Olander + http://www.fz.se/forum/artikelkommentarer/nintendo-switch-saljer-dubbelt-sa-mycket-som-wii-u-397526 + http://www.fz.se/artiklar/nyheter/20170306/nintendo-switch-saljer-dubbelt-sa-mycket-som-wii-u/ + Mon, 06 Mar 2017 18:32:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTIxODY7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6ImYzNjAwZTlkMzc0YWNhODY3YmI1YWQzMjE5NjY4Y2FlOGMzNzY1MmYiO30= + + + Dawn of War III – blod åt blodguden i april + http://www.fz.se/artiklar/nyheter/20170306/dawn-of-war-iii-blod-at-blodguden-i-april/ + + Johan Olander + http://www.fz.se/forum/artikelkommentarer/dawn-of-war-iii-blod-at-blodguden-i-april-397519 + http://www.fz.se/artiklar/nyheter/20170306/dawn-of-war-iii-blod-at-blodguden-i-april/ + Mon, 06 Mar 2017 17:16:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTIxNjY7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6IjRlNjA2N2U5YzBhYzllNTY1ZGU4NjlhN2FmNjlkOTFmZjJjY2I5NzciO30= + + + Se finalen från mästarmötet i helgens Quake-lan + http://www.fz.se/artiklar/nyheter/20170306/se-finalen-fran-mastarmotet-i-helgens-quake-lan/ + + Carl Johansson-Sundelius + http://www.fz.se/forum/artikelkommentarer/se-finalen-fran-mastarmotet-i-helgens-quake-lan-397517 + http://www.fz.se/artiklar/nyheter/20170306/se-finalen-fran-mastarmotet-i-helgens-quake-lan/ + Mon, 06 Mar 2017 15:57:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTIwODY7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6ImViMTk0NTc5NjkzMjIyNThjNzNiYThmZmMzNzdkMWVkYzUzY2U2ODMiO30= + + + Id Software gömde kristen hälsning i Doom-soundtracket + http://www.fz.se/artiklar/nyheter/20170306/id-software-gomde-kristen-halsning-i-doom-soundtracket/ + + Carl Johansson-Sundelius + http://www.fz.se/forum/artikelkommentarer/id-software-gomde-kristen-halsning-i-doom-soundtracket-397513 + http://www.fz.se/artiklar/nyheter/20170306/id-software-gomde-kristen-halsning-i-doom-soundtracket/ + Mon, 06 Mar 2017 13:59:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTIwMjc7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6IjdkNWNiZjYwZDMwMmE3Njc2NWMxZWI5NmJlNTE3YWQxNzQ3ZjJhY2EiO30= + + + Sniper: Ghost Warrior 3 framflyttat igen + http://www.fz.se/artiklar/nyheter/20170306/sniper-ghost-warrior-3-framflyttat-igen/ + + Tomas Helenius + http://www.fz.se/forum/artikelkommentarer/sniper-ghost-warrior-3-framflyttat-igen-397512 + http://www.fz.se/artiklar/nyheter/20170306/sniper-ghost-warrior-3-framflyttat-igen/ + Mon, 06 Mar 2017 12:55:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTIwMTQ7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6IjY3NmQ2YWM4YjgyMzBiZWNmMzQzODc0ZDFjY2VhNjQ1MWFiN2E2M2UiO30= + + + League of Legends-fuskmakare får böta 90 miljoner kr + http://www.fz.se/artiklar/nyheter/20170306/league-of-legends-fuskare-far-bota-90-miljoner-kr/ + + Carl Johansson-Sundelius + http://www.fz.se/forum/artikelkommentarer/league-of-legends-fuskmakare-far-bota-90-miljoner-kr-397509 + http://www.fz.se/artiklar/nyheter/20170306/league-of-legends-fuskare-far-bota-90-miljoner-kr/ + Mon, 06 Mar 2017 11:33:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTE5ODM7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6IjJkZDY0ZDhhMGViOGUwYzNlYTM3ZTc0YTE3NWZiZDRkZDgwODc0ODEiO30= + + + Äntligen får Starcraft-probes revansch! + http://www.fz.se/artiklar/nyheter/20170306/antligen-far-starcraft-probes-revanch/ + + Carl Johansson-Sundelius + http://www.fz.se/forum/artikelkommentarer/antligen-far-starcraft-probes-revansch-397508 + http://www.fz.se/artiklar/nyheter/20170306/antligen-far-starcraft-probes-revanch/ + Mon, 06 Mar 2017 10:46:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTE5MjA7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6ImU3MDk4ZjdiOGNiZTBjNGVkYTM0M2EwYjA4OGU2YWFkZTNiZGUxYTIiO30= + + + Se massor av bisarra kontroller från GDC-mässan + http://www.fz.se/artiklar/nyheter/20170306/se-massor-av-bisarra-kontroller-fran-gdc-massan/ + + Tomas Helenius + http://www.fz.se/forum/artikelkommentarer/se-massor-av-bisarra-kontroller-fran-gdc-massan-397505 + http://www.fz.se/artiklar/nyheter/20170306/se-massor-av-bisarra-kontroller-fran-gdc-massan/ + Mon, 06 Mar 2017 09:12:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTE4ODI7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6ImVjNzAyMmQzYzZkNWQ5MWVjYzI3MjdlYjM1ZDg2ZWU2MTNhNWE4ZmYiO30= + + + Nintendo bekräftar – sparfiler kan inte flyttas i Switch + http://www.fz.se/artiklar/nyheter/20170306/nintendo-bekraftar-sparfiler-kan-inte-flyttas-i-switch/ + + Tomas Helenius + http://www.fz.se/forum/artikelkommentarer/nintendo-bekraftar-sparfiler-kan-inte-flyttas-i-switch-397502 + http://www.fz.se/artiklar/nyheter/20170306/nintendo-bekraftar-sparfiler-kan-inte-flyttas-i-switch/ + Mon, 06 Mar 2017 07:23:00 +0100 + http://d2ihp3fq52ho68.cloudfront.net/YTo2OntzOjI6ImlkIjtpOjEzOTE3Nzc7czoxOiJ3IjtpOjUwMDtzOjE6ImgiO2k6OTk5OTtzOjE6ImMiO2k6MDtzOjE6InMiO2k6MDtzOjE6ImsiO3M6NDA6ImEyOTg3YmNjMjM5MzIxMGRmZWVmZTdlODU4NmNhN2RhMjk1YTdkMWQiO30= + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_geekpark.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_geekpark.xml new file mode 100644 index 0000000..b3cc179 --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_geekpark.xml @@ -0,0 +1,718 @@ + + + + 极客公园(!) + 极客公园 + http://main_test.geekpark.net/rss.rss + + https://imgslim.geekpark.net/images/GeekPart-blacklogo.png + 极客公园 + http://www.geekpark.net + + + + <![CDATA[充电桩 2020:大火一年,它依然没赚到钱(!)]]> + + http://www.geekpark.net/news/271342 + + 新能源汽车在股市成为最耀眼的存在,特斯拉一家公司在 12 月 14 日一夜暴涨 283 亿美元(约为 1850 亿人民币),外媒称,特斯拉当日市值(6065 亿美元)已经超过了包括大众、丰田、日产、现代、通用汽车、福特汽车、本田汽车、菲亚特克莱斯勒以及标致等 9 大汽车制造商的市值之和。

    在美国上市的三家中国造车新势力,2020 年的市值均翻了几倍。在新能源汽车的大好趋势下,产业链中的基础设施也逐渐开始受到青睐。

    12 月 1 日,青岛特锐德电气股份有限公司发布公告称,旗下子公司特来电正在筹备上市。特来电正是当下电动汽车充电桩的领军者。在经历 2020 年新能源汽车大涨,新基建概念大火后,充电桩终于迎来了自己的故事。

    6 年 50 亿,特来电上市之路

    2014 年,特斯拉旗下豪华电动汽车 Model S 在前一年获得了 2.2 万台销量的好成绩,也在中国的北京、上海建立了售后服务中心,正式入驻中国。同年,蔚来、小鹏汽车成立,中国在政策上也明确给出了补贴、推广等利好新能源汽车的目标,新能源在中国呈现出了一股不可逆转的小浪潮。

    大背景下,作为电动汽车的配套设施——充电桩也成为资本关注的目标。2014 年 7 月,特锐德发布公告称公司将斥资 6 亿元打造无桩充电「智能汽车群充电系统」。其中汽车充电云平台建设拟投资 1 亿元、充电终端建设拟投资 4 亿元、运营用充电汽车拟投资 1 亿元,可以看出充电桩硬件设施仍旧占据大头。

    +
    特来电母公司特锐德新能源业务营收与毛利润 | 极客公园制图

    有趣的是,就在特锐德发布公告的前一天,发改委发布《关于电动汽车用电价格政策有关问题的通知》,通知称,对电动汽车充换电设施用电实行扶持性电价政策,建设用地提供财政补贴或者无偿划拨。降低充换电设施建设运营成本,确保电动汽车使用成本显著低于燃油(或低于燃气)汽车使用成本,增强电动汽车在终端市场的竞争力。

    这一政策无疑大大推动了充电桩行业的发展,可以将其看作充电桩的第一波「红利」。无疑,特来电也准确踩在了「风口」之上。

    从 2014 年创立到上市,特来电已走过 6 年时间,乘着新能源的东风,特来电迅速发展到了市场第一的位置。根据中国充电联盟统计,特来电充电桩数量持续保持市场占有率第一、充电网电量保持行业第一的龙头地位;截止目前,上线运行充电桩数量超过 17 万个,累计充电量超过 61 亿度,日充电量超过 1000 万度。

    +          特来电成为 2019 年唯一一家宣布盈利的头部企业 | 视觉中国

    根据特来电曾经公开披露的数据,公司自成立以来累积投入资金超过了 50 亿元,在全国 288 个城市布局充电网的建设和运营。

    但是,规模最大不代表能赚到钱。直到 2019 年,特来电才宣布全面盈利。这也是目前唯一一家盈利的充电桩运营头部企业。

    充电桩是不是一门好生意?

    新能源汽车市场仍旧处在高速变化之中,在特来电一家企业身上,能够看出充电桩行业现状的折射。

    如果把充电桩在 2014 年与 2019 年的数据对比,结果是非常惊人的:根据中国汽车工程学会的数据,截止到 2014 年底,中国电动车充电设施共建设充换电站 778 座,充电桩 30914 个。而截至 2019 年,中国公共充电桩保有量已经达到 516396 台,充电站保有量也增加到 35849 座。

    2020 年的政府工作报告提出,要加强新型基础设施建设(即新基建),发展新一代信息网络,拓展 5G 应用,建设充电桩,推广新能源汽车,激发新消费需求、助力产业升级。充电桩因此大火,行业又涌入不少新玩家。根据企查查消息,近十年来充电桩相关企业注册量逐年攀升,2019 年新注册量已达 1.86 万家,今年前 11 月新增企业 2.08 万家,同比增长 24.6%。

    +          充电桩纳入新基建,2020 年又成为热门领域 | 企查查

    玩家众多,为何只有极少企业能盈利?

    首先,充电桩的前期建设涉及一定数量的硬件制造、安装,据极客公园(ID:geekpark)了解,一个快充桩的前期投入成本(包括硬件与安装)在 10 万上下,如果在全国规模化铺设,短期内投入资金量巨大。

    很多人不知道的是,与新能源汽车一样,早期建设充电桩也会获得国家补贴,这就导致一些企业为了获得补贴而在短期内加快扩张,跑马圈地。一位业内人士告诉极客公园,许多充电桩企业为了追求数量上的增长,专门在偏僻位置安装充电桩,导致充电桩在地理位置上分布不均,在用户端体验上很差。「属于充电桩行业早期的野蛮生长。」

    快速扩张导致的一个潜在问题就是运营不足。根据艾瑞咨询发布的《2020 年中国公共充电桩行业研究报告》,充电速度慢、充电桩数量少、充电费用高和充电桩坏损多成为用户对于公共充电桩的痛点所在。

    「走出北京城区,汽车没电的时候找充电桩本来就麻烦,更别说再碰到坏桩,简直就是冬天的崩溃体验。」一位北京的电动汽车车主告诉极客公园(ID:geekpark)。

    公共充电桩的商业模式并没有太多元化,充电服务费用是其营收的主力部分。上述人士表示,如果想要盈利必须依靠长期重运营的结果,许多企业并未意识到这个问题。

    +          充电桩能盈利依靠的是长期运营,需要深耕才能看到机会 | 视觉中国

    2018 年 10 月,北京出台《关于实施 2018~2019 年度北京市电动汽车社会公用充电设施运营考核奖励实施细则》,在全国率先以综合运营指标考评为依据落实充电设施补贴。从建桩补贴走向运营补贴,在行业看来是一项重要改变。

    总结下来,公共充电桩的盈利回报周期较长,并且没有什么「捷径」可走。提升单桩的利用率是企业盈利的核心,而利用率又与选址布局、快速充电站/桩建设等诸多因素有关。

    特来电董事长于德翔此前接受《中国企业家杂志》采访时表示,特来电前几年的压力非常大,累计投资 50 亿左右,前四年亏损超过 8 亿,「差点把母公司特锐德亏没了」。

    如果回头看特来电的发展过程,除了发力较早,缘于特来电前期在箱式电力设备研发制造上的优势,以及发展过程中与政府、新能源车企以及动力电池供应商深度合作打好基础,特来电得以坐稳市场位置。

    多方势力入场

    在经历早期的不规范增长后,充电桩仍然是极具潜力的领域。

    如果按照上文提到的充电桩数量,快速增长的充电桩一定程度上解决了电动汽车车主的需求,但从行业情况来看,充电桩数量的发展仍没有达到目标。

    2015 年 10 月,发改委、能源局等四部委发布的《电动汽车充电基础设施发展指南(2015-2020)》提出,到 2020 年我国将建成 480 万个充电桩,满足 500 万辆新能源汽车充电需求。而截止到 2020 年 9 月,各类充电桩达到了 142 万个,车桩比约为 3.1:1,距离当时的目标仍有差距。

    如果放在一线城市,差距更为明显。北京的车桩比接近 10:1,从新能源汽车车主视角来看,最直接的充电体验打了很大折扣。

    同样属于新能源车企的理想,很早就意识到充电桩仍然不足的问题,旗下第一款车型理想 ONE 采用了增程式发动机,使用燃油与少量电力可以跑 800km 的续航。理想汽车创始人李想曾表示,不研发纯电动汽车的一个重要考虑,就是中国的充电桩作为配套设施仍旧不能得到满足。

    「随着 C 端电动车的普及,越来越多的手握新能源号牌的购买者是不具备家用充电桩的安装条件的。随着电动车的保有量增加,公共快充的体验是会持续下降的。能够稳定的解决最最基本的充电体验,是销量的核心基础。」李想曾经在朋友圈评论。

    +          特斯拉、蔚来、小鹏等自建充电站体系,可以很好地提升用户充电体验 | 视觉中国

    从这个角度来看,特斯拉、蔚来、小鹏等造车新势力自建充电站、超级充电桩,在前期大手笔投入充电体验,确实一定程度上能够满足用户日常出行。

    新能源汽车每年销量高速增长的环境中,充电桩行业仍处在一个不饱和的增量市场,行业格局尚未确定。正因如此,充电桩正在吸引来多方势力,其中不乏行业巨头。除了新能源车企需要加快充电布局,正在向新能源迈进的传统车企、互联网巨头如阿里腾讯、以及进军汽车领域的华为,都以各种各样的方式进入市场。

    就像本文开头提到的,市场仍在不断变化,那么充电桩在经历野蛮生长和火热之后,也许可以继续讲述它的故事。


    责任编辑:靖宇

    题图来源:视觉中国

    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Thu, 17 Dec 2020 22:00:09 +0800 +
    + + + <![CDATA[盘点数码圈的起名鬼才:能被你猜到算我输]]> + + http://www.geekpark.net/news/271133 + + 最近我们一直在准备极客之选 2020 年度产品评选,查一些产品时正好可以了解各个品牌对不同系列的命名,有的产品线命名逻辑很清晰,一眼就能找到对应的新品,而有的真是得恶补一下历史知识才行。

    有的产品命名已经被大家吐槽很多次了,但就是不改,而有的其实只要你弄明白它的命名逻辑,就很容易能分清定位。这篇文章就来给大家盘点一下,那些「瞎命名」的数码产品。


    左右横跳:索尼 Xperia

    先来说说大家最熟悉的手机(主要说智能手机时代),其实早期的手机命名很清晰,数字代表更迭,Plus 是更大,Pro 是更强,人们很容易就能找到自己想要的对应机型,但是有些品牌并不按常理出牌,比如索尼。

    + +
    +

    想把索尼手机的整个命名逻辑讲清楚,可能得单写一篇文章才行,因为它经历了多个时期,涉及的产品很多。单说旗舰机系列,2013 年开始是 Xperia Z,后面跟数字,Compact 代表小尺寸,Z5 这代开始有了 Premium 机型,配备一块 4K 显示屏。

    +          索尼 Xpreia Z3

    2016 年开始用 XZ 系列取代 Z 系列,一直到 XZ3。

    +          索尼 Xperia XZ1

    2019 年,索尼移动推出了架构重新整合后的第一款产品——Xperia 1,新命名暗示了它是「One Sony」战略真正集大成的作品。Premium 机型被取消,Xperia 5 则代表小屏旗舰,类似之前的 Compact 机型,Xperia 10 是中端。后面的升级是在阿拉伯数字后面加罗马数字,Xperia 1 II、Xperia 5 II、Xperia 10 II。

    +          索尼 Xperia 1 II

    索尼手机的迷之命名,一方面是为了和相机系列统一,另一方面也要归结于索尼自己的「任性」,战略方向一改再改。目前只要知道,数字越小代表越强就好了。


    数学鬼才:诺基亚

    最复杂的说完了,其它的都算是「小巫见大巫」。比如 HMD 领导下的诺基亚手机,从 1-9 数字越大代表越高端,之后的更新直接在数字后加小数点。

    + +
    +

    想找诺基亚目前的高端手机还算简单,看数字大小就好,至于复刻机型大多还沿用了功能机时代的命名,那就需要翻翻历史了。

    +          Nokia 9 PureView


    星巴克卧底:当代智能机

    最近的手机命名又出现一种「怪象」,就是同系列机型会推多个版本,中杯、大杯、超大杯。这也导致之前容易区分的后缀变得「通货膨胀」,就连命名一直很克制、有规律的苹果,也出现了「Pro Max」这样的称呼。

    + +
    +

    这反映了手机行业充分竞争的状态,品牌在各个细分领域都力求覆盖更多人群。虽然近两年已经有子品牌来分担划分人群的重任,但目前来看依然混乱,系列定位一调再调,有的换层皮就是新机型、国际版机型,小米旗下 Redmi 品牌的 Redmi K30 更是被戏称为「K30 宇宙」。

    留给手机品牌的后缀不多了,但混乱总比消失要好。


    缩写狂魔:索尼耳机

    回过头再说说索尼,索尼耳机的命名也一直是被吐槽很多。比如最新的索尼 WH-1000XM4,WH 是什么?1000X 是什么?M4 又是什么?为什么要搞这么长...... 其实只要搞清楚它们各自代表的含义,就全都明白了。

    +          索尼 WH-1000XM4

    前面字母缩写代表分类,WH(Wireless Headband)是无线头戴、WI(Wireless In ear)是无线颈挂、WF(Wireless Free)是真无线、SP(Sports)是运动......1000X 代表无线降噪系列,后面的数字是迭代。

                 

    造字大师:韶音耳机

    耳机界的另一个起名「鬼才」是韶音,骨传导耳机本来就够小众了,他们每个系列都要起一个复杂的产品名,比如 Aeropex、Xtrainerz,别说记住了,有的念都念不对,近两年才开始往简单化处理。爱好者和媒体通常都以型号名区分每个系列,比如 AS800 对应 Aeropex、AS660 对应 OpenMove。

    +          韶音 AEROPEX

    复杂的命名对于品牌传播不是一件好事,当然也有为了方便宣传,刻意不按规则命名的例子(比如骁龙 888)。对于命名的重视也是品牌体现「用户体验」的一部分,之前很多数码产品直接拿内部代号当产品名,因为那时候渠道为王,品牌宣传、粉丝基础没有那么重要。现在就不一样了,起一个朗朗上口、容易传播的名字,有时比产品本身更重要。


    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Thu, 17 Dec 2020 21:10:10 +0800 +
    + + + <![CDATA[一加:任性产品力的突围]]> + + http://www.geekpark.net/news/271331 + + 「明年我们的核心是怎么破圈,让用户知道我们。」

    在一加手机 CEO 刘作虎日前接受极客公园记者的访谈上,他这样说。访谈的契机是一加手机七周年,刘作虎发了一封内部信。信的核心一方面鼓舞团队士气,另一方面也向外传递出了有关一加未来发展的信号。

    在信中,刘作虎谈到:「过去 7 年,我们一直被称为『小而美』,接下来,我希望大家要有危机感,也更要有企图心,让一加可以不止于『小而美』。」

    这不是刘作虎第一次对外传递这样的信号。在今年 10 月一加手机 8T 的发布会上,刘作虎曾非常清晰地表示,一加手机未来要在「产品线、渠道、生态」三个方向上「做大」。

    从「小」变「大」是一加在接下来一年的发展目标,与之对应的,在打法上也产生了一些变化。如果能按计划实现,一加将在国内发布更丰富的产品线,占据更多的市场份额,甚至成为主流机型。在国内,消费者将看到一加线下店。并且,一加将「不止于手机」。

    产品线、渠道、生态,在对于一家手机公司来说最重要的三个维度,一加都将迎来变化。如此大刀阔斧的改革和过去七年一加「低调」的风格貌似发生了偏离,让消费者困惑。但如果联系整个商业社会,从更宏观的消费环境分析,一加的转变或许是一种水到渠成的必然。

    一加其实不小

    在中国智能手机行业里,一加是一个非常特别的存在。它起步于 2013 年,这七年间,国内手机市场从数千个手机品牌的厮杀发展到如今几个巨头之间的竞争。一加活了下来,并且以一种非常特别的方式。

    海外的消费者或许比国内的消费者更熟悉一加。

    世界范围内看,一加的产品已经走向 35 个国家和地区,是中国品牌「墙内开花墙外香」的典型代表。一加的产品聚焦在高端旗舰机型,在海外高端市场中,一加在欧洲、印度和北美都占据了相当重要的市场位置。在印度,一加甚至在高端市场超越了苹果和三星,成为市占率第一的手机品牌。

    从手机行业全局出发,一加或许是一个「小而美」的公司。但在一加所在的高端市场,它绝对称不上「小」。

    +  2019 年 12 月,刘作虎在极客公园 IF X | 极客公园

    今年,尽管受到疫情影响,一加的销售数字仍然实现了漂亮的增长。刘作虎介绍,在欧洲,今年一加的销量照比全年目标超额完成了 50%,与去年相比利润翻倍。在北美区,一加在运营商渠道的销量超越了一些主要对手,总销量进入高端前三。

    在印度,一加的成绩一直不错。今年一加开辟了一条新的产品线,名为 Nord,在印度和欧洲销售。Nord 从发布起到现在一直处于缺货状态,并且是印度市场同等价位手机中的销量冠军。

    对于中国品牌来说,一加是一个出海范本。

    在海外,一加有非常好的用户基础和深入的产业资源,与运营商、当地经销商都有很强的战略合作绑定。比如,在全美,一加手机通过美国最大的电信运营商之一 T-Mobile 的线下 5600 余家门店进行销售,一加新机发布往往能引起消费者在线下渠道门前排队购机。

    +  2018 年 10 月 29 日,一加在纽约推出一加 6T | 视觉中国

    在几大海外市场,一加都有活跃的消费者社区,且社区参与者往往拥有较高的教育水平。在印度,一加的消费者中有 75% 拥有本科文凭。他们在一加用户社区中活跃交流、提出需求,一加在这些客群中建立了非常好的口碑。

    尽管一加没有长成庞然大物,但对于一个仅成立七年的公司来说,它扎得足够深。对于国内的消费者来说,一加的「小」更多是一种品牌印象,而非销售数字。

    任性的产品力

    一加能够打穿海外高端市场,与其产品设计策略有极大的关联性。一直以来,一加身上最为醒目的标签是「只做高端旗舰机」。与其说这是它的市场定位,不如说是其产品设计理念导致的一种必然。

    一加成立的七年,也是中国手机品牌之间厮杀最为激烈的七年。从几千家变为几家,在这场胜率仅为千分之一的战役中,绝大多数手机厂商都选择了一种较为保险的产品设计方法,瞄准大多数消费者的需求,以尽最大可能争取产品的市占率。

    但刘作虎不这样。

    区别于「瞄准更大的市场」,刘作虎更重视「什么是对的」。他不会为手机设置一个价格区间,再按换算出来的成本价做硬件的堆叠。刘作虎的理念是,从根源上考虑用户需要什么样的产品,再进行软件与硬件上的实现。至于定位在「高端旗舰」,那只是从用户需求出发获得的结果。

    在同行追求产品与市场之间的甜蜜点的时候,一加在做更好的产品;在同行不断叠加硬件参数与软件功能的时候,一加希望让用户「轻快流畅」、「无负担」。

    为了做消费者需要的事,作为手机厂商,一加甚至设计出了「禅定模式」这样「反手机」的功能。一加对产品的工业设计有着吹毛求疵的追求,并且不惜成本。

    这是一种非常任性的产品力。在早年间国内凶残的手机市场,对于一加这样一个在品牌势能及资金资源都有限的新品牌来说,这样的任性并不能击穿消费者。不过,这种不那么世故的打法,反而在海外市场收获了良好的口碑,这也支撑它走向了和别人不一样的路。

    +  2019 年 10 月 15 日,北京,一加手机发布一加 7T 系列 | 视觉中国

    如果要总结一加的前七年留下了什么,或许这会是一个答案——它证明了当一个产品有自己强烈的气质与特点,有自己锐利的长处,这样「有点任性」的产品是可以俘获一些人的,是有力量的。

    这是一加给时代的注脚,也是时代给一加的机遇。现在,曾经托起一加在海外市场前行的那个时代,来到了中国。

    消费者准备好了

    在中国的消费市场,新的国货品牌的崛起是 2020 年的热词。元气森林、完美日记、花西子、信良记、三顿半…... 这些新品牌被消费者所选择,靠的不是创造了一种新的产品,而是在原有的产品类目上针对一个关键的点进行了改良。

    元气森林对气泡水的口味做了优化,花西子主打中国风的设计,信良记在锁鲜方面做了改进,三顿半让优质咖啡以速溶的粉状形式进行储存。这些新品牌的核心思路,和一加的产品策略非常一致——针对用户的需求设计产品,并以一个非常锐利的角度打穿市场。

    再深一层探究,这些新品牌之所以能用这样的方法击穿市场,更根本的原因在于市场发生了变化。

    过去七年,是科技引领人民生活水平提升的七年,消费者的心态从未知带来的新鲜变为眼界放宽之后的挑剔。如今,他们有能力去识别什么是自己真正需要与喜欢的产品。也正是因为如此,在很多人的生活中,元气森林替代了可口可乐,三顿半替代了星巴克。

    一加成立的这七年,是智能手机普及,移动互联网爆发的七年。在这个过程中,消费者已经完成了对科技的基础认知。当消费者经历了足够多的手机产品,他们就能够识别并追随一些「不一样的」。

    国内的消费市场已经准备好了,这是时代给一加的机会。与此同时,一加的能力也与最初相比有了很大的不同。它积累了足够多的品牌势能、资源与经验,这些「资产」将支撑它把「有点任性的产品」带给更多的消费者。

    开篇提到一加的三个变化。具体说来,一加将布局更丰富的产品线、开设线下店、构建智能生态,这三个变化是一加在国内市场走向主流的办法。在自己和市场都准备好了的情况下,一加有机会靠它「任性的产品力」突围。在突围过程中,它不需要改变它「高端、精品」的核心,因为它与国内消费者的甜蜜点已经主动来临。

    有趣的是,在采访中刘作虎透露,一加的这三个变化是在两年前定下的,那正是元气森林等如今大火的新品牌们刚刚出发的日子。

    +  2020 年 10 月,一加 8T 正式发布,刘作虎提出三个做「大」| 极客公园

    在内部信中,刘作虎谈到,从 2013 年 2020,一加七年磨一剑,始终专注于打造好产品。进入 2021 年,在全球后疫情时代,世界政治经济局势仍有诸多的不确定因素,各大厂商的发力会更加迅猛。「开弓已没回头箭,一加会比以往任何一刻都更没有后路可退。」

    前方是时代给的机遇,后方是无路可退。对于一加来说,向国内主流高端市场进发,是必须要成功的路。


    责任编辑:张鹏

    图片来源:极客公园

    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Thu, 17 Dec 2020 18:40:00 +0800 +
    + + + <![CDATA[AirPods Pro Lite 明年上半年推出;比特币突破2万美元;瑞幸在美或被罚1.8亿美元|极客早知道]]> + + http://www.geekpark.net/news/271273 + +

    瑞幸咖啡同意向美 SEC 支付 1.8 亿美元罚款,以了结会计欺诈指控

    + +

    北京时间 12 月 17 日早间消息,美国证券交易委员会(SEC)指控瑞幸咖啡严重虚报公司营收、费用和净运营亏损,以此欺骗投资者,试图使其看起来像是实现了快速的增长和提高了盈利能力,并达到该公司的盈利预期。瑞幸咖啡则已同意支付 1.8 亿美元的罚款,以了结该委员会的这一指控。

    美国证券交易委员会在起诉书中指称,至少在 2019 年 4 月到 2020 年 1 月之间,瑞幸咖啡通过三个独立的购买计划,利用关联方对销售交易进行造假,故意捏造了超过 3 亿美元的零售额等。瑞幸咖啡并未承认或否认这些指控,但同意达成一项和解协议,其中包括支付 1.8 亿美元的罚款。该协议还需得到法院批准才能生效。(来源:新浪科技)


    电子竞技成为杭州亚运会正式竞赛项目

    12 月 16 日,亚奥理事会第 39 次全体代表大会以线上线下相结合的形式召开。会上,电子竞技和霹雳舞正式获准列入杭州亚运会竞赛项目。电子竞技与棋类项目同属于 " 智力项目 ",霹雳舞则属于 " 体育舞蹈 "。这意味着电子竞技和霹雳舞正式列入杭州亚运会竞赛项目。(来源:深圳特区报)


    嫦娥五号探测器圆满完成我国首次月球采样返回任务

    12 月 17 日凌晨,探月工程嫦娥五号返回器在内蒙古四子王旗预定区域成功着陆,标志着我国首次月球采样返回任务圆满完成。按计划,回收后的嫦娥五号返回器在完成必要的地面处理工作后将空运至北京开舱,取出样品容器及搭载物。(来源:财联社)


    + +

    腾讯调整涨薪机制,管理层轮岗试点开始

    + +

    2020 年开始,腾讯对员工的年度例行涨薪机制「普调」进行了修正:新机制被更名为「薪资回顾」,同时打破了过去员工在每年 4 月必然获得涨薪的原则。一位腾讯人士表示,在「普调」机制下,员工即便没有做出特别突出的成绩往往也可获得最少几百元的涨薪,但「薪资回顾」则为「不涨薪」留下了口子。与此同时,腾讯在总监和总经理层级也开始了小范围的轮岗制度试点。目前已经涉及平台与内容事业群(PCG)内多个业务。(来源:晚点 LatePost)


    App Annie:沙特成 TikTok 收入增长最高市场

    + +

    移动数据和分析公司 App Annie 发布 2020 年 11 月中国厂商及应用出海收入 30 强榜单。BIGO 和 TikTok 作为出海应用收入榜中唯二的非游戏应用,收入表现仍然稳定。值得关注的是 TikTok 逐渐在中东地区取代 Instagram 等更成熟的应用成为 95 后用户最喜爱的社交软件,与上月相比在沙特阿拉伯的收入增长高达三位数,成为 TikTok 收入增长最高的市场。(来源:36kr)


    + +

    头条搜索发布 2020 年十大热门问题,北斗、个税话题上榜

    近日,头条搜索发布 2020 年十大热门问题,新冠肺炎相关问题居于榜首,5G、北斗卫星导航、个税相关话题上榜。头条搜索负责人表示,相关问题的搜索量反映了用户信息需求的变化。上半年疫情爆发后,用户希望了解疫情相关知识,「什么是新冠病毒肺炎」「无症状感染者是什么意思」等搜索量增长明显。下半年,随着疫情防控趋稳,用户更加关注疫情解决方案,「疫苗研发进展」等搜索量逐渐增多。(来源:极客公园)


    B 站纪录片用户数突破 9 千万,明年将上线超 30 部新片

    12 月 14-17 日,2020 中国(广州)国际纪录节在广州举行。12 月 15 日,哔哩哔哩(以下简称「B 站」)公布了最新的纪录片出品计划,2021 年 B 站将上线超 30 部新片,其中包括大受好评的《但是还有书籍》第二季以及与 BBC 联合出品的历史题材纪录片《Ancients》。今年 12 月 B 站纪录片频道的观看用户数已突破 9 千万。(来源:36kr)


    首只规模超万亿美元的股票基金诞生

    Vanguard Group 旗下一支股票基金成为同类基金中首支资产超过 1 万亿美元的基金,这反映过去三十年来基于指数投资的兴起。公司数据显示,基金 Vanguard Total Stock Market Index Fund 截至 11 月 30 日的资产规模为 1.04 万亿美元。该基金包括共同基金和交易所交易基金。(来源:彭博社)


    限高令已再度解除,罗永浩:每周工作 105 小时

    + +

    前不久网络报道称,罗永浩因为债务纠纷再次发限高令,不能坐高铁,导致他去外地领奖要坐 17 小时普通列车。近日,罗永浩参加了脉脉举办的评奖活动上,罗永浩获得了「了不起的职场人」奖项,并透露限高令已经被解除。此外,罗永浩还提到自己为了还债,现在每周工作 105 个小时,算下来每天至少工作 15 个小时,7 天不休。(来源:快科技)


    + +

    苹果正准备 Airpods Pro Lite,明年上半年推出

    + +

    据外媒报道,多个行业高管透露,苹果已经确认将发布 AirPods Pro 的「Lite」版本(未定名),不支持主动降噪功能,预计它将以较低的价格发售。原因归纳于苹果计划进一步扩大无线耳机市场份额。

    消息人士指出,苹果正在与一家韩国的材料企业合作开发一种搭载  H1 芯片的 Air-Pop 驱动芯片的系统级封装(SiP)产品。相比于现有的圆形 SiP,新的 Lite 型 SiP 据说是一个简单的正方形结构,该耳机在今年年内进行完成质量验证并将于明年开始生产。(来源:IT 之家)


    + +

    Apple Watch 或增加指纹识别和屏下隐藏式摄像头

    + +

    据外媒 macrumors 报道,根据两份新公布的专利申请显示,苹果正在考虑为 Apple Watch 增加 Touch ID 和屏下隐藏式摄像头。外媒 Patently Apple 发现了一项由美国专利和商标局授予的专利,专利名称为「具有密封按钮生物识别传感系统的电子设备」。这个专利申请解释了如何将 Touch ID 集成到 Apple Watch 的侧边按钮中,以及它可以达到什么实际目的。(来源:新浪数码)


    + +

    比特币首破 2 万美元大关

    + +

    12 月 16 日,比特币飙升 7%,创下历史新高,突破了近几周来作为市场上限的 2 万美元的关键心理关口,至 2.08 万美元。今年以来,加密货币的价格上涨了逾 170%,主要是受到大型投资者需求的推动,这些投资者被其快速增值的潜力所吸引,并声称其具有抗通胀性能,预计它将成为一种主流支付方式。(来源:新浪财经)


    ]]> +
    + 极客公园 + Thu, 17 Dec 2020 08:32:11 +0800 +
    + + + <![CDATA[极客之选年度评选丨年度真无线降噪耳机:OPPO Enco X]]> + + http://www.geekpark.net/news/271140 + + 在 2020 这魔幻的一年,极客之选(微信号 GeekChoice)与大家一起经历了太多「活久见」的奇异事件,很开心我们能够一直陪在你们身边,并且一直努力为大家奉上更出色的数码产品内容。「年度产品评选」是极客之选每年年底的保留栏目,从 12 月 1 日开始,我们将会逐一揭晓获奖产品,本次评选将涉及三个大类近 20 个细分奖项。从「娱乐至上」到「生产力万岁」,极客之选希望能够通过不同维度和视角,和大家一起聊聊那些 2020 年最有料的科技产品。

    凭借着足够便捷的使用逻辑,真无线耳机很快获得了用户的广泛认可。不过厂商们并没有因此停下前进的脚步,继续打磨音质表现的同时,让耳机具备主动降噪能力,成为了一条新的发展路径,OPPO Enco X 便是其中很有代表性的一款产品。

    +

    作为一家以研发生产影音产品起家的公司,OPPO 做音频类设备其实要比大多数手机厂商更有经验。为了追求更好的音质效果,他们不仅请到了北欧高端 Hi-Fi 音响品牌丹拿进行联合调音,也把之前积累下来的声学成果加以改进升级,运用到了 OPPO Enco X 上。

    +

    具体来讲,它搭载了全新的「DBEE 3.0」的声学系统,这套系统的特别之处是采用了同轴双单元设计,前置超导磁平面振膜高频单元,后置三层复合振膜大动圈中低频单元,双单元处于同轴,进一步提升高频延展性的同时,也带来了非常结实有力的低频表现。再加上与丹拿联合调音,OPPO Enco X 具备了同价位 TWS 耳机中的标杆级音质表现。

    这款耳机的降噪能力也很突出,它选择了很多高端降噪耳机上经常会见到的双馈式降噪方案,提供强降噪、弱降噪、降噪关以及通透模式四种降噪模式,最大降噪深度能够达到 35db,是为数不多可以做到这一水平的真无线降噪耳机。

    至于连接性方面,OPPO Enco X 内置有蓝牙 5.2 芯片,支持双路传输,有效连接范围为 10 米,搭配 OPPO 手机使用传输延时低至 94ms,同时操作十分便捷,无需拿起手机即可实现调节音量、切换歌曲等操作。值得一提的是,用户还可以自定义超长按触控,不需要重新配对,就可以在最近两个已连接的设备之间快速切换,使用便捷性非常高。

    总的来说,OPPO Enco X 最大的优点是有着非常出色的音质以及降噪表现,这也是我们将其评选为年度真无线降噪耳机的主要原因。当然,不错的延时控制、舒适的佩戴体验和便捷的操控逻辑等方面也都是它的加分项。

    点击此处查看更多奖项


    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Wed, 16 Dec 2020 22:54:00 +0800 +
    + + + <![CDATA[和张小龙直播连麦会是怎样的体验?]]> + + http://www.geekpark.net/news/271262 + + 最近,在微信视频号里发生了一场有趣的直播,平时很少抛头露面的微信创始人张小龙不仅来围观了,并且在直播尾声,留言说下次要跟主播一起连麦。

    这场直播的主播是极客公园创始人张鹏和科技自媒体人潘乱。张小龙向他俩发起的连麦邀约在圈子里引发了不小的轰动。有人猜测,这个「连麦」可能意指视频号的直播连麦功能。

    据了解,恰恰是因为一直没等到视频号上线这个功能,张鹏和潘乱才干脆搞了场线下连麦,想着随意聊聊各自对视频号的观察。

    这是极客公园创始人张鹏在视频号里做的第二场直播。他的视频号直播第一次是聊「外星人」的话题,他讲的时候手里还拿着个平板电脑,上面是提前准备好的一堆资料,几乎是当成演讲去准备。

    那次,张小龙也来到直播间围观了。结束后,他还跟张鹏聊了聊自己的感受。让张鹏印象比较深的是,张小龙建议他,以后的直播可以准备得少一点,可以更随性一些。

    张鹏当时就觉得,「张小龙对视频号直播肯定有些不一样的想法。」

    和潘乱的这次「连麦」,基本算是张鹏临时起意。视频号多数直播都是一个人对着手机在讲,张鹏就想,能不能搞个双人双路信号的直播尝试,两个人一起聊,但也拉进了各自的朋友参与交流。

    他把这个想法告诉潘乱,两人一拍即合。潘乱穿越了「北京最堵的大山子」来到极客公园。唯一的准备,就是临播前十分钟,两人在纸上列了几个对谈关键词,把两台手机架起来,直播就开始了。 


    + +

    +
    +

    直播时,正聊着视频号相关的内容,看到有老熟人进来,两人会地停下来跟对方打招呼,有人留言问候近况,话题会短暂偏离既定主题,开始拉家常扯闲篇,但这并不影响整体对于视频号的讨论。

    跟秀场、游戏直播的氛围不同,视频号的直播间更像一个会客厅,主播就是这个客厅的主人,来往进出的都是主人的朋友们,有的可能就停留一下看看,有的也会参与话题讨论,参与是随性的和无负担的。

    张鹏认为视频号直播只是对自己来说,就像一个线上派对。张鹏进一步解释,一对多的实时互动在线下就是开派对,在线上却可以是视频号直播,从这个维度看,视频号直播对于微信而言,也算是是一种社交数字化在「一对一」实时沟通之外,对「一对多」实时沟通的补齐。

    「直播时候进来的大部分是老朋友,少数是老朋友朋友圈分享带来的新朋友,这和开线下聚会很像。」

    潘乱则分享了他作为视频号创作者的体感。他自称「已经成为一个周更博主」。最近一周,他找一圈朋友聊天,交谈时开着手机录几段,回去就精剪下发视频号。 

    让潘乱感到惊讶的是,自从开始搞视频做直播之后,如今出门也能被陌生人认出来,并且被当作明星一样要签名。 

    「这些是真实发生的」,潘乱说,之前去一家公司做访谈,在食堂吃饭的时候就被人认出了,在一个活动上,还有人托同事帮忙要他的签名,「吓了我一跳」。 

    从事媒体行业多年,潘乱一直是个图文内容创作者。文字写作,作者隐藏在幕后,视频创作却让他从幕后走到台前,这是潘乱感觉变化最大的地方。

    如今,潘乱一直在摸索让自己舒适的视频创作状态。直播时,他提到:「过去,哪怕做个一分钟的视频都得花几个小时。现在,我更愿意随性地去做,像是跟朋友聊天会有很多内容,我只需要选取一些好的片段。」 

    随看随走,随性创作,视频号保留了一些微信「用完即走」的工具特性。然而,作为在一个封闭通讯产品里长出的社交媒体,视频号又给微信带来了更多内容和生态上的变化。 

    对此,张鹏提到一个观察,在视频号的朋友推荐栏,相对少看到搞笑或者美女这种类型的视频,「我后来想了下,其实这些内容大家可能也都爱看,但在视频号会不好意思点赞,因为会被朋友看到」。在这里「人性」发挥了一个不太一样的作用,社交推荐确实塑造了一些不同的内容氛围。

    在视频号里,目前分享的主要方式是点赞,也就是社交推荐。点赞代表你对内容的评价,一个红心点亮后,这条内容就会出现在你朋友的视频信息流里。

    潘乱说,社交推荐的重点在人,一段视频因为一个推荐才会在一条关系链上产生信息价值,正如你会重点关注你在意的人推荐的内容。 

    直播开始不久,就突然有人留言提示,张小龙,于是整个直播间变得更热闹了。不少人开始发「龙哥,龙哥」刷屏。但张小龙没有回应。

    但到了视频尾声,张小龙突然发了一条评论,瞬间引爆了直播间。         

    +

    + +

    +
    +

    +

    「两位讲的都很好,下次我来连麦,比采访来的随意。」张小龙在直播间写下这段话。

    张鹏和张小龙日常交流较多,他后来分析说:「张小龙其实经常去看视频号直播,没啥大惊小怪的。他觉得这次聊的好,可能不是说我和潘乱说的都对,更可能是张小龙比较享受这次视频号直播带来的开放交流的体验,而这个体验接近他的产品设计思路。」

    张鹏开玩笑说,可能龙哥点赞的点,是「你们终于用对了这个产品」。

    这场张小龙围观的直播,两个直播间的总观看人次也就一千多,与那些动辄十万百万浏览的直播平台比,这个数量算是小巫见大巫。 

    但它通过微信的社交推荐,卷入了话题讨论的当事人和更多对这场直播内容感兴趣的朋友,也算是在微信上实现一对多社交的新尝试。

    直播结束后,张鹏私下问张小龙真的会连麦吗,张小龙说「肯定会的」。至于这场张小龙的连麦首秀是什么时候,目前还不确定,至少应该得等到视频号直播的连麦功能上线后才会出现。

    明年一月也是微信十周年的节点。加上恰逢微信一年一度的公开课 pro 大会,张小龙很可能又会出现,说出更多对视频号的思考。


    头图来源:极客公园

    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Wed, 16 Dec 2020 18:35:16 +0800 +
    + + + <![CDATA[我把fail掉的项目都拿出来做了「尸检」]]> + + http://www.geekpark.net/news/271254 + + 复盘一词最早来自于围棋,指一局对弈结束后,重新复演该局的记录,来检查招法的优劣与得失关键。

    创业中的每一招式也需要复盘,既是对阶段性成果的经验总结,也是对原始判断的一次校对和重新计算。

    复盘也是「未来前沿」创始人工坊所倡导的创业理念和方法之一。在过去的三期创始人工坊集结中,我们都会专门拿出一个模块的讨论时间,来一起进行关于复盘的分享和交流。

    今天的分享来自于驭势科技联合创始人、董事长 & CEO 吴甘沙,他曾是英特尔中国研究院的院长和首席工程师,领导了英特尔大数据技术战略长期规划。他在 2016 年所创立的驭势科技,目前是自动驾驶的头部企业,并在出行和物流两大领域有所布局。

    在第三期创始人工坊中,吴甘沙作为飞行教练,以一个成熟创业者的角度,对他的复盘进行「复盘」,总结出自己的复盘方法和收获。

    +          吴甘沙在第三期创始人工坊线上分享

    在吴甘沙看来,复盘的最高层次,应该是可以跳出思维的惯性去想事情。它不仅仅是一个形式,也应该是一项持续进行的过程,帮助创业者在实践中不断接近真相。

    希望他的分享,能够帮助你重新理解和思考复盘的意义#因现场分享私密性,部分内容有删减。感受原汁原味的创业讨论,欢迎你加入创始人工坊

    吴甘沙:坦率来说,每个季度都是一个很好的复盘机会,但我们做的还比较浅,没有特别对接上 OKR 的目标,去进行完整的复盘。

    但我们管理层最近做了一次比较深刻的复盘,把我们的很多问题、fail 掉的项目都拿出来,好好的做了一下「尸检」,还是很有作用的。

    我总结复盘其实分成三个层次:

    第一层次是这件事我重新做,能不能做的更好?这是对过程、路径进行复盘。

    第二层次是我是否能够改变一下目标,不光是原来那个事做的更好,而是能不能做一件更好的事?

    第三层次是 ABC 都失败了,我不是只对 A、B、C 事情复盘,一定是我固有的心智模式有问题,那这个心智模式是什么?我要找出来,站在更高的位置去看。

    那些真正有复盘意识的人,随时都在做复盘。关键是要养成经常复盘的习惯,帮自己打破原来的思维惯性。

    我之前在英特尔工作了十几年,给大家分享一个真实的故事:

    80 年代时,英特尔最大的业务线——内存,遭遇了来自日本企业的打压,它们用低价格、高品质的相同产品几乎把英特尔逼到了墙角。而英特尔的另一条业务线——CPU 处理器,也是刚冒出尖来,整个公司都处于低迷状态。

    创始人、董事长 CEO 戈登·摩尔#就是他提出了著名的「摩尔定律」,和总裁安迪·格鲁夫#写了那本脍炙人口的《只有偏执狂才能生存》,两个人也非常纠结,把自己关在办公室里很长时间思考出路。

     

    +

    创建了英特尔的三巨头,从左至右分别为安迪·格鲁夫,鲍勃·诺伊斯#他被称为「集成电路之父」,戈登·摩尔。



    后来,格鲁夫说了一句非常经典的话:如果我们被董事会 fire 掉下台了,你觉得新来的 CEO 会怎么办?摩尔没多想,就说新人没有历史包袱,可能会放弃掉内存的生意吧。

    于是格鲁夫就问:那为什么咱们不自己动手?

    这就是刚说的从第三个层次去复盘,跳出思维的惯性去想事情。

    创业者很容易产生所谓的「宜家效应」,总觉得自己搞的东西就是最好的。要你把曾经做出成绩的东西砍掉,的确很难。但你做创业就必须要果断取舍,努力让自己摆脱掉「宜家效应」,用理性去思考事情。

    尤其是我们技术背景的创始人,很容易做出一些成绩,就不自觉有了「宜家效应」,觉得自己简直天生就擅长做这件事,内心有一些膨胀。

    +

    「宜家效应」是由哈佛商学院的 3 位学者 Michael I. Norton、Daniel Mochon 和 Dan Ariely 于 2011 年发表的研究成果,人们会对自己投入劳动、情感而创造的事物,赋予更高的价值。


    还有一个反思就是「机会主义」,看到有啥新机会总想上,想试一试。

    我现在的复盘是,聚焦很容易理解,可问题恰恰是你不知道应该聚焦在哪里。如果每条路的成功可能性都是百分之几,过度聚焦在某一条路上可能就直接死掉了,所以还是要保留多种战略的可选择性。

    一旦你看到某件事有 60% 的成功可能性,就应该要押注了。而且你的资源不如大公司,更不能想象自己的团队要比大公司的人更勤奋、更聪明;一定要用最快速度把它做出来,才有可能成功。

    我们技术创业公司,就像是手里拿着锤子的人,在墙上(市场)摸索,只要觉得我找到钉子了(用户需求),就应该发力一锤敲下去。

    如果是处在「摸钉子」阶段,没找到钉子时,你有点机会主义是对的,每个都试试总比在原地等着饿死强。但在摸钉子的时候,创始人一定要很清醒知道自己是在摸钉子,千万不要很轻易的就搞大规模扩张。


    刚才说到的这两个反思,我觉得本质都是人性的问题,创业其实就是人性考验的大集合。

    你在一个行业越资深,就越容易经验主义,产生思维惯性,喜欢屏蔽掉那些不一样的声音。

    那怎么克服呢?

    可以试试在公司内部树立「蓝军」。比如我有一个同事,大家都说他说话喜欢「阴阳怪气」,好像为了挑刺而挑刺似的。但是现在我们把他定位成了公司内部的蓝军,专业挑刺,就是为了能有另一个视角的声音

    另外,我们创始人要有一种觉知,能够跳出来提醒自己说:哎,我是不是陷入到这个模式去了?然后通过几个层次经常复盘,多找外部的人聊,尽量让自己保持在一种理性的状态。



    「未来前沿」创始人工坊是由前沿社发起创造,面向早期创业者的新形态融资方式。通过与 VC 合伙人直接沟通,专题讨论,以及成熟企业家的经验分享,帮助创始人提升创业思维,打磨项目,快速获得融资。

    如果你想从第三方视角验证自己的创业项目,与资本建立更为直接、有效的沟通,真实了解「VC 为什么要投你/不投你」,欢迎点击这里申请加入创始人工坊#或添加工坊 JoJo 微信(sandboxjojo)了解详情。

    ]]> +
    + 极客公园 + Wed, 16 Dec 2020 16:05:14 +0800 +
    + + + <![CDATA[崛起的百万「团长」:到底是一份好工作,还是当炮灰?]]> + + http://www.geekpark.net/news/271214 + + 在北京打工的宋魏,对社区团购在中老年人群中的渗透力,感到吃惊。

    「我妈竟然跟我说,她打算在我爸退休之后,两人在小区整个摊位。别人买了东西就送到这儿来,一兜一兜的,没事儿还能和老太太唠唠嗑儿。」父母口中的新业务便是「当团长」。

    这个时间自由、只要管管微信群、不时向群里分享一些商品链接、也不需要自己进货、甚至不需要有实体店铺的零门槛生意,对于愿意和别人交流的人来说,确实有足够的吸引力。

    生活在成都的优美没有专门的线下店面,而是把自己的家当做自提点。「之前做过几年财会工作,后来和人合伙开美容院,到现在也有 20 多年了,营业也还不错。」

    后来,优美想着用空闲时间再做点事情,便从 2018 年成为了十荟团的团长。「做了团长之后,早上送完孩子 8 点不到,接着去美容院开晨会,然后回家收货,下午 5:00-5:30 去发货。」

    +

    「因为想把服务做到更极致,刻意把团员数量维持在 100-250 之间,团员数量不多,但粘性很强。目前每个月的销售额在 10 万元左右。」

    她觉得社区团购做的就是服务加销售,很在意社群的维护,「以至于现在不和团里有关的事,大家也会私信问我,物业上有什么事情、脸上过敏了也会来问我。」

    如果按照提成 10-15% 算的话,她这个副业带来的收入在每月 1 万-1.5 万元。

    过去两年,在社区团购创业公司的推动下,大批的宝妈、退休职工、保险等各行业人士开始尝试做「团长」。这些从线上成长起来的群体,也构成了团长最初的「人群画像」。足不出户做团长、每个月一万元左右的收入,在二三线城市、甚至农村,已经相当不错。

    不过,互联网巨头入场后,这个新兴职业的演变、分化开始急剧加速。


    新晋团长

    最近几个月,在互联网巨头疯狂地推之后,「团长」这个职业,瞬间在全中国铺开了。相较于过去普遍没有实体店面的团长,诞生了一类新团长。

    在美团、饿了么都找不到存在意义的南京郊区的一个村子里,却可以搜到大量的社区团购自提点。原本经营着便利店、五金店、菜市场、烟酒店的店主,今年都多了一个「团长」的身份。

    「兴盛优选在湖南行,在南京这儿不行。」李国强说,即便他本身经营着一家芙蓉兴盛便利店。从 10 月份起,他陆续加入了其他社区团购平台,「只要你申请加入就行,各个平台我都做,目前来自多多买菜的提成收入多些」。

    「社区团购肯定对我原来的生意有影响。不过,以后都得死。」李国强不看好这种商业模式,觉得主要靠烧钱补贴,「我不像他们那些专门干这个的,我也不运营微信群,不往里扔什么链接,那不是我的主业。」

    同样身兼多家平台团长、经营便利店的林秀也很少运营微信群。「不需要,现在大家都知道这个东西了,直接在小程序、APP 里下单,你可以在上面搜到我的店。」

    + +
    +
    被社区团购占领的便利店
    +

    「连我自己都在上面买东西,真的便宜。」林秀的店在南京城区的某小区楼下,周边的商业也非常发达。她并不担心社区团购会影响到自己的生意,「上面卖的很多都是我店里没有的。只要社区居民到我这儿取货,平台就给我提成。」

    林秀隔壁的沙县小吃也是多家社区团购平台的自提点,店长表示,「就是腾出些地方存货,还可以顺便拿点提成,也不运营啥微信群。」

    这些本来就经营着线下店铺的「新晋团长」,不可避免地会分食专职团长手中的份额。他们有一个普遍特征就是不重视运营社群,主要充当「快递接收点」的角色。

    而这类「新晋团长」,也是拼多多、美团拓展的主要对象。巨头们更希望社区居民直接打开 APP 下单,团长这个角色被弱化了。这引发了从业人群的担忧、以及社会的讨论:「专职团长」会不会只是一个过渡角色,在巨头完成业务覆盖之后而被「卸磨杀驴」?


    团长的两种未来

    人们担心是有道理的。不同平台对待团长的策略的不同,决定着团长的角色。目前看来,可以分为两类。

    根据观察,一类是以拼多多、美团这两个超级 APP 为主的平台,拓展的团长多是各种类型的线下门店,如前文所述,店主们通常不重视、也少有时间运营微信群,主要充当「提货点」的角色。在这种模式下,社区团购其实可以看作是传统的电商生意,其中合作的门店都可以当作是「菜鸟驿站」。美团和拼多多天生具有流量,最终目的还是要把流量收回到自己手中。

    + +
    济南某社区团长在对居民购买的货物进行盘点对账,准备分发
    +

    另一类是以十荟团、食享会、橙心优选为主的社区团购平台,开始鼓励旗下团长开设自己的线下门店。这种模式更贴近于线下实体零售,它的重点是「与团长合作开店」,不动摇团长「主人翁」的地位。可以说,巨头的团长,与创业公司的团长是不同的。

    在极客公园(ID:geekpark)走访的一家位于广州的连锁超市里,店员表示,「我不清楚店里的商品和社区团购上的有什么区别」。实际上,这家门店是兴盛优选的合作门店,但招聘来的店员似乎只愿意负责线下门店的收款结账工作。

    显然,按时打卡上下班、拿死工资的连锁超市店员很难承担起「团长」的角色,店铺也更适合充当「提货点」的功能,对于社区团购平台获取新用户的作用极其有限。

    或许是汲取了这种教训,十荟团、食享会、橙心优选最近的线下扩张策略,都强调团长的亲自参与。以食享会为例,其前不久公布了「3.0 云店」计划,便是探索与团长合作开社区门店,团长自己选址,食享会负责统一装修店面以及商品体系管理。

    另外,从团长的小程序端可以发现,他们普遍有一个「客户关系管理」的功能,这是传统夫妻店、连锁超市所不具备的。同时,某零售门店招聘系统开发公司内部人士向极客公园透露,已经有头部的社区团购平台开始着手打造社区门店的招聘管理体系。

    可以预见,这类社区团购的模式正在变得更加「重资产」,同时团长这个新兴职业也在向职业化、规范化演进。综合来看,无论是十荟团、食享会、橙心优选,还是兴盛优选,他们主要是深耕新型的社区便利店场景。

    + +
    杭州西湖区,滴滴旗下的社区团购门店「橙心优选」

    据阿里的数据,2018 年,我国有 660 万夫妻店,而最近几年社区超市的增长率保持在 15% 左右。按照这样的趋势,叠加社区团购对线下门店的促进,未来将会有更多的社区便利店诞生。

    如果按照目前有 700 万夫妻店(包括社区团购店)统计,一个店铺需要 1-2 名团长(老板)的话,那么这将是一个涉及人数达到 1000 万级别的庞大「新职业」群体。

    无论电商发展多快,社区团购的模式效率多高,每个小区的社区便利店是很难被取代的。因此,随着竞争的加剧,努力成为小区中的那个重要的社区实体门店,将是专职团长未来的方向。


    漩涡中的团长

    这并不是说「团长」的职业生涯稳了。

    团长生意的好坏,很大程度上取决于他们背后平台上的商品是否更便宜,质量更好,具有差异性,同时配送守时。平台的食物和供应链的不稳定将直接影响团长的客户关系,造成损失。

    这就考验平台对供应链的把控能力,以生鲜为例,稳定的菜品质量需要依托于平台在农产品生产、运输、加工等方面的投入,这需要巨大的资金。而这通常只有互联网巨头投入得起。

    另外,「补贴」也不会是一种常态,尤其是在「反垄断」监管更严格的未来。不过,实际上,「补贴」也并不是社区团购的商品更便宜的核心原因。社区团购的预售、次日自提的模式,可以降低生鲜食品在运输、存储上的损耗。

    另外,某物流公司创始人告诉极客公园,社区团购的履约模式在仓储配送成本上可以比传统方式降低 3-4 倍,在生鲜品类甚至可以降低近 20 倍。巨大的商业模式效率提升才是其存在的根本。

    与外卖小哥、网约车司机一样,团长也是一个由技术迭代而催生的新职业。而这门新职业也正在经历它发展至成熟中需要经历的洗礼。

    近日,杀入社区团购行业的互联网巨头被央媒批,「惦记几捆白菜」。实际上,社区团购的另一边连接着农民,通过打掉「中间商」,承担着帮农民增加收入的重任。禁止社区团购无疑也会影响到农民的收入。无论是小菜贩、还是农民,都是弱势群体,哪一方都不应该舍弃。社区团购遭受的质疑,和当年网约车的兴起让司机没了活路类似。

    关乎人们「菜篮子」的社区团购,并非只是一个待占领和改造的市场。社区团购在加速线下商业转型的同时,也在提醒战场上的互联网公司掌舵者——仅仅做一个商人,还是承担起责任,真正成长为「企业家」。


    责任编辑:靖宇

    图片来源:视觉中国

    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Wed, 16 Dec 2020 12:00:27 +0800 +
    + + + <![CDATA[罗永浩为售假羊毛衫致歉:3 倍赔付;监管再次叫停共享电单车;苹果增产 iPhone,明年售 2.3 亿部 | 极客早知道]]> + + http://www.geekpark.net/news/271203 + +

    中芯国际联席 CEO 梁孟松提出辞职

    12 月 15 日晚间消息,中芯国际于今日召开临时董事会,中芯国际联席 CEO 梁孟松被曝在董事会上提出辞职,董事长周子学并未当场批准。董事会后,中芯国际发布公告,宣布委任蒋尚义为公司第二类执行董事、董事会副董事长及战略委员会成员,自 2020 年 12 月 15 日起生效。

    随后,一份疑为梁孟松在董事会上公布的辞职声明在网络上传播。在这份疑似声明中,梁孟松阐述辞职缘由。此次的蒋尚义出任中芯国际副董事长一职的人事变动,梁孟松在 12 月 9 日才被董事长周子学告知,此前对此一无所知。

    这项人事变动并未提前与其进行充分沟通。梁孟松觉得非常的「错愕与不解」,觉得「已经不再被尊重与不被信任」,认为已不再需要他继续为公司前景打拼奋斗了。因此,梁孟松在公司董事会和股东会通过蒋尚义提名任职之后,正式提出了辞呈。(来源:芯智讯)


    +

    苹果计划 2021 年上半年增产 9600 万部 iPhone

    12 月 15 日讯,据日经新闻报道,随着 5G 手机需求强劲,苹果计划在 2021 年上半年增产 9600 万部 iPhone,同比提升 30%。其中估计包括 iPhone12、iPhone11 和 SE 的产量。

    苹果告知其供应商,明年手机数量将达到 2.3 亿部,不过这一目标可能会发生变化。同时,苹果供应商表示,需求前景相当不错,Pro 和 ProMax 的需求强于预期,而 12 的需求与预期持平,12mini 则略有疲软。(来源:财联社)


    亚马逊首款 L4 级 Robotaxi 亮相

    12 月 15 日消息,据国外媒体报道,亚马逊在 6 月份收购的自动驾驶汽车公司 Zoox,经过 6 年的原型设计和严格保密工作,终于公布了一款 L4 级自动驾驶的电动汽车。

    +

    这款自动「马车式」汽车是一款全电动四轮车,最多可坐 4 人,车的两端各有一台马达,可以双向行驶,最高时速可达 75 英里。车配备了两个电池组,每排座位下一组,一次充电可续航 16 个小时。Zoox 公司称,这是同类车中第一款能够以 75 英里/小时的速度行驶的车型,可能希望有朝一日将其投入高速公路。

    安全性方面,车辆顶部有六个激光雷达圆盘,以及多个雷达传感器和摄像头,提供了提供了 270 度的视野,几乎消除了盲点,还可以让车辆检测到 150 米以外的物体。该公司还计划在其他国家推出叫车服务,最早将在后年。但其宣称在费用方面,与 Uber 和 Lyft 运营的服务相比,将是十分有竞争力的。(来源:TechWeb)


    瑞士加密银行 Sygnum 将股票代币化并准备公开发行

    总部位于瑞士的加密银行 Sygnum 周一表示,其已经使用区块链技术将自己的股票进行了代币化,为即将到来的公开发行做准备,并表示这是「世界上第一次有银行这样做」。

    根据官方声明,Sygnum 利用其内部的代币平台 Desygnate 将其股票在以太坊区块链上代币化。Desygnate 建立在公共以太坊区块链上,于上月推出,旨在帮助发行者筹集资金、构建流动性,以及更有效地转移所有权。

    这一基于区块链的平台在分布式分类账上发行股票,提供了一种替代传统融资方式,如首次公开发行(IPO)。(来源:TechWeb)

    +

    北京约谈共享电单车企业,禁止在京投放

    12 月 15 日消息,北京市交通委表示,相关法律法规明确了北京市「不发展电动自行车租赁」的基本原则。多部门共同约谈多家在京运营的共享电动自行车企业,提出限期整改要求。逾期未能整改到位的企业及其运营平台,或将面临行政罚款、扣留车辆、下架 APP 等多重处罚。

    此次被约谈的企业涉及考拉出行、筋斗云出行、小遛共享、芒果电单车、蜜蜂出行、骑士出行等企业,原因为违反交通行政管理部门的要求违规投放共享电动自行车,且存在未按要求进行电动车登记、未能准确披露服务信息、未建立用户押金预付金专用账户、未按有关主管部门要求提供信息等多项问题,涉嫌严重扰乱互联网租赁自行车市场秩序。(来源:钛媒体)


    南京发布社区团购合规经营告知书,阿里美团滴滴等已签字

    12 月 15 日消息,近日,南京市市场监管局发布《电商「菜品社区团购」合规经营告知书》,在全省范围内率先规范社区团购市场。

    《告知书》重点强调了「有序竞争」和「诚信经营」两个关键词,要求经营者不得以不正当竞争方式获取交易机会或竞争优势,并因此损害其他经营者或消费者合法权益,尤其不得以低于成本的价格实施低价倾销。

    截至目前,阿里巴巴、美团、滴滴、苏宁、在南京等电商社区团购相关负责人,已先后在《告知书》上签字。(来源:钛媒体)


    罗永浩为售假羊毛衫致歉:将三倍赔付

    12 月 15 日消息,罗永浩微信公众号发布《关于 11 月 28 日交个朋友直播间所销售「皮尔卡丹」品牌羊毛衫为假货的声明》表示,「交个朋友直播间」从专业机构检测得知,其送检的五件 11 月 28 日销售的「皮尔卡丹」品牌羊毛衫为非羊毛制品。

    +

    声明中表示,直播销售的商品渠道来自成都淘立播网络科技有限公司,销售前签署了法律协议,并检查各类证书。声明写到,「尽管手续齐全、流程合规,但产品还是出了问题,这让我们感到万分抱歉和愧疚。」

    对此,「交个朋友直播间」表示将马上联系消费者,先进行三倍赔付。未来公司将重新梳理管理流程,优化渠道合作伙伴管理机制。(来源:DoNews)


    「91 资源网」侵权案宣判,16 名被告人被判有期徒刑

    12 月 15 日消息,「91 资源网」系列网站涉嫌侵犯影视作品著作权案经法院审理,16 名被告人被判处有期徒刑,并处罚金。其中,被告人李某获刑 4 年,处罚金 45 万元。

    2018 年下半年,国家版权局下发「91 资源网」涉嫌侵权的线索,湖北省几部门迅速展开调查。民警侦查发现,犯罪嫌疑人未经著作权利人许可,伙同他人利用插件批量采集工具将大量新发行的电影电视剧等视频资源转载到自己架设的网站,供网民公开免费观看,并通过在视频资源中添加赌博网站、色情网站等滚动字幕广告,吸引网民参与赌博和涉黄活动,从中非法获利。

    通过进一步侦查,民警发现 91 资源系列网站的背后还有更大「视频供应商」。李某等 10 名犯罪嫌疑人「浮出水面」,他们通过购买国外域名和服务器注册多个网站,向境内网站提供非法视频资源,并利用虚拟身份通过互联网完成远程操作,形成「老板」「站长」「程序员」「版主」等上下级利益关系链条。(来源:人民网)

    +

    三星将在明年推出 4 款折叠屏手机,Note 系列或将停产

    据 ET News 消息,三星将在 2021 年推出四款折叠屏手机,新品有可能被命名为 Galaxy Z Fold 3 和 Galaxy Z Flip 2,全部支持 5G。Galaxy Z Fold 3 可以侧开,它将是一款针对全球市场和中国市场的机型。Galaxy Z Flip 2 将有高端和普通两款机型。三星电子已经制定了计划,将于明年 8 月开始生产这些折叠屏手机。

    +

    三星还将在 2021 年 1 月 14 日发布 S21 系列旗舰手机,计划将 S 系列和 Note 系列结合起来,在新 Galaxy S 系列中加入手写笔功能。这意味着 Note 系列将被替换为折叠屏手机,三星正在改变旗舰智能手机战略。(来源:新浪数码)


    外媒:苹果正在研发一款全新 Apple TV

    MacRumous 12 月 15 日消息称,苹果公司正在开发 Apple TV 的更新版本。MacRumous 援引《日经亚洲评论》今天发表的一份报告进一步推测,苹果公司将于明年发布 Apple TV 机顶盒的新版本。

    报道称,自从一月份在 iOS 13.4 beta 中发现未发布设备的迹象以来,关于新的「Apple TV」的谣言就一直在沸腾。当时,有传言称它将采用 A12 芯片,并具有 64GB 和 128GB 的存储容量。(来源:界面)

    +

    FDA 首次批准基因编辑猪上市,可食用也可医用

    12 月 15 日消息,据报道,美国食品和药物管理局(FDA)已正式批准,可将一种转基因猪用于食品和医疗产品领域。

    这种转基因猪由医疗公司 Revivicor「开发」,被称为「GalSafe」(半乳糖安全)猪,因为它们缺乏一种名为「α-半乳糖」(alpha-gal sugar)的分子,这种分子会引发过敏反应。该转基因猪可以用于生产药物,为移植提供器官和组织,并为肉类过敏症患者提供安全食用的肉类。

    这并不是 FDA 首次批准转基因动物。2009 年,FDA 批准了转基因山羊,这些山羊的奶水中可产生一种药物来防止血液凝块。2015 年,FDA 还批准了一种转基因鸡,可以在鸡蛋中制造一种药物。同年,一种三文鱼获 FDA 批准,成为第一个获准食用的转基因动物。(来源:新浪科技)

    +

    甲骨文创始人「逃离」硅谷 将在夏威夷小岛远程办公

    12 月 15 日消息,甲骨文创始人拉里·埃里森(Larry Ellison)在当地时间星期一发送给员工的一封电子邮件中称,他已搬离硅谷,搬到夏威夷的一座小岛上居住。

    +

    甲骨文上周证实,正在将公司总部由硅谷搬迁至得克萨斯州奥斯汀。埃里森在这封电子邮件中表示,公司员工「多次询问」他是否也将搬迁到得克萨斯州。埃里森说,「这一问题的答案是否定的,我已搬迁到夏威夷州,并将借助 Zoom 在拉奈岛上远程办公。」

    2012 年,埃里森斥资 3 亿美元在拉奈岛上购买了 9 万英亩(364 平方公里)土地,占该岛面积的 98%。埃里森重新装修了岛上的宾馆,并投资建立清洁能源系统,目的是将这座小岛打造成可持续发展试验田。(来源:凤凰网科技) 


    责任编辑:靖宇

    图片来源:Zoox、交个朋友微博、视觉中国

    ]]> +
    + 极客公园 + Wed, 16 Dec 2020 08:30:35 +0800 +
    + + + <![CDATA[​OPPO Enco X 故宫福启版:依旧 999 元,看起来更喜庆了]]> + + http://www.geekpark.net/news/271139 + + 进入到 2020 年之后,OPPO 明显加快了其在 IoT 领域的相关布局,尝试大屏设备的同时,音频产品也更加丰富。两个月前,OPPO 正式发布了联合丹拿一起进行调音的真无线降噪耳机 OPPO Enco X,最近他们又带来了 OPPO Enco X 故宫福启版。

    和一同亮相的 OPPO Watch 故宫新禧版手表一样,OPPO Enco X 故宫福启版同样以象征鸿运的「宫墙红」为主色调,并且外包装盒、充电盒、以及耳机主体也都加入了众多故宫的吉祥元素,整体显得非常喜庆,一起来欣赏下。

    +

    + OPPO Enco X 的充电盒设计灵感来源于 OPPO 初代 MP3 产品 X3,整体造型比较扁平,长度为 66.3 毫米,宽度为 49 毫米,厚度为 21.7 毫米,重量为 42.5 克左右(仅充电盒),外出放到兜里不会显得过于突兀。

    +

    大的方面,OPPO Enco X 故宫福启版区别于白歌、夜曲、竹韵等其它几个版本的地方是充电盒整体配色改成了红色,视觉效果会更有冲击力一些。当然,细节处理上 OPPO 也做了改动,融入了一些故宫元素。

    +

    比较容易看到的地方有两处,其一是充电盒背部的 DYNAUDIO 品牌 logo 采用了和包装盒一样的金色点缀;另外,外围的一圈装饰包边也加入了祥云海水纹样,颇有种时尚和经典相交融的味道。

    +

    + OPPO Enco X 几个版本的续航水平保持一致,将音量调至 50% 的情况下,强降噪模式耳机可以支持 4 个小时的音乐播放时长,配合充电盒使用为 20 个小时左右,关闭降噪续航时长要来得更久一些,配合充电盒使用最长可以达到 25 小时左右。

    +

    耳机主体配色和外包装盒以及充电盒保持一致,同样以红色和金色两种颜色为主。

    +

    值得一提的是,OPPO 在 Enco X 故宫福启版耳柄上做了金色暗纹,可能直接看上去并不容易发现,但光线斜向打上去时非常明显,这一点还是挺特别的。核心硬件规格参数以及功能特性上,OPPO Enco X 故宫福启版和另外几个版本没有太大区别。

    +

    具体来讲,它采用了全新的「DBEE 3.0」的声学系统,将音响设备中更常见的同轴双单元设计用到了耳机产品上。其中超导磁平面振膜单元为超导磁微型非晶态超薄合金平膜,用来提升高频的延展性,三层复合振膜大动圈单元则可以保证中低频部分的声音表现。

    +

    另外,这款耳机支持 LHDC 高码率传输,对比常见的 SBC 和 AAC,其优点在于能够保留更多声音细节,可以带来 Hi-Res 级别的音质表现,并且提供强降噪、弱降噪、降噪关以及通透模式四种降噪模式。

    +

    连接性方面,耳机内置有蓝牙 5.2 芯片,支持双路传输,有效连接范围为 10 米,搭配 OPPO 手机使用传输延时可以做到 94ms。

    +

    交互逻辑比较容易理解,你可以通过单击、双击、三击或者滑动等方式来实现对音乐播放、声音大小、接打电话以及呼出语音助手等任务控制,同时其也支持用户根据自己的实际使用需要进行自定义设置。

    +

    除了以上我们提到的这些,OPPO Enco X 具备 IP54 级别防尘防水能力,几乎已经成为真无线耳机标配的佩戴检测功能也没有落下。当然,如果你是 OPPO 手机用户,也可以体验到「开盖即连」所带来的便捷。

    +

    + 至于大家比较关注的佩戴舒适性上,OPPO Enco X 的单只耳机重量为 4.8 克左右,包装清单中一共附赠有三组尺寸不同的耳套,实际佩戴起来比较轻松,不会出现坠耳感。

    +

    + 总的来说,OPPO 在 Enco X 故宫福启版的优点是有着非常出色的主动降噪能力以及音质表现,同时诸多故宫设计元素的加入,也让它看起来非常喜庆。最重要的一点是,它的价格和其它几个版本一样依旧为 999 元,还是很有吸引力的。


    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Tue, 15 Dec 2020 15:12:56 +0800 +
    + + + <![CDATA[OPPO Watch 故宫新禧版开箱:新的一年,要红红火火]]> + + http://www.geekpark.net/news/271136 + + 在中国的传统文化中,红色和金色是两个比较特别的颜色。红色象征着喜悦和好运,金色则寓意高贵和富有,诸如春节或者各类庆典中,我们总能看到这两种颜色组合。

    大家应该有印象,之前的 R9s 新年特别版、R11s 新年特别版以及 R17 新年特别版,OPPO 都尝试过以红配金作为主色调,今年他们将这个「传统」带到了 IoT 产品上。

    赶在 2020 年即将划上句号之前,OPPO 发布了全新的 OPPO Watch 故宫新禧版,其除了颜色运用非常喜庆,从包装盒到手表本体都遍布了中国传统文化元素。

    +

    OPPO Watch 故宫新禧版外包装盒的配色以及图案很讲究,其选用了故宫的红色宫墙作为底色,顶盖中央印有烫金祥云,并且四周做了同款金色包边,第一眼看上去给人一种庄严且喜庆的感觉。

    +

    打开外包装盒盖之后,OPPO 还做了一层内包装。内包装设计借鉴的是古代计时采用的日晷仪,中央的 OPPO Watch 充当了指针的角色,手表外围一圈则印有子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥十二时辰刻度。

    揭开内包装层,左侧为充电底座包装盒,打开之后是印有祥云图案的充电底座;右侧摆放的用户手册借鉴了古代奏章的折叠设计,翻阅时非常有仪式感(这也是我距离皇家感觉距离最近的一次),并且二者表面均印有紫禁城经典元素图案。

    +

    手表本身当然也少不了故宫元素。OPPO Watch 故宫新禧版一共内置了白鹤紫霄、海错世界、流金岁月以及繁花似锦四套定制表盘,设计灵感均来源于故宫典藏文物。

    +

    + 以文章中展示的白鹤紫霄为例,它其实是一套动态表盘,设计灵感来源于蓝缎平金绣云鹤镶领袖边袍。点亮屏幕后,界面中央可以看到一个可以展动翅膀的白鹤,外围则由祥云图案作为填充。另外,时间也会以多种形式进行显示,非常特别。

    +

    本体配色同样以红色为主,侧边两枚物理按键则采用了金色作为点缀,有种故宫朱墙琉璃瓦的味道。当然,46mm 版本 OPPO Watch 按键上比较有辨识度的绿色凹槽设计,到了 OPPO Watch 故宫新禧版这里也依旧得以保留,盲操作时会比较方便。

    +

    平时不太容易关注到的手表背面 OPPO 也没有「偷懒」。和 46mm 版本 OPPO Watch 一样,它同样采用了陶瓷+塑胶底壳,曜黑配色,不同的地方在于,这次 OPPO 用镭雕工艺将祥云图案做到了底壳上,展现出高亮效果的同时,也显得更加精致。

    +

    + OPPO Watch 故宫新禧版表带配的是一副氟橡胶材质表带,图案和整体保持一致,表面印有祥云海水纹样,实际触感比较柔软。

    +

    核心硬件配置上,OPPO Watch 故宫新禧版和 46mm 版本 OPPO Watch 基本保持一致,之前我们对后者做过比较详细的评测,下面简单来过一下。

    +

    手表搭载了一块 1.91 英寸 AMOLED 曲面屏,分辨率为 402 x 476,覆盖 100% NTSC 色域,最高亮度可以达到 500nit,并且拥有 72.76% 的屏幕占比,正面观感非常棒。初次连接,OPPO 手机会自动弹出配对界面,操作起来很方便。

    +

    功能应用上,OPPO Watch 支持体能跑步、5 公里轻松跑、5 分钟轻松健身、减脂跑步、户外健走、户外骑行、游泳、训练助手(含瑜伽和健身)等一共 8 种运动模式,基本常见的运动种类都包含在内。

    +

    + 至于大家比较关注的健康监测能力上,诸如 24 小时实时心率监测、睡眠监测、经期管理、久坐提醒、呼吸减压等健康管理功能它也都没有落下。除了以上我们提到的这些,这款手表还支持多功能 NFC、可以独立接收/回复短信、QQ 消息,并且内置 Breeno 语音助手。

    值得一提的是,由于它本身具备 eSIM 通信能力,不借助手机也可以独立使用。开卡流程比较简单大家根据提示操作即可,有一点需要提醒的是,开卡前最好还是先确认下所在城市是否支持 eSIM,以免出现不必要的麻烦。

    +

    + 还有一点我个人比较喜欢的地方在于,OPPO 将快充技术带到了手表上,OPPO Watch 支持 Watch VOOC 闪充技术,15 分钟就能充至 46% 电量,充满也只要 75 分钟,这对于实际使用体验所带来的提升是显而易见的。

    总的来说,OPPO Watch 故宫新禧版在完整继承 46mm 版本 OPPO Watch 基础特性的同时,对外观设计以及主题元素等各方面都做了深度定制,而价格依旧 1999 元也让它显得非常有诚意。新年到来之际,买来自己用或者作为礼物送人都是一个不错的选择。


    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Tue, 15 Dec 2020 15:12:33 +0800 +
    + + + <![CDATA[有主动降噪和 60ms 超低延时,雷蛇出了款很适合打游戏的真无线耳机]]> + + http://www.geekpark.net/news/270972 + + 有线时代,雷蛇在玩家群体中建立了不错的用户口碑,提及外设装备,我们总能第一时间想到那个熟悉的绿色蛇形 logo,以及其广为流传的「灯厂」称号。最近几年,随着越来越多无线设备开始走红,他们很快改变了自己的产品路径,开始将重点放在「干掉有线」这件事情上。

    今年十一月份的时候,我们曾给大家介绍过具备低延时特性的雷蛇战锤狂鲨真无线耳机,从产品命名规则上也可以看到,这篇文章的主角——雷蛇战锤狂鲨真无线专业版耳机属于中期改款机型,它在保留标准版优点的同时,也加入了很多新的功能特性。

    +

    + 雷蛇战锤狂鲨真无线专业版的外包装盒设计和标准版没啥太大区别,产品大致外观、名称和一些主要功能都做了清晰标注,包装清单包括耳机主体、专属充电盒、USB-C 充电线、6 副硅胶耳塞套以及 1 副中号泡绵耳塞套。

    +

    充电盒造型改变比较明显。雷蛇战锤狂鲨真无线专业版的充电盒看上去要来得更加方正一些,同时充电接口由后方挪到了底部中央位置。另外,由于盒体周身均做成了圆润过渡,所以无法像标准版充电盒一样,可以不借助外物自主站立。

    +

    实际上手之后,能明显感觉到专业版的充电盒分量重一丢丢(43 克),不过换来了更久的续航表现。配合充电盒使用,雷蛇战锤狂鲨真无线专业版最高能坚持 20 个小时的使用时长,比标准版足足多了 4 个小时。以我个人的使用习惯来看,大概一周充两次电即可。

    +

    回到耳机上。作为中期改款产品,雷蛇战锤狂鲨真无线专业版和标准版的整体外观设计没有太大区别,左右耳机外侧依旧是标志性的绿色雷蛇 logo。但由于专业版的耳柄两侧均加入了前馈式主动降噪麦克风,所以仅从外观也还是能很容易对两款产品进行区分。

    +

    考虑到支持主动降噪之后,需要在耳机内部塞进更多电子元器件,雷蛇战锤狂鲨真无线专业版的长度和宽度都要比标准版有所增加,分别为 38.5 毫米和 19.8 毫米。好在重量变化不大,只增加了 0.5 克,戴起来不会有坠耳的感觉。

    +

    和很多同类产品一样,它也使用的是混合式主动降噪技术,原理之前我们在很多相关文章中也做过详细介绍,这里不再赘述。操作逻辑比较简单,只需在 logo 面板上长按 2 秒即可在主动降噪、快速响应(相当于通透模式)和标准模式之间进行切换。

    +

    开始主动降噪之后,雷蛇战锤狂鲨真无线专业版对于环境噪音的过滤效果还是比较明显的,而由于快速响应模式的存在,和他人交流时不需要摘下耳机也可以清楚听到对方的声音。当然,安静环境下还是会有底噪问题,不过并不明显,可以接受。

    +

    音质方面,它采用了 10 毫米驱动单元,中高音表现非常干净、丰富,非常适合用来打游戏或者看电影。值得一提的是,这也是寂星鲨耳机后又一款获得 THX 认证的雷蛇耳机。哦对了,之前标准版备受好评的游戏模式同样得以保留,激活之后可以将延时控制在 60 毫秒。

    +

    几乎已经成为无线耳机「标配」的入耳检测功能也没有落下。从我们的实际使用效果来看,雷蛇战锤狂鲨真无线专业版的检测准确性很高,摘下耳机之后音乐会自动暂停播放,重新戴上耳机则继续播放,省去了中间手动操作步骤,比较人性化。

    +

    + 值得一提的是,这次雷蛇为战锤狂鲨真无线专业版耳机专门设计了一个很酷的保护壳,它采用了弹性硅胶材质,表面覆盖有雷蛇标志性的大 logo。很特别的一点是,这款保护壳还附赠一个登山扣,外出携带起来非常方便。

    +

    总的来说,除了具备主动降噪能力,雷蛇战锤狂鲨真无线专业版的音质表现以及续航水平都要优于标准版。另外,由于这款耳机能够将延时控制到 60 毫秒,非常适合用来打游戏。如果你是一名游戏玩家,同时想要入手真无线降噪耳机,花 1599 元买来用还是不错的。

    ]]> +
    + 极客公园 + Tue, 15 Dec 2020 13:33:59 +0800 +
    + + + <![CDATA[看完行业真相,人民似乎真是要用不起充电宝了]]> + + http://www.geekpark.net/news/270891 + + 共享充电宝又掀起一阵浪潮。只不过对于用户来说,这阵浪潮并不是什么好事。

    「在商场里要叫车,手机马上没电,扫了个共享充电宝。从借到还一共 10 分钟,扣了我 4 块钱,特别是它还告诉你前 5 分钟免费。」家在广州的张洋向极客公园(ID:geekpark)抱怨。

    打开社交媒体,对共享充电宝悄悄涨价表达愤怒的用户不在少数,甚至还上了微博热搜。过了一个节日就涨价 1 块钱、一小时 10 块钱的共享充电宝,如果还不上就扣 99 元……年轻人继失去车厘子自由之后,连充电宝自由都快失去了。

    张洋自诩没有什么电量焦虑症,平常出门也不会太关注手机电量,没电的时候就用共享充电宝。但是最近几次经历让他认识到,自己在共享充电宝上花的钱还不如随身携带一个充电宝安心。

    然而,在疯狂涨价背后,充电宝从业者却道出了行业的「苦衷」。

    用户习惯培养已完成

    经过三年的发展,共享充电宝从一夜爆红到陷入沉寂,经历几次大起大落,却没能让这个行业消失。

    共享经济盛行的时代,在滴滴、Uber 等网约车和共享单车变成创业的香饽饽后,人们也在寻找哪些产品能被共享。在这期间,充电宝成为了下一个「风口」。

    但是,人们对于共享充电宝这个主意充满质疑,前「国民老公」王思聪曾经在朋友圈声称「共享充电宝能成,直播吃 X。」

    +
    王思聪著名的「共享充电宝赌局」| 网络

    但这阻挡不了共享充电宝迅猛发展。有机构统计,2017 年 4-6 月仅两个月时间,有 11 起相关融资事件,12 亿元入场,是 2015 年共享单车刚出现时获得融资额的近 5 倍。

    风口上有多疯狂,跌落的速度一样非常快。不到一年,近 10 家共享充电宝企业进入停止运营或项目清算阶段,美团也通过内部信表示,结束共享充电宝项目的试点运营。

    经历洗牌期后,行业的关键词是「稳步增长」。虽然相对低调,但企业们实打实地开始赚钱。街电、小电等企业相继宣布盈利,使得人们开始用不同角度看待共享充电宝。

    以共享单车作为对比,同属于共享经济时代诞生的模式,共享单车与共享充电宝如今已经产生了分化:前者已不再是一门创业公司的生意,更多作为流量的获取入口,也很难做到盈利;而共享充电宝真真正正成为了一门生意,也用盈利证明了自己。

    为什么会发生这样的情况?一位共享经济研究人士在接受极客公园采访时表示,二者的财务模型理论上都能跑通,每辆共享单车的生产成本还要比每台共享充电宝机器更低,不过共享单车的运维成本更高,损耗率也大,结合在一起就很难实现盈利。

    +          共享单车损耗率很高,各地都出现了「单车坟场」| 视觉中国

    不过,这两个新时代产生的新产品都没有消失,而是逐渐被更广泛的用户接受,在人们的心目中形成了基础认知。

    根据艾瑞咨询 2020 年初发布的共享充电宝行业研究报告,2019 年共享充电宝市场用户规模在 2.5 亿左右,2020 年预计可达到 2.9 亿人。

    也有报告提到,共享充电宝现已被「三电一兽」牢牢控制大部分市场,占据将近 90% 的市场份额。

    但一名业内人士告诉极客公园,这种说法不够全面。「其实几家低调的企业,像云充吧和搜电科技等市场份额应该也超过 10% 了。它们主要场景在三四线城市,如同拼多多与快手早期一样,被人们忽视。」

    市场空间变大,企业能达到盈利,在共享行业中,算是一个相当不错的标的。美团也在今年初看到市场潜力,「杀」了回来。

    共享充电宝涨价真相

    既然共享充电宝已经跑通逻辑且开始营业,为什么又在近期开始大幅涨价?

    实际上,共享充电宝在 2019 年已经有过一次涨价,但由于涨价幅度不是很大,大多从 1 元涨到 2 元。共享充电宝又属于价格不敏感型产品,涨到 2 元并不算特别突出。

    但对于企业端来说,由于用户习惯已经培养完成,运营商掌握了一定的议价权,涨价似乎是对自身盈利能力的一次证明。然而到了 2020 年,再次涨价的行为让消费者们很难不注意到。

    「最早的共享充电宝是用亏损换增长,前 1 小时补贴免租很常见,」一位多年从业者告诉极客公园,现在到了需要拼营收,拼盈利的阶段,涨价也成为必然。

    如果说 1 元、2 元时代用户还可以接受,那么 4-6 元,甚至有 10 元一小时的共享充电宝存在,消费者自然会产生抵触情绪。而这种情况也不能单单用「企业盈利」一个理由概括,在另一个维度上,也能得到解释。         

    +          充电宝的 1 元时代一去不复返 | 视觉中国

    首先,共享充电宝并不是全国统一定价。在不同地区,共享充电宝价格也会不同,比如在景区、商场等人流量较大的地方,价格会更高。与之对应的还有许多新玩法,有业内人士透露,某些企业会采取周五、周六部分涨价的策略。

    其次,某些价格也并不是完全由平台来决定,商家在其中的话语权越来越重。上述从业者表示,某些高档场所会主动要求提高价格。

    在这其中,平台的权重实际上被削弱。如果按照最小财务模型,即一台共享充电宝机器为 1000 元,每台设备一天租金收入 10 元来计算,商家在其中会抽取分成,甚至拥有一部分定价权,平台只是拿小头。「消费高的商家不希望摆在店里的共享充电宝很便宜,那样显得很 low。」他说到。

    最初的情况并非如此,实际上,最开始共享充电宝入驻商家都是免费,当市面上出现多家企业开始竞争后,为了争取市场,企业会出让利润给商家,当然也有高价买断,即缴纳一定金额的「入场费」,只允许该商家放一个品牌的共享充电宝。

    所以,共享充电宝发展三年时间,背后的成本结构已经发生了很大的转变。用最直白的话说,之前用户花 2 元租赁共享充电宝,2 元全部交给平台;现在花 5 元,其中 3 元都交给了商家。成本结构的改变倒逼共享充电宝企业,被迫向用户涨价。

    +         疫情期间的门店尚未营业,共享充电宝也无人问津,疫情可能是促使共享充电宝涨价的「导火索」| 视觉中国

    不过,在从业者看来,这样的情况本可以避免,但疫情是快速涨价的导火索之一。「2019 年的涨价本可以继续维持一段时间,可疫情让共享充电宝行业消费频次大大减少,为了保证盈利和现金流,不得不再次涨价。」一位资深分析人士表示。但是在他看来,共享充电宝涨价仍是少数现象,只不过民众情绪将它放大了而已。

    赚不赚钱是一回事,但共享充电宝确实是一门「苦」生意。技术和供应链都日益成熟的当下,有一定规模的共享充电宝企业们很少会在这些方面走弯路,但仅凭产品本身,也很难形成独特的品牌差异化。哪家企业能低成本地铺开更多点位,获取更多订单,是占领市场的核心之一。

    「整个市场一共 300-500 亿人民币的规模,美团也杀进来,对行业形成了新的挤压。」一位共享充电宝企业创始人提到,企业承载着盈利压力、巨头杀入市场、商家在其中掌握话语权、消费者也开始对价格敏感,重重困境之下,如果企业没有长期来看的核心竞争力和差异化能力,似乎涨价是其不多的选择。

    只是这样的状况恐怕无法继续维持。留给共享充电宝玩家们的,是精细化运营的效率之战,还有产品创新的破局之战。


    责任编辑:靖宇

    题图来源:视觉中国

    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Tue, 15 Dec 2020 13:03:38 +0800 +
    + + + <![CDATA[谷歌大宕机,YouTube 和 Gmail 服务中断;特斯拉:不在营销上花费精力;摩拜 App 正式「拜拜」]]> + + http://www.geekpark.net/news/271138 + +

    谷歌出现全球大规模宕机,YouTube 和 Gmail 等服务中断

    据报道,包括 YouTube 和 Gmail 在内的谷歌多项服务在周一早上遭遇全球性大规模宕机。网络状态监测服务公司 DownDetector 称,包括 YouTube、Gmail、Google Suite 和 Google Maps 在内的一系列谷歌服务,在美国东部时间周一早上 6 点 30 分(北京时间晚上 7 点 30 分)左右开始出现问题。

    +
    +

    有媒体报道称,此次宕机影响谷歌在多个国家的服务,包括美国、欧洲、印度、加拿大、南非、中南美洲国家、澳大利亚和其他一些国家。除了上述几项服务,Google Drive、Google Docs、Google Adwords、Google Adsense 和 Google Pay 等服务也受到了影响,但 Google.com 目前正常运行。

    到目前为止,还没有看到任何关于正在发生的事情的解释。有分析人士称,对于一个已经成长为互联网上最大的流量和活动驱动力之一的系统来说,这是一个前所未有的失败。(来源:新浪科技)


    +

    市场监管总局:正在依法审查虎牙与斗鱼合并等案件

    12 月 14 日消息,市场监管总局表示,今年上半年,已审查并无条件批准涉及协议控制结构的经营者集中申报案件——明察哲刚与环胜信息新设合营企业案,正在依法审查广州虎牙科技有限公司与武汉斗鱼鱼乐网络科技有限公司合并等涉及协议控制架构的经营者集中申报案件。

    在「双十一」规范线上经济秩序行政指导会,市场监管总局也明确涉及协议控制结构的经营者集中同样适用《反垄断法》,应当依法申报并接受反垄断审查。在《关于平台经济领域的反垄断指南》征求意见稿中也有相关规定。之所以多次强调这个问题,不是说在此之前涉及协议控制结构的经营者集中无需申报,而是为了进一步明确和重申对依法开展经营者集中申报的要求。(来源:钛媒体)


    市监总局详解阿里阅文丰巢被罚原因 "互联网不是反垄断法外之地"

    「尽管罚款额度较低,但是上述三个案件的处罚可以向社会释放加强互联网领域反垄断监管的信号,打消一些企业可能存在的侥幸和观望心理,产生相应的威慑效果。」

    据市场监管总局网站消息,根据《反垄断法》规定,市场监管总局对阿里巴巴投资有限公司收购银泰商业(集团)有限公司股权、阅文集团收购新丽传媒控股有限公司股权、深圳市丰巢网络技术有限公司收购中邮智递科技有限公司股权等三起未依法申报违法实施经营者集中案进行了调查,并于 2020 年 12 月 14 日依据《反垄断法》第 48 条、49 条作出处罚决定,对阿里巴巴投资有限公司、阅文集团和深圳市丰巢网络技术有限公司分别处以 50 万元人民币罚款的行政处罚。(来源:市场监管总局网站)


    摩拜正式说拜拜:14 日晚 23 时 59 分停止服务,全面接入美团

    「摩拜单车」要正式告别舞台了。12 月 14 日,据美团单车及电单车团队的公告,今晚,摩拜 App、摩拜微信小程序将停止服务和运营,即日起用户可选择使用原摩拜账号登陆美团 App,原摩拜账号中的余额、骑行卡套餐等相关权益仍可在美团 App 内继续使用。

    事实上,这个结果早已落定。2019 年 1 月 23 日,美团联合创始人、高级副总裁王慧文发布内部信,宣布摩拜已全面接入美团 APP,摩拜单车将成为美团 LBS 平台单车事业部,由他本人兼任事业部总经理。

    被收购后的摩拜单车,更名为「美团单车」,成为美团共享出行领域的业务之一。而摩拜单车的创世团队早已相继离开:2018 年 4 月摩拜联合创始人王晓峰因个人原因卸任 CEO;2018 年 12 月 23 日,摩拜创始人胡玮炜宣布卸任 CEO 一职,由刘禹接任 CEO;2019 年 1 月 23 日,摩拜接入美团 App 改名美团单车后,时任 CEO 刘禹离开摩拜去创业。今日的公告意味着,「摩拜单车」的名称也告别了舞台,往昔的共享单车独角兽正式成为历史。(来源:界面新闻)       


    比尔·盖茨:未来 4 到 6 个月将是美国疫情最糟糕阶段

    随着辉瑞的新冠病毒疫苗周日开始交付,人们对大流行有望结束的乐观情绪上升。但微软联合创始人比尔·盖茨警告称,美国还远远没有走出困境,今年冬季可能面临疫情最严重的时期。

    盖茨在一次电视采访中说:「不幸的是,未来 4 到 6 个月可能是大流行的最糟糕阶段。」美国食品药品管理局(FDA)局长史蒂芬·哈恩(Stephen Hahn)周日表示,他预计美国将于周一开始首批疫苗的接种工作。

    +
    +

    但医疗工作者和老年人将首先获得疫苗,广泛接种可能要等到明年春季甚至夏季。由于这个原因,美国卫生官员认为,美国的疫情可能要到 2021 年下半年才能得到控制,正如美国首席传染病专家安东尼-福奇博士所说的那样,届时大约 75% 的人口已经接种,从而产生一个「群体免疫保护伞」。盖茨说:「近期内仍将是坏消息,」他援引美国健康指标与评估研究所的一个模型指出,明年 4 月之前美国可能新增超过 20 万例新冠肺炎死亡病例。(来源:新浪财经)


    Reddit 将收购 TikTok 竞争对手 Dubsmash

    据报道,知情人士透露,拥有 15 年历史的在线新闻聚合社区 Reddit 已同意收购对口型视频应用 Dubsmash,后者是目前仅存的几家可与 TikTok 竞争的初创公司。

    这项最初定于周一宣布的收购标志着 Reddit 出人意料地进军移动视频领域,同时也为其带来了扩大用户基础和广告业务的机会。在这篇报道于周日发表后不久,Reddit 在其公司博客上官宣了这一收购,其首席执行官史蒂夫·霍夫曼(Steve Huffman)表示:「我们以社区为中心的平台可以共存并发展,我们可以互相学习。」

    收购这家对口型视频应用表明,大型科技公司正急于收割消费者对短视频日益增长的兴趣。其中一位知情人士说,收购价格尚未披露,但预计 Dubsmash 的股权持有者将主要用 Reddit 私人持有的股票支付。由风险资本支持的 Dubsmash 从 Index Ventures、Raine Ventures、General Catalyst 和 Balderton Capital 等在内的投资者处筹集了大约 2000 万美元。(来源:新浪科技)


    纬创印度 iPhone 代工厂遭打砸,印媒:苹果正调查该厂是否违反规则

    路透社 12 月 14 日消息,印度《经济时报》援引知情人士说法称,台湾科技公司、苹果公司供应商纬创设立在印度班加罗尔一 iPhone 代工厂 12 日发生暴力打砸事件,苹果正调查该工厂是否违反供应商准则。

    据《印度时报》此前报道,在这起事件中,疑有超过 20000 台 iPhone 手机遭到损毁。据知情人士称,工人因为对薪资不满而引起事端。据悉,该厂有近 2000 名工人,目前已有约 100 位参与暴动者被拘留。

    +
    +

    据新德里电视台报道,卡纳塔克邦副首席部长 Ashwath Narayan 对这起事件表示谴责。他补充说:「我们的政府将采取必要措施,确保情况迅速得到解决,所有利益相关者及其担忧都得到缓解。」他同时承诺将确保所有工人的权利得到适当保护,并付清他们的费用。(来源:界面新闻)


    张近东谈苏宁债务舆论风波:干扰了正常经营活动,应聚焦工作保持定力

    12 月 13 日,苏宁控股集团内部召开会议,董事长张近东提及了近期苏宁遭遇的舆论风波,同时重申了苏宁未来十年的发展方向。近日,国家企业信用信息公示系统官网显示,苏宁控股集团股东张近东、张康阳及南京润贤企业管理中心将公司全部股权出质给淘宝(中国)软件有限公司,合计出质股权数额为 10 亿元,与苏宁控股集团的注册资本金额等同。

    +
    +

    此消息一出,有关苏宁「债务危机」的猜测将其推向舆论中心。12 月 11 日,苏宁易购盘中一度下跌近 7.5%。对此,苏宁方面曾回应界面新闻称,目前,苏宁控股集团持有苏宁易购 3.98% 的股权,股权质押是正常的商业合作,对苏宁易购战略发展和正常经营无实质影响。 (来源:界面新闻)


    + +

    8848 钛金手机宣布关停加密通话功能

    +
    +

    12 月 14 日消息,近期北京珠穆朗玛移动通信公司发布关于 8848 钛金手机关停加密通话功能的紧急通知。IT 之家获悉,通知表示,根据国家工信部《电话用户真实身份信息登记规定》及相关运营商要求,8848 钛金手机全系列产品将于 2020 年 12 月 10 日 18:00 起关停「加密通话」功能。同时,针对需要使用加密通话功能的用户,8848 将提供私人助理转接服务作为替代方案,确保你能够继续享受隐藏主叫号码的通讯功能。(来源:IT 之家)


    云知声语音病历市场占有率高达 70%?科大讯飞称严重失实

    12 月 14 日消息,科大讯飞在互动平台表示,智慧医疗是讯飞布局的赛道领域之一,2020 年前三季度,科大讯飞智慧医疗业务实现营收较去年同期增长 119.22%。语音电子病历系统是讯飞医疗业务应用的重要场景之一,云知声关于其语音病历市场占有率高达 70% 的表述严重失实。公司在医疗领域的智能语音应用,无论是在深度、广度还是营收规模上,均远超云知声。(来源:36 氪)


    上海市政府常务会议决定:加快新能源汽车产业发展

    上海市委副书记、市长龚正 14 日主持召开市政府常务会议,促进本市综合保税区高质量发展,加快新能源汽车产业发展。

    会议原则同意《上海市加快新能源汽车产业发展实施计划(2021-2025 年)》和《关于支持本市燃料电池汽车产业发展若干政策》并指出,新能源汽车正处于大发展时期,上海必须以时不我待的紧迫感,积极抢占产业制高点。要鼓励不同技术路线竞争发展,加快公共领域新能源汽车的应用和充电桩的设施布局,全力打响上海新能源汽车品牌。要做好趋势研判,及时调整政策导向和相关标准。(来源:上观新闻)


    年内第三次增发,蔚来汽车将再融资 26.5 亿美元

    12 月 14 日讯,据媒体报道,蔚来汽车将增发 6800 万份 ADS,增发价格定在每份 ADS 39 美元 (上周五收盘价为 41.98 美元),将在增发中融资 26.5 亿美元。

    美国时间 12 月 10 日,蔚来汽车(NIO)公告称拟增发 6000 万美国存托股份(ADS),每股存托股份代表 2 股 A 类普通股,每股美国存托股票代表 1 股 A 类普通股。此外,承销商将有 30 天的选择权,可以额外购买总计 900 万份美国存托股份。摩根士丹利和中金香港将担任本次发行的承销商。

    公告显示,本次募集的资金用途主要为:60% 用于新产品和下一代自动驾驶技术的研发;30% 用于销售和服务网络扩展以及市场渗透;10% 用于一般公司用途。(来源:财联社、澎湃新闻)


    印度尼西亚希望成为 SpaceX 新火箭发射地

    +
    +

    据报道,印度尼西亚希望成为埃隆·马斯克(Elon Musk)旗下的 SpaceX 的火箭发射地。这个东南亚国家此前已经与马斯克的另一家公司,电动汽车生产商特斯拉就潜在的电池合作进行过了谈判。

    该国西亚海事和投资事务协调部透露,印尼总统佐科·维多多(Joko Widodo)一直在与马斯克就合作进行探讨。马斯克将在 1 月份派出一个团队前往印尼,对这笔潜在的投资进行考察。双方探讨的可能性之一,就是在爪哇中部建厂。

    + +

    印度尼西亚拥有大量的铜、镍和锡矿,该国的目标是成为世界上最大的电动汽车电池生产国。今年早些时候,马斯克称在 Twitter 上表示:「在大规模生产长续航电池方面,镍是最大的挑战!澳大利亚和加拿大做的很好,而美国的镍产量在客观上却非常少。」(来源:Techweb)


    《赛博朋克 2077》故障导致市值缩水 37%,但员工奖金照发

    12 月 14 日消息,波兰视频游戏发行商 CD Projekt 高管日前表示,尽管刚刚上市的游戏大作《赛博朋克 2077》(CyberPunk 2077)的表现还不够完美,但无论游戏的外部评价如何,开发人员都将获得全额奖金。

    但 CD Projekt 高管在致员工的一封电子邮件中称,无论游戏的评价如何,他们都将获得全额奖金。而此前,该游戏的开发人员曾被告知,他们将根据游戏的关键性能来获得额外奖励。

    值得注意的是,由于《赛博朋克 2077》出现一系列技术故障,并导致 CD Projekt 公开道歉,向不满的游戏机玩家提供退款,该公司股价已连续三个交易日暴跌。到目前为止,CD Projekt 市值已缩水 37%。(来源:钛媒体)


    + +

    三星发布 Game Driver App,可为手机独立更新 GPU 驱动

    目前的安卓手机尽管已经做到了非常高的易用性,但是和 Windows 设备比起来,其驱动更新的方式还比较繁琐,依旧依靠系统更新来完成。相比于 PC 平台显卡频繁的驱动更新速度,手机系统更新的频率以及效率都远远落后,限制了游戏性能的发挥。三星近日为其 Galaxy S20、N20 手机发布了名为「Samsung GameDriver」的 App,可以单独更新 GPU 驱动。

    +
    +

    这款应用是三星联合谷歌、高通、ARM 联合开发的。由于三星在同一型号手机使用不同的处理器(骁龙 865、Exynos 990),因此推出了两个软件版本,分别支持高通 Adren GPU 以及三星 Exynos 处理器的 Mali GPU。这款 App 大小仅为 51MB 至 61MB。现在最新的 GPU 驱动支持《使命召唤》、《堡垒之夜》、《Black Desert Mobile》三款游戏,未来将支持更多的游戏。三星表示,Samsung GameDriver 这款软件未来将支持更多的手机型号。(来源: IT 之家)


    Google 正测试浏览器黑暗模式下呈现搜索结果

    谷歌搜索的用户可能很快就会看到它的新面貌,这家搜索巨头终于测试出在其搜索结果中加入一个黑暗模式,这个模式有可能与 Mac 或 iPhone 的界面相匹配。自从在 macOS Mojave 和 iOS 13 中引入黑暗模式以来,黑暗模式一直是 iPhone 和 Mac 的卖点,开发者们迅速为他们的应用程序添加对黑暗用户界面的支持。虽然目前仍有一些应用尚未启用这种支持,但似乎谷歌在浏览器中的搜索结果未来可能会到来。

    +
    +

    + +

    谷歌的搜索结果页面默认为白色,不过可以通过各种浏览器扩展来改变,以实现黑暗模式的兼容。据 9to5Google 报道,该公司目前正在对基于桌面的浏览器搜索的黑暗界面进行 A/B 测试。在测试中,被随机选中的用户看到的搜索结果是深灰色的背景和浅色的文字。页面的一些元素也会被改变,以配合背景,比如白色的谷歌标志,以及代表搜索过滤的浅蓝色图标。(来源:cnBeta)


    三星明年下半年将推出 4 款可折叠手机,正研发卷轴手机

    据韩国媒体 ET News 报道称,三星实际上计划在 2021 年推出四款可折叠手机。该网站报道称,这些设备是两款 Galaxy Z Fold 3 和两款 Galaxy Z Flip 2。该媒体还声称,这四款手机都将支持 5G,这并不意外。

    ET News 没有报道 Fold 设备之间的差异,但其声称两款 Z Flip 手机将具有「不同的性能和功能」。报道还称,所有四款可折叠手机只计划在 2021 年下半年推出。因此,不要指望这些设备会与 Galaxy S21 系列一起亮相。

    据了解,ET News 还指出,三星正在研发一款卷轴手机,但称这并不是三星 2021 年商业计划的一部分。该媒体指称,三星的卷轴设计可以让屏幕向上拉伸,这与 Oppo X 2021 卷轴屏概念手机有很大的不同。(来源:IT 之家)


    + +

    特斯拉陶琳:不想在营销和公关上花费时间精力

    12 月 13 日消息,近日,特斯拉对外事务副总裁陶琳在个人微博回复网友评论时表示,「我们确实不想在营销和公关上花费时间精力。我们希望把资源用在真正能带来价值改变的事情。比如研发制造真正过硬的产品,为客户提供优秀的服务。时间最终会证明一切。」

    +
    +

    据了解,特斯拉此前就曾表示,在产品策略方面不想以广告宣传为主,而是很有信心地表示靠「产品力」说话。据悉,此前在美国担任公关相关工作的员工均已转岗或离职。

    + +

    不过今年十月,一则特斯拉在国内招聘 PR(公关)的信息在网络被曝光,随后特斯拉官方证实了该招聘信息的真实性。根据招聘详情来看,特斯拉计划在包括北京、深圳、广州、青岛在内的 10 个城市招聘「区域对外事务经理」,而这一职位明显就是公关。(来源:IT 之家)

    ]]> +
    + 极客公园 + Tue, 15 Dec 2020 08:24:20 +0800 +
    + + + <![CDATA[极客之选年度评选丨年度降噪耳机:索尼 WH-1000XM4]]> + + http://www.geekpark.net/news/270778 + + 在 2020 这魔幻的一年,极客之选(微信号 GeekChoice)与大家一起经历了太多「活久见」的奇异事件,很开心我们能够一直陪在你们身边,并且一直努力为大家奉上更出色的数码产品内容。「年度产品评选」是极客之选每年年底的保留栏目,从 12 月 1 日开始,我们将会逐一揭晓获奖产品,本次评选将涉及三个大类近 20 个细分奖项。从「娱乐至上」到「生产力万岁」,极客之选希望能够通过不同维度和视角,和大家一起聊聊那些 2020 年最有料的科技产品。

    在头戴式降噪耳机领域,索尼处于绝对领先地位。大概是由于 WH-1000XM3 的表现太过出色,很多人甚至已经「忘记」了它是一款 2018 年推出的产品。在接下来的两年里,虽然我们也看到了不少优秀的头戴降噪耳机被推向市场,但「标杆」这两个字却一直牢牢把在 1000XM3 手里,直到今年 WH-1000XM4 出现。

    +

    整体外观设计上,WH-1000XM4 和 WH-1000XM3 没有太大区别,不过两代产品的具体细节处理有所不同。比较明显的地方是,WH-1000XM4 采用了一体化哑光设计,同时改进了衔接结构,直观视觉效果上更有质感,手感也非常细腻。

    降噪是 WH-1000XM4 升级的重点。首先,它的降噪能力有了 15% 的提升,另外,开启自适应声音控制功能之后,耳机可以自动检测用户当前的活动状态和活动地点,然后切换到提前预设好的环境声和降噪方案,比之前更加智能。

    而在音质方面,索尼为 WH-1000XM4 引入了 Edge-AI 技术,经过 DSEE Extreme(数字声音增强引擎进阶版)处理之后,音质整体更加饱满,特别是中高频部分,保持出色解析力的同时,听起来也要比上代产品来得稍稍柔和一些。

    值得一提的是,WH-1000XM4 具备了真正意义上的入耳检测功能,和很多真无线耳机一样,它能够根据耳机的佩戴状态自动暂停、续播音乐,并且索尼还做了相应算法优化,若非真正佩戴,即便用手完全遮住耳罩也不会触发该功能。

    作为索尼最新的头戴式降噪耳机产品,WH-1000XM4 拥有顶级降噪能力以及出色音质表现的同时,还带来了更加智能化的使用体验,是 2020 年当之无愧的头戴降噪耳机新标杆,也是毫无争议的年度降噪耳机之选。

    点击此处查看更多奖项


    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Mon, 14 Dec 2020 21:10:06 +0800 +
    + + + <![CDATA[反垄断「第一枪」:阿里、腾讯、顺丰「中弹」]]> + + http://www.geekpark.net/news/271134 + + 12 月 11 日,中共政治局会议上,提出了「强化反垄断」和「防止资本无序扩张」的指导意见。没人能猜到,几天之内,国家监管层面对于巨头的反垄断处罚就开出了「第一枪」。

    12 月 14 日,国家市场监管总局发出公告,表示将对阿里旗下的阿里巴巴投资、腾讯控股的阅文集团和顺丰旗下的丰巢网络进行顶格处罚,每家公司处以 50 万元罚金。

    公告显示,三家受到处罚的原因分别是:阿里巴巴投资收购银泰商业股份、阅文集团收购新丽传媒、丰巢网络收购中邮智递科技公司。根据国家市场监管总局公告,三家公司被处罚的原因不是因为真正形成垄断,而是「未及时申报,且造成恶劣影响」。

    公告还显示,监管层面正在调查由腾讯主导的斗鱼、虎牙两大游戏直播平台的合并案。

    阿里、丰巢和阅文集团三家公司同天表示,已经收到通知,“并将积极落实”。

    是否垄断,监管说了算

    本次国家市场监管总局的处罚的三家公司,来自不同领域,收购理由方式也各不相同。例如阿里和银泰,两者在零售的线上和线下已有多年合作经验,为了加强对于线下的控制,阿里通过旗下投资公司,从 2014 年开始,通过三次投资收购了银泰超过 70% 的股权,成为后者控股股东。

    2018 年 8 月,腾讯控股子公司阅文与新丽传媒等签署协议,收购新丽传媒 100% 股权,并于当年 10 月完成交割。阅文主要业务是网络文学和在线阅读,拥有大量文学类 IP;新丽传媒主要从事视频和娱乐节目制作以及发行,两者结合可以直接打通从 IP 到影视作品的生态。

    顺丰旗下的丰巢网络是国内快递柜行业的翘楚,曾在年初闹出过「快递柜付费事件」,饱受争议。今年 5 月,丰巢网络以换股方式取得中邮智递 100% 股权,并于当月完成交割。丰巢网络和中邮智递均从事快递末端投递服务中的智能快件箱业务,分别运营「丰巢」、「速递易」品牌智能快件箱。通过收购中邮,丰巢扩大了在快递柜行业的份额。

    公告显示,三项交易都是股权收购,收购完成后阿里巴巴投资、阅文和丰巢网络分别取得了控制权,属于《反垄断法》第二十条规定的经营者集中。但是,经过监管层调查评估, 认为上述三起案件均不具有排除、限制竞争效果。 

    三家公司受到处罚的理由是,「有申报义务但没有依法申报」,根据《反垄断法》和《国务院关于经营者集中申报标准的规定》,达到申报标准的经营者集中,应当事先向市场监管总局申报,未申报的不得实施集中。三家公司的行为类似于「上车还不及时补票」,所以遭到处罚。

    而由于三家公司分别的收购案,没有造成垄断或者排除竞争,所以监管层并没有要求三者进行「限期处理股份和资产或者转让营业」来让「行业恢复到集中前状态」。

    合并也在范围内,互联网非法外之地

    公告中还显示,监管总局目前正在调查由腾讯公司主导的广州虎牙和武汉斗鱼两家公司的合并案,虽然和上述三家公司的股权收购不同,虎牙和斗鱼的合并属于「协议控制结构的经营者集中」,同样属于《反垄断法》的管辖范畴,本应及时向监管层申报。

    相对于三家公司的收购,50 万的处罚并非一个很大的数目,监管层认为,这样的举动「向社会释放加强互联网领域反垄断监管的信号,打消一些企业可能存在的侥幸和观望心理,产生相应的威慑效果。」同时,监管也认为,《反垄断法》对于实施集中企业的罚款额度确实不够,威慑力有限,而这些改进将在之后的修正案中有所表现。

    监管在公告中强调,《反垄断法》「适用于所有主体,对内资外资、国有企业和民营企业、大企业和中小企业、互联网企业和传统企业」,互联网行业并非反垄断法外之地。

    从本次市场监管总局的处罚来看,不仅瞄准了阿里腾讯等大公司,而且时间甚至追溯到 2014 年,细心程度可见一斑。对于互联网行业来说,收购公司为生态发展作准备早已经是习惯动作,由投资行业所主导的超级并购案在前几年也是屡见不鲜。

    但是,从现在开始,这些行为都需要先通过监管层的申请才能有所动作了。虽然只是 50 万元的处罚,但是其「警钟长鸣」的影响显然不止于此。

    责任编辑:宋德胜

    图片来源:视觉中国

    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Mon, 14 Dec 2020 19:57:24 +0800 +
    + + + <![CDATA[从何时起,你家多了一块屏幕?]]> + + http://www.geekpark.net/news/270764 + + 一块屏幕的新角色

    魏强北漂多年,独居、单身、996、标准打工人,一贯信奉极简原则,即能不布置就不布置,公寓里除了电脑和手机看不到多余的电子产品。数月前某个加班归来的晚上,忘了手机,家里甚至连块能看时间的表都没有,正没计较之处,发现了一块额外的屏幕,由朋友赠送、落灰许久的智能屏,才解了次日上班的燃眉之急。

    从此打工人魏强的生活里,就多了一块屏幕的空间。对于只有早晚在家的打工族,电子产品的体验也是碎片化的,没有精力和时间去追逐越来越缭乱的功能和接口。智能屏弥合了生活的碎片,不用阅读指南,不用翻看目录,甚至不用弯腰低头,随时随地地交互和输出:起床、入睡前一句日期/时间/天气的询问,或者是在工作间隙抬头查一个百科,有时是睡前唤起一段视频、看一个直播,更多的时候是瘫在床上连手指都不想动弹时,嘟囔着点一首歌。

    + +
    +

    智能屏尺寸和输出形式类似于平板电脑,而交互流程非常接近智能音箱。平板电脑仿佛智能手机的延伸,功能同质又轻便不足,智能音箱交互方便但输出内容又有限,智能屏的出现,糅合了二者优点,但激发出的新效用又不止于此。

    对于消费欲望偏弱的独居男子,它更多只是恰逢胃口的个人所好,定位偏僻、功能有限,而放进家庭的场景里,才能看到智能屏真正能创造可能性的潜力。

    多块屏幕,家庭生活空间的无缝隙填充

    步入家庭阶段的大学同学艾泽已经很久不看电视了。年初艾泽携着老公、父母还有肚里的宝宝搬进了新家,期间漫聊过家庭生活的感受,却发现没有想象中饭后一家人温馨围坐看电视的场景。一方面是身为主妇,心态和孩子老人不一样;另一方面,年轻人习惯更主动更迅捷的信息,而智能手机几乎能提供所有需求。

    但手机也有问题,父母小时候讨厌游戏党,现在也不喜欢低头族,原本是屋檐下的一家子,却被分隔成一个个小屏幕的空间;且虽然手机确实功能强大,但父母辈却难以跟上日益精细化的功能开发。

    + +
    过去,人们的家庭生活通常围绕电视这块「屏幕」展开
    +

    现在给父母住、未来给孩子准备的房间里,也有一台智能屏,「以前我爸除了看电视,最喜欢跟智能音箱对话。」艾泽说,老一辈人对智能科技抱有一种触碰式的新奇感,比如第一次看到扫地机器人兴奋不已,虽然他们还是更信任自己拖的地,但正慢慢建立对智能系统的信任。

    「后来有了这个,带屏幕的『音箱』,我爸就更喜欢了。」艾泽随口展示,「小度小度,西红柿牛腩怎么做。」

    点亮的智能屏里响起了温柔的女声回应,随后一个大厨打扮的美女就出现在屏幕上。艾泽对着屏幕做了手势,厨师的刀停在了半空,原来多了屏幕不仅能「看她」,它也能「看你」,人工智能和可视化功能结合,迸发出了更多可能性,而且还是更友好的操作可能性。

    「它甚至能『认出』我爸,类似于电脑的多用户,声纹就是验证码,对不同的用户,它会有不同的策略和内容。」

    除了老人,还有孩子。艾泽是个很有规划的人,关于以后的教育,手把手改作业已经不现实了,「连陪他玩的时间都紧张,何况那么精细的教导,碎片化的教育,还是得靠它(智能屏)。」

    这一品类推出的一大目标,就是儿童教育,这也是它吸引到艾泽的初始原因。远程教育在今年疫情中大放异彩,船借风势,智能终端的发展也顺了一波大潮。

    + +
    +

    小度智能屏

    对父母而言,能通过 app 接入网课,有大量定制化少儿科普学习,还不忘「百度百科」的老本行,随问随答,智能屏完美充当了碎片时间的云端老师。同时,信息产品爆炸的当下,它还是更加「绿色无害」的产品,特殊声纹识别、家长人脸解锁、还有限时使用功能,都为孩子的自觉学习定制条件。云课堂时代,相对于操作更繁复、信息更杂芜的电脑、手机,简洁的智能屏,更抓住父母们的偏好。

    智能屏正扮演着这样的复合角色:一个能在舒适场景随时接入网络课堂的终端,一个能无间隙与老人小孩提供信息交互的平台,一个可听可看可玩可调戏的游戏机,一块可以在厨房搜菜谱、在床头当闹钟、在书房查百科的屏幕。智能屏远不止平板电脑和智能音箱 1+1 的效果,它有潜力在大屏电视和小屏手机之外,填满家庭场景中空余的区域、时间和需求拼图。

    艾泽感概:「我遗憾的是房子不够大,如果父母以后也住过来的时候,我希望每间屋子都有一块屏。」

    智能屏正将影响扩散到不同场景,比如搬家时的智能家居,要配套一个可视化的「管家」;比如忙碌的新晋奶爸,期待一个能用他本人声音和孩子交互的陪伴;再比如猫主人需要一个智能摄像头来看护她的猫……

    中屏时代,中枰落子

    现代人偏爱宏大叙事,喜欢把市场变化归因到某个浩荡不可逆的潮流方向里,比如智能手机崛起的时候人们就打算为大屏电视准备「葬礼」了,但事实是大屏电视没有被挤出市场,且保持了相当的客户粘性。

    之前很多人不看好中屏也是如此。十年前 ipad 携苹果之余烈撼动世界,当年平板电脑关键词搜索量增长率一度达到了 1328%,两年后 surface 问世,平板界蓄势雄浑。结果仅仅到 2015 年,销量就剧跌 10% 以上,此后持续萎靡,「中屏时代」被疑为一场幻觉。

    + +
    +

    然而,事实证明人们对宏观规律的理解还是需要将眼光放得更长远。2018 年国内饱和的智能手机销量未能突破瓶颈,下滑 11%,同年智能电视出货量大涨 7%;2019 年,智能电视和智能手机销量分别下降 3% 和 7.5%,而中屏终端却急剧增长,其中智能屏实现了 1432% 的超额增长,一跃跳上了舞台中央。

    看似是形形色色的屏幕轮番称霸,本质上是智能时代在摸索着适配用户的需求,而中屏则是以家庭需求为导向的自我补完,其存在自有逻辑:

    找准方向后的内容定位。早年平板的失败在于其与手机内容的过于同质化,定位不够清晰;而智能屏在智能交互的基本盘上又敏锐抓住了流量的关节,比如小度整合了短视频、直播、听书等一系列接口,融合了线上教育等资源,打造了最适合中屏的功能生态。

    填充家庭空间的信息平台。突破了小屏的视角限制,又突破了大屏的空间限制,中屏的智能屏对中间区域的空间进行了填充。卧室、厨房甚至玄关、盥洗室,一句指令即可唤出多元内容,操作更加灵活简约。

    联结家庭人员的智能成员。录入父母声纹后用父母的声音与孩子互动的智能屏、在子女不在家时随时回应老人指令的智能屏,是否可以看作家庭的一位成员呢?实际上,拥有手势控制、眼神唤醒、一次唤醒多轮互动、声纹识别等多个用户功能的智能屏,正成为老人与孩子的得力助手。前沿的科技、亲民的应用,智能屏有能力将智能真正普及到家庭不同层次的成员。

    百度副总裁景鲲曾在媒体沟通会上提出「一屋一屏」的构想,犹如中枰落子,夯实了「中屏」在智能时代家庭版图中的重要地位。

    Strategy Analytics 报告显示,全球智能屏在 2020 年第三季度达到 950 万台,它同比增长 21%,该产品类别的市场份额从去年的 22%上升到 26%。在崛起过程中,单季度出货量第一,累计出货量第一的百度无疑走在了前面,其旗下的小度智能屏销量已破千万。

    十几年前,百度制霸互联网时,是因为他们聪明地抓住了所有网页端的接口;十几年后,小度异军突起,则是抓住了信息与交互连结的接口、家庭差异化需求平衡的接口、智能发展与市场方向交汇的接口。历史似乎正在轮回。


    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Mon, 14 Dec 2020 12:38:21 +0800 +
    + + + <![CDATA[谷歌三星杀进来了,高通为啥一点不怕?]]> + + http://www.geekpark.net/news/271016 + + 今年 4 月,谷歌消息人士透露,谷歌正与三星合作设计芯片,三星将为谷歌制造 5nm 制程芯片,预计明年将投入使用,后续还将搭载在谷歌笔记本上。

    11 月初,三星抢先高通、联发科发布 5nm 工艺制程集成式 5G 手机芯片。作为三星放弃自研架构,产品路线图回归正轨的力作,将首先搭载在 vivo 旗舰手机系列,明年可能向 OPPO、小米等更多手机厂商供应芯片。

    手机芯片市场变数不断。对高通这个雄踞多年的巨头而言,既有老对手的争夺,更有新对手的搅局。

    尽管越来越多的公司为节约成本,更好地掌握自己命运选择自己设计手机芯片。但这些企业也无法真正摆脱高通。

    谷歌、苹果等依然需要高通提供的调制解调器(负责手机通信功能的芯片),通过专利许可授权,高通可制衡三星、华为、联发科在内的竞争对手。

    + +
    Google 柏林办公室|视觉中国
    +

    芯片商用「狠、准、稳」

    不久前,高通举办了一年一度骁龙技术峰会。

    作为高通年度最重磅的发布会,既是高通一年以来技术研发实力的集中公开展示,也为下一年手机芯片市场趋势定下基调。

    在手机芯片细分市场中,厂商竞争白热化,用户选择有限。无论是竞争对手,抑或手机厂商,头部大厂高通每年的新品技术迭代,事关自家产品设计路线与产品发布节奏,自然是芯片市场乃至手机硬件市场的「春晚」。

    今年,高通骁龙技术峰会从美国夏威夷搬到线上,新品技术演进、合作伙伴「站台」,却「一个都不能少」。

    与去年、前年技术峰会产品技术「干涩」的介绍不大相同,今年,高通结合 5G 场景应用,给自家芯片打上了很多标签。

    比如,高通总裁安蒙 Cristiano Amon 打趣称,高通重视移动图像处理技术发展,其实是一家相机公司。影像技术能力包括手机摄影、视频通话、游戏等场景,61% 消费者根据拍照功能选择手机,移动游戏市场又是游戏产业中最大的细分市场,年增长率超 13%,是消费级市场最具潜力的场景之一。

    高通切入消费级 5G 痛点场景以撬动芯片商用的角度「狠、准、稳」。

    会后,高通公司中国区董事长孟樸表示,3G 和 4G 演进时,市场格局都会随之改变,5G 时代市场格局再次发生变化是常态,5G 开启的市场机遇刚刚开始。

    的确,5G 时代市场竞争变得多维。既有老对手的争夺,更有新对手的搅局。

    这些变量无疑对高通产生直面影响,而在高通眼中「最好中的最好」,「旗舰中的旗舰」,「最先进」的新品骁龙 888 芯片能否应对这些变量的正面冲击?

    + +
    高通 2020 年旗舰芯片骁龙 888|高通公司
    +

    5G 进入攻坚阶段,高通扳回一局

    2019 年是 5G 元年,5G 商用开始启动,2020 年随着 5G R16 标准进一步冻结,未来 5G 商用将会提速。

    高通提及一组数据,与 4G 时代相比,在商用开始部署的最初 18 个月中,推出 5G 商用服务的运营商数量是 4G 时代的 5 倍。预计 2021 年全球 5G 智能手机出货量将达 4.5 亿至 5.5 亿,2020 年将超过 7.5 亿。

    可以说,当前正处于 5G 换机潮的前夜,5G 换机潮将比 4G 来得更快,而今年推出何种手机商用芯片将对明年,乃至后年移动芯片市场份额起到决定性作用。

    上一代高通高端旗舰芯片 865、865 Plus 发布后,无论是芯片性能代际提升,还是芯片设计没有获得业界预期。尤其是,与竞争对手华为、联发科、三星调制解调器集成设计不同,高通高端芯片 865、865 Plus 均采用外挂式芯片设计,导致手机成本、功耗、占地面积的增加。

    高通解释称,此举是为了让基带性能发挥到最佳水平,某些厂商仓促上马集成设计,却使得基带性能受损。高通的解释并没有得到行业认可,外媒甚至搬出 2012 年高通新闻稿对芯片集成、外挂的态度,进行反驳,认为外挂式设计导致用户体验全面降级,「通常,手机涉及芯片越多,保持电池寿命、手机性能的挑战越大,集成设计可以节约功耗。」

    今年作为 5G 商用关键年,高通在高端芯片关键设计环节上扳回一局,骁龙 888 采用集成第三代 X60 基带设计。有行业人士对此评价称,高通今年的新品已没有可以攻击的弱点。

    不仅在芯片设计方面,高通重回市场主流趋势,市场环境上来看,对高通也颇为有利。

    Counterpoint 数据显示,2020 年 Q2 全球手机芯片市场份额排名,高通、联发科、华为、苹果分别以 29%、26%、16%、13% 位列前四名(注:三星与苹果并列第四)。高通不但要面对联发科的步步紧逼,还需要应对来自华为、苹果、三星非商用芯片在技术层面上的对垒。

    今年受美国实体清单影响,华为无法通过第三方晶圆厂商代工制造麒麟芯片,只能以高通等第三方芯片公司申请销售许可为突破口,延续手机业务的生命线。

    曾经的竞争对手,在特殊的节点上,化敌为友。再加上,半个月前,荣耀从华为拆分,荣耀将不受实体清单影响。最新消息称,荣耀高通谈判乐观,接近达成供应合作。

    可以预计,未来随着芯片销售许可的放开,华为、荣耀手机上原有麒麟芯片缺失产生的巨大需求缺口,将被高通迅速填补,高通可以在 5G 关键年进一步扩大份额优势。

    当然,内部、外部环境的助攻,并不意味着高通可以高枕无忧,毕竟,5G 时代变量带来的蝴蝶效应也不可忽视。

    + +
    高通 2020 年骁龙技术峰会|高通公司

    +

    谷歌、三星入局,高通地位依旧稳固

    今年 4 月起,谷歌传出将推出 5nm 工艺制程代号为 Whitechapel 的手机芯片,近两天谷歌造芯消息又开始发酵。

    去年开始,三星为猎户座芯片自用到商用做准备,而联发科不断向高通所在的高端芯片市场发起攻势。

    尽管越来越多的公司处于节约成本的考虑,选择自己设计手机芯片。但这些企业却无法真正摆脱高通。通过专利许可授权,高通完全可制衡其他新老竞争对手。

    重要的是,高通已经提前拿到稳赢全球市场的门票。

    全球手机市场中,中国手机品牌占据近七、八成比例,中国市场的重要性不言而喻,拿下中国手机品牌意味着赢得了比赛一半的胜利。

    今年高通格外重视中国市场,比如,骁龙 888 芯片命名与中国市场密切相关。高通总裁安蒙采访时称,中国客户在高通全球业务中一直是重中之重,中国比其他国家更早走出疫情,手机市场复苏速度远远快于其他国家,这些因素都决定了骁龙 888 芯片命名充满中国元素。

    高通首日技术峰会最后,包括 OPPO、vivo、小米、中兴、联想等几乎所有的中国手机品牌悉数为高通新旗舰站台。

    如高通总裁安蒙所言,「智能手机已成为规模最大的消费类电子产品,也是有史以来最大的技术平台,成为半导体行业竞争最为激烈的细分领域之一。」

    拿下这块蛋糕不但需要原始技术、渠道资源合作伙伴的积累,长期构建起来的技术护城河,谷歌、三星短期内彻底颠覆高通,道阻且长。


    责任编辑:于本一

    图片来源:高通公司、视觉中国

    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Mon, 14 Dec 2020 12:37:27 +0800 +
    + + + <![CDATA[B 站或代理《赛博朋克 2077》;卫龙辣条:杀价太狠,拒绝社区团购;快递外卖电动车将推专用号牌]]> + + http://www.geekpark.net/news/271051 + +

    《赛博朋克 2077》1 天内盈利,B 站或成中国代理

    12 月 14 日消息,根据 CDPR 官方发布的报告,《赛博朋克 2077》的预购量和首发日销量已经超过了其巨大的投入和市场宣传费用。也就是说,《赛博朋克 2077》仅用一天的时间就已经回本和盈利了。

    +

    《赛博朋克 2077》是知名游戏《巫师》系列开发商波兰公司 CD Projekt RED 开发制作的一款角色扮演游戏,于 12 月 10 日正式上线。此前,《赛博朋克 2077》中文情报站在哔哩哔哩(B 站)上线,并开启预约,市场猜测 B 站或成为《赛博朋克 2077》中国代理。(来源:36Kr)

    美团优选通报首个贪腐案,原陕宁省区负责人被刑拘

    12 月 12 日,美团在内部最新通报了一起反腐案件,美团优选陕宁(陕西、宁夏)省区负责人马军,因受贿已被西安警方刑事拘留。

    该案件在美团内部被定义为「优选首案」,是美团优选业务自今年 7 月成立以来,首个内部通报的违规违法案例。在内部信中,美团称:优选业务起步不久,业务模式新、员工新,更需要重视廉正问题,对贪腐舞弊行为「零容忍」。(来源:36kr)


    +

    Facebook COO 桑德伯格:政府不能批准收购后又反悔

    12 月 13 日消息,Facebook 首席运营官 Sheryl Sandberg 最近对本周针对该公司提起的两项反垄断诉讼予以反驳。这两项诉讼或将导致 Facebook 最终拆分 Instagram 和 WhatsApp。

    Sandberg 说,Facebook 在 2012 年、2014 年的收购均得到了美国政府的批准,「如果你当时可以收购一家公司,然后八年、十年后,政府可以推翻自己曾经的决策——这对美国企业将是一个令人不寒而栗的大问题。」(来源:新浪科技)


    强压之下,华为 5G 全球市场份额仍是第一

    12 月 13 日,市场调研机构 Dell'Oro 公布了 2020 年第一季度到第三季度全球 5G 通信设备的市场份额变化,华为历经波折不过暂时仍然保住了第一的位置。

    今年第一季度的时候,华为以 35.7%遥遥领先,第二名爱立信只有 24.6%,之后是诺基亚、三星、中兴。第二季度,随着中国 5G 建设正式大规模启动,华为、中兴的份额暴涨,分别来到 43.7%、16.4%,爱立信跌至 20.7%。进入第三季度,随着华为遭到美国全方位制裁,其份额跌至 32.8%,爱立信份额升至 30.7%。(来源:快科技)


    以色列 LiDAR 开发商 Innoviz 借壳上市,估值将达 14 亿美元

    美国时间 12 月 11 日,以色列 LiDAR 开发商 Innoviz 宣布通过 SPAC 完成上市,SPAC 也被称为「空白支票公司」,是美股市场一种借壳上市的方式。具体来说就是,投资方自己「造壳」,建立 SPAC 公司再募集资金上市,然后在一定的时间内寻找一家有潜力且有能力的公司,进行收购。因此,这种方式也可以被理解为科技公司加快上市的途径。通过 SPAC 完成上市后,Innoviz 估值将达 14 亿美元。

    +

    Innoviz 创立于 2016 年 1 月,是激光雷达行业的一匹黑马。其四位联合创始人来自以色列国防军情报部队精英技术部门,并在 MEMS、光电、半导体领域有着丰富的经验。截至去年 1 月,Innoviz 已经累计完成 2.14 亿美元融资,团队员工规模也已经超过了 200 人,并在以色列第三大城市海法(Heifa)拥有生产线。(来源:雷锋网)

    +

    AirPods Max 登陆拼多多百亿补贴频道,券后价为 3999 元

    12 月 13 日,苹果全新一代无线耳机 AirPods Max 正式登陆拼多多百亿补贴频道。

    据百亿补贴苹果专场页面显示,AirPods Max 券后价为 3999 元,在 4399 元的市场价基础上优惠了 400 元,于 12 月 15 日 12:00 开始补贴。(来源:极客公园)


    社区团购价格太低,卫龙辣条宣布断供:违者严惩

    12 月 13 日消息,日前卫龙辣条宣布断供,禁止给社区团购企业供货,包括多多买菜、美团等。

    卫龙在《关于禁止给社区团购平台供货的通知》中称,近期公司收到众多投诉,以「多多买菜」、「美团优选」等为代表的社区团购平台出现严重低价现象,甚至个别品项远低于出厂价,影响严重,损害客户的利益。同时在该通知中对公司明星单品设定指导价格。对于不遵守要求的经销商,卫龙提到影响恶劣的将会被取消经销权。(来源:每日经济新闻)


    事故频发,快递、外卖电动车要有专用号牌了

    截至 2020 年一季度,中国网上外卖用户规模达 3.99 亿人,使用率为 44%;手机外卖用户规模为 3.97 亿人,使用率达 44.2%。叫外卖已经成为当地年轻人的习惯,外卖小哥在城市街道穿梭,为了赶时间经常逆行、闯红灯,事故频发。

    对此,上海拟为快递、外卖电动车核发专用号牌。12 月 11 日起,上海市将对《上海市非机动车安全管理条例(草案)》征询公众意见,其中规定对从事快递以及外卖等网约配送活动的电动自行车核发专用号牌。(来源:快科技)


    SpaceX 星际飞船原型 SN9 组装完毕,有望月底前第二次高空试飞

    +

    12 月 12 日,在 SpaceX 星际飞船原型 SN8 进行首次高空试飞并在着陆时发生爆炸几天后,这家美国太空探索技术公司就提交了新计划,拟将完成全部组装工作的原型 SN9 运送至发射台,并计划于月底前进行第二次高空试飞。(来源:腾讯科技)

    +

    三星 AI 助手 NEON 即将实装,将成三星 S21 Ultra 专属功能

    去年三星就曾预告过新的「人造人」NEON 助手,并表示 NEON 可以像真正的人类一样进行对话,并有一定的感知能力。12 月 13 日有消息指出,这款人工智能助手将会随三星 S21 Ultra 一同发布,并且是这款手机的专属功能。

    +

    据介绍,NEON 基于三星 Core R3 技术平台研发,三星基于该平台训练它的行为和交互方式,使其表现得像一个真正的人类。三星表示,NEON 还拥有与人类情感交流以及从经验中学习并形成新记忆的能力。这意味着 NEON 拥有非常高的上升空间,学习专门技能甚至可以应用到各个行业中,而非局限在手机之中。(来源:手机中国)


    VR 头显 Oculus Quest 2 北美断货,预计年出货量 500-700 万台

    12 月 13 日消息,Facebook 发布的 Oculus Quest 2 需求强劲。自 10 月上市以来,尽管备货充足,但在北美市场仍已卖断货。据悉,该款 VR 预计年出货量为 500-700 万台。

    Quest 2 定价为 299 美元,较前一代的价格还低 100 美元。头显重量为 503 克,配备高通 Snapdragon XR2 芯片,单眼 1832x1920 像素,比起前一代高出 50%。(来源:科创板日报)


    消息称微软 Windows 10X 已编译完毕,明年初支持新设备

    12 月 13 日消息,据 Windows Central 编辑 Zac Bowden 消息称,微软已经完成了 Windows 10X 的最终编译构建版本。

    +

    虽然 Windows 10X 曾经打算用于双屏设备,比如现在被推迟的 Surface Neo,但微软已经重新制定了计划。Windows 10X 可能只在新的轻量级和经济型 PC 设备上出货,不会用于现有的 PC 或 Surface Go 2 等平板电脑。(来源:IT 之家)

    +

    网易首支 AI 歌曲《醒来》发布:声音太逼真,能瞒过人类

    12 月 13 日,在「2020 网易未来大会」上,由网易伏羲、网易雷火音频部提供作词、编曲、演唱的全链路 AI 技术支持的歌曲《醒来》正式发布,这也是网易首次完成由人工智能完全生成的歌曲。官方表示,「主唱」声音完全能够以假乱真,瞒过人类。这位由神经网络声学模型和神经声码器完成人声合成的「主唱」,可以确保歌曲发音人在不同 BPM、风格歌谱上音高、节奏的绝对稳定性。

    《醒来》歌词故事线以虚拟人深夜醒来的画面展开,通过一个虚拟人在未来世界的苏醒历程,带入人类在未知的时代,未知的机遇和挑战面前,不停探索追求革变的创新态度。

    +

    在作词方面,为让学会人类语言组织的基本逻辑,网易伏羲利用大规模小说、文章、诗歌等语料预训练海量语言模型,并在歌词语料上训练端到端的歌词生成模型,并通过自研的方法控制不同参数情况下的歌词生成。

    在编曲方面,网易雷火自研的编曲算法能够完成从大量歌曲中提取大众审美,覆盖华语乐坛主流风格,率先于行业部署工业出版级智能编曲系统,能在 15-30 秒内生成一首对标人编 1-1.5 万元左右的出版级编曲,已具有工业化大批量生产的能力。(来源:快科技)

    ]]> +
    + 极客公园 + Mon, 14 Dec 2020 08:16:49 +0800 +
    + + + <![CDATA[极客之选年度评选丨年度无人机:大疆 Mavic Air 2]]> + + http://www.geekpark.net/news/270987 + + 在 2020 这魔幻的一年,极客之选(微信号 GeekChoice)与大家一起经历了太多「活久见」的奇异事件,很开心我们能够一直陪在你们身边,并且一直努力为大家奉上更出色的数码产品内容。「年度产品评选」是极客之选每年年底的保留栏目,从 12 月 1 日开始,我们将会逐一揭晓获奖产品,本次评选将涉及三个大类近 20 个细分奖项。从「娱乐至上」到「生产力万岁」,极客之选希望能够通过不同维度和视角,和大家一起聊聊那些 2020 年最有料的科技产品。

    大疆在 2020 年明显加快了自己的产品节奏,无人机更是年内一下子发布了两款,已经两年多没有更新的 Mavic Air 系列终于迎来了继任者——大疆 Mavic Air 2。因为有了 Mavic Mini 的关系,Air 系列无人机不再一味的追求迷你尺寸,摆脱束缚后 Mavic Air 2 更有了「以下犯上」的资本。

    +
    +

    大疆 Mavic Air 2 相比前代机型在外观设计方面做出了很大的变动,不再使用圆润的机身设计和明快的色彩风格,机身变得更加有棱角,机身表面的质感处理也跟 Mavic 系列其他产品统一起来。另外,大疆 Mavic Air 2 机翼的收纳方式也由前代产品的对向折叠,改为了旋转式折叠,这样的变化让大疆 Mavic Air 2 拥有紧凑小巧的收纳尺寸的同时,又增加了打开状态下的机翼长度,提升了飞行性能和稳定性。

    大疆 Mavic Air 2  采用了全新的 OcuSync 2.0 图传技术以及全新的遥控器,支持 2.4GHz/5.8GHz 双频通信,信号传输最远可达 10 公里,并且还能够提供 1080P/30fps 的画面传输。

    +
    +

    影像方面,大疆 Mavic Air 2 采用了一颗 1/2 英寸的影像传感器,在照片拍摄模式下支持 1200 万像素和 4800 万像素的图像输出。它还拥有最高 4K/60fps、1080P/240fps 的视频以及 8K 延时视频的拍摄能力,这是目前整个大疆 Mavic 系列产品中,最强的视频记录规格。

    +
    +

    不得不说的是,它还搭载了大疆新一代的地图技术和全局路径规划算法,支持全新的 APAS 3.0。通过前、后、下三向感知系统以及算法的支持,让大疆 Mavic Air 2 有了非常出色的智能跟随体验,它的避障能力甚至要好过 Mavic 2 Pro。

    摆脱了尺寸束缚后,大疆 Mavic Air 2 依旧足够便携,同时它的飞行能力、续航表现、图传系统、拍摄实力和辅助飞行系统都有着全方位的质变。在 4999 元的官方价格下,大疆 Mavic Air 2 的部分体验甚至是越级的,2020 年度无人机我想不出有别的答案。

    点击此处查看更多奖项


    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Sun, 13 Dec 2020 21:05:02 +0800 +
    + + + <![CDATA[「配角」张老板、「盲潮」玛特和巨头「卖菜」梦碎|极客一周]]> + + http://www.geekpark.net/news/271047 + +          
    网传张一鸣在飞书群中的留言|网络
    +

    +

    配角张一鸣

    本周,几张飞书群聊的截图,让字节跳动创始人张一鸣成为社交媒体的焦点。

    目前依然没有证实是真实的图片显示,在一个几千人的字节内部的飞书《原神》游戏群里,张一鸣加入并发言,表示经常看到这个群里消息很多,比较怀疑大家如果在群里「水」的这么开心,是否意味并不能专心工作。

    结果,群里不是马上噤声,而是有人提出可以用「AB」测试来测一下,在群里发言和不在群里发言是否会对工作效率产生影响——果然字节范儿。

    虽然目前依然无法判断截图的真实性,但是张一鸣作为「老板」的理性和隐忍却「风评受益」。试想其他互联网大厂,如果当家人进群指责群里人「摸鱼」不干活,估计员工要么迅速退群,要么一生不敢出,最后事情上报 HR。

    想象力丰富一些的同学,也已经开始猜测,这是不是字节跳动的游戏招聘广告——作为国内互联网行业的流量狂魔,游戏在近几年也成为头条想要着力发展的重要支线。

    老板张一鸣很生气,后果却不是很严重,而字节这次风波却让本来已经火爆的《原神》再增几分热度,堪称「神助攻」。

    这款游戏目前火到什么程度?本月苹果 App Store 和 Google 的应用商店双双将年度游戏桂冠授予了这款国产游戏。

    在「吸金」方面,《原神》更是令人吃惊,游戏在 9 月 28 日上架后,全球收入首月就达到了 2.45 亿美元。10 月,《原神》在全球收入超过腾讯的《王者荣耀》。过去两个月,拜《原神》所赐,游戏制作公司米哈游移动端日均收入超过 600 万美元,一天的营收就超过了绝大部分 A 股上市公司。

    + +
    +

    之前还有任天堂玩家指责《原神》抄袭前者的大热游戏《塞尔达传说荒野之息》,但苹果和 Google 的年度推荐,似乎直接撇去了人们的嫌疑。

    《原神》的成功,让米哈游至少在营收上,成为继腾讯和网易之后的第三大游戏公司。

    如果说字节跳动用头条和抖音吸取了流量而成为腾讯的焦虑,《原神》单月营收超过《王者荣耀》的事实,则直接成为腾讯最大的恐惧——这个国内互联网一极的游戏营收,仍是公司最重要的收入来源之一。

    在晚点 LatePost 的《腾讯游戏错过原神》中写到,腾讯游戏部门因为《原神》的成功大为紧张,开始加大力度投资国内的游戏公司,他们害怕错过另一个《原神》。

    更值得玩味的是,文中透露腾讯公司曾有重要高层接洽米哈游,伸出橄榄枝,但是被后者直接拒绝。同时,《原神》直接绕过了国内重要的各大平台和分发渠道,广告直接砸向 B 站和抖音,不再忍受大头收入给渠道这样的「鸟气」。

    抄袭抛在一边,国产游戏可以用质量说话,「渠道为王」这个行业惯例开始失效。只要中小型厂商能够产出足够好的游戏,就能站着和巨头对话,这让后者寝食难安。

    游戏本身、竞争对手和渠道因为《原神》的成功而产生了变化,这是巨头最害怕的。毕竟马化腾曾经说过,「最害怕不了解年轻人。」不了解用户,代表没法让他们心甘情愿氪金,这是腾讯最大的恐惧。

    +          
    + +
    +

    巨头还能好好卖菜吗?

    本周五,京东宣布 7 亿美元投资社区团购领头羊的兴盛优选公司,表示要加强双方在物流和数据等方面的合作。此前,据悉将由刘强东亲自下场的京东社区团购业务,已经以 2 亿美元收购了美菜网旗下的社区团购业务美家美菜。

    同一天,中共政治局会议上,提出了「强化反垄断」和「防止资本无序扩张」的指导意见。人民日报在文章中援引国家最高领导人的话,指出:

    「掌握海量数据、先进算法的互联网巨头,理应在科技创新上有更多担当、有更多追求和作为。别只惦记几捆白菜、几斤水果的流量,科技创新的星辰大海、未来的无限可能性,其实更令人心潮澎湃。」

    当天,就有好事者 P 出巨头反应的图片:马云表示阿里要做芯片,王兴要退出社区团购。

    图是假的,趋势确实是真的。

    在拼多多、美团、滴滴和京东等大型互联网公司在社区团购赛道开启新一轮烧钱大战的时候,国家监管层已经曝出了新的「平台反垄断法」的意见书,此前蚂蚁金服暂缓上市的警钟犹在耳边,显然为了寻找「第二增长曲线」而在「买菜」上杀的火热的互联网公司们还没有意识到事情的严重性。

    和社区团购不停融资和烧钱的新闻一起出现的,还有对于那些由于巨头进入,而生活紧张的菜贩和相关从业者,如果互联网公司确实完成了自己的目标,成为重要的农产品购买渠道,这些在巨头体系外的大量人员,要何去何从?任何时候,稳定的要求都是大于一切的。如果互联网公司没意识到,会有相关的人和部门「教」他们的。

    蛋壳公寓爆雷引起的大量纠纷仍在处理中,ofo 的押金还没有返还给用户,现在并不是互联网公司刻意「高调」的时刻——风向已经变了。

    也许,「稳妥创新」才是正确答案。

    + +
    泡泡玛特线下门店|视觉中国
    +

    又「潮」又「盲」

    12 月 11 日,泡泡玛特正式在香港联合交易所主板挂牌上市,开盘价 77.1 港元/股,涨幅超 100%。截至发稿,泡泡玛特报 80.5 港元/股,市值突破千亿港币。

    配售公告显示,泡泡玛特创始人兼董事长王宁和妻子杨涛持股比例为 49.8%,为最大股东;红杉资本持股 4.39%,是最大的机构股东。

    泡泡玛特上市新闻已经被炒了一年多,但是上市前夜被传暗盘交易已让股价翻倍,结果上市当天真的股价翻倍,市值破千亿确实令人吃惊。

    有趣的是,社交媒体上呈现出两极分化的评价,一方面不怎么玩「盲盒」的人觉得千亿市值不可思议;另一方面,年轻用户晒出刚刚买的盲盒玩具,用实力证明千亿市值不是「泡沫」。

    另外,有媒体认为,泡泡玛特的成功 IPO,背后是主流投资机构的一次集体走眼。投资机构和互联网巨头的战投看清了泡泡玛特的价值的时候,再去投资已经投不进去了,只能干着急。

    冯大辉上传的一张截图很有意思,在泡泡玛特未被发现之前,投资人认为创始人王宁学历一般,没有领袖精神;而在 IPO 后,评价变成了「低调有能力」。

    其实也不好怪投资人势利眼,近两年蹿红的泡泡玛特,距离王宁创建公司已有 10 年之久。开设第一家门店的时候,王宁得自己刷墙搞装修,骑着三轮车到批发市场进货,当时,连最初级的店员都很难招到。

    2017 年,泡泡玛特的净利润是 160 万元,2019 年则是 4.51 亿元,两年翻了 288 倍。即便是疫情严重的 2020 年,它在上半年也赚了 1.41 亿。

    促使这家公司业绩腾飞的当然是盲盒,这种用不透明密封盒包装销售的系列玩具。Molly 是泡泡玛特推出的最成功的盲盒 IP。这个嘟着嘴巴的小玩偶,仅 2019 年就给泡泡玛特贡献了 4.56 亿的收入。

    参与泡泡玛特投资的华兴资本董事长包凡认为,「泡泡玛特成功的核心绝对不是因为盲盒,而是将设计、供应链,再到最后的零售终端,整合成平台化能力。」

    潮玩并不是新的行业,盲盒是十几年前就有的老玩法,IP 也有自己的生命周期。在王宁看来,泡泡玛特的创新在于围绕潮玩打造了一个平台。

    在十年的发展里,最早泡泡玛特想做万代一样的杂货铺,之后是学习乐高,迪士尼,围绕 IP 做商业开发和价值转化,如今,它想做的则是「中国的泡泡玛特」。这是藏在盲盒生意之下,泡泡玛特的野心。

    + +
    +

    每日优鲜拿下新一轮 20 亿元融资

    12 月 9 日,每日优鲜宣布获得了 20 亿元融资。这次的投资方相比以往有些不同。青岛国信、阳光创投、青岛市政府引导基金共同组成投资主体,也是迄今为止生鲜电商在地方落地的最大规模战略投资。

    实际上,早在 5 个月以前,今年 7 月,每日优鲜就完成了 F 轮 4.95 亿美元融资(约合人民币 34.5 亿)。据不完全统计,每日优鲜已经完成了 9 轮融资,总额超过 110 亿元。

    「未来的三到五年里,我们会投入 100 亿,扶持 100 个亿级合作规模供应商,打造一个 80% 源头直采、50% 联合品牌、20% 战略投资的供应链生态。」在今年 9 月的供应商大会上,徐正表示。

    截止目前,每日优鲜旗下的 300 多个买手,游走于全球 30 多个国家和地区,建立直采供应链。据每日优鲜副总裁、商品中心负责人刘智丹介绍,商品直采比例已接近目标中的 80%,而直采也可以进一步降低成本,相比地采可减少 10% 以上。

    在青岛的融资活动的签约仪式上,每日优鲜的未来蓝图已经变成了四个「千亿」。另外三个「千亿」分别涉及生态链、金融和科技。

    其中,生态链主要由每日优鲜旗下基金三生创投来承接,主要包括上游的菜业、乳业、果业、渔业和肉业等五个方面。三生创投的创始合伙人郭琦也是每日优鲜的副总裁,在他看来,农产品的种、养、加工,其实是往深度加工、高附加值去延展,是从农业到工业品的转化。

    而金融主要面向农户、渠道商、商户、用户等四类主体,包括向农户提供农业保险、为渠道商提供期货交易、面向商户的供应链金融以及对用户的消费信贷。而其中的第一步,是与头部供应商采取周结算政策。(来源:搜狐科技)

    + +
    +

    因为疫情,美国医学院申请人数今年增长 18%

    根据美国医学院协会(AAMC)的数据,今年全美申请医学院的学生人数较去年增长了 18%,这是由疫情期间医学工作者和公共卫生界人士的榜样力量推动的,比如美国国家过敏和传染病研究所所长安东尼·福奇博士。美国医学院协会负责学生事务和项目的高级主管杰弗里·杨(Geoffrey Young)表示:「这是史无前例的。」

    斯坦福大学医学院的申请人数增加了 50%,意味着 1.1 万人要竞争 90 个名额。波士顿大学医学院也表示申请人数增加了 27%,达到 12024 人,而招生名额只有 110 人。

    波士顿大学医学院负责招生的副院长克里斯汀·古德尔(Kristen Goodell)说:「我认为,这可能与人们看到安东尼·福奇,看到自己所在社区的医生有关,他们会说『你知道的,像他们一样真的太棒了。这是能让我有所作为的一种途径』。」

    全美医学院的招生官员们也开始将这种情况称作「福奇效应」。(来源:新浪财经)


    责任编辑:Benico

    图片来源:视觉中国

    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Sun, 13 Dec 2020 11:09:53 +0800 +
    + + + <![CDATA[京东7亿美元投资兴盛优选,买到了什么?]]> + + http://www.geekpark.net/news/271045 + + 12 月 11 日,京东发布公告,宣布 7 亿美元战略投资兴盛优选。

    兴盛优选是目前社区团购里的标杆选手,最先跑通社区团购商业模式。另一家先入场的赛道头部公司十荟团,2020 年已经完成了 4 轮融资,后两次均由阿里巴巴领投。至此,社区团购赛道的第一、二名分别完成电商巨头的「站队」。

    十荟团 CEO 陈郢预测,未来一年到一年半,整个赛道会有 3 到 5 家公司活下来。他认为,社区团购的目标并不是生鲜产品,而是包括线上、线下在内的整个中国消费市场,是「从城市到农村的整个电商市场」。

    这个规模大概有 35 万亿元,是比以阿里、京东、拼多多等电商所代表的市场规模大几倍的新市场。因此,刘强东不得不选择「复出」,亲自带队。

    而刚刚用 2 亿美元「拿下」了美家买菜的京东,又以 7 亿美元巨资投入兴盛优选之后,将会获得什么,又将做些什么?

    兴盛优选的「下沉力」

    京东集团首席战略官廖建文表示,与兴盛优选的合作,是「帮助低线市场的门店主消除信息不对称、降低流通成本、提升经营效率,实现更好的选品和经营,通过他们来触达和服务消费者,而不是替代他们。」

    实际上,过去,京东一直很难真正下沉到低线城市。即便是京东重点推广的「京东便利店」,取得的成绩也是乏善可陈。兴盛优选、美家买菜等「外援」的加入,将帮助京东补齐下沉市场的短板。

    兴盛优选的创始人岳立华从 2001 年进入大型超市领域,在接受《深网》采访时,他回忆,当时「论资金、论实力、论管理人员、论经验,我们都没法与沃尔玛、新一佳等大型超市相比。但我发现,虽然大超市产品齐全,要去一趟却很不方便,而位于社区的便利超市反而成了市民的首选。小规模经营,好控制、好管理,我预计未来必定是两级分化的市场,要么做大,要么做小,既然这样,我不如做小。」

    + +
    湖北武汉,芙蓉兴盛便利超市
    +

    于是,定位在「社区超市」的芙蓉兴盛品牌开始在湖南省扩张,这一年,马云、刘强东刚刚开始电商创业不久。

    12 年后,局势翻转。网上购物成为消费者的新习惯,而芙蓉兴盛所代表的社区便利店,第一次遭受到来自电商巨头的倾轧。岳立华不得不决定孵化电商品牌「兴盛优选」来赋能旗下的线下门店,来降低电商的冲击。

    从 2013 年开始,经过不断地试错之后,兴盛优选「预售+自提」的商业模式,终于在 2017 年跑通。兴盛优选在线上提供的通常是水果、蔬菜等差异性的商品,这样能够避免和线下门店商品的重复、形成竞争,同时能够为线下门店引流,另一方面通过线上销售提升增加店主们的收入。

    20 多年的行业耕耘,让兴盛优选拥有自建的物流体系,以及忠实的供应商体系。这为他们对商品质量、配送等用户体验的把控上,提供了保障,这点与京东倡导的自建物流理念相似。

    某物流供应链企业负责人告诉极客公园(ID:geekpark),社区团购的履约方式,在仓配、物流成本上比传统模式可以降低 3-4 倍的成本,而在生鲜品类,甚至可以达到 20 倍。

    + +
    +
    兴盛优选的员工正在进行分选 | 兴盛优选
    +

    岳立华当时可能没有想到,兴盛优选提出的社区团购的模式,在效率上会远远优于马云、刘强东们砸钱推广的「新零售」概念,并在几年后引来模仿。

    社区团购的商业模式在下沉市场的渗透上,有多大的威力?用户反映,在美团外卖、滴滴打车等都没有市场的郊区、农村,却可以在手机上搜索到大量社区团购的自提点。

    目前,兴盛优选已覆盖 14 个省、163 个地级市、938 个县级市、4777 个乡镇、31405 个村,门店数 30 万+,且每周新增至少在 10000 家以上。据悉,兴盛优选大部分的订单都来自于乡镇、农村。可见,其真正完成了从城市到农村的覆盖。

    再造一个更大的「京东」

    在迎战巨头的过程中,兴盛优选虽然有先发优势,但也存在其自身局限性。根据《晚点》报道,兴盛优选的核心岗位几乎都是湖南人,同级别外地人缺少归属感。在湖南之外地区的扩张的过程中,困难重重,尤其是遇到巨头的围猎。

    而互联网大厂的管理层几乎汇聚了来自五湖四海的人才,从这一层面上看,兴盛优选也需要更多元的外部人才的加入。

    廖建文表示,京东会借助兴盛优选和京喜品牌来进一步探入下沉市场,为此京东专门组建了面向下沉市场的战略新兴业务——京喜事业群,其拥有独立的品牌京喜。

    + +
    +
    京喜小程序界面
    +

    京喜此前是京东「模仿」拼多多而推出的社交电商平台,在 2019 年正式开业。在进行了社区团购业务的调整后,新的京喜品牌包含四大类业务:主打社交电商的京喜 APP、主打社区团购的京喜拼拼、为下沉市场线下门店提供商品和服务的京喜通(原京东新通路,京东便利店隶属于其旗下),以及提供物流服务的京喜快递。

    +

    其中,京喜拼拼应该是其整合了其内部友家铺子、京东区区购、蛐蛐购、以及美家买菜等社区团购项目的新平台。综合来看,新成立的京喜品牌已经是独立于京东商城之外的、将线上和线下业务融合的全新品牌,且渗透的地理面积更大。

    最近一年,京东都在强调转型。因为面对碎片化的购物场景,京东的自营模式成本增高、不再是效率的最优解。于是,开始向淘宝的模式看齐,试图利用营销、物流等服务提高利润率。不过,自营业务的收入依据占据整体的接近 90%,转型进展比较缓慢。

    + +
    北京,京东物流仓库
    +

    +

    所以,把目光转向社区团购,纪源资本管理合伙人童士豪在接受《创业邦》采访时表示,要跑通社区团购这一商业模型,除了要像拼多多那样去整合用户需求,还要像美菜那样去整合商品供应链,然后通过物流创新来整合仓配能力。

    在社区团购业务上,京东相较对手薄弱的环节在前端小程序、APP 的覆盖,而这将由兴盛优选以及新的京喜来填补;另外,在低线城市和农场的仓配、物流方面,兴盛优选和美家买菜也将提供极大助力。

    现在,社区团购赛道的格局已基本清晰,主力玩家为:拼多多、滴滴、阿里、美团,以及「后来者」京东。而随着刘强东的「复出」、以及兴盛优选、美家买菜等外援的加入,京东把新的增长希望寄托在京喜业务上,似乎也更符合逻辑。

    然而,同在 12 月 11 日这一天,中央政治局会议提出:要强化反垄断和防止资本无序扩张。



    责任编辑:靖宇

    图片来源:视觉中国

    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Sat, 12 Dec 2020 21:00:13 +0800 +
    + + + <![CDATA[年末轻薄本选购指南,闭着眼买都不会错!]]> + + http://www.geekpark.net/news/270993 + + 了解笔记本的朋友们都知道,年末是最适合选购笔记本的时期,一方面是赶上了双十一、双十二、年货节这类电商促销活动,另一方面,每年的处理器、显卡等硬件换代在此之前也已完成,搭载新配置的新机蜂拥而至,市面上出现了足够丰富的选择,某种程度上已经成为「买方市场」,对我们消费者是利好的。

    所以极客之选在双十二期间给大家带来一篇 2020 年末轻薄本选购指南,覆盖 4000-10000 元价位段、涵括了轻薄本、全能本、高性能本三大细分品类,希望大家都能选到适合自己的笔记本。


    • 笔记本的价格变动比较大,文中标明的价格通常为电商促销价
    • 迫于篇幅限制,文中所推荐的机型没有大量图片展示,推荐大家自行搜索


    入门级别(4000-5500 元)

    联想 小新 Air 14 2020 锐龙  4099 元

    +
    +

    • 优点:性能释放好、接口齐全、高色域屏幕好评
    • 缺点:机身相对稍厚
    • 备注:支持 PD 充电,但适配器非「一线一头」

    简评:联想小新 Air 14 是一款非常均衡的「水桶机」。

    不同于大多数锐龙机型采用的 R5-4500U 处理器,联想这台使用的是线程数更多的 R5-4600U,落实到性能上来说,4600U 要比 4500U 强出不少,再加上小新系列对性能的调教一贯都很激进,因此小新 Air 14 足以应付一些较为复杂专业的工作。此外,小新 Air 14 也具备高色域屏幕,可以满足图像处理等工作。在接口方面,小新 Air 14 也比较齐全,另外还有一个 SD 读卡器,给单反相机用户提供了不少便利

    需要注意的是,小新 Air 14 虽然支持 PD 充电,但没有配备便携式「一线一头」的充电器,如果需要的话可以自行购买。


    惠普 战 66 四代 酷睿核显版  4499 元

    +

    • 优点:屏幕素质出色、接口非常齐全、扩展能力很强、售后好
    • 缺点:电池容量稍小
    • 备注:支持 PD 充电,但适配器非「一线一头」

    简评:惠普战 66 是惠普商务产品线中主打性价比的一款产品,目前经过了四代更迭,每次进步都非常明显,本次我们推荐的是战 66 系列中性价比最出色的 11 代酷睿核显版。

    战 66 四代最大的变化是更换了全新模具,因此在外观设计和机身控制(1.38kg)上相比前代有很大提升。除此之外,它的一些传统优势也延续了下来,首先是屏幕,战 66 四代配备了 400 尼特亮度的低功耗高色域屏,很适合修图调色。第二是内部扩展性,它拥有双内存插槽,为后续升级提供了很大余地,可以调侃地说,这台电脑以后都可以留着养老了。最后是接口,3 个 USB-A、全功能 Type-C、HDMI、甚至是网口和 TF 读卡器全部具备,省去了外接扩展坞的烦恼。

    我们推荐的核显版在双十二期间正式开售,相比于独显版,它的价格更便宜,续航也会更好一些,而且处理器的性能释放也会更强,所以如果大家没有游戏需求、只是用来普通办公的话,4499 元的价格买个酷睿核显本是相当划算的。


    荣耀 MagicBook Pro 2020 锐龙  4899 元

    +

    • 优点:锐龙 4000 系标压处理器、多屏协同、一碰传,16.1 英寸高素质大屏
    • 缺点:内存频率较低,不适合大型游戏玩家、其他没什么短板……
    • 备注:如果对便携性有要求,不推荐选择。

    简评:荣耀 MagicBook Pro 是我很喜欢的一款大屏本。它搭载了锐龙 R5-4600H / R7-4800H 标压处理器,处理器性能比低压本强出许多,完全能够胜任许多专业复杂的工作,例如 Photoshop、Lightroom、SolidWorks、MATLAB 等等,不过对于大型游戏有需求的同学,我们还是更推荐带独立显卡的酷睿版。另外对于视频剪辑来说,像普通 Vlog 这样的也完全没问题。

    除了性能外,MagicBook Pro 锐龙版也有很多值得称道的地方,最大的亮点就是 16.1 英寸的高色域大屏幕以及相对紧凑的机身,如果不考虑便携性,大屏有很多好处,比如剪辑视频可以显示更长的时间轴,不用老拖来拖去,就算是单纯的文字办公,也会有更高的效率。另外,标配「一线一头」的便携适配器也是荣耀的基本操作了。

    最后,我们预计双十二的价格为 4699 元,这在大屏锐龙标压本中应该是价格最低的存在。如果你没有游戏需求,还喜欢大屏幕的话,MagicBook Pro 非常推荐入手。


    联想 小新 Pro 13 2020 锐龙  4999 元

    +
    +

    • 优点:四边窄全面屏、16:10 屏幕比例、高分辨率、35W 超强性能释放
    • 缺点:仅有一个 USB-A 接口,键盘手感一般
    • 备注:支持 PD 充电,但适配器非「一线一头」

    简评:小新 Pro 13 是联想小新家族里销量最好的一款产品,进入我们的推荐榜单中自然是毫无疑问的。

    小新 Pro 13 最突出的一点就是屏幕,在这块屏幕上,高色域只是基础,难得的是它拥有和苹果 MacBook Pro 13 一样的 2.5K 高分辨率,观感比 1080P 细腻很多,另外在性能方面也十分强悍,虽然它机身小,但散热规格非常强,所以性能释放自然也很出色。除此之外,小机身也带来了不错的便携性,很适合每天上下班带电脑通勤的人。

    当然了,小新 Pro 13 也有不足的地方,有很多用户吐槽键盘手感一般,另外就是仅有一个 USB 接口,不方便接驳外设,比如外接显示器的话可能得买个扩展坞了。


    华为 MateBook 13/14 2020 锐龙

    +

    • 13 优点:标压处理器性能强悍,屏幕素质很好,支持多屏协同、一碰传等
    • 13 缺点:货源稀少,42Wh 电池容量较小,仅有一个 USB-A 接口
    +

    • 14 优点:标压处理器性能强悍,屏幕素质很好,支持多屏协同、一碰传等
    • 14 缺点:货源稀少,内存频率较低

    简评:华为在今年 8 月推出了 MateBook 13/14 2020 锐龙版,最大的亮点是极为激进的性能。两款全线搭载锐龙 4600H/4800H 处理器,处理器最高功耗释放可达 35W+,同时大幅升级了散热能力。除此之外,适合文字工作者的 3:2 比例高色域屏幕,辨识度较高的全面屏设计,华为独有的一碰传、多屏协同等功能也全部具备,另外在触屏方面需要特别注意一下,两款的低配版本是不支持触屏的。

    两款笔记本的定价非常厚道,产品本身也非常能打,但可惜目前货源稀少,官方渠道已经断货很久,只在一些第三方店铺里才有可能买到,如果你感兴趣的话,可以花点时间蹲守一下,特别是华为 / 荣耀手机用户非常适合。


    联想 小新 Air14 2021 酷睿  5299 元

    +
    +

    • 优点:性能释放出色、接口齐全、高色域屏幕不错
    • 缺点:机身相对稍厚
    • 备注:支持 PD 充电,但适配器非「一线一头」

    简评:小新 Air 14 酷睿版,它的模具外观与文章开篇的锐龙版一样,不同之处在于处理器升级为 11 代酷睿,并且多搭载了 MX450 独立显卡,游戏性能由此大幅提升。具体表现上,虽然它是一款轻薄本,但已经足以应付诸如 GTA5 这类优化比较到位的游戏了,而除了游戏方面,MX450 也能够提升视频剪辑、导出、渲染的效率,所以它是比锐龙版更加「水桶」的存在,如果你有这方面的需求,可以多加预算购买酷睿版。


    进阶级别(5500-7000 元)

    联想 YOGA 13s / 14s 2021 酷睿  5499 / 5699 元

    +
    +



    • 13 优点:做工质感出色,屏幕素质好,性能释放好,便携性强
    • 13 缺点:没有 USB-A 接口 +
      +
      +

    • 14 优点:品质感更强,90Hz 高刷屏,性能激进
    • 14 缺点:接口较少

    简评:与小新不同,在联想轻薄本中,YOGA 更倾向于设计感或者说品质感,YOGA 13s /14s 就是如此。

    先来说 13s,你可以把它理解为小新 Pro 13 的品质加强版,它们都采用了相同规格的屏幕、但 YOGA 13s 在外观细节上更丰富,同时 13s 还有白色碳纤维限量版——YOGA Pro 13s Carbon,它的机身不足 1kg,外观也更加出色。性能方面,YOGA 13s 配备 11 代酷睿处理器,最高可达 25W 功耗释放,搭配着高频内存,能够充分发挥出核显水平。YOGA 13s 的缺点是没有 USB-A 接口,所以外接设备时候会比较不方便。

    YOGA 14s 相比起 13s,在性能、做工品质、功能配备上继续提升。性能方面,同样是 11 代酷睿,但最高功耗释放达到了恐怖的 38W……而且依然搭配着高频内存,保证了核显的性能发挥。屏幕是 YOGA 14s 的亮点,它引入了 90Hz 高刷屏、400 尼特亮度,分辨率扩大至 2.8K,同样为 16:10 的比例。另外更大尺寸的触控板也能带来不错的体验。14s 的缺点也很明显,仅有一个 USB-A 接口和两个雷电 4,接驳外设可能不是很方便。

    YOGA 13s / 14s 均为核显,尽管 11 代酷睿的核显很出色,但如果有更高的游戏需求,或者相对专业的需求,还是更推荐性能更全面的独显机型。


    联想 小新 Pro14 2021 酷睿  5999 元

    +
    +

    • 优点:性能全面且出色,做工品质较好,屏幕素质好
    • 缺点:接口较少

    简评:在 6000 元以下的联想轻薄本中,小新 Pro 14 是性能最全面的一款,同时它的做工品质相较于小新 Pro 13 也有很大提升,但相比起 YOGA 还是差一些精致感。

    配置性能方面,小新 Pro 14 搭载 11 代酷睿+MX450 独显,最高功耗释放分别可达 38W 和 28.5W,一样拥有高频内存,这样的组合完全足以应付很多专业需求和神优化下的大型游戏(如 GTA5)。除此之外,2.2K 分辨率的 16:10 高色域屏,更大的触控板(14s 同款),以及一系列 AI 功能的加持也带来了不错的体验。

    相信大家都发现了,定位相对较高的轻薄本在接口配备上都不是很到位,这主要是为了保证机身质感,无法在有限的机身厚度上容纳更多接口,小新 Pro 14 也一样,只有一个 USB-A 接口和两个雷电 4。


    联想 YOGA 14c 2021 酷睿  5999 元

    +
    +

    • 优点:少有的高素质翻转本,电池容量 71Wh
    • 缺点:接口较少,1080P 屏幕(有点鸡蛋里挑骨头了)

    简评:翻转本是写在 YOGA 基因里的产品,目前市面上比较好的翻转本其实并不多,在 6000 元以下,YOGA 14c 应该是唯一的选择。首先作为一款可触控的翻转本,YOGA 14c 自带了触控笔,并不需要额外购买,这是非常有诚意的。配置方面,14c 作为一款核显机型,搭载 11 代酷睿处理器,最高功耗释放 25W,可惜内存并非高频规格,但这一点大家不必过多纠结,毕竟瑕不掩瑜,YOGA 14c 整体还是很优秀的。比较有亮点的是电池容量,71Wh 对于 14 寸的笔记本来说算得上是海量,会有着不错的续航能力。对于 YOGA 14c 的不足之处,除了和小新 Pro 14 一样少的接口外,1080P 的分辨率相比起同价位的兄弟产品稍显落后了,不过比其他品牌的竞品还是要优秀的。


    戴尔灵越 7300 酷睿核显版 5699 元

    +
    +

    • 优点:重量不到 1kg
    • 缺点:相比联想屏幕规格稍弱
    • 备注:支持 PD 充电,但适配器非「一线一头」

    简评:灵越 7300 主打的是超轻量,机身重量不到 1kg,便携性很强,另外灰白配色相比起大部分银灰色笔记本也要更素雅些。配置方面,11 代酷睿搭配高频内存很合理,足以满足大部分人群使用。屏幕为常规的高色域 1080P,相比起联想肯定要稍差一些。除此之外,它 5699 元的售价之下,拥有这样的配置,在戴尔笔记本中已经非常不容易了。


    华硕灵耀 14s  6199 元

    +
    +

    • 优点:配色独特,有设计感
    • 缺点:相比联想屏幕规格稍弱,没有耳机孔(需要转接),固态硬盘稍弱

    简评:相比联想家族的笔记本,灵耀 14s 在配置和性能上可能没那么出彩,但它仍有自己的独特优势,例如极具辨识度的做工和配色,让它看起来比较有设计感,另外触控板上集成了数字小键盘也很方便。配置方面,灵耀 14s 非常主流,虽然不如联想那么激进,但对大部分人来说已经足够,它搭载 11 代酷睿,配合高频内存,核显会有不错的性能发挥,屏幕方面为常规的高色域 1080P,相比起联想的肯定要稍差一些。比较有亮点的是 67Wh 的大容量电池。说说不足之处,灵耀 14s 的固态硬盘规格稍弱一些,也没有耳机孔,好在附赠了转接线。总的来说,这台笔记本是更为进阶的选择,如果你预算 6000 多元,且比较看中外观设计,那么它比联想小新系列更出彩些。


    旗舰级别(7000-10000 元以上)

    苹果 MacBook Air 13 M1  6999 元

    +
    +

    • 优点:做工顶级、续航极强、平台先进、价格厚道、懂得都懂
    • 缺点:无 USB-A,芯片平台过渡期,对专业用户不友好

    简评:关于 M1 平台 MacBook 的选购问题,极客之选在之前的文章已经探讨过了——《M1 Mac 选购指南》,无论你是 Windows PC 用户,还是 Mac 老用户,文章里都有详细的建议,大家可以去阅读一下。

    在这里简单说一下,我的建议是更推荐选择 Air,无论是在性能上还是功能上,Air 都可以满足绝大部分人的使用需求,但如果你是专业用户,我更推荐等待明年 MacBook Pro 13 / 16 的到来。


    联想 YOGA Pro 系列  12999 元

    +
    +

    优点:做工顶级、工艺精湛、配置拉满、功能强大

    缺点:几乎没缺点,如果屏幕比例做成 16:10 也许会更好

    简评:YOGA Pro 14s & 14c 是联想轻薄本中最顶级的存在,在核心配置、屏幕素质、机身品质、工艺等方面几近完美,而且存储规格非常大方,两款产品均只有一个顶配的 SKU,最关键的是,价格相比同配置同定位的戴尔 XPS 要良心太多了。


    联想拯救者 R9000X 2021 7999 元

    +
    +

    • 优点:性价比无敌,机身相对轻薄,外观内敛,产品形态独特
    • 缺点:难买(抢)

    简评:在联想拯救者产品线中,Y9000X 和 R9000X 是一个特殊的存在,它们主打轻薄高性能方向,不仅填补了万元内该领域的空白,也为这类用户提供了很好的选择。本文我们推荐的是性价比极为出色的 R9000X,它搭载锐龙 R7-4800H 处理器,配合 RTX 2060 MQ 独显,最高功耗释放分别可达 65W 和 75W,完全足以应付各类专业应用。在拥有高性能的同时,R9000X 的机身重量不足 2kg,厚度为 15.9mm,一定程度上也提升了便携性。除此之外,诸如高色域电竞屏、商务内敛的外观也为它增色不少,总的来说,R9000X 最大的意义还是填补了万元以下高性能轻薄本的空白,它也许没有游戏本那么极致的性能,但却换来了相对内敛低调的外观,而且体验并没有牺牲多少。


    华硕灵耀 X 纵横  8999 元

    +
    +

    • 优点:设计独特,配色亮眼、性能释放强、屏幕素质好
    • 缺点:没有耳机孔(需要转接)

    简评:华硕今年下半年的表现非常亮眼,应该是除了联想之外,第二个找准国内笔记本市场的产品节奏,并且能走下去的厂商。灵耀 X 纵横是华硕的高端产品,它最大的亮点在于辨识度极高的外观设计,采用了四边窄的 3:2 比例屏幕,屏占比非常高,外观配色方面,以墨色为主体,红色 CNC 切边为点缀,极具有辨识度。配置上,搭载第 11 代酷睿,搭配高频内存,核显能力充分释放,并且它的最高功耗释放达到了 30W 左右,是相当不错的水平。除此之外,3.3K 分辨率、3:2 比例的屏幕也很适合文字工作者使用。总体而言,灵耀 X 纵横的硬件配备、产品力以及定价上都非常切合高端用户的需求,甚至能和联想 YOGA Pro 掰掰手腕。


    万元及以上的产品我们就不再推荐了,毕竟这部分受众人群比较少,而且需求可能相对专业,他们对产品有很多个性化的需求,通用的选购指南也许不是很合适。另外,我们主要是综合产品力、价格两个角度选取了榜单中的这些机型,也许里边没有你心中的好产品,但这并不代表我们否定了它,例如戴尔 XPS 系列,产品非常不错,但售价可能过于昂贵了……总而言之,买笔记本要找准自己的需求,最贵的不一定是最好的,最后希望大家都能买到心仪的笔记本。


    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Sat, 12 Dec 2020 17:00:20 +0800 +
    + + + <![CDATA[极客之选年度评选丨年度家用游戏主机:索尼 PS5]]> + + http://www.geekpark.net/news/270992 + + 在 2020 这魔幻的一年,极客之选(微信号 GeekChoice)与大家一起经历了太多「活久见」的奇异事件,很开心我们能够一直陪在你们身边,并且一直努力为大家奉上更出色的数码产品内容。「年度产品评选」是极客之选每年年底的保留栏目,从 12 月 1 日开始,我们将会逐一揭晓获奖产品,本次评选将涉及三个大类近 20 个细分奖项。从「娱乐至上」到「生产力万岁」,极客之选希望能够通过不同维度和视角,和大家一起聊聊那些 2020 年最有料的科技产品。

    2020 年新世代主机终于来了,一定程度上缓解了「年度游戏机」这个奖项过去几年的尴尬(2018 年给了复刻游戏机、2019 年给了 Switch Lite)。索尼、微软都分别发布了自己的新世代主机,硬件加强、新技术带来新体验,当然最重要的游戏内容上,各家也有数款大作护航。

    关于画质、性能、参数的对比,专业游戏媒体已经给出了不少。结合各方的信息,以及我们自己的实际体验来看,两家主机在实际的性能表现上差别不大,真正拉开差距的是游玩体验(至于独占游戏,主要还是看玩家的喜好),具体来说就是索尼 PS5 上 DualSense 手柄带来的全新感受,真的可以称之为「次时代」,这也是我们将 PS5 评为年度家用游戏主机最主要的原因之一。

    + +
    +

    外观上 PS5 相比上一代主机要大了一些,造型更具未来感。硬件性能方面,它最明显的提升就是 SSD,更高速的硬盘处理速度大大缩短了玩家的等待时间。除此之外还有 4K 120 帧、光追等新特性,都是切实可以感受到的提升。

    + +

    最重要的升级是全新的 DualSense 手柄,主要有两个特性:触觉反馈(或者叫振动反馈)和自适应扳机。这次 DualSense 手柄能提供极其细微的振动反馈,在不同材质地面经过时,在弹跳、浮空、碰撞的场景中,都能配合音效给予玩家更具沉浸感的体验。总结起来就是,DualSense 手柄的振动有了强度、位置、频率节奏的变化,无限接近手机的振动反馈。

    + +
    +

    至于两个扳机键,它们在正常状态下就是一个没有强度变化的弹力装置,但当你在游戏中拿起远程武器射击时,它就有了力度,会有一个推力抵着你的手指,甚至能营造出段落感。配合强有力的振动,它就像真实打枪的后坐力一样。

    对于家用游戏主机的选择,其实是个既简单又复杂的问题。如果你看中某个平台的独占,直接买对应主机即可,去对比参数意义不大。但要比较在整个世代的体验,则要考虑后续机能利用、生态建立、游戏售卖方式等种种因素,在当前这些都是未知的。


    点击此处查看更多奖项


    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Sat, 12 Dec 2020 17:00:20 +0800 +
    + + + <![CDATA[京东 7 亿美元投资兴盛优选;传字节获新轮融资,估值 1800 亿美元;国家:强化反垄断,防止资本无序扩张]]> + + http://www.geekpark.net/news/271041 + +

    京东将以 7 亿美元战略投资兴盛优选

    12 月 11 日,京东集团发布公告称,将以 7 亿美元战略投资湖南兴盛优选电子商务有限公司(以下简称「兴盛优选」)。京东集团表示,通过投资兴盛优选,双方将在数据、技术、仓储和短链物流等领域开展紧密合作,更好的扎根于下沉市场,服务农村、振兴地方经济。

    + +
    +

    与市面上其他的社区团购做法截然不同,京东集团首席战略官廖建文表示:「京东集团投资兴盛优选主要基于双方在商业价值观层面的高度一致,我们共同的目的就是用技术和供应链能力赋能线下门店,尤其是不发达地区的线下门店,帮助低线市场的门店主消除信息不对称、降低流通成本、提升经营效率,实现更好的选品和经营,通过他们来触达和服务消费者,而不是替代他们。」(来源:腾讯科技)


    中央政治局会议:强化反垄断和防止资本无序扩张

    12 月 11 日消息,中共中央政治局今日召开会议,分析研究 2021 年经济工作;听取中央纪委国家监委工作汇报,研究部署 2021 年党风廉政建设和反腐败工作;审议《中国共产党地方组织选举工作条例》。

    会议要求,要扭住供给侧结构性改革,同时注重需求侧改革,打通堵点,补齐短板,贯通生产、分配、流通、消费各环节,形成需求牵引供给、供给创造需求的更高水平动态平衡,提升国民经济体系整体效能。要整体推进改革开放,强化国家战略科技力量,增强产业链供应链自主可控能力,形成强大国内市场,夯实农业基础,强化反垄断和防止资本无序扩张,促进房地产市场平稳健康发展,持续改善生态环境质量。(来源:新华网)


    传红杉资本牵头字节跳动最新一轮融资,估值 1800 亿美元

    12 月 11 日,知情人士称,红杉资本和 KKR 牵头字节跳动最新一轮融资,对字节跳动的估值为 1800 亿美元,此前字节跳动在二级私募股权市场的估值达 1400 亿美元。

    搜狐科技就此向字节跳动求证,其回应表示「不予置评」。(来源:搜狐科技)

    + +
    +

    阿里巴巴电商组织架构调整:平畴将全面负责淘系用户产品与技术

    12 月 11 日消息,阿里巴巴启动新一轮组织架构调整,阿里巴巴副总裁平畴将全面负责淘系用户产品与技术。此后,搜索推荐事业部、天猫-消费者平台产品团队、淘系消费者运营事业部向平畴汇报。

    + +
    +

    天猫服饰风尚事业部、天猫快速消费品事业部、 阿里汽车事业部、聚划算事业部、天猫活动营销中心、天猫商家策略部向吹雪汇报。吹雪将全面负责天猫商家和行业运营工作。(来源:DoNews)


    腾讯和日立在车联网、自动驾驶领域展开合作

    12 月 11 日消息,腾讯与株式会社日立制作所宣布达成合作关系,将共同致力于车联网、自动驾驶、车辆信息安全等领域的服务开发。通过将腾讯的云计算、AI、大数据等技术与日立的车载相关及信息安全等汽车相关技术相结合,旨在为汽车行业提供先进、高质量的服务。

    根据协议,两家公司将结合各自的技术,共同开发车联网,自动驾驶、车辆信息安全等领域的服务,推进汽车产业数字化转型,为中国汽车制造商、物流公司等交通运输领域的企业提供服务。(来源:Pingwest)


    苏宁电器发布债券兑付计划,提前还债 100 亿

    12 月 11 日晚间消息,苏宁电器集团有限公司发布公告表示,15 苏宁 01 债券将于 2020 年 12 月 16 日开始支付债券本金和最后一个年度利息。公司已将到期应兑付的全部本息金额,足额划入结算备付金专用账户,以保障本期债券的按期兑付。

    该债券总额 100 亿元,于 2015 年 12 月 15 日发行,2016 年 1 月 11 日起在上海证券交易所固定收益证券综合电子平台挂牌转让,2020 年 12 月 17 日为到期兑付日。

    苏宁近期风波不断,引发市场对其经营状况的担忧情绪。此前,苏宁易购发行的多只债券在二级市场大跌,其偿债能力备受质疑。苏宁先后两次宣布了总计 30 亿元的债券回购计划,以稳定市场情绪。(来源:凤凰科技)

    + +
    +

    泡泡玛特上市首日高开超 100%,市值超千亿港元

    12 月 11 日,有「盲盒第一股」之称的泡泡玛特登陆港交所。上市首日高开超 100%,报 77.1 港元/股,市值超 1000 亿港元。泡泡玛特发行价为 38.5 港元/股。

    + +
    +

    12 月 10 日,泡泡玛特公告披露,发售价已厘定为每股 38.50 港元,估计将收取全球发售所得款项净额约 50.25 亿港元,每手 200 股,股份将于 2020 年 12 月 11 日上午 9 时在联交所主板开始交易。

    曾被评选为中国新零售的十大新物种的泡泡玛特。实际上已经十岁了。创始人王宁大学就开始创业,2010 年成立泡泡玛特,最早的定位是销售家具、文具、视频等生活创意产品的杂货铺。(来源:网易科技、极客公园)


    Spotify 曝安全漏洞:密码等私人账户信息泄露,数量不详

    12 月 11 日消息,据 TechCrunch 报道,Spotify 表示已经因为信息泄漏,已经重置了数量不详的用户密码。关于泄漏原因,Spotify 将其归咎于系统中的软件漏洞将私人账户信息泄露给了商业伙伴。

    在提交给加州总检察长办公室的一份数据泄露通知中,Spotify 没有透露哪家伙伴公司能看到这批资料,只是强调受影响人数不多,而且已经要求对方删除资料。相关资料包括邮箱地址、ID、密码、性别和生日日期。

    Spotify 还表示,该漏洞早在 4 月 9 日就存在,但直到 11 月 12 日才被发现。(来源:界面)


    微信将治理「打开 App 阅读全文」违规导流链接

    12 月 11 日讯,「微信安全中心」微信公众号今日发布公告,将对网页内容中,阅读原文需被迫下载、打开第三方 App 的行为进行控制。此类行为胁迫用户,严重影响了微信用户的使用体验。

    微信表示,用户在手机浏览器中阅读文章时,会出现弹窗提示跳转至微信进一步浏览。微信表示该行为并不是微信所为,「是相关第三方平台通过技术手段限制了页面浏览渠道,以此进行导流。」(来源:Pingwest)

    + +

    滴滴版「花呗」时隔两年重新启动,助贷模式变自营

    12 月 11 日消息,滴滴打车日前低调上线一款消费信贷产品——滴滴月付。据界面新闻初步了解,该产品为滴滴金融的一款先享后付产品,打车享垫付,当月打车,下月 8 号还款,其产品逻辑与支付宝花呗、京东白条、美团月付相似,其主要使用场景仅限于滴滴打车服务,目前还在灰度测试当中。

    + +
    +

    滴滴方面回应界面新闻称,「滴滴月付」产品是滴滴金融近期尝试性推出,用户开通后,可用于支付滴滴平台上的出行服务,为用户在支付环节提供更方便的体验。(来源:界面)


    Instagram 整合在线购物与短视频功能,提升与 TikTok 竞争力

    北京时间 12 月 11 日消息,Instagram 宣布将把在线购物和 Reels 短视频功能整合到一起,以应对与 TikTok 的竞争。

    目前,在 Instagram 上的品牌和创作者可以为自己的视频打上产品标签,当用户对某一商品感兴趣时就可以直接将其添加到购物车。Instagram 总裁 Adam Mosseri 表示,「为创造者提供有意义方式,帮助他们谋生这很重要,否则他们就会失去竞争力,像 Snap 和谷歌的 YouTube 一样。」(来源:钛媒体)

    + +

    2020 年诺贝尔奖颁奖仪式因疫情改为网络举行

    北京时间 12 月 11 日消息,2020 年诺贝尔物理学奖、化学奖、生理学或医学奖、文学奖以及经济学奖颁奖仪式因新冠疫情 10 日改为线上举行,活动地点也首次改在瑞典首都斯德哥尔摩市政厅。

    线上颁奖仪式上播放了瑞典国王卡尔十六世·古斯塔夫的致辞。各奖项的评选委员会代表分别按惯例宣读获奖者的成就。12 月 6 日至 9 日期间,上述诺贝尔奖得主在各自国家获颁相关奖项。他们的领奖视频于 10 日在线上颁奖仪式上予以展示。

    + +
    +

    诺贝尔基金会主席卡尔·亨里克·赫尔丁在致辞中说,虽然新冠疫情致使获奖者无法亲赴斯德哥尔摩领奖,但他很高兴获奖者得以在各自国家领取奖章和证书。(来源:凤凰科技)

    ]]> +
    + 极客公园 + Sat, 12 Dec 2020 09:30:26 +0800 +
    + + + <![CDATA[泡泡玛特市值千亿,做的其实不是盲盒]]> + + http://www.geekpark.net/news/271035 + + 12 月 11 日,泡泡玛特在港交所挂牌上市,定价每股 38.50 港元。开盘后,其股价迅速拉升到 77 港元,市值一度突破了 1000 亿港元。

    在不少人印象中,这似乎是一家年轻的公司。它甚至还曾被评选为中国新零售的十大新物种。实际上,泡泡玛特已经十岁了。

    创始人王宁大学就开始创业,2010 年成立泡泡玛特,最早的定位是销售家具、文具、视频等生活创意产品的杂货铺。

    开设第一家门店,作为老板,王宁得自己刷墙搞装修,骑着三轮车到批发市场进货,当时,连最初级的店员都很难招到。

    如今,泡泡玛特在中国开设了 100 多家零售门店,在 62 个城市安置了一千多家机器人商店,推出了 Molly 等爆款盲盒产品,今年双十一还在天猫创造了 1.42 亿的销售业绩。

    十年间,是什么推动了泡泡玛特的持续发展?而在外界质疑盲盒生意泡沫多的当下,又是什么撑起了泡泡玛特的千亿市值?

    + +

    + 泡泡玛特上市敲钟现场 | 泡泡玛特


    「盲盒不是核心竞争力」

    从招股书里就能发现,泡泡玛特不仅赚钱多,而且赚钱快。

    2017 年,泡泡玛特的净利润是 160 万元,2019 年则是 4.51 亿元,两年翻了 288 倍。即便是疫情严重的 2020 年,它在上半年也赚了 1.41 亿。

    促使这家公司业绩腾飞的当然是盲盒,这种用不透明密封盒包装销售的系列玩具。Molly 是泡泡玛特推出的最成功的盲盒 IP。这个嘟着嘴巴的小玩偶,仅 2019 年就给泡泡玛特贡献了 4.56 亿的收入。

    因为 Molly 系列盲盒过于成功,加之泡泡玛特在一二线城市开设了多家线下门店,不少人逛一圈下来,就自然觉得这是一家专门做盲盒的玩具公司。

    王宁在媒体采访时表示,盲盒本身不是泡泡玛特的核心竞争力,公司的业务板块也不只是大家看见的潮玩零售。

    + +

    + 泡泡玛特Molly 系列盲盒形象|视觉中国

    最初,公司命名为泡泡玛特(POP MART),是想做日本 LOFT 这种杂货零售商,也就是流行产品的超市。团队发现潮玩销量增长很快,就开始做减法,最后只做潮玩这个品类。

    十年来,流行的潮玩种类一直在变,但王宁说,「这么多年不变的就是我自己最感兴趣的(方向),一个关于设计,一个关于商业。」

    关于设计,涉及到 IP 形象的挖掘,这是泡泡玛特的产品核心。截至 2020 年 6 月 30 日,泡泡玛特总共运营了 93 个 IP,包括 12 个自有 IP、25 个独家 IP,56 个非独家 IP。

    将一个 IP 转化成爆款商品是一件复杂的事情。首先,你得找到最头部的艺术家,打动这些艺术家接受自己的作品被批量化生产。

    以 Molly 这个 IP 为例,在其创作艺术家 Kenny Wong 还未走近大众视野时,泡泡玛特就与他签约。

    IP 签约后,要找到合适的生产供应链,要去做运营管理,做营销,构建自有渠道,这里就涉及到泡泡玛特的商业化。

    参与泡泡玛特投资的华兴资本董事长包凡提到,「泡泡玛特成功的核心绝对不是因为盲盒,而是将设计、供应链,再到最后的零售终端,整合成平台化能力。」

    除了盲盒,泡泡玛特的产品线还包括手办、BJD、衍生品等。除了潮玩零售,它还开展了艺术家经纪、互动娱乐、潮玩展览等业务。

    潮玩并不是新的行业,盲盒是十几年前就有的老玩法,IP 也有自己的生命周期。在王宁看来,泡泡玛特的创新在于围绕潮玩打造了一个平台。

    这个平台将上游设计端,中游销售渠道等供应链,以及下游潮玩文化社区这些业务整合在一起,形成了一个生态闭环。这也是促使泡泡玛特持续发展的驱动力。

    + +

    + 泡泡玛特创始人王宁|泡泡玛特


    泡泡玛特的新型全球化

    华兴资本领投了泡泡玛特 Pre-IPO 轮的融资,包凡回忆,「这个交易从决策到投进去只用了 20 天。」

    为什么这么快?包凡告诉极客公园(ID:geekpark),投资泡泡玛特之前,消费已经是华兴投资重点关注的赛道之一,未来 10-20 年出生的 Z 世代会是消费的新兴主力军,回报周期是最长的。

    泡泡玛特背靠的正是这个消费群体。其招股书披露,截至 2020 年 6 月 30 日,泡泡玛特共有 360 万名注册会员,年龄段集中在 15 至 35 岁。这个群体的特征是消费能力强,热衷分享和展示。

    互联网产品强调用户时长,消费品也是如此。在包凡看来,一个 IP 之所以能成为爆款,一定是建立在用户时间之上的。

    如今,年轻人的时间更碎片化。一位业内人士分析,潮玩反而降低了消费者的时间门槛,「一款盲盒,一两分钟你就能判断喜不喜欢」。

    另外,抽到中意的款式,「摆在家里,从另外一个角度来说,你跟它的交互时间无形中就增加了,这个 IP 也会慢慢占据你的心智」。

    在用户时长的卡位战里,如何利用渠道有效触达用户非常关键。王宁说:「泡泡玛特永远会把自己卡位的维度做多一点,覆盖所有能用的销售渠道。」

    除了线下门店,泡泡玛特还有一千多台自动售卖机分散在不同的场景里,线上场景也覆盖了天猫、京东、微信小程序的。据了解,上市之后,泡泡玛特的战略重点将是在海外市场拓展更多渠道。

    + +

    + 泡泡玛特线下门店|视觉中国

    在王宁看来,泡泡玛特走的是一种新型的全球化。这种全球化是指,泡泡玛特将产业上中下游的环节串联起来,形成了一种集结 IP 开发、生产、商业化等全流程能力的基建型平台。

    这种平台在出海时提供技术支持,针对不同地域环境和文化,艺术家们都能共创潮玩。王宁说:「我们签约的艺术家里面,很大比例是海外艺术家。」

    此前,泡泡玛特签约了一位斯洛文尼亚的女性艺术家。王宁说:「中国有成熟的制造业,有大量的工厂,她的作品就可以很快速地把艺术展现出来。」

    对此,包凡告诉极客公园,过去文化的制高点在欧美,随着经济等因素变化,现在可能在朝亚洲迁移,这是泡泡玛特出海的利好环境。

    「以往中国企业出海是低端的制造,如今中国品牌往外走是大趋势。」包凡进一步解释。泡泡玛特在潮玩领域做基建平台的模式,目前国外还比较少,这种模式是可以复用到海外的。

    此前,泡泡玛特已经在日本、韩国、加拿大等国家设置了自动售卖机器,今年 10 月在韩国首尔开设了第一家直营店,新加坡的直营门店也将开业。

    今年是泡泡玛特的第十年。在包凡看来,这家公司的此前的节奏相对稳妥,「未来是可以提速的。」

    包凡判断的依据有两点:一是,它所处的赛道很模糊,小到只是盲盒,大到是潮玩,是年轻人的精神消费。随着时间推移,这个赛道的外延内涵都在变化,包裹进来的内容也越来越多。二是,对泡泡玛特而言,它自身的势能和组织能力在不断增强,能做的事情也会越来越多

    在十年的发展里,最早泡泡玛特想做万代一样的杂货铺,之后是学习乐高,迪士尼,围绕 IP 做商业开发和价值转化,如今,它想做的则是「中国的泡泡玛特」。这是藏在盲盒生意之下,泡泡玛特的野心。


    责任编辑:靖宇

    头图来源:视觉中国

    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Fri, 11 Dec 2020 22:51:17 +0800 +
    + + + <![CDATA[印象笔记出了一个智能鼠标,能让你的电脑「听懂」语音]]> + + http://www.geekpark.net/news/270794 + + 过去几年手机和电脑的界限越来越模糊,主要是手机一直在学习电脑的优势,比如硬件的计算能力加强,同屏多任务更方便。在这个过程中手机也解锁了一项新技能「语音」,精准的语音输入一定程度上缓解了手机没有键盘输入的劣势,语音操控更是解决了不少效率问题。

    后来这种学习风潮出现了逆转,电脑也在学习手机的语音能力,比如 Windows 的 Cortana 和 macOS 的 Siri。不过这种依托于系统生态的语音助手,功能更迭一般不会太快,也无法满足不同人的需要。

    于是最近,这种电脑端语音助手有了新的载体「鼠标」,之前我们就介绍过小米小爱鼠标,讯飞也出过一系列的智能鼠标产品。今天我们要介绍的是来自印象笔记的智能鼠标 EverMOUSE,它在支持语音输入、翻译的基础上,还多了与印象笔记软件相配的功能,算是一个很独特的体验。


    外观小巧,手感略差

    先来看看它的硬件,EverMOUSE 尺寸不大,适合轻度办公使用,打游戏就算了,支撑不足,手感也不比专业的游戏鼠标,可以看出它的定位还是符合印象笔记一贯的学习和办公场景。         

    +

    单看外观有很浓的印象笔记风格,掌心处有大象 logo,按键为绿色主题色,其他部位是暗灰色的磨砂材料,滚轮是平平无奇的胶体材质,滚动起来的反馈一般。

             

    +

    EverMOUSE 只支持用无线适配器来连接,选择上比较少,不过大部分设备应该都有 USB Type-A 接口。

    + +
    +

    EverMOUSE 本身不需要电池,可以通过 Micro-USB 来充电,3 小时充满,续航为一个月。

    它的 DPI 为 1600,能满足日常使用,打游戏就算了。

    毕竟是软件公司做的产品,主要是满足学习和办公需求,我们也表示理解,还是重点看一下它的软件功能吧。


    支持语音输入和翻译

    EverMOUSE 的语音功能都集合在两边的特殊按键上,左边为语音/翻译键,画了一个麦克风,右边是印象功能键,印象笔记的用户应该很容易看出,这是个剪藏按钮。

    + +
    +

    下载「印象智能鼠标版」的印象笔记客户端,在工具-选项-鼠标中开启对应选项,就能使用 EverMOUSE 的功能。(目前仅支持 Windows 7/8/10 系统,macOS 版本后续会支持。)

    + +
    +

    桌面右下角除了印象笔记图标,还会多出一个 EverMOUSE 的图标,点击可以进入设置选项。

    + +
    +

    左边的语音/翻译键很好理解,就是在可输入文字的地方长按进行语音输入,右下角会显示输入框(输入框偶尔才跟随光标,语音接口这部分还需要优化)。

    +
    +

    这里的语音技术提供商是讯飞,不用过多介绍,准确度是不用担心的,体验与手机上的语音输入无异(支持中文、英文、粤语、河南话、四川话)。搭配鼠标的内置麦克风,你也不需要特意朝着鼠标说话。

    + +
    +

    双击语音/翻译键可以切换为翻译模式,说出的是中文,打出的字是英文。输入节奏上无法做到中文输入那样,分句连续输入,只能一次翻译一整段,应该是因为翻译转换需要时间。至于翻译的准确度也和手机端一样,日常聊天是没问题的,如果是落到书面文字可能要斟酌修改一下。(支持中文、英文、日语、韩语、德语、法语、俄语等 200 种语言)

    + +
    +

    还有一个功能是 Quickbar,选中文字后点击左侧语音/翻译键,可以呼出快捷工具栏,比如翻译、百度搜索、淘宝搜索等。其实类似的功能浏览器插件也能实现,不过 EverMOUSE 的优势是不挑软件,在浏览器之外也能使用这个功能。而且这个 Quickbar 是印象笔记特供,对接了保存至印象笔记、创建清单/桌面便签等印象笔记的专属功能。

    +

                 

    电脑上的语音助手

    右侧的印象功能键功能就很多了,最基本的就是剪藏,用过印象笔记的人都知道,这是个非常强大的摘录工具,可以将网站上看到的各种内容收藏的自己的笔记中,优化排版,并且原文删掉也不会消失(当代互联网必备了,懂的都懂)。

    + +
    +

    之前你能通过浏览器插件来快速收集内容,现在直接按印象功能键就可以了。

    这个键的另外一个作用就是语音操控,除了能识别印象笔记自身的新建笔记、创建便签等指令,还能打开电脑上其他应用,比如打开 Photoshop、打开 Word。

    + 新建笔记

    + 打开 Photoshop

    它其实已经具备了类似手机语音助手的功能,支持查天气、看视频、听歌等。实现方式是通过浏览器搜索,强大之处在于你不需要进行额外操作,可以直达网站、直达结果,要说缺点可能就是受网页端所限,有的功能需要 App 或者软件才能实现。当然这是互联网怪相,不是它产品本身的问题。

    + 淘宝购物

    总结一下,EverMOUSE 在功能性上确实是没什么问题,有些语音功能弥补了电脑操作的不足,只要你能接受对着鼠标说话就好(其实在家里使用是没什么问题的)。和电脑系统自带的语音助手相比,它多了更多细节功能,对于已经是印象笔记深度用户的人来说,EverMOUSE 的优势就更加明显。

    不过必须指出的是,EverMOUSE 这款鼠标本身的手感还是适合轻度办公,用来打游戏还是不行。左右两侧的特殊功能键与左右键的设计可以更合理一些,避免误操作。第一款产品可以理解为是有一定的尝试性,希望下次在硬件和设计上能有进一步提升。

    EverMOUSE 目前售价 349 元起,双十二有优惠,具体如下:

    + +

    +
    +

    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Fri, 11 Dec 2020 17:42:51 +0800 +
    + + + <![CDATA[极客之选年度评选丨年度智能手表:vivo WATCH]]> + + http://www.geekpark.net/news/270654 + + 在 2020 这魔幻的一年,极客之选(微信号 GeekChoice)与大家一起经历了太多「活久见」的奇异事件,很开心我们能够一直陪在你们身边,并且一直努力为大家奉上更出色的数码产品内容。「年度产品评选」是极客之选每年年底的保留栏目,从 12 月 1 日开始,我们将会逐一揭晓获奖产品,本次评选将涉及三个大类近 20 个细分奖项。从「娱乐至上」到「生产力万岁」,极客之选希望能够通过不同维度和视角,和大家一起聊聊那些 2020 年最有料的科技产品。

    经过几年摸索,智能手表的发展方向已经非常明确,几乎所有厂商都将重点放到了运动功能和健康监测能力上,这两项特性也是很多人选择购买智能手表的重要原因。而在功能性日趋同质化的大环境下,ID 设计以及做工用料成为了大家普遍更为关注的地方。

    几家手机大厂中,vivo 是做智能手表比较晚的一个,不过其在产品路径的选择上足够成熟。和很多同类产品一样,vivo WATCH 拥有 42mm 和 46mm 两种版本,全系均采用了 316L 不锈钢表体和陶瓷表圈,很好保证了手表耐用性。

    工艺处理非常讲究,46mm 版本以行业很少大面积使用的蚀刻工艺为主,同时配合抛光、遮蔽、喷砂等工序让手表呈现出了亮面和雾面相交融的效果;42mm 版本则为不锈钢喷砂工艺+电化学抛光处理,光线打上去显得很有光泽,结合圆形表盘设计,颇有一种传统腕表身上才能看到的精致感。

    将硬件层面做到足够出色的同时,vivo WATCH 的功能表现也很全面。它一共拥有 11 项运动模式,并且支持自动识别运动模式,这对于平时喜欢运动的人来说要方便很多。健康监测能力上,诸如 24 小时实时心率检测、血氧饱和度测试、睡眠监测、压力监测这些功能都没有落下。

    手表本身也支持多功能 NFC,可以用来刷门禁卡和公交卡,某些不方便触控操作的场景下,你还可以通过内置的 Jovi 语音助手来查阅天气、日期等信息。

    核心配置方面,vivo WATCH 46mm 版本配备了一块 1.39 英寸 AMOLED 屏,42mm 版本屏幕稍小一些,为 1.19 英寸,显示细腻度和色彩表现都很棒。手表本身的续航水平也不错,46mm 版本正常情况下可以坚持使用 18 天,即便是小尺寸的 42mm 也有 9 天的使用时长。

    总的来说,虽然是 vivo 的首款智能手表,但 vivo WATCH 整体表现足够成熟。拥有全面且丰富的功能应用,同时将选材用料以及工艺处理做到当前行业顶级水准,是我们将其评选为 2020 年度智能手表的主要原因。

    点击此处查看更多奖项


    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Fri, 11 Dec 2020 17:42:31 +0800 +
    + + + <![CDATA[Redmi Note 9 5G 体验:5000mAh 大电池,性价比很高的千元水桶机]]> + + http://www.geekpark.net/news/270489 + + 回顾即将过去的 2020 年,手机厂商们基本完成了将旗舰由 4G 过渡到 5G 这一目标,包括折叠屏手机在内,国内上市的所有旗舰产品都已经支持到 5G 网络。不过 5G 手机还远没有达到「普及」程度,对于预算在 2000 元以内的用户来说,这一价位段的可选择的 5G 手机依旧并不算多。

    前不久我们已经给大家介绍过 Redmi Note 9 Pro,今天来说下同样支持 5G,但价格进一步下探的 Redmi Note 9 5G。它的起售价(6GB+128GB)只有 1299 元,顶配版本(8GB+256GB)也不过 1699 元,而产品端几乎同级别能给的配置也都没有落下,是一款非常典型的「Redmi 手机」。


    6.53 英寸挖孔屏

    Redmi Note 9 5G 配备了一块 6.53 英寸 LCD 屏,分辨率为 2340 x 1080(FHD+),最高亮度 450nit,表面覆盖有康宁第 5 代大猩猩玻璃,通过了德国莱茵低蓝光认证,同时也支持阳光屏以及夜光屏模式,显示效果比较细腻。

    和 Redmi Note 9 Pro 一样,Redmi Note 9 5G 同样选择了挖孔屏方案,不过两款产品的开孔位置明显不同,前者为中置开孔,后者则将开孔放到了屏幕左上角,比较容易进行区分。Redmi Note 9 5G 孔径控制得不错,只比 Redmi Note 9 Pro 大了一丢丢,在 LCD 屏中属于较小的一个。

    上、左、右三个边框也都很窄,下边框相对稍宽一些,整体视觉效果还可以。有一点需要提醒的是,出于对成本的考量,它的这块屏幕并不支持高刷新率,如果你的旧手机同样为 60Hz,用起来没啥问题,要是比较在意的话,可以考虑 Redmi Note 9 Pro,当然预算要相应高一些。

    +

    由于采用了 LCD 屏的缘故,Redmi Note 9 5G 依旧选择了大家比较熟悉的侧边电源/指纹二合一按键设计。虽然比起屏幕指纹方案显得不那么酷,但实用性很强,解锁速度和识别准确性方面没啥可说的,都很稳。

    +

    不过实际使用过程中我们也发现,由于它的这枚按键处于中框靠上一些的位置,加之机身尺寸比较大,像我这样手指相对较短的用户,单手解锁时会显得有些吃力。好的地方是,平时拿手机的时候不容易出现误触解锁的情况。


    多种配色可选,还不错的握感

    翻过来看下机身背面。Redmi Note 9 5G 一共拥有三种不同的机身配色可选,除了文章中展示的青山外版本,还有流影紫和云墨灰版本。三种配色除了直观颜色效果有明显区别,工艺处理也不尽相同,青山外和流影紫用的是 AG 工艺,云墨灰版本则做了斜向交错的纹里。

    后置相机是 Redmi 已经在多款产品上使用过的圆形设计,可能是镜头模组尺寸比 Redmi Note 9 Pro 更小,所以取消了最上方的突出结构,整体比较平滑。另外,它的相机外围加了一圈亮面装饰,视觉效果上多少显得更精致一些。

    实际颜色效果上,我们手里这台青山外版本看上去介于绿色和蓝色之间,比一加 8T 的青域配色要来得稍浅一些,同时经过 AG 工艺处理之后整体质感也更好。当然,由于材质本身属性所限,上手手感没有 Redmi Note 9 Pro 湖光秋色版本那么细腻。

    +

    + 至于大家普遍比较关注的握感方面,Redmi Note 9 5G 的机身长度为 165.38 毫米,宽度为 76.8 毫米,厚度为 9 毫米,虽然机身内部塞进了一块 5000mAh 大电池,但它的机身重量和 Redmi Note 9 Pro 一样,依旧控制在了 215 克。

    +

    可能单就规格参数而言,Redmi Note 9 5G 很难用轻薄来形容,不过由于重量分布原因,它的实际握持感受其实并没有想象中那么重,加之后盖左右两侧均做了一定弧度处理,同时中框也比较圆润,单手握持使用整体感觉还不错。

    +

    +


    后置三摄,4800 万主摄

    自拍方面,Redmi Note 9 5G 前置摄像头为 1300 万像素,诸如人脸解锁以及 AI 美颜自拍等常规功能它也都支持。

    后置相机为主摄+超广角镜头+微距镜头的三摄设计。其中主摄为 4800 万像素, f/1.79 光圈,传感器型号是大家比较熟悉的三星 GM1,支持四合一输出一张感光能力更好的照片;超广角镜头为 800 万像素,f/2.2 光圈,视场角为 118°,微距镜头为 200 万像素。

    +

    + 以下为实拍样张,未经任何后期处理:


    +

    +

             超广角

    +

             微距模式




    从以上我们拍摄的样张来看,虽然这颗 4800 万像素主摄放到现在听起来没有那么有吸引力,但有了之前多款产品的经验积累,实际成像效果还是比较令人满意的,满足发朋友圈或者微博等日常使用需求没啥问题。同时,Redmi Note 9 5G 对于超广角畸变问题也控制得很好。

    +

    +

    +

    +

    +


    够用就好的性能,超长续航

    核心硬件配置方面,Redmi Note 9 5G 搭载了联发科天玑 800U 5G SoC,可选择存储组合比较丰富,有 6GB+128GB、8GB+128GB 和 8GB+256GB 三个版本,之前我们在 Redmi Note 9 Pro 评测中提到的 UFS2.1 存储协议它也同样支持。

    +

    简单说下天玑 800U 这颗芯片,它采用了 7nm 制作工艺,CPU 为 2 个 ARM Cortex-A76 大核心(2.4GHz)+4 个 ARM Cortex-A55 小核心(2.0GHz),ARM Mail-G57 MC3 GPU,支持双模 5G 以及 5G+5G 双卡双待。

    从我们的实际测试结果来看,Redmi Note 9 5G 安兔兔跑分为 341502 分,鲁大师为 498939 分,CPU 性能比天玑 720 提升了 20% 左右,明显优于去年 Redmi Note 8 上用到的那颗骁龙 665。高画质下玩和平精英画面跟随感没有那么强,但整体运行流畅性还好,不会出现卡顿的情况。

    前边介绍重量时我们提到过,Redmi 为它配备了一块 5000mAh 大电池,支持 18W 快充,不过匹配的是 22.5W 快充头。大电池所带来的好处是显而易见的,就我个人的使用习惯而言,一天半充一次电问题不大。

    +

    实测,利用原装有线充电器 5 分钟可以充至 5%、10 分钟可以充至 10%、20 分钟可以充至 20%、30 分钟可以充至 30%、40 分钟可以充至 40%、50 分钟可以充至 51%、60 分钟可以充至 61%,将 5000mAh 充至 100% 大概需要 124 分钟。    

    从我们绘制的充电折线图可以清楚看到,Redmi Note 9 5G 的整个充电过程并没有出现明显降速情况,一直处于比较稳定的状态。但毕竟只有 18W,从 0 充至 100% 所耗费的充电总时长还是显得稍长一些,不过对于这样一款产品,倒也没办法要求太多。


    合格的「水桶机」

    除了以上提到的这些,Redmi 还为这款产品配备了外放效果很棒的双立体声扬声器和振动反馈更好的线性马达(Z 轴),小米祖传的红外遥控以及 3.5 毫米耳机接口也同样得以保留。稍稍有些遗憾的是它并不支持 NFC,无法用来刷门禁卡。

    总的来说,作为一款来自于 Redmi 的产品,Redmi Note 9 Pro 的优点是支持双模 5G 的基础上,有着千元机中足够全面的参数配置。另外,大屏+大电池+大音量的组合,无论买来作为备用机还是送给家里老人使用,都是一个不错的选择。


    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Fri, 11 Dec 2020 13:55:38 +0800 +
    + + + <![CDATA[我敲了 13 年代码,却成了一个养蜂人]]> + + http://www.geekpark.net/news/270927 + + 符洪川已经做了 13 年的 IT 工程师,5 年前却开始「养蜜蜂」创业。

    这样的选择其实不难理解。一方面符洪川的两代父辈都是养蜂人,从小耳濡目染。另一方面,全球养蜂人超过 30 万,蜂蜜市场增长率 15%,而且中国进口的产品增长率超过 50%,如此高速发展的市场,世界上却只有一家蜂蜜上市企业。

    这里面存在巨大的造富机会。与父辈们不同,「程序员」符洪川熟悉互联网金融、网络安全、IT 系统工程等互联网技能,他「养蜂」的方式是用传感器、AI 技术改造传统的蜂箱,来提高生产效率,同时蜂箱带来的生产大数据可以帮助建立相关金融产品,帮助后端销售,进而改造全产业链。「用工业的方式做农业,将小散乱的传统养蜂行业规模化。」

    + +
    +

    天府蜂谷团队的「数字化养蜂项目」,在陕西、湖南等地以蜂业智能蜂箱为突破口,实现蜂蜜单品产业的数字化、智能化 | 天府蜂谷

    罗伯特也是这样一位技术极客,入选过《福布斯》30 岁以下学者。虽然仅 25 岁,却已有 3 次创业经历,最近一次是和材料博士、化学家合伙,进入了农业领域。

    他们团队的技术可以将变质、过期牛奶重新设计成塑料替代包装材料,「与传统塑料薄膜有相似的质量,但我们的成本比 PVC 材料便宜,可以广泛应用于时尚、医疗和包装行业。」

    原本生活轨迹没有交汇的两人,前不久一起获得了由联合国粮食及农业组织(FAO)、浙江大学联合主办,拼多多支持的「2020 全球农创客大赛」的二等奖。这个比赛也是继「多多农研科技大赛」之后,联合国粮食及农业组织联合拼多多,在过去几个月里推动的又一支持数字农业青年科创的活动。

    联合国粮食及农业组织副总干事 Beth Bechdol 女士介绍,比赛的出发点是为了促进青年投身农业技术创新、商业模式创新、释放粮食及农业领域创新潜力,来解决新冠疫情暴发对农产品上行带来的问题。

    + +
    决赛答辩以远程视频会议形式举行,12 支队伍面向全球科学家组成的评审团讲述成团背景及技术方案 | 朱标
    +

    「2020 全球农创客大赛」最终吸引了全球超过 150 个青年数字农业科创团队报名,其中有 12 支新锐队伍进入决赛,成为 2020 年全球规模最大的线上数字农业科创峰会。

    极客公园(id:geekpark)也远程见证了决赛答辩现场,我们发现,这些参赛者提供的诸多独特有创意的数字农业解决方法,共同指向了一个图景:青年人参与的新农业,将会有哪些不一样?

    年轻的「外行人」

    年轻人会以怎样的方式回到农业中,这个议题便充满了想象力。

    此次「全球农创客大赛」决赛的 12 支青年队伍中,有 5 支队伍来自中国,7 支队伍则来自尼日利亚、美国、玻利维亚、西班牙、孟加拉国、利比里亚/美国(合作)、乌干达等国家,共覆盖亚洲、非洲、北美洲、南美洲、欧洲等 5 个大洲。

    比赛中,获得一等奖的是利比里亚/美国组成的团队 AquaFarms Africa,他们对对粮食生产进行了彻底的重新思考:利用水产技术使西非城市的本地食物系统成为可能。简单来说,就是将鱼类养殖和无土蔬菜种植放在一个智慧集装箱中。鱼为植物提供了有机食物来源,植物过滤了鱼的水。

    这种结合的意义是重大的,关乎生存。AquaFarms Africa 队长 Jayna 表示,在非洲大陆,至少 70% 的粮食产品是进口的,西非当地的餐厅和酒店每天都要消耗大量的蔬菜、肉类,但在城市周边,并没有这样的蔬菜供应商,这些基础的蔬菜和肉类都需要从千里之外的欧洲进口。

    在新冠疫情期间,生产、运输受阻,导致一些西非城市的蔬菜和肉类价格飙升,当地的食物安全受到威胁。

    此外,非洲 25 岁以下的人口超过 6 亿。到目前为止,72% 的非洲青年处于失业或以下状态,在未来十年中,预计每年有 1100 万青年进入劳动力市场。虽然农业常被誉为非洲创造就业机会的最大潜力,但城市青年往往被排除在外,尽管他们是非洲大陆最大的失业人口。

    这些问题加在一起导致缺乏粮食主权和安全、农业生产力下降、农业部门的经济模拟不足以及高失业率;特别是随着城市化进程的加快,城市青年人失业率居高不下。

    AquaFarms Africa 的解决办法就是让本地养殖、种植系统成为可能,让城市年轻人在都市参与到农业中。Jayna 介绍,他们研发出的 APP 可以为用户提供一种简化的方式来管理他们的水产养殖场,「并允许我们有一个仪表盘,让我们深入了解每个农场,使我们能够以更低的成本提供支持服务,并更容易地管理我们的供应链。」从而,解决粮食短缺和青年就业的问题。

    + +
     Vertical Green 设计的模块化集装箱农业解决方案
    +

    来自西班牙的 Vertical Green 队伍的解决方案,同样令人印象深刻。Vertical Green 创始人 Carlos Repiso 介绍说,他们正在为西班牙主要的草莓产区提供基于模块化和可扩展性的新农业解决方案。「比如在草莓园区进行垂直种植,通过远程数字系统进行遥控,也可在集装箱内种植,解决了农产品丰收时期大量农产品集中运输的问题。」

    Carlos Repiso 表示,这样做的一大便利是,实现了「开箱即用」。以上提及的这些数字农业方案与传统农业留给人们的印象大相径庭。可见,年轻的「外行人」们正在用科技的方式,让这个古老的行业重新变得「性感」。

    农业变革与普通人

    农业生产方式的数字化转型,与普通人有多大的关系?

    此次「全球农创客大赛」大赛的一个重要特征是,以青年为主导。Beth Bechdol 认为,如何提高农业生产流通效率,如何能吸引更多的年轻人加入到农业领域,更是全社会都应该共同关注的议题。

    在这个议题之下,其实是城乡长期发展的不平衡。多多大学负责人蓝天分析道,「创造需求并不能彻底解决问题。农业仍然是受流通环节制约较为严重的行业,贡献主要生产资料和劳动力的农民,始终处于价值链条的底端。」

    有长期观察农业的行业人士认为,农业亟须解决的问题,不仅是利益分配,更是粗放式经营所致的亩产值下降。「很多农民采用的都是原始、低效的种植方法。将专家种植经验总结到算法里,让更多普通小农户享受到新技术带来的农业科技变革,其实反而更接地气。」

    比如,西非 AquaFarms Africa 队伍的方案,可以让城市中的年轻人,用 APP 就可以在当地进行水产养殖、种植。相似的,今年 5 月,「多多农研科技大赛」中,比赛选手探索用 AI 远程种植草莓,试图将专家种植经验以远程算法控制的方式输出到更多草莓产区,让即便是不懂草莓的人也能种植。

    其中一支队伍「智多莓」,通过比赛验证了数字农业服务方案的可行性,随后开始商业化落地。

    在昆明滇池周边,智多莓团队自主开发的数字草莓 Workstation 系统,已经被不少种植大户所采用,首期应用面积超过 200 亩。这套系统是通过数字化设备收集植物及环境数据,然后利用 AI 系统分析出最适合当地农户的施肥方案、灌溉时长等种植策略。

    + +
    昆明滇池旁的草莓大棚里,智多莓自主开发的数字草莓 Workstation 系统应用其中 | 智多莓
    +

    他们的团队成员分别来自人工智能、大数据分析、农业生产等不同领域。队长、原任职于中国移动的「通信老兵」程飙认为,数字农业的本质,在于改变传统的生产模式,而不是用了多少传感器和设施。「当下国内在数字农业领域缺乏结构化的数据基础,更缺乏数据与农业技术专家的融合团队,所以要不断探索农业技术与数字技术的专业分工和再协同。」

    2020 年新冠疫情的暴发,放大了农产品的物流运输和销售渠道的问题,而难度更大的生产环节更是迫切地需要变革。「与公共卫生一样,数字农业也是一门基础科学,需要持之以恒的硬投入。」浙江大学食物经济与农商管理研究所所长卫龙宝说。

    拼多多副总裁韩东原表示,对于比赛的获胜队伍,拼多多将与其进一步沟通,尝试一起将前沿技术应用带到中国农业产区的田间地头,为更多小农户提供高性价比的数字农业解决方案。「我们很荣幸能够与联合国粮食及农业组织、浙江大学一起,助力更多国内外青年人投入数字农业前沿,推动农产品的智慧生产和流通。」

    当下,新电商平台们正依托技术、商业模式创新,加大科技、资金投入,从种植、生产、流通到消费等方面,重塑农业产业链。「我们乐于和志同道合的伙伴,尽己所能去推动国际一流数字农业解决方案在全球落地,让更多小农户享受到新技术带来的农业科技变革。」Beth Bechdol 说道。


    本文由极客公园 GeekPark 原创发布,转载请添加极客君微信 geekparker。

    ]]> +
    + 极客公园 + Fri, 11 Dec 2020 12:00:04 +0800 +
    +
    +
    diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_golem_2.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_golem_2.xml new file mode 100644 index 0000000..5d00526 --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_golem_2.xml @@ -0,0 +1,422 @@ + + + + + Golem.de + IT-News fuer Profis + https://www.golem.de/ + + Mon, 17 Dec 2018 10:26:02 +0100 + FeedCreator 1.6 + + https://www.golem.de/staticrl/images/golem-rss.png + Golem.de + https://www.golem.de/ + Golem.de News Feed + + de + + + Datenbank: Fehler in SQLite ermglichte Codeausfhrung + https://www.golem.de/news/datenbank-fehler-in-sqlite-ermoeglichte-codeausfuehrung-1812-138280-rss.html + Anwendungen, die SQLite einsetzen und von auen SQL-Zugriff darauf bieten, sind offenbar von einem Fehler betroffen, der eine beliebige Codeausfhrung ermglicht. Dazu gehren unter anderem Browser auf Chromium-Basis, fr die inzwischen Updates bereitstehen. (<a href="https://www.golem.de/specials/security/">Security</a>, <a href="https://www.golem.de/specials/browser/">Browser</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138280&amp;page=1&amp;ts=1545038700" alt="" width="1" height="1" /> + Mon, 17 Dec 2018 10:25:00 +0100 + https://www.golem.de/1812/138280-rss.html + Anwendungen, die SQLite einsetzen und von auen SQL-Zugriff darauf bieten, sind offenbar von einem Fehler betroffen, der eine beliebige Codeausfhrung ermglicht. Dazu gehren unter anderem Browser auf Chromium-Basis, fr die inzwischen Updates bereitstehen. (Security, Browser) ]]> + + + + Windows 10: Datensammeln geht nach Deaktivieren weiter, meinen Nutzer + https://www.golem.de/news/windows-10-datensammeln-geht-nach-deaktivieren-weiter-meinen-nutzer-1812-138281-rss.html + Aktuell sind viele Nutzer darber emprt, dass Windows 10 wohl weiterhin Aktivittsdaten im Dashboard anzeigt, obwohl diese Funktion ausgeschaltet ist. Sie bieten daher Lsungen in Form von Gruppenrichtlinien an. Microsoft meint, dass es sich dabei nur um eine verwirrende Namensgebung handelt. (<a href="https://www.golem.de/specials/microsoft/">Microsoft</a>, <a href="https://www.golem.de/specials/datenschutz/">Datenschutz</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138281&amp;page=1&amp;ts=1545037800" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/windows-10-datensammeln-geht-nach-deaktivieren-weiter-meinen-nutzer/122728,list.html + Mon, 17 Dec 2018 10:10:00 +0100 + https://www.golem.de/1812/138281-rss.html + Aktuell sind viele Nutzer darber emprt, dass Windows 10 wohl weiterhin Aktivittsdaten im Dashboard anzeigt, obwohl diese Funktion ausgeschaltet ist. Sie bieten daher Lsungen in Form von Gruppenrichtlinien an. Microsoft meint, dass es sich dabei nur um eine verwirrende Namensgebung handelt. (Microsoft, Datenschutz) ]]> + 2 + + + Indiegames-Rundschau: berflieger mit Tiefe und Abenteuer im Low-Poly-Land + https://www.golem.de/news/indiegames-rundschau-ueberflieger-mit-tiefe-und-abenteuer-im-low-poly-land-1812-138263-rss.html + Below und Ashen locken mit toller Atmosphre, Insurgency Sandstorm sorgt fr Multiplayer-Spannung und Gris betrt mit besonderer Schnheit: Kurz vor Jahresende 2018 sind mehrere wunderbare Indiegames fertig geworden! Von Rainer Sigl (<a href="https://www.golem.de/specials/indiegames-rundschau/">Indiegames Rundschau</a>, <a href="https://www.golem.de/specials/spieletest/">Spieletest</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138263&amp;page=1&amp;ts=1545035040" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/games/indiegames-rundschau-ueberflieger-mit-tiefe-und-abenteuer-im-low-poly-land/122727,list.html + Mon, 17 Dec 2018 09:24:00 +0100 + https://www.golem.de/1812/138263-rss.html + Below und Ashen locken mit toller Atmosphre, Insurgency Sandstorm sorgt fr Multiplayer-Spannung und Gris betrt mit besonderer Schnheit: Kurz vor Jahresende 2018 sind mehrere wunderbare Indiegames fertig geworden! Von Rainer Sigl (Indiegames Rundschau, Spieletest) ]]> + 4 + + + Elektro-Lkw: Tesla-Truck wird an fnf Superchargern geladen + https://www.golem.de/news/elektro-lkw-tesla-truck-wird-an-fuenf-superchargern-geladen-1812-138278-rss.html + Als Tesla seine elektrischen Sattelschlepper vor mehr als einem Jahr erstmals gezeigt hat, hie es, dass spezielle Ladestationen fr diese erforderlich seien. Nun ist entdeckt worden, dass der Lkw an fnf Superchargern parallel geladen werden kann. (<a href="https://www.golem.de/specials/tesla/">Tesla</a>, <a href="https://www.golem.de/specials/technologie/">Technologie</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138278&amp;page=1&amp;ts=1545029400" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/automobil/elektro-lkw-tesla-truck-wird-an-fuenf-superchargern-geladen/122726,list.html + Mon, 17 Dec 2018 07:50:00 +0100 + https://www.golem.de/1812/138278-rss.html + Als Tesla seine elektrischen Sattelschlepper vor mehr als einem Jahr erstmals gezeigt hat, hie es, dass spezielle Ladestationen fr diese erforderlich seien. Nun ist entdeckt worden, dass der Lkw an fnf Superchargern parallel geladen werden kann. (Tesla, Technologie) ]]> + 17 + + + Smart Home: AVM stellt Funktaster Fritzdect 400 vor + https://www.golem.de/news/smart-home-avm-stellt-funktaster-fritzdect-400-vor-1812-138276-rss.html + Mit dem Fritzdect 400 hat AVM ein Smart-Home-Produkt vorgestellt, das es ermglicht, die Steckdosen Fritzdect 200 und 210 per Knopfdruck, aber kabellos ein- und auszuschalten. Eine blinkende LED besttigt den Tastendruck. (<a href="https://www.golem.de/specials/smarthome/">Smart Home</a>, <a href="https://www.golem.de/specials/fritz-box/">Fritzbox</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138276&amp;page=1&amp;ts=1545028200" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/sonstiges/smart-home-avm-stellt-funktaster-fritzdect-400-vor/122725,list.html + Mon, 17 Dec 2018 07:30:00 +0100 + https://www.golem.de/1812/138276-rss.html + Mit dem Fritzdect 400 hat AVM ein Smart-Home-Produkt vorgestellt, das es ermglicht, die Steckdosen Fritzdect 200 und 210 per Knopfdruck, aber kabellos ein- und auszuschalten. Eine blinkende LED besttigt den Tastendruck. (Smart Home, Fritzbox) ]]> + 6 + + + Chinesischer Anbieter: Kleiner Elektro-SUV Nio ES6 soll 480 km weit kommen + https://www.golem.de/news/chinesischer-anbieter-kleiner-elektro-suv-nio-es6-soll-480-km-weit-kommen-1812-138277-rss.html + Der chinesische Anbieter Nio hat ein Elektroauto vorgestellt, das eine Reichweite von bis zu 480 km bei einem Preis vonumgerechnet 46.000 Euro haben soll. (<a href="https://www.golem.de/specials/elektroauto/">Elektroauto</a>, <a href="https://www.golem.de/specials/technologie/">Technologie</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138277&amp;page=1&amp;ts=1545027600" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/automobil/chinesischer-anbieter-kleiner-elektro-suv-nio-es6-soll-480-km-weit-kommen/122724,list.html + Mon, 17 Dec 2018 07:20:00 +0100 + https://www.golem.de/1812/138277-rss.html + Der chinesische Anbieter Nio hat ein Elektroauto vorgestellt, das eine Reichweite von bis zu 480 km bei einem Preis vonumgerechnet 46.000 Euro haben soll. (Elektroauto, Technologie) ]]> + 11 + + + Nissan: Luxusmarke Infiniti plant Elektro-Crossover + https://www.golem.de/news/nissan-luxusmarke-infiniti-plant-elektro-crossover-1812-138275-rss.html + Die Luxusmarke Infiniti baut Verbrennerfahrzeuge, ein vollelektrisches Auto gibt es von diesem Hersteller noch nicht. Angesichts der Pionierarbeit der Muttergesellschaft Nissan ist das verwunderlich. Nun wurden erste Bilder eines Elektro-Infinitis verffentlicht. (<a href="https://www.golem.de/specials/elektroauto/">Elektroauto</a>, <a href="https://www.golem.de/specials/technologie/">Technologie</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138275&amp;page=1&amp;ts=1544968800" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/automobil/nissan-luxusmarke-infiniti-plant-elektro-crossover/122716,list.html + Sun, 16 Dec 2018 15:00:00 +0100 + https://www.golem.de/1812/138275-rss.html + Die Luxusmarke Infiniti baut Verbrennerfahrzeuge, ein vollelektrisches Auto gibt es von diesem Hersteller noch nicht. Angesichts der Pionierarbeit der Muttergesellschaft Nissan ist das verwunderlich. Nun wurden erste Bilder eines Elektro-Infinitis verffentlicht. (Elektroauto, Technologie) ]]> + 16 + + + Kalifornien: Ab 2029 mssen Stadtbusse elektrisch fahren + https://www.golem.de/news/kalifornien-ab-2029-muessen-stadtbusse-elektrisch-fahren-1812-138274-rss.html + Im US-Bundesstaat Kalifornien ist eine der hrtesten Regelung des Westens im Hinblick auf Elektromobilitt verabschiedet worden. Ab 2029 muss jeder neu zugelassene Stadtbus elektrisch fahren. (<a href="https://www.golem.de/specials/elektromobilitaet/">Elektromobilitt</a>, <a href="https://www.golem.de/specials/technologie/">Technologie</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138274&amp;page=1&amp;ts=1544961600" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/automobil/kalifornien-ab-2029-muessen-stadtbusse-elektrisch-fahren/122715,list.html + Sun, 16 Dec 2018 13:00:00 +0100 + https://www.golem.de/1812/138274-rss.html + Im US-Bundesstaat Kalifornien ist eine der hrtesten Regelung des Westens im Hinblick auf Elektromobilitt verabschiedet worden. Ab 2029 muss jeder neu zugelassene Stadtbus elektrisch fahren. (Elektromobilitt, Technologie) ]]> + 32 + + + Mainboard: Intels B365-Chip ist ein alter 22-nm-Bekannter + https://www.golem.de/news/mainboard-intels-b365-chip-ist-ein-alter-22-nm-bekannter-1812-138270-rss.html + Mit dem B365 hat Intel einen weiteren Chipsatz fr Sockel-LGA-1151-v2-Mainboards aufgelegt. Auch wenn der Name suggeriert, es sei der B360-Nachfolger, ist der Chip ein lteres 22-nm-Modell. So kann Intel seine 14-nm-Fabs fr CPUs entlasten, denn 10 nm lsst weiter auf sich warten. (<a href="https://www.golem.de/specials/intelcoffeelake/">Intel Coffee Lake</a>, <a href="https://www.golem.de/specials/cpu/">Prozessor</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138270&amp;page=1&amp;ts=1544956200" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/sonstiges/mainboard-intels-b365-chip-ist-ein-alter-22-nm-bekannter/122714,list.html + Sun, 16 Dec 2018 11:30:00 +0100 + https://www.golem.de/1812/138270-rss.html + Mit dem B365 hat Intel einen weiteren Chipsatz fr Sockel-LGA-1151-v2-Mainboards aufgelegt. Auch wenn der Name suggeriert, es sei der B360-Nachfolger, ist der Chip ein lteres 22-nm-Modell. So kann Intel seine 14-nm-Fabs fr CPUs entlasten, denn 10 nm lsst weiter auf sich warten. (Intel Coffee Lake, Prozessor) ]]> + 9 + + + Helio P90: Mediatek bleibt PowerVR treu + https://www.golem.de/news/helio-p90-mediatek-bleibt-powervr-treu-1812-138271-rss.html + Der Helio P90 von Mediatek ist ein neues SoC fr Mittelklasse-Smartphones. Der Chip hat eine berraschende CPU-Konfiguration und tatschlich wieder eine PowerVR-Grafikeinheit. Zudem steigt die AI-Leistung. (<a href="https://www.golem.de/specials/mediatek/">Mediatek</a>, <a href="https://www.golem.de/specials/smartphone/">Smartphone</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138271&amp;page=1&amp;ts=1544954400" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wissenschaft/helio-p90-mediatek-bleibt-powervr-treu/122713,list.html + Sun, 16 Dec 2018 11:00:00 +0100 + https://www.golem.de/1812/138271-rss.html + Der Helio P90 von Mediatek ist ein neues SoC fr Mittelklasse-Smartphones. Der Chip hat eine berraschende CPU-Konfiguration und tatschlich wieder eine PowerVR-Grafikeinheit. Zudem steigt die AI-Leistung. (Mediatek, Smartphone) ]]> + 2 + + + Adrenalin 2019 Edition: Radeon Software erhlt umfangreiche Verbesserungen + https://www.golem.de/news/adrenalin-2019-edition-radeon-software-erhaelt-umfangreiche-verbesserungen-1812-138273-rss.html + Kurz vor dem Jahreswechsel erneuert AMD die Radeon Software: Die Adrenalin 2019 Edition fr Radeon-Grafikkarten macht diese schneller, sparsamer und verbessert Overclocking sowie Streaming und fgt neue Funktionen wie eine Sprachsteuerung hinzu. (<a href="https://www.golem.de/specials/radeon-software/">Radeon Software</a>, <a href="https://www.golem.de/specials/amd/">AMD</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138273&amp;page=1&amp;ts=1544952600" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/applikationen/adrenalin-2019-edition-radeon-software-erhaelt-umfangreiche-verbesserungen/122712,list.html + Sun, 16 Dec 2018 10:30:00 +0100 + https://www.golem.de/1812/138273-rss.html + Kurz vor dem Jahreswechsel erneuert AMD die Radeon Software: Die Adrenalin 2019 Edition fr Radeon-Grafikkarten macht diese schneller, sparsamer und verbessert Overclocking sowie Streaming und fgt neue Funktionen wie eine Sprachsteuerung hinzu. (Radeon Software, AMD) ]]> + 5 + + + Command & Conquer (1995): Trash und Trendsetter + https://www.golem.de/news/command-conquer-1995-trash-und-trendsetter-1812-138001-rss.html + Grnes Gold, Kane und - jedenfalls in Deutschland - Cyborgs statt Soldaten stehen im Mittelpunkt aller Nostalgie fr Command & Conquer. Von Oliver Nickel (<a href="https://www.golem.de/specials/golemretro/">golem retro_</a>, <a href="https://www.golem.de/specials/command-conquer/">Command & Conquer</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138001&amp;page=1&amp;ts=1544950920" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/games/command-conquer-1995-trash-und-trendsetter/122709,list.html + Sun, 16 Dec 2018 10:02:00 +0100 + https://www.golem.de/1812/138001-rss.html + Grnes Gold, Kane und - jedenfalls in Deutschland - Cyborgs statt Soldaten stehen im Mittelpunkt aller Nostalgie fr Command & Conquer. Von Oliver Nickel (golem retro_, Command & Conquer) ]]> + 32 + + + NES und SNES: Keine weitere Produktion von Nintendo-Classic-Konsolen + https://www.golem.de/news/nes-und-snes-keine-weitere-produktion-von-nintendo-classic-konsolen-1812-138269-rss.html + Wer noch eine der Classic-Konsolen von Nintendo haben will, muss sich mglicherweise beeilen: Wie der USA-Chef des japanischen Herstellers angekndigt hat, soll die Produktion nicht wieder aufgenommen werden. Auch soll es keine weiteren Modelle in der Reihe geben. (<a href="https://www.golem.de/specials/nintendo-classic-mini/">Nintendo Classic Mini</a>, <a href="https://www.golem.de/specials/nintendo/">Nintendo</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138269&amp;page=1&amp;ts=1544943600" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/games/nes-und-snes-keine-weitere-produktion-von-nintendo-classic-konsolen/122708,list.html + Sun, 16 Dec 2018 08:00:00 +0100 + https://www.golem.de/1812/138269-rss.html + Wer noch eine der Classic-Konsolen von Nintendo haben will, muss sich mglicherweise beeilen: Wie der USA-Chef des japanischen Herstellers angekndigt hat, soll die Produktion nicht wieder aufgenommen werden. Auch soll es keine weiteren Modelle in der Reihe geben. (Nintendo Classic Mini, Nintendo) ]]> + 23 + + + Arrivo: Startup von Hyperloop-One-Grnder macht dicht + https://www.golem.de/news/arrivo-hyperloop-startup-von-hyperloop-one-gruender-macht-dicht-1812-138268-rss.html + Das von ehemaligen Hyperloop-One-Mitarbeitern gegrndete Startup Arrivo wird wohl keinen Hyperloop bauen: Einem Medienbericht zufolge soll das Unternehmen nicht wie erhofft neue Finanzierungsgelder aufgetrieben haben und muss daher schlieen. (<a href="https://www.golem.de/specials/hyperloop/">Hyperloop</a>, <a href="https://www.golem.de/specials/wirtschaft/">Wirtschaft</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138268&amp;page=1&amp;ts=1544913360" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wirtschaft/arrivo-startup-von-hyperloop-one-gruender-macht-dicht/122706,list.html + Sat, 15 Dec 2018 23:36:00 +0100 + https://www.golem.de/1812/138268-rss.html + Das von ehemaligen Hyperloop-One-Mitarbeitern gegrndete Startup Arrivo wird wohl keinen Hyperloop bauen: Einem Medienbericht zufolge soll das Unternehmen nicht wie erhofft neue Finanzierungsgelder aufgetrieben haben und muss daher schlieen. (Hyperloop, Wirtschaft) ]]> + 11 + + + Horst Herold: Erfinder der computergesttzten Polizeiarbeit ist tot + https://www.golem.de/news/horst-herold-erfinder-der-computergestuetzten-polizeiarbeit-ist-tot-1812-138267-rss.html + Der ehemalige Prsident des Bundeskriminalamts, Horst Herold, ist tot. Herold war BKA-Chef zu Hochzeiten des RAF-Terrors und gilt als Miterfinder der Rasterfahndung. (<a href="https://www.golem.de/specials/polizei/">Polizei</a>, <a href="https://www.golem.de/specials/internet/">Internet</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138267&amp;page=1&amp;ts=1544911020" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/politik-recht/horst-herold-erfinder-der-computergestuetzten-polizeiarbeit-ist-tot/122705,list.html + Sat, 15 Dec 2018 22:57:00 +0100 + https://www.golem.de/1812/138267-rss.html + Der ehemalige Prsident des Bundeskriminalamts, Horst Herold, ist tot. Herold war BKA-Chef zu Hochzeiten des RAF-Terrors und gilt als Miterfinder der Rasterfahndung. (Polizei, Internet) ]]> + 15 + + + Warenwirtschaft: Gummibrchen wegen Softwareproblemen in Not + https://www.golem.de/news/warenwirtschaft-gummibaerchen-wegen-softwareproblemen-in-not-1812-138266-rss.html + Die Umstellung des Warenwirtschaftssystems bei Hans Riegel Bonn hat zu Produktionsproblemen gefhrt. Haribo soll deshalb Schwierigkeiten bei der Herstellung von Goldbren, Fruchtgummi-Vampiren und anderen Sigkeiten haben. (<a href="https://www.golem.de/specials/unternehmenssoftware/">Unternehmenssoftware</a>, <a href="https://www.golem.de/specials/serverapps/">Server-Applikationen</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138266&amp;page=1&amp;ts=1544874540" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wirtschaft/warenwirtschaft-gummibaerchen-wegen-softwareproblemen-in-not/122704,list.html + Sat, 15 Dec 2018 12:49:00 +0100 + https://www.golem.de/1812/138266-rss.html + Die Umstellung des Warenwirtschaftssystems bei Hans Riegel Bonn hat zu Produktionsproblemen gefhrt. Haribo soll deshalb Schwierigkeiten bei der Herstellung von Goldbren, Fruchtgummi-Vampiren und anderen Sigkeiten haben. (Unternehmenssoftware, Server-Applikationen) ]]> + 98 + + + Wochenrckblick: Apple scheut den Kontakt und Intel stapelt hoch + https://www.golem.de/news/wochenrueckblick-apple-scheut-den-kontakt-und-intel-stapelt-hoch-1812-138240-rss.html + Apple Pay startet ohne Probleme in Deutschland, Intel enthllt neue Chiptechnik und wir programmieren mit einer Retrokonsole. (<a href="https://www.golem.de/specials/golemwochenrueckblick/">Golem-Wochenrckblick</a>, <a href="https://www.golem.de/specials/steam/">Steam</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138240&amp;page=1&amp;ts=1544861460" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/politik-recht/wochenrueckblick-apple-scheut-den-kontakt-und-intel-stapelt-hoch/122703,list.html + Sat, 15 Dec 2018 09:11:00 +0100 + https://www.golem.de/1812/138240-rss.html + Apple Pay startet ohne Probleme in Deutschland, Intel enthllt neue Chiptechnik und wir programmieren mit einer Retrokonsole. (Golem-Wochenrckblick, Steam) ]]> + + + + US-Sicherheitsbehrden: Telekom darf Sprint kaufen, wenn sie Huawei fallen lsst + https://www.golem.de/news/us-sicherheitsbehoerden-telekom-darf-sprint-kaufen-wenn-sie-huawei-fallen-lassen-1812-138265-rss.html + Die US-Regierung setzt die Deutsche Telekom unter Druck. Der Kauf von Sprint durch T-Mobile US wird genehmigt, wenn der Mutterkonzern die Zusammenarbeit mit Huawei einschrnkt. Offenbar ist die Telekom dazu bereit. (<a href="https://www.golem.de/specials/t-mobile/">T-Mobile</a>, <a href="https://www.golem.de/specials/telekom/">Telekom</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138265&amp;page=1&amp;ts=1544829840" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wirtschaft/us-sicherheitsbehoerden-telekom-darf-sprint-kaufen-wenn-sie-huawei-fallen-laesst/122702,list.html + Sat, 15 Dec 2018 00:24:00 +0100 + https://www.golem.de/1812/138265-rss.html + Die US-Regierung setzt die Deutsche Telekom unter Druck. Der Kauf von Sprint durch T-Mobile US wird genehmigt, wenn der Mutterkonzern die Zusammenarbeit mit Huawei einschrnkt. Offenbar ist die Telekom dazu bereit. (T-Mobile, Telekom) ]]> + 78 + + + Keine Beweise: BSI spricht sich gegen Huawei-Boykott aus + https://www.golem.de/news/keine-beweise-bsi-spricht-sich-gegen-huawei-boykott-aus-1812-138262-rss.html + Eine Offenlegung des Quellcodes wie durch Huawei wnscht sich BSI-Chef Schnbohm auch von anderen Herstellern. Derweil besorgt sich das BSI Huawei-Bauteile auf der ganzen Welt, um sie auf Hintertren zu untersuchen. Alles ohne Ergebnis. (<a href="https://www.golem.de/specials/huawei/">Huawei</a>, <a href="https://www.golem.de/specials/handy/">Handy</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138262&amp;page=1&amp;ts=1544806800" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/keine-beweise-bsi-spricht-sich-gegen-huawei-boykott-aus/122701,list.html + Fri, 14 Dec 2018 18:00:00 +0100 + https://www.golem.de/1812/138262-rss.html + Eine Offenlegung des Quellcodes wie durch Huawei wnscht sich BSI-Chef Schnbohm auch von anderen Herstellern. Derweil besorgt sich das BSI Huawei-Bauteile auf der ganzen Welt, um sie auf Hintertren zu untersuchen. Alles ohne Ergebnis. (Huawei, Handy) ]]> + 34 + + + Bitkom: Besetzung von IT-Jobs scheitert an Geld und Kompetenzmangel + https://www.golem.de/news/bitkom-besetzung-von-it-jobs-scheitert-an-geld-und-kompetenzmangel-1812-138264-rss.html + Drei von vier Unternehmen meinen, Bewerber fr IT-Jobs forderten zu viel Gehalt. Vier von zehn bemngeln fehlende fachliche Qualifikation. (<a href="https://www.golem.de/specials/studie/">Studie</a>, <a href="https://www.golem.de/specials/it-jobs/">IT-Jobs</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138264&amp;page=1&amp;ts=1544804160" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wirtschaft/bitkom-besetzung-von-it-jobs-scheitert-an-geld-und-kompetenzmangel/122700,list.html + Fri, 14 Dec 2018 17:16:00 +0100 + https://www.golem.de/1812/138264-rss.html + Drei von vier Unternehmen meinen, Bewerber fr IT-Jobs forderten zu viel Gehalt. Vier von zehn bemngeln fehlende fachliche Qualifikation. (Studie, IT-Jobs) ]]> + 374 + + + Wolfenstein 2: Hitler statt Heiler mglicherweise auch in Deutschland + https://www.golem.de/news/wolfenstein-2-hitler-statt-heiler-moeglicherweise-auch-in-deutschland-1812-138261-rss.html + Nach einer neuen Entscheidung ber die Indizierung von Wolfenstein 2 prft Bethesda derzeit zusammen mit der USK, ob die Originalversion auch in Deutschland erscheinen kann. Dann wrden Spieler im Handlungsverlauf auf Herrn Hitler statt auf Herrn Heiler treffen. (<a href="https://www.golem.de/specials/jugendschutz/">Jugendschutz</a>, <a href="https://www.golem.de/specials/bethesda/">Bethesda</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138261&amp;page=1&amp;ts=1544800200" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/games/wolfenstein-2-hitler-statt-heiler-moeglicherweise-auch-in-deutschland/122699,list.html + Fri, 14 Dec 2018 16:10:00 +0100 + https://www.golem.de/1812/138261-rss.html + Nach einer neuen Entscheidung ber die Indizierung von Wolfenstein 2 prft Bethesda derzeit zusammen mit der USK, ob die Originalversion auch in Deutschland erscheinen kann. Dann wrden Spieler im Handlungsverlauf auf Herrn Hitler statt auf Herrn Heiler treffen. (Jugendschutz, Bethesda) ]]> + 21 + + + Kriminalitt: Bombendrohungen per Massenmail + https://www.golem.de/news/kriminalitaet-bombendrohungen-per-massenmail-1812-138260-rss.html + In den USA, Kanada und Neuseeland empfangen Unternehmen und andere Organisationen per E-Mail versendete Bombendrohungen. Die Absender wollen damit offenbar Geld erpressen, Bomben wurden bisher aber keine gefunden. (<a href="https://www.golem.de/specials/hoax/">Hoax</a>, <a href="https://www.golem.de/specials/spam/">Spam</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138260&amp;page=1&amp;ts=1544798400" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/internet/kriminalitaet-bombendrohungen-per-massenmail/122698,list.html + Fri, 14 Dec 2018 15:40:00 +0100 + https://www.golem.de/1812/138260-rss.html + In den USA, Kanada und Neuseeland empfangen Unternehmen und andere Organisationen per E-Mail versendete Bombendrohungen. Die Absender wollen damit offenbar Geld erpressen, Bomben wurden bisher aber keine gefunden. (Hoax, Spam) ]]> + 3 + + + Kryptowhrungen: Nutzer knnen fr Razer minen und erhalten Spielgeld + https://www.golem.de/news/kryptowaehrungen-nutzer-koennen-fuer-razer-minen-und-erhalten-spielgeld-1812-138258-rss.html + Nutzer erhalten virtuelles Silber, wenn sie mit ihrer Grafikkarte fr Razer Hashwerte errechnen. Das Geld knnen sie fr Hardware oder Ingame-Inhalte ausgeben. Es ist nicht ganz klar, wie viel Gegenwert Gamer erhalten - der drfte aber nicht an die Stromkosten heranreichen, die dadurch anfallen. (<a href="https://www.golem.de/specials/razer/">Razer</a>, <a href="https://www.golem.de/specials/maus/">Maus</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138258&amp;page=1&amp;ts=1544793600" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/applikationen/kryptowaehrungen-nutzer-koennen-fuer-razer-minen-und-erhalten-spielgeld/122697,list.html + Fri, 14 Dec 2018 14:20:00 +0100 + https://www.golem.de/1812/138258-rss.html + Nutzer erhalten virtuelles Silber, wenn sie mit ihrer Grafikkarte fr Razer Hashwerte errechnen. Das Geld knnen sie fr Hardware oder Ingame-Inhalte ausgeben. Es ist nicht ganz klar, wie viel Gegenwert Gamer erhalten - der drfte aber nicht an die Stromkosten heranreichen, die dadurch anfallen. (Razer, Maus) ]]> + 23 + + + Mutant Year Zero im Test: Xcom plus postnukleare Ente + https://www.golem.de/news/mutant-year-zero-im-test-xcom-plus-postnukleare-ente-1812-138255-rss.html + Die Taktikberraschung der Saison schmeckt nach Geflgel: Das dstere, witzige und fordernde Mutant Year Zero macht vor, wie ein gutes Taktik-Rollenspiel funktioniert. Fans von Fallout und Xcom sollten zubeien. Von Jan Bojaryn (<a href="https://www.golem.de/specials/spieletest/">Spieletest</a>, <a href="https://www.golem.de/specials/rollenspiel/">Rollenspiel</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138255&amp;page=1&amp;ts=1544792400" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/games/mutant-year-zero-im-test-xcom-plus-postnukleare-ente/122696,list.html + Fri, 14 Dec 2018 14:00:00 +0100 + https://www.golem.de/1812/138255-rss.html + Die Taktikberraschung der Saison schmeckt nach Geflgel: Das dstere, witzige und fordernde Mutant Year Zero macht vor, wie ein gutes Taktik-Rollenspiel funktioniert. Fans von Fallout und Xcom sollten zubeien. Von Jan Bojaryn (Spieletest, Rollenspiel) ]]> + 5 + + + Vivo Nex Dual Screen: Vivo stellt Smartphone mit zwei Displays vor + https://www.golem.de/news/vivo-nex-dual-screen-vivo-stellt-smartphone-mit-zwei-displays-vor-1812-138257-rss.html + Nach Nubia stellt mit Vivo der zweite chinesische Hersteller binnen kurzer Zeit ein Smartphone mit zwei Displays vor: Neben dem Hauptbildschirm befindet sich ein zweiter, kleinerer auf der Rckseite. Eine Frontkamera hat das Nex Dual Screen entsprechend nicht mehr. (<a href="https://www.golem.de/specials/smartphone/">Smartphone</a>, <a href="https://www.golem.de/specials/android/">Android</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138257&amp;page=1&amp;ts=1544790600" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/handy/vivo-nex-dual-screen-vivo-stellt-smartphone-mit-zwei-displays-vor/122695,list.html + Fri, 14 Dec 2018 13:30:00 +0100 + https://www.golem.de/1812/138257-rss.html + Nach Nubia stellt mit Vivo der zweite chinesische Hersteller binnen kurzer Zeit ein Smartphone mit zwei Displays vor: Neben dem Hauptbildschirm befindet sich ein zweiter, kleinerer auf der Rckseite. Eine Frontkamera hat das Nex Dual Screen entsprechend nicht mehr. (Smartphone, Android) ]]> + 20 + + + Hochgeschwindigkeitszug: Alfa-X wird der schnellste Shinkansen + https://www.golem.de/news/hochgeschwindigkeitszug-alfa-x-wird-der-schnellste-shinkansen-1812-138256-rss.html + Erst einmal kommt die Nase, dann erst der Zug. Der neue Shinkansen wird der Zug mit der lngsten Frontpartie. Gerade wurde der erste Wagen mit einer 16 Meter langen Nase fertiggestellt. Die des hinteren wird noch lnger. (<a href="https://www.golem.de/specials/verkehr/">Verkehr</a>, <a href="https://www.golem.de/specials/technologie/">Technologie</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138256&amp;page=1&amp;ts=1544789580" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wissenschaft/hochgeschwindigkeitszug-alfa-x-wird-der-schnellste-shinkansen/122694,list.html + Fri, 14 Dec 2018 13:13:00 +0100 + https://www.golem.de/1812/138256-rss.html + Erst einmal kommt die Nase, dann erst der Zug. Der neue Shinkansen wird der Zug mit der lngsten Frontpartie. Gerade wurde der erste Wagen mit einer 16 Meter langen Nase fertiggestellt. Die des hinteren wird noch lnger. (Verkehr, Technologie) ]]> + 100 + + + Smartphone-Kaufberatung: Mehr Geld fr noch etwas mehr Smartphone + https://www.golem.de/news/smartphone-kaufberatung-mehr-geld-fuer-noch-etwas-mehr-smartphone-1812-138230-rss.html + Smartphones mit einem Preis von mehr als 600 Euro sind mittlerweile nur noch schwer von gnstigeren Gerten zu unterscheiden. Wir haben dennoch ein paar interessante Gerte gefunden. Mehr als 800 Euro braucht heute aber wirklich niemand mehr fr ein Top-Android-Smartphone auszugeben. Von Tobias Kltzsch (<a href="https://www.golem.de/specials/smartphone/">Smartphone</a>, <a href="https://www.golem.de/specials/sony/">Sony</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138230&amp;page=1&amp;ts=1544785620" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/handy/smartphone-kaufberatung-mehr-geld-fuer-noch-etwas-mehr-smartphone/122693,list.html + Fri, 14 Dec 2018 12:07:00 +0100 + https://www.golem.de/1812/138230-rss.html + Smartphones mit einem Preis von mehr als 600 Euro sind mittlerweile nur noch schwer von gnstigeren Gerten zu unterscheiden. Wir haben dennoch ein paar interessante Gerte gefunden. Mehr als 800 Euro braucht heute aber wirklich niemand mehr fr ein Top-Android-Smartphone auszugeben. Von Tobias Kltzsch (Smartphone, Sony) ]]> + 53 + + + E-Mail-Scam: Save The Children verliert 1 Million US-Dollar an Betrger + https://www.golem.de/news/e-mail-scam-save-the-children-verliert-1-million-us-dollar-an-betrueger-1812-138254-rss.html + Hacker verschafften sich Zugriff auf das E-Mail-Postfach eines Angestellten der Kinderhilfsorganisation und legten dessen Kollegen mit geflschten Zahlungsanweisungen herein. Dabei sind sie nicht alleine. (<a href="https://www.golem.de/specials/security/">Security</a>, <a href="https://www.golem.de/specials/passwort/">Passwort</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138254&amp;page=1&amp;ts=1544783760" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/e-mail-scam-save-the-children-verliert-1-million-us-dollar-an-betrueger/122689,list.html + Fri, 14 Dec 2018 11:36:00 +0100 + https://www.golem.de/1812/138254-rss.html + Hacker verschafften sich Zugriff auf das E-Mail-Postfach eines Angestellten der Kinderhilfsorganisation und legten dessen Kollegen mit geflschten Zahlungsanweisungen herein. Dabei sind sie nicht alleine. (Security, Passwort) ]]> + 14 + + + Daybreak Games: Planetside Arena will Battle Royale mit Klassen und Jetpacks + https://www.golem.de/news/daybreak-games-planetside-arena-will-battle-royale-mit-klassen-und-jetpacks-1812-138253-rss.html + Der Actionklassiker Planetside bekommt mit Arena einen neuen Ableger. Das Programm fr Windows-PC setzt auf Battle Royale mit drei Klassen und weitere Modi. In einem davon bekmpfen sich zwei Teams aus jeweils 250 Teilnehmern - spter sollen sogar insgesamt 1.000 Kmpfer mitmachen knnen. (<a href="https://www.golem.de/specials/planetside/">Planetside</a>, <a href="https://www.golem.de/specials/mmorpg/">MMORPG</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138253&amp;page=1&amp;ts=1544780760" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/games/daybreak-games-planetside-arena-will-battle-royale-mit-klassen-und-jetpacks/122688,list.html + Fri, 14 Dec 2018 10:46:00 +0100 + https://www.golem.de/1812/138253-rss.html + Der Actionklassiker Planetside bekommt mit Arena einen neuen Ableger. Das Programm fr Windows-PC setzt auf Battle Royale mit drei Klassen und weitere Modi. In einem davon bekmpfen sich zwei Teams aus jeweils 250 Teilnehmern - spter sollen sogar insgesamt 1.000 Kmpfer mitmachen knnen. (Planetside, MMORPG) ]]> + 11 + + + Firmware-Update: Philips macht die Hue-Lampen praktischer + https://www.golem.de/news/firmware-update-philips-macht-die-hue-lampen-praktischer-1812-138252-rss.html + Philips hat ein Firmware-Update fr die Hue-Lampen verteilt. Damit sollen sich die Lampen die zuletzt gewhlte Farbe und Helligkeit merken. Bisher gingen die Hue-Lampen immer mit einer nicht nderbaren Standardeinstellung an, wenn sie einmal komplett vom Strom genommen wurden. (<a href="https://www.golem.de/specials/philips-hue/">Hue</a>, <a href="https://www.golem.de/specials/firmware/">Firmware</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138252&amp;page=1&amp;ts=1544779860" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/sonstiges/firmware-update-philips-macht-die-hue-lampen-praktischer/122687,list.html + Fri, 14 Dec 2018 10:31:00 +0100 + https://www.golem.de/1812/138252-rss.html + Philips hat ein Firmware-Update fr die Hue-Lampen verteilt. Damit sollen sich die Lampen die zuletzt gewhlte Farbe und Helligkeit merken. Bisher gingen die Hue-Lampen immer mit einer nicht nderbaren Standardeinstellung an, wenn sie einmal komplett vom Strom genommen wurden. (Hue, Firmware) ]]> + 33 + + + Microsoft 365: Windows-10-Abo kommt wohl auch fr private Nutzer + https://www.golem.de/news/microsoft-365-windows-10-abo-wird-wohl-auch-fuer-verbraucher-kommen-1812-138250-rss.html + Derzeit sucht Microsoft nach einem Produkt-Manager, der in einem neuen Team fr eine an Endkunden gerichtete Microsoft-365-Option arbeitet. Damit knnten Kunden in Zukunft auch privat Windows 10 und Office 365 zu einem monatlichen Preis mieten, was bisher Unternehmen vorbehalten ist. (<a href="https://www.golem.de/specials/windows10/">Windows 10</a>, <a href="https://www.golem.de/specials/microsoft/">Microsoft</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138250&amp;page=1&amp;ts=1544778960" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/applikationen/microsoft-365-windows-10-abo-kommt-wohl-auch-fuer-private-nutzer/122686,list.html + Fri, 14 Dec 2018 10:16:00 +0100 + https://www.golem.de/1812/138250-rss.html + Derzeit sucht Microsoft nach einem Produkt-Manager, der in einem neuen Team fr eine an Endkunden gerichtete Microsoft-365-Option arbeitet. Damit knnten Kunden in Zukunft auch privat Windows 10 und Office 365 zu einem monatlichen Preis mieten, was bisher Unternehmen vorbehalten ist. (Windows 10, Microsoft) ]]> + 330 + + + Virgin Galactic: Raketenflugzeug VSS Unity steigt auf ber 80 Kilometer auf + https://www.golem.de/news/virgin-galactic-raketenflugzeug-vss-unity-steigt-auf-ueber-80-kilometer-auf-1812-138251-rss.html + Virgin Galactics Raketenflugzeug VSS Unity ist erstmals ber 80 Kilometer hoch aufgestiegen. Virgin Galactic feiert das als Erreichen des Weltraums. Das kommerzielle Raumfahrtprogramm des Unternehmens soll im kommenden Jahr starten. (<a href="https://www.golem.de/specials/virgin-galactic/">Virgin Galactic</a>, <a href="https://www.golem.de/specials/raumfahrt/">Raumfahrt</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138251&amp;page=1&amp;ts=1544778180" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/internet/virgin-galactic-raketenflugzeug-vss-unity-steigt-auf-ueber-80-kilometer-auf/122685,list.html + Fri, 14 Dec 2018 10:03:00 +0100 + https://www.golem.de/1812/138251-rss.html + Virgin Galactics Raketenflugzeug VSS Unity ist erstmals ber 80 Kilometer hoch aufgestiegen. Virgin Galactic feiert das als Erreichen des Weltraums. Das kommerzielle Raumfahrtprogramm des Unternehmens soll im kommenden Jahr starten. (Virgin Galactic, Raumfahrt) ]]> + 4 + + + Gefahr fr Werbenetzwerke: Wie legal ist das Tracking von Online-Nutzern? + https://www.golem.de/news/gefahr-fuer-werbenetzwerke-wie-legal-ist-das-tracking-von-online-nutzern-1812-138244-rss.html + Drfen Websites ohne weiteres Daten von Websurfern an Werbenetzwerke weiterreichen? Die franzsische Datenschutzaufsicht CNIL weist einen franzsischen Werbenetzbetreiber in die Schranken und versetzt damit die internationale Online-Werbewirtschaft in Aufregung. Ein Bericht von Christiane Schulzki-Haddouti (<a href="https://www.golem.de/specials/tracking/">Tracking</a>, <a href="https://www.golem.de/specials/datenschutz/">Datenschutz</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138244&amp;page=1&amp;ts=1544776500" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/gefahr-fuer-werbenetzwerke-wie-legal-ist-das-tracking-von-online-nutzern/122683,list.html + Fri, 14 Dec 2018 09:35:00 +0100 + https://www.golem.de/1812/138244-rss.html + Drfen Websites ohne weiteres Daten von Websurfern an Werbenetzwerke weiterreichen? Die franzsische Datenschutzaufsicht CNIL weist einen franzsischen Werbenetzbetreiber in die Schranken und versetzt damit die internationale Online-Werbewirtschaft in Aufregung. Ein Bericht von Christiane Schulzki-Haddouti (Tracking, Datenschutz) ]]> + 19 + + + Nvidia: Shield TV bekommt Google Assistant + https://www.golem.de/news/nvidia-shield-tv-bekommt-google-assistant-1812-138249-rss.html + Nvidia verteilt ein Update fr die Android-TV-Streaming-Box Shield TV. Damit kommt der Google Assistant auf das Gert, so dass sich Shield TV umfangreicher als bisher mit der Stimme steuern lsst. Fr ausgewhlte Informationen werden Zusatzinhalte auf dem Fernseher angezeigt. (<a href="https://www.golem.de/specials/shield_tv/">Shield_TV</a>, <a href="https://www.golem.de/specials/google/">Google</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138249&amp;page=1&amp;ts=1544775060" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/sonstiges/nvidia-shield-tv-bekommt-google-assistant/122680,list.html + Fri, 14 Dec 2018 09:11:00 +0100 + https://www.golem.de/1812/138249-rss.html + Nvidia verteilt ein Update fr die Android-TV-Streaming-Box Shield TV. Damit kommt der Google Assistant auf das Gert, so dass sich Shield TV umfangreicher als bisher mit der Stimme steuern lsst. Fr ausgewhlte Informationen werden Zusatzinhalte auf dem Fernseher angezeigt. (Shield_TV, Google) ]]> + 22 + + + Kein Crowdfunding mehr: Neustart fr Meyer Optik Grlitz nach Insolvenz + https://www.golem.de/news/kein-crowdfunding-mehr-neustart-fuer-meyer-optik-goerlitz-nach-insolvenz-1812-138246-rss.html + Die Objektive von Meyer Optik Grlitz, deren Produktion ber Kickstarter finanziert werden sollte, werden nicht ausgeliefert. Die Untersttzer gehen leer aus. Doch die Marken des insolventen Unternehmens werden wiederaufgelegt. (<a href="https://www.golem.de/specials/kickstarter/">Kickstarter</a>, <a href="https://www.golem.de/specials/dslr/">DSLR</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138246&amp;page=1&amp;ts=1544769900" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/foto/kein-crowdfunding-mehr-neustart-fuer-meyer-optik-goerlitz-nach-insolvenz/122678,list.html + Fri, 14 Dec 2018 07:45:00 +0100 + https://www.golem.de/1812/138246-rss.html + Die Objektive von Meyer Optik Grlitz, deren Produktion ber Kickstarter finanziert werden sollte, werden nicht ausgeliefert. Die Untersttzer gehen leer aus. Doch die Marken des insolventen Unternehmens werden wiederaufgelegt. (Kickstarter, DSLR) ]]> + 7 + + + Monowheel Z-One One: Die Elektro-Vespa auf einem Rad + https://www.golem.de/news/monowheel-z-one-one-die-elektro-vespa-auf-einem-rad-1812-138248-rss.html + Mit dem Monowheel Z-One One hat das Unternehmen Bel & Bel ein Elektrofahrzeug vorgestellt, das einer alten Vespa hnelt und mit einem Sitz ausgerstet ist. Was fehlt, ist das zweite Rad. (<a href="https://www.golem.de/specials/elektromobilitaet/">Elektromobilitt</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138248&amp;page=1&amp;ts=1544769060" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/sonstiges/monowheel-z-one-one-die-elektro-vespa-auf-einem-rad/122677,list.html + Fri, 14 Dec 2018 07:31:00 +0100 + https://www.golem.de/1812/138248-rss.html + Mit dem Monowheel Z-One One hat das Unternehmen Bel & Bel ein Elektrofahrzeug vorgestellt, das einer alten Vespa hnelt und mit einem Sitz ausgerstet ist. Was fehlt, ist das zweite Rad. (Elektromobilitt) ]]> + 92 + + + Expansion: Apple investiert 1 Milliarde US-Dollar fr texanischen Campus + https://www.golem.de/news/expansion-apple-investiert-1-milliarde-us-dollar-fuer-texanischen-campus-1812-138247-rss.html + Apple will in den nchsten fnf Jahren 20.000 Arbeitspltze in den USA schaffen und hat angekndigt, fr eine Milliarde US-Dollar einen neuen Campus in Austin im Bundesstaat Texas zu bauen. (<a href="https://www.golem.de/specials/apple/">Apple</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138247&amp;page=1&amp;ts=1544768400" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/wirtschaft/expansion-apple-investiert-1-milliarde-us-dollar-fuer-texanischen-campus/122676,list.html + Fri, 14 Dec 2018 07:20:00 +0100 + https://www.golem.de/1812/138247-rss.html + Apple will in den nchsten fnf Jahren 20.000 Arbeitspltze in den USA schaffen und hat angekndigt, fr eine Milliarde US-Dollar einen neuen Campus in Austin im Bundesstaat Texas zu bauen. (Apple) ]]> + 3 + + + Leasing: United Internet will 5G-Netz von ZTE bauen lassen + https://www.golem.de/news/leasing-united-internet-will-5g-netz-von-zte-fuer-sich-bauen-lassen-1812-138245-rss.html + Ein viertes Mobilfunknetz in Deutschland knnte doch noch kommen. Der Chef von United Internet, Ralph Dommermuth, will ZTE aus China fr sich einspannen. ZTE hat gerade seinen wichtigsten Kunden in Deutschland verloren. (<a href="https://www.golem.de/specials/roaming/">Roaming</a>, <a href="https://www.golem.de/specials/telekom/">Telekom</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138245&amp;page=1&amp;ts=1544738880" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/handy/leasing-united-internet-will-5g-netz-von-zte-bauen-lassen/122675,list.html + Thu, 13 Dec 2018 23:08:00 +0100 + https://www.golem.de/1812/138245-rss.html + Ein viertes Mobilfunknetz in Deutschland knnte doch noch kommen. Der Chef von United Internet, Ralph Dommermuth, will ZTE aus China fr sich einspannen. ZTE hat gerade seinen wichtigsten Kunden in Deutschland verloren. (Roaming, Telekom) ]]> + 11 + + + Sega Classics angespielt: Sonic hpft und springt auf dem Fire TV + https://www.golem.de/news/sega-classics-angespielt-sonic-huepft-und-springt-auf-dem-fire-tv-1812-138232-rss.html + Keine Mini- oder Classic-Konsole, sondern mit einer App namens Sega Classics luft Sonic auf dem Fire TV Stick 4K von Amazon. Insgesamt bietet die Sammlung 25 Retrogames, die einst auf dem Mega Drive erschienen sind. Golem.de hat ausprobiert, ob das Spielen immer noch Spa macht. (<a href="https://www.golem.de/specials/sega/">Sega</a>, <a href="https://www.golem.de/specials/amazon/">Amazon</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138232&amp;page=1&amp;ts=1544721480" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/games/sega-classics-angespielt-sonic-huepft-und-springt-auf-dem-fire-tv/122674,list.html + Thu, 13 Dec 2018 18:18:00 +0100 + https://www.golem.de/1812/138232-rss.html + Keine Mini- oder Classic-Konsole, sondern mit einer App namens Sega Classics luft Sonic auf dem Fire TV Stick 4K von Amazon. Insgesamt bietet die Sammlung 25 Retrogames, die einst auf dem Mega Drive erschienen sind. Golem.de hat ausprobiert, ob das Spielen immer noch Spa macht. (Sega, Amazon) ]]> + 5 + + + Anwaltspostfach: BeA-Klage erstmal vertagt + https://www.golem.de/news/anwaltspostfach-bea-klage-erstmal-vertagt-1812-138241-rss.html + Vor dem Anwaltsgerichtshof in Berlin fand heute die erste Verhandlung zu einer Klage statt, bei der Rechtsanwlte eine Ende-zu-Ende-Verschlsselung im besonderen elektronischen Anwaltspostfach (BeA) erzwingen wollen. Das Gericht sieht aber noch viel Klrungsbedarf. (<a href="https://www.golem.de/specials/bea/">BeA</a>, <a href="https://www.golem.de/specials/verschluesselung/">Verschlsselung</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=138241&amp;page=1&amp;ts=1544716680" alt="" width="1" height="1" /> + https://forum.golem.de/kommentare/security/anwaltspostfach-bea-klage-erstmal-vertagt/122673,list.html + Thu, 13 Dec 2018 16:58:00 +0100 + https://www.golem.de/1812/138241-rss.html + Vor dem Anwaltsgerichtshof in Berlin fand heute die erste Verhandlung zu einer Klage statt, bei der Rechtsanwlte eine Ende-zu-Ende-Verschlsselung im besonderen elektronischen Anwaltspostfach (BeA) erzwingen wollen. Das Gericht sieht aber noch viel Klrungsbedarf. (BeA, Verschlsselung) ]]> + 9 + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_lemonde.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_lemonde.xml new file mode 100644 index 0000000..18c75d5 --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_lemonde.xml @@ -0,0 +1,184 @@ + + + + Le Monde.fr - Actualités et Infos en France et dans le monde + Le Monde.fr - 1er site d'information. Les articles du journal et toute l'actualité en continu : International, France, Société, Economie, Culture, Environnement, Blogs ... + Copyright Le Monde.fr + http://www.lemonde.fr/rss/une.xml + + Sun, 11 Feb 2018 14:08:08 +0100 + + http://www.lemonde.fr/mmpub/img/lgo/lemondefr_rss.gif + Le Monde.fr - Actualités et Infos en France et dans le monde + http://www.lemonde.fr/rss/une.xml + + + http://www.lemonde.fr/jeux-olympiques-pyeongchang-2018/live/2018/02/11/jo-d-hiver-2018-suivez-la-course-de-martin-fourcade-en-direct_5255095_5193626.html?xtor=RSS-3208 + JO d’hiver 2018 : pas de médaille pour Martin Fourcade + Les grands favoris, dont Martin Fourcade, qui termine à la 8e place, et le Norvégien Boe, ont été à la peine lors de l’épreuve de sprint de biathlon. + Sun, 11 Feb 2018 11:00:26 +0100 + http://www.lemonde.fr/tiny/5255095/ + + + + http://www.lemonde.fr/societe/article/2018/02/10/affaire-maelys-un-faisceau-d-indices-et-un-point-d-interrogation_5254773_3224.html?xtor=RSS-3208 + Affaire Maëlys : un faisceau d’indices et un point d’interrogation + Deux témoignages d’un couple contredisent la version du déroulé de la soirée présentée par l’accusation. + Sat, 10 Feb 2018 10:03:47 +0100 + http://www.lemonde.fr/tiny/5254773/ + + + + http://www.lemonde.fr/europe/article/2018/02/11/un-avion-de-ligne-russe-transportant-71-personnes-s-ecrase-pres-de-moscou_5255120_3214.html?xtor=RSS-3208 + Un avion de ligne russe, transportant 71 personnes, s’écrase près de Moscou + Le biréacteur, un Antonov An-148 de la compagnie Saratov, transportait 65 passagers et 6 membres d’équipage, selon les agences russes. + Sun, 11 Feb 2018 14:01:17 +0100 + http://www.lemonde.fr/tiny/5255120/ + + + + http://www.lemonde.fr/campus/article/2018/02/11/le-tres-lucratif-business-des-concours_5255084_4401467.html?xtor=RSS-3208 + Prépa privée, frais d’inscriptions : le très lucratif business des concours + Si les écoles, en concurrence les unes avec les autres, doivent dépenser de fortes sommes en communication pour faire le plein d’étudiants, les prépas privées tirent profit de ce système sélectif. + Sun, 11 Feb 2018 10:15:27 +0100 + http://www.lemonde.fr/tiny/5255084/ + + + + http://www.lemonde.fr/m-actu/article/2018/02/09/l-insoutenable-intensite-de-daniel-day-lewis_5254073_4497186.html?xtor=RSS-3208 + Daniel Day-Lewis, aux extrêmes de l’incarnation + Pour s’approprier ses personnage, l’acteur s’épuise et pense à chaque fois raccrocher. Son rôle d’un grand couturier dans « Phantom Thread » pourrait lui valoir un quatrième Oscar. + Fri, 09 Feb 2018 06:36:57 +0100 + http://www.lemonde.fr/tiny/5254073/ + + + + http://filiu.blog.lemonde.fr/2018/02/11/poutine-prisonnier-dassad-en-syrie/?xtor=RSS-3208 + « Poutine prisonnier d’Assad en Syrie », par Jean-Pierre Filiu + La Russie est incapable de transformer en avancée politique ses indiscutables succès, à cause de l’intransigeance du dictateur syrien, analyse le spécialiste du Moyen-Orient. + Sun, 11 Feb 2018 08:39:51 +0100 + http://www.lemonde.fr/tiny/5255073/ + + + + http://www.lemonde.fr/m-actu/article/2018/02/09/a-louveciennes-la-folle-histoire-du-chateau-louis-xiv_5254367_4497186.html?xtor=RSS-3208 + A Louveciennes, la folle histoire de la « maison la plus chère du monde » + Emad Khashoggi, un promoteur mégalomane, s’est construit un jouet XXL : un chateau de style XVIIe, avec tout le confort moderne, qui a séduit le prince héritier d’Arabie saoudite . + Fri, 09 Feb 2018 13:53:07 +0100 + http://www.lemonde.fr/tiny/5254367/ + + + + http://www.lemonde.fr/police-justice/article/2018/02/10/proces-fiona-trente-ans-requis-contre-la-mere-de-la-fillette-et-contre-son-ex-compagnon_5254917_1653578.html?xtor=RSS-3208 + Procès Fiona : la mère et le beau-père condamnés en appel à vingt ans de prison + En première instance, en 2016, Cécile Bourgeon avait été acquittée des faits criminels et condamnée à cinq ans de prison pour avoir menti. + Sat, 10 Feb 2018 17:24:24 +0100 + http://www.lemonde.fr/tiny/5254917/ + + + + http://www.lemonde.fr/proche-orient/article/2018/02/11/les-raids-israeliens-ont-porte-un-coup-severe-a-l-iran-et-la-syrie-selon-netanyahou_5255111_3218.html?xtor=RSS-3208 + Les raids israéliens ont porté un « coup sévère » à l’Iran et la Syrie, selon Nétanyahou + « Nous continuerons à frapper tous ceux qui tentent de nous attaquer », a prévenu, dimanche, le chef de l’Etat hébreu dans un communiqué. + Sun, 11 Feb 2018 12:43:38 +0100 + http://www.lemonde.fr/tiny/5255111/ + + + + http://www.lemonde.fr/m-actu-chroniques/article/2018/02/11/vous-prendrez-bien-une-part-de-millefeuille_5255108_4573473.html?xtor=RSS-3208 + Panthère, chapeau violet et code de la route au déjeuner des best-sellers + Le 5 février, rue Scribe, à Paris, avait lieu le déjeuner des auteurs les plus lus de l’année. Guillemette Faure, la chroniqueuse de « M », y était. Sylvain Tesson s’est excusé, parti « pour observer la panthère des neiges près des sources du Mékong ». + Sun, 11 Feb 2018 12:15:25 +0100 + http://www.lemonde.fr/tiny/5255108/ + + + + http://www.lemonde.fr/logement/article/2018/02/11/louis-gallois-denonce-une-volonte-politique-de-minorer-le-nombre-de-sdf_5255086_1653445.html?xtor=RSS-3208 + Louis Gallois dénonce une « volonté politique de minorer le nombre de SDF » + Le président de la Fédération des acteurs de la solidarité accuse certains préfets de ne pas compter certaines catégories de sans-abri. + Sun, 11 Feb 2018 10:22:46 +0100 + http://www.lemonde.fr/tiny/5255086/ + + + + http://www.lemonde.fr/questions-politiques/video/2018/02/11/suivez-en-direct-l-emission-questions-politiques-avec-gerard-collomb_5255104_4991783.html?xtor=RSS-3208 + Suivez en direct l’émission « Questions politiques » avec Gérard Collomb + Le ministre de l’intérieur est l’invité de France Inter, « Le Monde » et France Télévisions. + Sun, 11 Feb 2018 12:00:13 +0100 + http://www.lemonde.fr/tiny/5255104/ + + + + http://www.lemonde.fr/planete/article/2018/02/11/notre-dame-des-landes-la-zad-se-cherche-un-avenir_5255024_3244.html?xtor=RSS-3208 + Fête à Notre-Dame-des-Landes : des milliers de personnes venues « voir ce qui se passera après » + Des dizaines de milliers de personnes ont convergé, samedi sur la ZAD, pour célébrer la victoire contre le projet d’aéroport. + Sun, 11 Feb 2018 06:34:33 +0100 + http://www.lemonde.fr/tiny/5255024/ + + + + http://www.lemonde.fr/tournoi-des-6-nations/article/2018/02/11/tournoi-des-six-nations-la-france-a-la-relance-face-a-l-ecosse_5255081_1616892.html?xtor=RSS-3208 + Tournoi des six nations : la France à la relance face à l’Ecosse + Le XV de France se déplace dimanche en Ecosse (16 heures) lors de la deuxième journée du Tournoi des six nations. Une victoire est indispensable pour les hommes de Jacques Brunel. + Sun, 11 Feb 2018 10:00:25 +0100 + http://www.lemonde.fr/tiny/5255081/ + + + + http://www.lemonde.fr/climat/article/2018/02/11/neige-et-verglas-huit-departements-en-vigilance-orange_5255035_1652612.html?xtor=RSS-3208 + Neige et verglas : huit départements en vigilance orange + Un risque de verglas et de précipitations neigeuses va toucher le centre et l’est de la France. La vigilance devrait être levée dimanche grâce au redoux. + Sun, 11 Feb 2018 06:43:09 +0100 + http://www.lemonde.fr/tiny/5255035/ + + + + http://www.lemonde.fr/addictions/article/2018/02/10/le-desarroi-des-parents-face-a-la-consommation-excessive-de-cannabis_5254762_1655173.html?xtor=RSS-3208 + Le désarroi des parents face à la consommation excessive de cannabis + Plus de 7 % des jeunes de 17 ans présenteraient un risque élevé d’usage problématique, soit environ 60 000 adolescents de cet âge. + Sat, 10 Feb 2018 09:54:32 +0100 + http://www.lemonde.fr/tiny/5254762/ + + + + http://enseigner.blog.lemonde.fr/2018/02/08/bac-2018-10-conseils-pour-loral-des-tpe/?xtor=RSS-3208 + Bac : comment préparer l’oral des TPE + « Les profs ne cherchent pas à couler les élèves. Au contraire, ils leur tendent des perches » : à l’intention des candidats au bac, l’enseignant Claude Garcia présente ses conseils pour l’épreuve dite de « présentation » des travaux personnels encadrés (TPE). + Sun, 11 Feb 2018 13:15:19 +0100 + http://www.lemonde.fr/tiny/5255115/ + + + + http://www.lemonde.fr/police-justice/article/2018/02/11/reglements-de-compte-dans-le-quartier-de-la-reynerie-a-toulouse-quatre-mises-en-examen_5254985_1653578.html?xtor=RSS-3208 + Règlements de compte dans le quartier de La Reynerie à Toulouse : quatre mises en examen + Trois suspects lyonnais devraient aussi être déférés à Toulouse. Une dizaine d’assassinats, sur fond de trafic de stupéfiants, ont eu lieu depuis 2011 dans ce quartier. + Sun, 11 Feb 2018 04:12:56 +0100 + http://www.lemonde.fr/tiny/5254985/ + + + + http://www.lemonde.fr/chroniques-de-la-presidence-trump/article/2018/02/11/president-trump-an-ii-l-embardee-du-general-kelly_5255016_5077160.html?xtor=RSS-3208 + Les « adultes » qui encadrent Trump sont aussi devenus imprévisibles + La gestion catastrophique par la Maison Blanche du cas d’un collaborateur accusé de violences conjugales illustre la fragilité de ceux supposés encadrer le président américain. + Sun, 11 Feb 2018 06:33:09 +0100 + http://www.lemonde.fr/tiny/5255016/ + + + + http://www.lemonde.fr/politique/article/2018/02/11/macron-veut-poser-les-jalons-de-l-organisation-de-l-islam-de-france-au-premier-semestre-2018_5254980_823448.html?xtor=RSS-3208 + Emmanuel Macron se lance dans la réforme de l’islam de France + Le chef de l’Etat veut « avancer touche par touche », et consulter les représentants de toutes les religions. + Sun, 11 Feb 2018 02:18:09 +0100 + http://www.lemonde.fr/tiny/5254980/ + + + + http://www.lemonde.fr/gouvernement-philippe/article/2018/02/11/enquete-d-ebdo-sur-hulot-marlene-schiappa-sort-de-son-silence_5254974_5129180.html?xtor=RSS-3208 + Hulot : Marlène Schiappa dénonce un article « irresponsable » d’« Ebdo » + Dans une tribune au « JDD », la secrétaire d’Etat à l’égalité entre les femmes et les hommes regrette également une « médiatisation à l’extrême ». + Sun, 11 Feb 2018 00:49:31 +0100 + http://www.lemonde.fr/tiny/5254974/ + + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_lineageos.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_lineageos.xml new file mode 100644 index 0000000..9e7e1aa --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_lineageos.xml @@ -0,0 +1,634 @@ +Jekyll2018-02-25T04:13:58+00:00//LineageOSLineageOS Android DistributionChangelog 16 - Smart Styles, Treble is trouble and Omfg Oreo2018-02-25T00:00:00+00:002018-02-25T00:00:00+00:00/Changelog-16<p><img src="/images/2018-02-25/lineageos-15.1-hero.png" alt="hero adaptive-icons image" class="blog_post_image_full" /></p> + + <h2 id="hello-lineageos-151">Hello LineageOS-15.1</h2> + + <p>We’ve been working hard these months to get this new version available; the changes that were + done in upstream (AOSP) are huge: Project Treble changed the way hardware is managed in Android, + so all the OEM-abandoned platforms that are supported by Lineage had to be adapted for the new platform. + Moreover, we’ve taken the time to make the code future-proof by converting a lot of our hardware-related + code to make use of the new Treble capabilities: things such as LiveDisplay and lights (leds) control + are now up to date with the new Android standards, so we’re going to have an easier time + forward-porting stuff whenever a new Android version comes out.</p> + + <p>We’ve not spent all the time just forward-porting 14.1 features: the whole platform code + has been cleaned up: all the unused and deprecated bits have been removed and the rebrand process has been + completed.</p> + + <p>We’re also introducing some new features that were highly requested + in the <a href="/Summer-Survey/">Summer Survey</a> we held last summer, and a few are featured below:</p> + + <h4 id="styles">Styles</h4> + + <p>You can now style some aspects of your device by selecting a custom accent color and by choosing between a light or dark interface. + A really cool feature we’ve added to this is the (optional) integration with LiveDisplay: during the day the device will have a light theme, and at night some of the interface elements will turn dark, so it’s easier on the eyes. + What if this isn’t enough? What if you want your device style to match your wallpaper colors? <em>Automagic</em> will propose you the best colors combination based on your current wallpaper. + While this is not a full theming replacement, we hope to satisfy users that requested simple theming capabilities.</p> + + <h4 id="new-trebuchet-launcher">New Trebuchet launcher</h4> + + <p>Our homegrown launcher has been rewritten to make it more up to date with Android standards. Some redundant features have been removed and new ones, such as icon packs support, have been added. + All our apps have received a new adaptive icon too, thanks to the feedback you provided in the Summer Survey (you can see a sneak peak of them above). + Moreover, Trebuchet will allow you to choose the icon shape that suits your liking from circle, super ellipse, squircle and teardrop.</p> + + <h4 id="qr-support-in-snap-camera">QR support in Snap camera</h4> + + <p>There’s now a QR reader mode in our camera app, which supports QR-encoded URLs, plain text, SMS, email addresses, contacts cards, events, phone numbers and location coordinates.</p> + + <h3 id="upgrading-to-151">Upgrading to 15.1</h3> + + <p>We’re starting our 15.1 builds with some devices (listed below), with others migrating to 15.1 sooner or later. Note that several older devices are unable to receive official builds at this time due to the lack of support for working HAL1 camera recorder, which was broken by the treble changes, but don’t worry - we’re working on it.</p> + + <h4 id="from-official-lineageos-141">From official LineageOS 14.1</h4> + + <ol> + <li>(Optional) Make a backup of your important data</li> + <li>Download the build either from <a href="https://download.lineageos.org">download portal</a> or built in updater app + <ul> + <li>You can export the downloaded package to the sdcard from the Updater app by long-pressing it and then selecting <em>“Export”</em> on the top menu</li> + </ul> + </li> + <li>Download proper addons packages (<a href="https://wiki.lineageos.org/gapps.html">GApps</a>, <a href="https://download.lineageos.org/extras">su</a>…) for Oreo 8.1 (8.0 packages are not compatible).</li> + <li>Make sure your recovery and firmware are up to date</li> + <li>Boot into recovery mode</li> + <li>Format your system partition</li> + <li>Install the LineageOS 15.1 build, then install all your addons <em>WITHOUT</em> rebooting</li> + <li>When you’re done, reboot the device.</li> + </ol> + + <p>Note that:</p> + + <ul> + <li>Wiping data is <em>not</em> needed when upgrading from an official build</li> + <li>While you’ll be able to download the update from the updater app, you won’t be allowed to install a 15.1 build on the top of a 14.1 one automatically</li> + </ul> + + <h4 id="from-anything-else-including-unofficial-lineageos-builds">From anything else (including unofficial LineageOS builds)</h4> + + <ol> + <li>(Optional) Make a backup of your important data</li> + <li>Download the build from <a href="https://download.lineageos.org">download portal</a></li> + <li>Download proper addons packages (<a href="https://wiki.lineageos.org/gapps.html">GApps</a>, <a href="https://download.lineageos.org/extras">su</a>…) for Oreo 8.1 (8.0 packages are not compatible)</li> + <li>Make sure your recovery and firmware are up to date</li> + <li>Boot into recovery mode and wipe data</li> + <li>Install the LineageOS 15.1 build, then install all your addons without rebooting</li> + <li>When you’re done, reboot the device</li> + </ol> + + <p>Note that wipe data is <em>always</em> needed when coming from something that’s not an official build, regardless of the Android version</p> + + <h3 id="nightly-builds-will-roll-out-this-monday">Nightly builds will roll out this Monday</h3> + + <p>We’ll be testing the infrastructure this weekend (24th and 25th Feb.), you will see some 15.1 builds appear on our download portal marked as <em>EXPERIMENTAL</em>.</p> + + <p>The first batch of nightlies builds will roll out on Monday 26th February, while the other days of the week will remain dedicated to 14.1 devices. + Keep in mind that if you install an <em>EXPERIMENTAL</em> build you will not receive OTA updates, but you’ll have to manually flash a <em>NIGHTLY</em> build instead.</p> + + <h2 id="older-versions-changes">Older versions changes</h2> + <ul> + <li>LineageOS 14.1 + <ul> + <li>Jelly’s favorites management has been improved</li> + <li>December 2017, January 2018 and February 2018 security patches have been merged</li> + <li>Webview has been updated to Chromium 64.0.3282.137</li> + </ul> + </li> + <li>LineageOS 13.0 + <ul> + <li>December 2017, January 2018 and February 2018 security patches have been merged</li> + </ul> + </li> + </ul> + + <h2 id="goodbye-lineageos-130">Goodbye LineageOS 13.0</h2> + <p>The Marshmallow-based release has been discontinued and the last builds were published on Feb 11th, 2018. The branches will not be locked, so it’ll still be open for contributions such as security patches, like the 11.0 branch which has been getting security patches backported from the community. LineageOS 14.1 will remain under active development, but don’t expect new features to come since the majority of the team has jumped to the Oreo branch.</p> + + <h2 id="infrastructure">Infrastructure</h2> + <p>A couple of our infrastructure repos have been moved from the <a href="https://github.com/LineageOS">LineageOS organization</a> to the <a href="https://github.com/lineageos-infra">LineageOS-Infra organization</a> on GitHub. + The wiki has also been updated with a focus on device information since a lot of users often check it to look for a suitable device that’s also capable of running LineageOS</p> + + <h2 id="device-support-new-rules">Device support: new rules</h2> + <p>Beginning with LineageOS 15.1, we’re enforcing a set of rules defined by the <a href="https://github.com/LineageOS/charter/blob/master/device-support-requirements.md">LDSR</a> (LineageOS Device Support Requirements). This document defines the requirements that must be met in order for devices to be deemed ship-ready for LineageOS releases to maintain a higher quality standard. These rules, which are not retroactive (14.1 builds won’t be affected), will apply to all the devices that want to ship a LineageOS 15.1 official release regardless of having a 14.1 build. + For the end user it means that whenever an official 15.1 build is published, you can expect everything that’s listed in the charter as working.</p> + + <h2 id="device-changes">Device changes</h2> + + <h4 id="initial-151-devices">Initial 15.1 devices</h4> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/angler">Google Nexus 6P - angler</a> - moved from 14.1</li> + <li><a href="https://wiki.lineageos.org/devices/bullhead">Google Nexus 5X - bullhead</a> - moved from 14.1</li> + <li><a href="https://wiki.lineageos.org/devices/zl1">LeEco Le Pro3 / Le Pro3 Elite - zl1</a> - moved from 14.1</li> + <li><a href="https://wiki.lineageos.org/devices/oneplus3">OnePlus 3 / 3T - oneplus3</a> - moved from 14.1</li> + <li><a href="https://wiki.lineageos.org/devices/cheeseburger">OnePlus 5 - cheeseburger</a> - moved from 14.1</li> + <li><a href="https://wiki.lineageos.org/devices/dumpling">OnePlus 5T - dumpling</a> - maintainers: <em>codeworkx, amartinz</em></li> + <li><a href="https://wiki.lineageos.org/devices/gts210vewifi">Samsung Galaxy Tab S2 9.7 Wi-Fi (2016) - gts210vewifi</a> - moved from 14.1</li> + <li><a href="https://wiki.lineageos.org/devices/gts28vewifi">Samsung Galaxy Tab S2 8.0 Wi-Fi (2016) - gts28vewifi</a> - moved from 14.1</li> + <li><a href="https://wiki.lineageos.org/devices/gemini">Xiaomi Mi 5 - gemini</a> - moved from 14.1</li> + <li><a href="https://wiki.lineageos.org/devices/capricorn">Xiaomi Mi 5S - capricorn</a> - moved from 14.1</li> + <li><a href="https://wiki.lineageos.org/devices/natrium">Xiaomi Mi 5S Plus - natrium</a> - moved from 14.1</li> + </ul> + + <h4 id="added-141-devices">Added 14.1 devices</h4> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/fugu/">Google Nexus Player - fugu</a> - maintainer: <em>npjohnson</em></li> + <li><a href="https://wiki.lineageos.org/devices/kltesprsports/">Samsung Galaxy S5 Sport - kltesprsports</a> - maintainer: <em>javelinanddart</em></li> + <li>Samsung Galaxy S6 <a href="https://wiki.lineageos.org/devices/zerofltexx">Flat (zerofltexx)</a> and <a href="https://wiki.lineageos.org/devices/zeroltexx">Edge (zeroltexx)</a> - maintainer: <em>usaamah99</em></li> + <li><a href="https://wiki.lineageos.org/devices/land">Xiaomi Redmi 3S and 3X - land</a> - maintainers: <em>karthick111, darshan1205, chaubeyprateek</em></li> + <li><a href="https://wiki.lineageos.org/devices/sumire">Sony Xperia Z5 - sumire</a> - maintainers: <em>myself5, haoZeke</em></li> + <li><a href="https://wiki.lineageos.org/devices/tulip">ZTE Axon 7 Mini - tulip</a> - maintainer: <em>tdm</em></li> + </ul> + + <h4 id="changes-to-141-devices">Changes to 14.1 devices</h4> + + <ul> + <li>Samsung Galaxy Note 2 (<a href="https://wiki.lineageos.org/devices/t0ltekor">Korean</a>) has been merged with the <a href="https://wiki.lineageos.org/devices/t0lte">LTE</a> variant</li> + <li><a href="https://wiki.lineageos.org/devices/addison">Motorola Moto Z Play - addison</a> has been readded - maintainer: <em>mccreary</em></li> + <li><a href="https://wiki.lineageos.org/devices/jfltexx">Samsung Galaxy S4 T-Mobile - jfltetmo</a> is now supported in the <a href="https://wiki.lineageos.org/devices/jfltexx">Samsung Galaxy S4 International (LTE) - jfltexx</a> builds - maintainer: <em>zatoichi</em></li> + </ul> + + <h4 id="removed-141-devices">Removed 14.1 devices</h4> + + <ul> + <li>Samsung Galaxy S III US variants: <a href="https://wiki.lineageos.org/devices/d2att">AT&amp;T</a>, <a href="https://wiki.lineageos.org/devices/d2spr">Sprint</a>, <a href="https://wiki.lineageos.org/devices/d2tmo">T-Mobile</a> and <a href="https://wiki.lineageos.org/devices/d2vzw">Verizon</a> - no longer maintained</li> + <li>Asus Zenfone 2 <a href="https://wiki.lineageos.org/devices/Z00D">ZE500CL (Z00D)</a>, <a href="https://wiki.lineageos.org/devices/Z008">ZE550ML (Z008)</a> and <a href="https://wiki.lineageos.org/devices/Z00A">ZE551ML (Z00A)</a> - no longer maintained</li> + </ul>LineageOS teamOh my! Finally OreoCelebrating one year of LineageOS2017-12-24T00:00:00+00:002017-12-24T00:00:00+00:00/Celebrating-one-year-of-LineageOS<h2 id="reviewing-our-first-12-months">Reviewing our first 12 months</h2> + + <p>One year ago, LineageOS was announced to the world. + We’d like to take the time to celebrate with our contributors, our users and our community. + This wouldn’t have been possible without all of you.</p> + + <p>We would never have enough words to express how much we appreciate this community and how excited we are for the next year to come. + So instead, we’ve created an infographic, that we hope you all will enjoy.</p> + + <p><img src="/images/2017-12-24/lineageos-1st-birthday-infographic.png" alt="infographic" class="blog_post_image" /></p> + + <h4 id="thank-you">Thank you</h4>LineageOS teamHappy birthday to usChangelog 15 - Super Security, Gratifying Gestures, Resounding Recorder2017-12-05T00:00:00+00:002017-12-05T00:00:00+00:00/Changelog-15<h2 id="welcome-to-lineageos-regularly-irregular-review-where-we-go-over-changes-in-the-last-few-weeks">Welcome to LineageOS’ regularly irregular review, where we go over changes in the last few weeks</h2> + + <h3 id="major-changes-since-september-23rd">Major changes since September 23rd</h3> + + <ul> + <li>Recorder app has gotten a major redesign, it’s now better thanks to the feedback provided in the Summer Survey. + <ul> + <li>If you are interested in reading more about the design changes, our very own jrizzoli wrote a <a href="https://medium.com/@jrizzoli/recording-awesomeness-bc1c5ffe2826">Medium post</a> on the thought process</li> + </ul> + </li> + <li>A LiveDisplay tile has been added</li> + <li>KRACK Wi-Fi vulnerability has been fixed in both LineageOS 14.1 and 13.0</li> + <li>October security patches have been merged for both LineageOS 14.1 and 13.0</li> + <li>November security patches have been merged for LineageOS 14.1 and 13.0</li> + <li>Bypassing the lockscreen by switching to a lockscreen-less profile from quick settings has been blocked (BUGBASH-1095)</li> + <li>The updater, among other minor improvements, now supports device unifications: when a device gets build merged with another one, the user will directly receive updates without requiring the user to manually flash the new build.</li> + <li>Added support for extended length NFC (needs to be enabled per-device, if supported)</li> + <li>Two new touchscreen gesture options have been added for lowering and raising the media volume</li> + <li>Battery icon has been improved; the percentage will be shown in battery saver mode when the “show percentage” option is set. The exclamation mark in the battery has also been given more contrast so it’s easier on the eyes</li> + <li>The Calendar app now shows week start and end in the title when in week view, instead of showing the month and year</li> + <li>Gallery has received some stability improvements</li> + <li>Making emergency calls without a sim card is now possible, in regions that allow it</li> + <li>Issues with the “Install” button being greyed out when installing APKs should now be fixed (REGRESSION-1262)</li> + </ul> + + <h3 id="oreo-update">Oreo Update</h3> + + <p>Up to now, news on Oreo-based LineageOS 15.0 has been almost non-existent, but we’re in a position now where we can document some of our progress here.</p> + + <p>As many of you have seen (and we’re sure some of you are running them right now), a number of unofficial LineageOS 15.0 builds exist, some of which are built by our very own maintainers. + These are in no way representative of a final product, but definitely let you all experience some of the features Android 8.0 has to offer.</p> + + <p>Once that the basic framework has been put in place and devices are successfully booting LineageOS 15.0, some features are being brought forward, most of which are dependent on what was previously known as the CMSDK. A large focus while doing this has been to evaluate the need to carry-forward or otherwise clean up the leftovers from our inception last year.</p> + + <p>However now that Android 8.1 has been released, we’re anticipating moving straight to the 15.1 branch where we’ll merge all our work done for 15.0 and finish the porting effort.</p> + + <p>Like always, we won’t be giving any indication as to when we might be close to a releasable product, but keep waiting patiently, and as we reach big milestones, we’ll be giving you some more status updates.</p> + + <h3 id="infrastructure">Infrastructure</h3> + + <p>Our <a href="https://status.lineageos.org">status page</a> has been updated and now it automatically detects whether a service is down without requiring any manual input as it did previously.</p> + + <p>We have added a new language <a href="https://en.wikipedia.org/wiki/Kabyle_language">Kabyle</a> to our <a href="https://translate.lineageos.org/">translation system</a> . Feel free to subscribe to this or other languages to improve or complete the translation progress!</p> + + <h3 id="build-roster">Build roster</h3> + + <p>We have enforced stricter quality terms for our builds: maintainers now have limited time frames to fix important issues that have been assigned to them on Jira before their device gets pulled down from the build roster. Those devices will be added back once the issues listed in the <a href="https://github.com/LineageOS/hudson/commit/b2560ed989493a7798ca914fe82033ccfee610df">removal commit</a> have been addressed.</p> + + <p>Added 14.1 devices</p> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/gohan">BQ Aquaris X5 Plus - gohan</a> - <em>maintainers: brinlyau, cmorlok, eloimuns, Kra1o5, stucki, cyclon1978, Team aquaris-dev</em></li> + <li><a href="https://wiki.lineageos.org/devices/tenshi">BQ Aquaris U Plus - tenshi</a> - <em>maintainers: brinlyau, eloimuns, Kra1o5, stucki, Team aquaris-dev</em></li> + <li><a href="https://wiki.lineageos.org/devices/suzuran">Sony Xperia Z5 Compact - suzuran</a> - <em>maintainer: olefb</em></li> + <li><a href="https://wiki.lineageos.org/devices/karin">Sony Xperia Z4 Tablet LTE - karin</a> - <em>maintainers: andralex8, cdesai, Kali-, olivier97, quarx2k</em></li> + <li><a href="https://wiki.lineageos.org/devices/karin_windy">Sony Xperia Z4 Tablet WiFi - karin_windy</a> - <em>maintainers: andralex8, cdesai, Kali-, olivier97, quarx2k</em></li> + <li><a href="https://wiki.lineageos.org/devices/m216">LG K10 - m216</a> - <em>maintainers: erfanoabdi, dom133</em></li> + <li><a href="https://wiki.lineageos.org/devices/FP2">Fairphone 2 - FP2</a> - <em>maintainer: chrmhoffmann</em></li> + </ul> + + <p>Changes to 14.1 devices</p> + + <ul> + <li>Samsung Galaxy S5 Sprint SM-G900P (<a href="https://wiki.lineageos.org/devices/kltespr">kltespr</a>) has been merged into Samsung Galaxy S5 G900I/P (<a href="https://wiki.lineageos.org/devices/kltedv">kltedv</a>).</li> + </ul> + + <p>Removed 14.1 devices</p> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/vs985">LG G3 (Verizon) - vs985</a> - no longer maintained</li> + <li><a href="https://wiki.lineageos.org/devices/peach">Ark Benefit A3 - peach</a> - no longer maintained</li> + <li><a href="https://wiki.lineageos.org/devices/wt88047">Wingtech Redmi 2 - wt88047</a> - no longer maintained</li> + <li><a href="https://wiki.lineageos.org/devices/addison">Motorola Moto Z Play - addison</a> - no longer maintained</li> + <li><a href="https://wiki.lineageos.org/devices/A6020">Lenovo Vibe K5 / K5 Plus - A6020</a> - outstanding unfixed issues</li> + <li>LG G4 - <a href="https://wiki.lineageos.org/devices/h815">h815</a>, <a href="https://wiki.lineageos.org/devices/h811">h811</a> - outstanding unfixed issues</li> + <li>HTC One M9 - <a href="https://wiki.lineageos.org/devices/himaul">himaul</a>, <a href="https://wiki.lineageos.org/devices/himawl">himawl</a> - outstanding unfixed issues</li> + <li><a href="https://wiki.lineageos.org/devices/i9305">Samsung Galaxy S III (LTE / International) - i9305</a> - outstanding unfixed issues</li> + </ul> + + <p>Removed 13.0 devices</p> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/ghost">Motorola Moto X - ghost</a> - no longer maintained</li> + </ul>harryyoudChanges since September 23rdSummer Survey - Results2017-10-16T00:00:00+00:002017-10-16T00:00:00+00:00/Summer-Survey-Results<h2 id="we-asked-for-feedback-you-answered">We asked for feedback. You answered</h2> + + <p>Let’s talk about the <a href="https://www.lineageos.org/Summer-Survey/">Summer Survey</a> and its results.<br /> + To start off, only about 1.35% of our users (at the time of writing) took the survey (23000 / 1700000), so the results are not reflective of our entire userbase, but we’ll analyze the feedback nonetheless.</p> + + <h3 id="builds">Builds</h3> + + <p>The majority of the people who responded were using an official build (86%). Nearly all (97%) had it installed on a phone, whereas a smaller portion (10%) had it installed on a tablet.</p> + + <h3 id="apps">Apps</h3> + + <p>Your favorite apps are our Snap Camera app, our Trebuchet launcher, and AudioFX. The apps you’d like to see improved in LineageOS 15 are Snap, Trebuchet, and the Gallery app.<br /> + Many asked to match the camera quality of stock in Snap, but unfortunately that is not entirely within our control, primarily due to the proprietary nature of newer stock features and algorithms. However, this doesn’t mean we won’t continue to aim for the best with what we can control.<br /> + The least used app is Jelly (61% of the surveyed never use it) and that’s understandable since there are more powerful alternatives. This doesn’t mean Jelly (or any other app) is going to be removed, but we will use this information to avoid spending time and resources on projects people rarely use.</p> + + <p>Most of the responders said they were using Google Apps, but a sizeable amount of those surveyed weren’t using any Google Apps (mostly due to region-blocks, or privacy and ideological motivations). We will work hard to improve user experience for both types of users.</p> + + <h3 id="icons">Icons</h3> + + <p>On average, our icons were rated 3.8 / 5, and the Dialer and Gallery were said to have the best icons. We’ll use this feedback to adapt our icons to the new adaptive icon style introduced with Android O in LineageOS 15.</p> + + <h3 id="wallpapers">Wallpapers</h3> + + <p>Our wallpapers have been rated 3.2 / 5. Responder’s favorite kinds are abstract and landscapes. We’ll also try to bring some improvements to our wallpapers collection in the upcoming release.</p> + + <h3 id="features">Features</h3> + + <p>Status bar customizations and Privacy Guard were the favorite features among those who responded, followed by Ambient display, button remapping, lockscreen enhancements, LiveDisplay, Protected Apps, and Profiles.</p> + + <h3 id="infrastructure">Infrastructure</h3> + + <p>Changelogs were rated 4.6 / 5 as a good idea, and 4 / 5 with regards to the quality of them. Our wiki was rated as 3.8 / 5 and the download portal was slightly higher at 4.2 / 5.<br /> + It looks like a large portion of the responders is not aware of our Jira, subreddit or IRC channels (47%, 42% and 47% respectively). We would like to offer some clarification as to where to find these and what they are.<br /> + Our subreddit (<a href="https://www.reddit.com/r/LineageOS">r/LineageOS</a>) is a good place for finding support directly from other LineageOS users and sometimes team members.<br /> + Our <a href="https://jira.lineageos.org">Jira</a> is a place for <a href="https://wiki.lineageos.org/bugreport-howto.html">submitting bug reports</a>.<br /> + Our IRC, similar to our subreddit, a place for finding support with installation, or asking Android questions, can be found at channels <em>#lineageos</em> and <em>#lineageos-dev</em> on Freenode (the latter being used for development related questions).</p> + + <h3 id="your-personal-messages">Your personal messages</h3> + + <p>The last survey page had an optional text box that could be filled with a personal message for the LineageOS team, and we took the time to read them all.<br /> + It’s very motivating to see that so many people, who could write anything they wanted, said a simple, yet powerful, “Thank you” (or something similar).<br /> + Others were mostly about feature suggessions. Even though not all of the suggestions can be implemented, we appreciate your contribution, and we’ll do our best to tune our goals so that they are more inline with the community desires during the development of the next branch.</p> + + <p>The LineageOS team would like to extend our thanks back to everyone who took their time to answer these simple questions.</p>jrizzoliHere's what you told usChangelog 14 - Powerful PrivacyGuard, Unique Updater, Brave Burn-in protection and Awesome AudioFX2017-09-23T00:00:00+00:002017-09-23T00:00:00+00:00/Changelog-14<h2 id="welcome-to-lineageos-regularly-irregular-review-where-we-go-over-changes-in-the-last-few-weeks">Welcome to LineageOS’ regularly irregular review, where we go over changes in the last few weeks</h2> + + <h3 id="major-changes-since-august-8th">Major changes since August 8th</h3> + + <ul> + <li>LineageOS Updater app has been rewritten. Previous issues with downloading updates should be gone now + <ul> + <li>Downloads are now stored at <em>/data/lineageos_updates/</em></li> + </ul> + </li> + <li>Privacy Guard has received an user interface overhaul</li> + <li>Burn-in protection (device-specific): statusbar and navigation bar (if any) icon’s position is shifted every minute to help prevent burn-in of these areas</li> + <li>AudioFX can now control reverb effect</li> + <li>Added system profiles tile</li> + <li>September security patches, including <a href="https://www.armis.com/blueborne/">blueborne</a> vulnerability fix</li> + <li>Jelly improvements, including more HTML 5 features support</li> + <li>Disabled unused cmsdk services in builds</li> + <li>Added carrier selection shortcut for Settings app, so you can jump to it right from your homescreen</li> + <li>It’s now possible to reapply the current system profile</li> + <li>Volume buttons should no longer cause backlit hardware keys to light up</li> + <li>Email is (back) able to customize notification lights settings for each email account</li> + <li>WEP WiFi encryption input now detects valid keys correctly</li> + <li>A number of crashes have been fixed in camera operations</li> + </ul> + + <h3 id="survey">Survey</h3> + + <p>Our <a href="https://www.lineageos.org/Summer-Survey/">summer survey</a> has ended. We’d like to thank everyone who took their time to provide advices and feedbacks. We’ll share the results once we’ve analyzed the data in another post. Stay tuned!</p> + + <h3 id="lineageos-150-progress">LineageOS 15.0 progress</h3> + + <p>While the cm-14.1 branch development hasn’t stopped, we’re also working on the next LineageOS version (15.0), based on the latest Android 8.0. We will refrain from giving any ETA, just patiently wait until the new branch is ready for release-time.</p> + + <h3 id="infrastructure">Infrastructure</h3> + + <ul> + <li>CVE Tracker + <ul> + <li>Improvements for internal usage (maintainers): tags for filters, severity indicators for CVEs, actions are now logged</li> + </ul> + </li> + </ul> + + <h3 id="build-roster">Build roster</h3> + + <h4 id="added-141-devices">Added 14.1 devices</h4> + + <ul> + <li>LG G6 (<a href="https://wiki.lineageos.org/devices/h870">EU Unlocked - h870</a> and <a href="https://wiki.lineageos.org/devices/us997">US Unlocked - us997</a>) - <em>maintainer: rashed</em></li> + <li><a href="https://wiki.lineageos.org/devices/v400">LG G Pad 7.0 WiFi - v400</a> - <em>maintainer: mycax</em></li> + <li><a href="https://wiki.lineageos.org/devices/cheeseburger">OnePlus 5 - cheeseburger</a> - <em>maintainers: amartinz, codeworkx, jrizzoli, jumoog, xingrz</em></li> + <li><a href="https://wiki.lineageos.org/devices/v1awifi">Samsung Galaxy Note Pro 12.2 Wi-Fi - v1awifi</a> - <em>maintainer: thompatry</em></li> + <li><a href="https://wiki.lineageos.org/devices/v1awifi">Samsung Galaxy S5 (Exynos International 3G) - k3gxx</a> - <em>maintainer: tincho5588</em></li> + <li><a href="https://wiki.lineageos.org/devices/gtelwifiue">Samsung Galaxy Tab E 9.6 - gtelwifiue</a> - <em>maintainer: zvikovincent</em></li> + <li><a href="https://wiki.lineageos.org/devices/gtesqltespr">Samsung Galaxy Tab E 8.0 - gtesqltespr</a> - <em>maintainer: zvikovincent</em></li> + <li><a href="https://wiki.lineageos.org/devices/taoshan">Sony Xperia L - taoshan</a> - <em>maintainer: corphish</em></li> + <li><a href="https://wiki.lineageos.org/devices/odin">Sony Xperia ZL - odin</a> - <em>maintainers: cyberwalkman, daedroza, chippa_a, adrian dc</em></li> + <li><a href="https://wiki.lineageos.org/devices/dogo">Sony Xperia ZR - dogo</a> - <em>maintainers: daedroza, chippa_a, cyberwalkman. adrian dc</em></li> + <li><a href="https://wiki.lineageos.org/devices/yuga">Sony Xperia Z - yuga</a> - <em>maintainers: daedroza, cyberwalkman, mardonhh, chippa_a, adrian dc</em></li> + <li><a href="https://wiki.lineageos.org/devices/pollux">Sony Xperia Tablet Z LTE - pollux</a> - <em>maintainers: cahbkaup, cyberwalkman, daedroza, chippa_a, adrian dc</em></li> + <li><a href="https://wiki.lineageos.org/devices/pollux_windy">Sony Xperia Tablet Z Wi-Fi - pollux_windy</a> - <em>maintainers: cahbkaup, cyberwalkman, daedroza, chippa_a, adrian dc</em></li> + <li><a href="https://wiki.lineageos.org/devices/ivy">Sony Xperia Z3+ - ivy</a> - <em>maintainers: cdesai, kali-, olivier97, quarx2k</em></li> + </ul> + + <h4 id="readded-141-devices">Readded 14.1 devices</h4> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/lt03lte">Samsung Galaxy Note 10.1 2014 (LTE) - lt03lte</a> - <em>maintainer: rashed</em></li> + <li><a href="https://wiki.lineageos.org/devices/w7">Lg L90 - w7</a> - <em>maintainer: mobiusm</em></li> + </ul>harryyoudChanges since August 8th 2017Summer Survey2017-08-18T00:00:00+00:002017-08-18T00:00:00+00:00/Summer-Survey<p>While the project’s development proceeds, we think it’s important to take a moment and get some feedback from our users. + It has been decided to create a simple survey, instead of collecting on-device metrics, to help us improve LineageOS + in the right direction without wasting resources on things that our userbase is not interested in.</p> + + <p>The survey is really simple and we won’t collect any sensitive information.</p> + + <p>We kindly ask you to be respectful of everyone: be honest and don’t take the survey more than one time, each one’s opinion is equally important.</p> + + <p>The survey will be closed in two weeks’ time.</p> + + <h3 id="topics">Topics</h3> + + <p>We’ve divided this survey into 5 topics:</p> + + <ol> + <li>Apps</li> + <li>Wallpapers</li> + <li>Features</li> + <li>Infrastructure</li> + <li>Public relations</li> + </ol> + + <p>You can take the survey here below, and you can share it to your friends using this link: <a href="https://goo.gl/forms/4phLuXIWHUr3s4Qf2">goo.gl/forms/4phLuXIWHUr3s4Qf2</a></p> + + <p>We’re looking forward to see your answers!</p> + + <p>The LineageOS team</p> + + <h3 id="survey">Survey</h3> + + <html> + <iframe src="https://docs.google.com/forms/d/e/1FAIpQLSdb1IiHmxwVh08emdMh5Nc9pi8oIhc-Wp49Sr5JdFRzoDMPmA/viewform?embedded=true" width="100%" height="700" frameborder="0" marginheight="0" marginwidth="0"><a href="https://goo.gl/forms/4phLuXIWHUr3s4Qf2">Loading...</a></iframe> + </html>jrizzoliIt's your timeChangelog 13 - Wonderful Webviews, Pedantic Permissions and Disappearing Dates2017-08-08T00:00:00+00:002017-08-08T00:00:00+00:00/Changelog-13<h2 id="welcome-to-lineageos-regularly-irregular-review-where-we-go-over-changes-in-the-last-few-weeks">Welcome to LineageOS’ regularly irregular review, where we go over changes in the last few weeks</h2> + + <h3 id="major-changes-since-july-3rd">Major changes since July 3rd</h3> + + <ul> + <li>Even more Jelly improvements + <ul> + <li>Search on page has been added</li> + <li>No longer saves form data when in incognito mode</li> + <li>Changed to Google as the default search engine, home page and suggestion provider. This can still be changed in Settings, just like before</li> + <li>Added the Yandex search engine</li> + <li>Media can now be displayed in full screen mode</li> + </ul> + </li> + <li>Merged July security patches for both LineageOS 14.1 and 13.0</li> + <li>Merged August security patches for LineageOS 14.1</li> + <li>Sensitive number improvements + <ul> + <li>Countries with multiple MCCs are now supported properly (including GB, US, and India)</li> + <li>Added multiple 116 numbers in various European countries</li> + <li>Added sensitive numbers for Greece</li> + </ul> + </li> + <li>Date can now be hidden on the LockClock widget</li> + <li>Updated Chromium Webview to version 60 (60.0.3112.78)</li> + <li>A number of deadlocks/freezes/crashes in AppOps have been fixed</li> + <li>The updater app now warns in case mobile data is about to be used for a download</li> + <li>“Panic detection” mode is now enabled. Pressing the back button several times in quick succession will return you to the home screen</li> + <li>Fixed a number of crashes and removed a screen for single SIM devices in the Setup Wizard</li> + <li>Eleven (Music app), Snap, and Gallery are now properly granted external storage permissions</li> + <li>On dual-SIM devices, the preferred SIM for SMS is no longer reset on reboot</li> + </ul> + + <h3 id="infrastructure">Infrastructure</h3> + + <ul> + <li>CVE tracker improvements + <ul> + <li>Added a dark theme - makes it easier on the eyes!</li> + <li>Added a new landing page to answer some FAQs</li> + </ul> + </li> + </ul> + + <h3 id="build-roster">Build roster</h3> + + <p>Added 14.1 devices</p> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/nx512j">nubia Z9 Max - nx512j</a> - <em>maintainer: Bauuuuu</em></li> + <li><a href="https://wiki.lineageos.org/devices/mido">Xiaomi Redmi Note 4 - mido</a> - <em>maintainer: TheScarastic</em></li> + </ul> + + <p>Readded 14.1 devices</p> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/athene">Motorola Moto G4 - athene</a> - <em>maintainers: vache, shr3ps, rahulsnair</em></li> + <li><a href="https://wiki.lineageos.org/devices/d800">LG G2 (AT&amp;T) - d800</a> - <em>maintainer: Kapricornus</em></li> + <li><a href="https://wiki.lineageos.org/devices/d801">LG G2 (T-Mobile) - d801</a> - <em>maintainer: Kapricornus</em></li> + <li><a href="https://wiki.lineageos.org/devices/d802">LG G2 (International) - d802</a> - <em>maintainer: Kapricornus</em></li> + <li><a href="https://wiki.lineageos.org/devices/d803">LG G2 (Canadian) - d803</a> - <em>maintainer: Kapricornus</em></li> + </ul> + + <p>Suspended 14.1 devices</p> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/lt03lte">Samsung Galaxy Note 10.1 2014 (LTE) - lt03lte</a> + <ul> + <li>Withdrawn due to neglected CVE patches</li> + </ul> + </li> + </ul>harryyoudChanges since July 3rd 2017Changelog 12 - Jam-packed Jelly, Terrific Tiles, and Updated Updater2017-07-03T00:00:00+00:002017-07-03T00:00:00+00:00/Changelog-12<h2 id="welcome-to-lineageos-biweekly-review-where-we-go-over-changes-in-the-last-couple-of-weeks">Welcome to LineageOS’ biweekly review, where we go over changes in the last couple of weeks</h2> + + <h3 id="major-changes-since-june-12th">Major changes since June 12th</h3> + + <ul> + <li>Jelly has been vastly improved: + <ul> + <li>When a download is completed, a notification is now shown, and a scan for new files is now run</li> + <li>Links in incognito tabs are now opened in new incognito tabs</li> + <li>A shortcut can now be created directly to a new incognito tab</li> + <li>Form data (e.g. usernames, passwords are not saved) is now saved by default</li> + <li>Do not track option can now be enabled</li> + <li>Search suggestions are now available, including: + <ul> + <li>Baidu</li> + <li>Bing</li> + <li>DuckDuckGo (default)</li> + <li>Google</li> + <li>Yahoo</li> + <li>None</li> + </ul> + </li> + <li>Links can now be opened in external apps (e.g. YouTube links can be opened in the YouTube app)</li> + <li><a href="https://android-developers.googleblog.com/2017/06/whats-new-in-webview-security.html">Safe browsing</a> is now supported</li> + </ul> + </li> + <li>The <a href="https://www.lineageos.org/Changelog-10/">sensitive numbers list</a> has been expanded: + <ul> + <li>Brazil, France, Portugal, and the UK have new numbers included</li> + <li>Sensitive numbers for Greece, Taiwan, and Ukraine have been added</li> + <li>Country detection for the Czech Republic has been fixed</li> + </ul> + </li> + <li>A longstanding issue affecting tap-to-pay on several devices has now been fixed</li> + <li>Media codecs have been updated</li> + <li>A timeout for the ‘long press power button for torch’ option can now be set. You can find this option in Settings &gt; Buttons &gt; Automatically turn torch off</li> + <li>The clock app can now set a system profile when an alarm triggers</li> + <li>The Location QS tile can now be toggled without fully expanding the status bar</li> + <li>The Battery Saver QS tile has been removed, as this functionality is already available in the main Battery QS tile</li> + <li>Custom tiles have now been integrated into the framework to allow for deeper integration with the system, and mimic behavior from older versions + <ul> + <li>In the next few weeks, keep an eye out for new tiles being forward ported</li> + </ul> + </li> + <li>The updater app now prevents major version upgrades (e.g. 13.0 to 14.1) from being automatically installed, in order to prevent the situation where the user doesn’t notice the change and ends up with incompatible add-ons</li> + </ul> + + <h3 id="infrastructure">Infrastructure</h3> + + <ul> + <li>The <a href="https://cve.lineageos.org/">CVE tracker</a> has seen a major redesign, and completion percentage calculation has been improved</li> + <li>The <a href="https://download.lineageos.org/">downloads page</a> now shows <code class="highlighter-rouge">sha256</code> and <code class="highlighter-rouge">sha1</code> checksums instead of <code class="highlighter-rouge">md5</code></li> + <li>Weather providers are now available on the <a href="https://download.lineageos.org/extras">extras page</a></li> + </ul> + + <h3 id="build-roster">Build roster</h3> + + <p>Added 14.1 devices</p> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/foster">Nvidia Shield Android TV - foster</a> - <em>maintainer: webgeek1234</em></li> + <li><a href="https://wiki.lineageos.org/devices/shieldtablet">Nvidia Shield Tablet - shieldtablet</a> - <em>maintainer: webgeek1234</em> + <ul> + <li>Promoted from 13.0</li> + </ul> + </li> + </ul> + + <p>Readded 14.1 devices</p> + + <ul> + <li>LG G5 (<a href="https://wiki.lineageos.org/devices/h830">T-Mobile - h830</a> and <a href="https://wiki.lineageos.org/devices/h850">International - h850</a>) - <em>maintainer: rashed</em></li> + <li>LG V20 (<a href="https://wiki.lineageos.org/devices/h918">T-Mobile - h918</a> and <a href="https://wiki.lineageos.org/devices/us996">GSM Unlocked - us996</a>) - <em>maintainers: rashed, Albinoman887</em></li> + <li><a href="https://wiki.lineageos.org/devices/v521">LG G Pad X (T-Mobile) - v521</a> - <em>maintainer: rashed</em></li> + <li><a href="https://wiki.lineageos.org/devices/ham">ZUK Z1 - ham</a> - <em>maintainers: ashwinr64, raymanfx, shenki</em></li> + </ul> + + <p>Suspended 14.1 devices</p> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/w7">LG L90 - w7</a> + <ul> + <li>No active maintainer owns the device</li> + </ul> + </li> + <li><a href="https://wiki.lineageos.org/devices/athene">Motorola Moto G4 - athene</a> + <ul> + <li>Investigating boot issues</li> + </ul> + </li> + </ul>javelinanddartChanges since June 12th 2017Changelog 11 - June ASB, Chromium 59 and Tasks Lock2017-06-12T00:00:00+00:002017-06-12T00:00:00+00:00/Changelog-11<h2 id="welcome-to-lineageos-biweekly-review-where-we-go-over-changes-in-the-last-couple-of-weeks">Welcome to LineageOS’ biweekly review, where we go over changes in the last couple of weeks</h2> + + <h3 id="major-changes-since-the-31st-may">Major changes since the 31st May</h3> + + <ul> + <li><a href="https://source.android.com/security/bulletin/2017-06-01">June security patches</a> have been merged (AOSP tag <em>android-7.1.2_r17</em>). All builds starting June 6th will include these. Users that have a vendor.img (mostly Google devices) will be presented with a notice to update this on first boot</li> + <li>You can now <a href="https://review.lineageos.org/#/q/topic:taskLock">prevent tasks from being removed when clearing all apps</a> in the recent apps view</li> + <li>Jelly now supports HTTP authentication</li> + <li>System WebView has been updated to <a href="https://review.lineageos.org/#/q/topic:chromium-59">Chromium 59</a></li> + <li>The <a href="https://www.lineageos.org/Changelog-10/">sensitive numbers list</a> has been expanded, and some new countries are now included (e.g. Canada, Czech Republic, Germany, Greece, India, Israel, Netherlands, Serbia and Spain)</li> + <li>You can now disable lock screen album background when playing music</li> + <li>Double tap to sleep now works on the lock screen too</li> + <li>Terminal now properly recognizes CTRL and ALT keys</li> + </ul> + + <h3 id="build-roster">Build roster</h3> + + <p>Added 14.1 devices</p> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/flounder">Google Nexus 9 (WiFi) - flounder</a> - <em>maintainers: hashbang173, razorloves</em></li> + <li><a href="https://wiki.lineageos.org/devices/flounder_lte">Google Nexus 9 (LTE) - flounder_lte</a> - <em>maintainers: hashbang173, razorloves</em></li> + <li><a href="https://wiki.lineageos.org/devices/libra">Xiaomi Mi 4c - libra</a> - <em>maintainer: Demon000</em></li> + <li><a href="https://wiki.lineageos.org/devices/capricorn">Xiaomi Mi 5s - capricorn</a> - <em>maintainer: LuK1337</em></li> + <li><a href="https://wiki.lineageos.org/devices/lithium">Xiaomi Mi MIX - lithium</a> - <em>maintainer: balika011</em></li> + </ul> + + <p>Changed 13.0 devices</p> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/maserati">Motorola Droid 4 - maserati</a> - Promoted to 14.1</li> + <li><a href="https://wiki.lineageos.org/devices/targa">Motorola Droid Bionic - targa</a> - Promoted to 14.1</li> + <li><a href="https://wiki.lineageos.org/devices/spyder">Motorola Droid RAZR/RAZR MAXX (CDMA) - spyder</a> - Promoted to 14.1</li> + <li><a href="https://wiki.lineageos.org/devices/umts_spyder">Motorola Droid RAZR/RAZR MAXX (GSM) - umts_spyder</a> - Promoted to 14.1</li> + </ul> + + <p>Suspended 14.1 devices</p> + + <ul> + <li><a href="https://wiki.lineageos.org/devices/tenshi">BQ Aquaris U Plus - tenshi</a> + <ul> + <li>Rework in progress</li> + </ul> + </li> + <li><a href="https://wiki.lineageos.org/devices/v521">LG G Pad X (T-Mobile) - v521</a> + <ul> + <li>Suspended until wiki instructions are updated</li> + </ul> + </li> + <li>LG G2 (<a href="https://wiki.lineageos.org/devices/d800">AT&amp;T</a>, <a href="https://wiki.lineageos.org/devices/d801">T-Mobile</a>, <a href="https://wiki.lineageos.org/devices/d803">Canadian</a> and <a href="https://wiki.lineageos.org/devices/d802">International</a>) + <ul> + <li>No longer actively maintained</li> + </ul> + </li> + <li>LG G5 (<a href="https://wiki.lineageos.org/devices/h830">T-Mobile</a> and <a href="https://wiki.lineageos.org/devices/h850">International</a>) + <ul> + <li>Suspended until wiki instructions are updated</li> + </ul> + </li> + <li>LG V20 (<a href="https://wiki.lineageos.org/devices/h910">AT&amp;T</a>, <a href="https://wiki.lineageos.org/devices/h918">T-Mobile</a>, <a href="https://wiki.lineageos.org/devices/ls997">Sprint</a>, <a href="https://wiki.lineageos.org/devices/vs995">Verizon</a> and <a href="https://wiki.lineageos.org/devices/us996">GSM Unlocked</a>) + <ul> + <li>Suspended until wiki instructions are updated</li> + </ul> + </li> + </ul> + + <p>You can <a href="http://wiki.lineageos.org/contributing.html">contribute</a> and help the maintainer with updating the wiki instructions by submitting a commit like <a href="https://review.lineageos.org/#/c/175965/">this one</a> for the device to get builds re-enabled.</p>TimSchumiChanges since 31st May 2017SafetyNet2017-06-05T00:00:00+00:002017-06-05T00:00:00+00:00/Safetynet<h2 id="safetynet-what-it-is-and-how-it-affects-you">SafetyNet: What it is, and how it affects you</h2> + + <h3 id="what-is-safetynet">What is SafetyNet?</h3> + <p><a href="https://developer.android.com/training/safetynet/index.html">SafetyNet</a> is an API that was developed by Google in order to detect whether or not a device is in a known-good state. On older devices, this check is more lenient in order to maintain compatibility.</p> + + <h3 id="how-does-this-affect-you">How does this affect you?</h3> + <p>App developers can choose to enable a toggle in the app developer console to hide their app on the Play Store if a device doesn’t pass SafetyNet tests, or can choose to check the SafetyNet status of a device to disable certain functionality. Notable examples would be Netflix, which is hidden on the Play Store, and Android Pay, which checks SafetyNet each time the app is used. Devices running Lineage may have a smaller selection of usable apps in the Play Store as a result of these checks.</p> + + <h3 id="what-are-we-going-to-do-about-it">What are we going to do about it?</h3> + <p>Our official stance is that <strong>we will not intentionally circumvent an integrity check that Google has put in place for app developers</strong>. Any action taken to bypass SafetyNet risks a backlash against all custom OSes, and could cause Google to block them entirely from the Play Store. We have always taken the approach that our customizations should not change the underlying Android architecture in ways that developers cannot predict.</p> + + <h3 id="what-can-you-do-about-it">What can you do about it?</h3> + <p>For apps that are no longer visible in the Play Store, you can pursue alternative methods of app installation. For apps that inhibit functionality, you can always install your device’s stock software and relock your bootloader.</p> + + <p>The LineageOS Team</p>javelinanddartWhat it is, and how it affects you diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_londoner.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_londoner.xml new file mode 100644 index 0000000..1fcc95b --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_londoner.xml @@ -0,0 +1,1742 @@ + +Londonisthttp://londonist.com/A website about LondonWed, 28 Jun 2017 09:12:41 -0000en-UShourly1Make The Most Of London's Offerings With Chiphttp://londonist.com/london/make-the-most-of-london-s-offerings-with-chiphttp://londonist.com/london/make-the-most-of-london-s-offerings-with-chip#commentsWed, 28 Jun 2017 09:39:37 +0100http://londonist.com/?p=524e62c38de6420122c7 +

    This is a sponsored article on behalf of Chip.

    +
    +

    There is no shortage of cool and quirky things to do in London — some of them, however, can be fairly pricey. That's where Chip comes in. It's a new app that can help you save some cash without you even realising you're doing it.

    +
    +

    With pints rarely less than a fiver, and transport fares rising every year, it's no mean feat for Londoners to end up with savings at the end of the month.

    +

    What if you woke up after a great night out with the knowledge that you'd paid for it all using savings? Sounds like a guilt-free and regret-free way to make the most of London.

    +

    Chip is the answer to your saving woes — helping you save for that special something.

    +
    +

    Chip coordinates with your current account, its intelligent algorithms doing the work for you by looking at your average spending habits to calculate how much you can afford to save — saves are calculated every 4-7 days.

    +
    +

    It then puts this money away for you automatically — before you know it, your stash could be pretty substantial. Little and often means you don't even notice you're putting money to one side.

    +

    Your Chip account is an instant access savings account, held in your name at Barclays — it's all regulated by the Financial Conducts Authority (FCA), so you can be safe in the knowledge that all is legit and protected.

    +
    +

    You'll still have control of your savings though — press pause at any moment, or choose to save more or less every few days. If you manage to get friends to sign up, you'll get 1% interest for each person, up to a maximum of 5%.

    +

    Simply click 'withdraw' to transfer the money from your Chip account to your current account — it will be in there the same day if you withdraw before 2pm. For people whose income is irregular, Chip is perfect — nothing is too complex for the app's algorithms.

    +

    Saving doesn't get easier than this — download Chip on Apple and Android now, and make the most of living in the best city in the world.

    +

    Because saving is so much harder (and more important) in London, Chip is currently offering all Londoners an exclusive starting interest rate of 2% when you enter the promo code LDNSAVES

    +
    +]]>
    Things To Do Today In London: Wednesday 28 June 2017http://londonist.com/london/things-to-do/things-to-do-today-in-london-wednesday-28-june-2017http://londonist.com/london/things-to-do/things-to-do-today-in-london-wednesday-28-june-2017#commentsTue, 27 Jun 2017 19:00:42 +0100http://londonist.com/?p=0bbf6172719dd64c3b8e +

    Things to do in London today is sponsored by CommuterClub.

    +
    +
    Barefoot Bowls at Festibowl 2017 +
    +
    +

    What we're reading

    +
      +
    • Grenfell Tower fundraiser axed when venue objected to "crap" trap and bashment music line-up.
    • +
    • 60-year-old pays £1billion for terraced property on Downing Street.
    • +
    • IanVisits relays the story of the day a plane landed in the middle of Canary Wharf.
    • +
    +

    Things to do

    +

    HEATHROW EXRESS: To celebrate the milestone of reaching 100 million passengers, Heathrow Express has been photographing passengers and staff travelling on its trains, in collaboration with travel blogger and photographer Dave Burt. HExibition is a pop-up interactive photography exhibition to pay tribute to the diverse travellers across the UK. Paddington station, free, just turn up, 28 June-4 July

    +

    UNDERGROUND MEMORABILIA: Peruse original vintage posters from the London Underground and around the world at Antikbar's gallery preview. Checking out what's on offer in advance of their auction on Saturday 1 July will give you time to find a perfect spot on your walls for a little piece of history. AntikBar (Chelsea), £5, just turn up, 10am-6pm

    +

    BRITISH BOWLS: Lawn bowls might not usually scream "festival atmosphere", but Festibowl 2017 is changing that perception. Barefoot Bowls is the traditional British game but with a modern twist. Chuck a couple of balls around while chilling to DJs, with street food and cocktails. Finsbury Square, £25, book ahead, until 30 June

    +

    DNA REPAIR: Spend your lunch hour feeding your curiosity. Geneticist Charlotte Mykura speaks on how the DNA in our cells is broken down tens of thousands of times a day, and how these breaks are repaired to prevent the cells from dying or becoming cancerous. Wellcome Collection, free, just turn up, 1pm-2pm

    +

    TROUBLEMAKERS: The Society of Genealogists is revealing the stories behind some of Bishopsgate Institute's archives on radicals and troublemakers who dared to challenge the status quo. Bishopsgate Institute, £8, book ahead,2pm-3pm

    +
    +
    Celebrating 100 million passengers on the Heathrow Express +
    +
    +

    EGYPTIAN SECRETS: Go behind the scenes at the Petrie Museum to learn about their collection of letters, drawings and tales on papyrus. Find out the fascinating process of making papyrus from the stem of the papyrus plant, and as these ancient and fragile documents age, see how researchers battle to conserve the delicate material. Petrie Museum, free, just turn up, 6pm-8pm

    +

    LGBTQ+ SASS:Take yourself off to the Science Museum for an LGBT-inspired evening of fabulousness, tying in with Pride in London. Drag kings and queens will be sashaying around the museum while you explore animal sex habits, sex counselling, the history of sexual orientation, walking like your opposite gender, and more. Age 18+. Science Museum, free, just turn up, 6.45pm-10pm

    +

    INSIDE CLERKENWELL: Photographers can catch a different glimpse of London to the rest of us — but how do they do it? Olivia Arthur and Mark Power discuss their most recent project, a photographic portrait of contemporary Clerkenwell. Museum of London, £10, book ahead, 7pm-8.30pm

    +

    CAMP FIRE STORIES:Forget it's only Wednesday at Skip Garden's evening of music and fresh veggie food around the camp fire, which raises funds for The Starfish Project. Ticket price includes entrance, food and live music. Skip Gardens, £15, book ahead, 7pm-11pm

    +

    BREWERY BRAWL: Who doesn't love a good local craft beer? But which is best? Five Points brewery in Hackney pit their top three beers against Orbit Beers of Walworth to see who will come out on top. Tickets include six beers and snacks. Jackdaw and Star, £10, book ahead, 8pm-10pm

    +
    +

    Sponsor Message

    +

    Fancy saving some money on travel? Meet CommuterClub

    +
    +

    Want to get away from the daily drudge and the expense of commuting? You could save up to £300 on travel to put towards an epic summer holiday when you join CommuterClub. These guys give you the value of a yearly travelcard — much cheaper than the monthly alternative — but let you pay for it in 11 instalments. This means you get a whole month of free travel.

    +

    When you join CommuterClub you’ll even get your hands on a Gold Card, giving you 1/3 off National Rail travel, and 2-for-1 on plenty of London attractions. Better still, Londonist readers can get £20 off when they join – the summer savings just keep on coming. This is the ultimate way to pay for travel – flexible, manageable, and incredibly good value. Find out how much you could save here.

    +

    Representative example: Credit limit: £1,200. Interest: £67 Total payable: £1,267 in 11 monthly instalments of £115. Representative 10.6% APR. Interest rate: 5.6% pa (variable)

    +
    +

    Art review: power politics

    +
    +
    Copyright kennardphilipps
    +
    +

    Duo kennardphillipps are renowned for the famous Tony Blair selfie in front of an explosion. This small exhibition sees them attacking Theresa May, David Cameron, Trump and the finance industry in collages made from newspapers and share prices. It’s a no-holds-barred attack on the current political system. May Not at Dadiani Fine Art, 30 Cork Street, W1S 3NG, free. Until 6 July ★★★☆☆ (Tuesday-Saturday)

    +

    Theatre review: austerity folks

    +
    +

    The legend of Richard the Lionheart's dubious rescue from captivity by his minstrel Blondel is the subject of this rock musical by Tim Rice and Stephen Oliver. With its youthful cast, it's well sung, and is funny in a pantomime sort of way. It's a pity that Blondel comes across less as a rock star and more of a folk singer — it could do with a throbbing beat and a few guitar riffs to keep the action moving. But you'll find a few wry observations about austerity which will seem as relevant as when the show first premiered in 1983. Blondel, Union Theatre, 229 Union Street, SE1 0LR, £22.50-£25. Until 15 July 2017 ★★★☆☆ (Tuesday to Sunday) Paul Ewing

    +

    Food review: street food stalwarts overlooking the docks

    +
    +

    On arrival at Street Feast's Giant Robot, we're disappointed to learn we won't be dining inside an actual giant robot. But that disappointment is short-lived as we suss out the food options. Steamed buns, tapas, fried chicken and lobster rolls are on offer from some stalwarts of the London street food scene — and that's before we get to the bar. If you're suffering from the night before, Thunderbird's buffalo chicken will sort you right out, before you get started again on the peach bellinis. It's a relaxed, warehouse-style space, with tables inside and outside on the balcony overlooking the docks, the ideal place to get a group together for brunch. Before we know it, we've wiled away five hours of our Saturday here, and leave feeling full and satisfied. Extra hungry? Head down on a Sunday for Giant Sundays — supersized portion sizes for the same price. Open 11am-late everyday. Giant Robot, Crossrail Place, Canary Wharf, E14 5AR ★★★★☆ Laura Reynolds

    +

    Good cause for the day

    +
    +

    Get your team together for costumed capers at Dodgeballdayer on 5 August in Wimbledon. Dodge, duck, dip and dive to raise money for Mencap at the UK's largest fancy dress dodgeball event. As well as a day full of dodging, there will be live DJs, a raffle and an auction with some top-notch goodies. There will also be food and drink stalls to keep you going throughout the day. Wimbledon Rugby Football Club, £30 per person, book ahead, 1pm-1am

    +

    +

    Funzing

    +

    Fun things to do with our friends and sponsor Funzing.

    +LDN Talks @ Night | The Science of Psychedelics
    +
    +
    Scientific research is resuming on how psychedelics affect the weirder aspects of human consciousness. This talk from Dr David Luke engages in current study into pyschedelics and their historical use in shamanic rituals. Be prepared, you might leave with more questions than answers. Get tickets +
    +
    +
    Talk: Neuroscience of Powerful Habits
    +
    +
    Every January you do the same thing. You make a New Year's resolution to lose weight, be thriftier, quit smoking or possibly even to start exercising. Yet how many of us find ourselves in the exact spot we started in once the month is up? This talk by Dr Gabija Toleikyte, explains why the brain resists changing habits of a lifetime. She'll also explain how to create long lasting change, by working with your brain rather than against it. Get tickets +
    +
    +
    LDN Talks@Night |Insights of a War Crime Investigator
    +
    +
    What would you say face-to-face to Saddam Hussein? How would you feel digging up the mass graves of Kosovo? Jonathan Tait-Harris will share experiences from his jobs as a policeman, soldier, war-crimes investigator and adviser to UK and Iraqi governments. £10 Get tickets +
    +
    +
    +
    +]]>
    Getting Slippery With Strangers On A Plastic Sheet: Londonist Goes To Liquid Lovehttp://londonist.com/london/features/getting-slippery-with-strangers-on-a-plastic-sheet-londonist-goes-to-liquid-lovehttp://londonist.com/london/features/getting-slippery-with-strangers-on-a-plastic-sheet-londonist-goes-to-liquid-love#commentsTue, 27 Jun 2017 16:08:09 +0100http://londonist.com/?p=ed185b6be243a864113b +

    "How can there be no penetration?" asks Bae, the night before Liquid Love, when I will roll around on a plastic sheet with strangers. "If some guy has an erection, he's going to want to put it in you!" Bae has been lying there thinking about this, and I do not know what to say to reassure him. The truth is, I am dreading it, but I feign nonchalance in case Bae says, "don’t go then!" Backing out is not an option. The unbearable awkwardness of it is precisely what attracts me. Last summer I went to the beach at Brexit-on-Sea, at the height of the burkini-ban, wearing a burkini and a backpack. Uncomfortable is my catnip.

    +

    All participants must take a plus-one, but instead of Bae, I've invited Amber, a female friend who is actually looking forward to it. Amber and I discuss whether we'll get naked, agreeing to bring bikinis, then see what everyone else is doing. I have an overwhelming anxiety that I'll catch a skin condition. Amber is afraid there will be fat people. "I want oil on my boobs, but what if take off my bikini top and ugly people want to rub against me?" I tell Amber she doesn’t owe anyone a boob-rub. She says, "I know, I just don't like fat people."

    +
    +
    I attempt to look relaxed for a photo but cannot control the veins pulsing in my forehead.
    +
    +

    As Amber drives towards the tower block in east London where Liquid Love is held, she tells me she fears our drinks will be spiked. It is a week after the Grenfell Tower fire, and I am more afraid the building will burn down, but I reassure Amber that I know a girl who's been to Liquid Love three times. I do not tell Amber that the girl looks like a Victoria's Secret model who advertises Alpen in commercials set in Swiss Alps. I do not want to share my sense of foreboding that everyone will look like a supermodel, and I will look lardy and lumpy and possibly be turned away.

    +

    We time it to arrive at the last minute, as I do not do small talk. Nor does Amber. "Did you bring any cake?" I ask, as we run around the building looking for the door. We are panicking now, afraid we won't be let in. The email was clearly worded — latecomers will be turned away, and traffic woes mean we are pushing our luck. "No, I just brought some food for myself," says Amber, "I’m not sharing it!" I have bunged some grapes in my bag, but neither of us want to get involved in the post-session food sharing, suggested in the email. We are terrible, selfish, anti-social people. That is why we're friends.

    +

    Eyal the organiser answers the door. He's friendly and entirely unthreatening, and suddenly I'm not as petrified as I was. His flat smells of incense and Amber later tells me she's surprised he didn't tidy up. We sit fully clothed in a circle while Eyal talks us through the rules. They are pretty much no wanking, no penetration and no standing up on the sheet once it's oily. There's a two-taps-means-no policy, if anyone's wandering hands are unwelcome. Eyal, who gets naked but doesn’t get involved, has been running Liquid Love once or twice a month for the last two years. His neighbours are yet to take part.

    +
    +
    Eyal warms the olive oil for the session.
    +
    +

    At the end of the talk, we're invited to take off our clothes, as many or as few as we like. Suddenly there are bare ballsacks in close proximity to me. I have never seen anyone take their clothes off so quickly. I use the bathroom to stall for time, waiting to see what everyone else does before I decide whether to wear my bikini. When I come out, I'm relieved to see a woman with her knickers on. I point her out to Amber like I’ve spotted a De Beers diamond ring at a boot fair.

    +

    We stand in a circle and Eyal tells us to look at the various body parts of everyone else, starting from the feet up. When he gets to genitals, Amber whispers, "I feel like we cheated!" Amber is wearing black lacy knickers and I'm in some stripy bikini bottoms. The sort of swimwear Bridget "Big Pants" Jones might wear to the beach. Aside from one other woman in her knickers, everyone else is naked. I feel an expat in Spain, eating egg and chips (telling the BBC why I voted Brexit).

    +

    I opt for a blindfold and after oil has been poured on me, I lie on my front, trying to convince myself that this is no different to going for a massage, while berating myself for lying there like I'm in rigor mortis. Bodies slide against me and I'm pulled into the centre of the room where it feels like that scene in Ghost where Patrick Swayze and Demi Moore do some pottery. Only, I am the pottery.

    +

    The Liquid Love blurb asked us to be "open to both touching as well as being touched" but I cannot do it. I feel selfish and rebuke myself for being uptight and English, but when I get into the car with Amber after, she tells me she too lay there in a blindfold, unable to look at anyone or touch them back. Amber has had sex at Torture Garden. Amber is not English. I wonder if I have been too hard on myself. Maybe my awkwardness is not due to being uptight and English. Maybe it's because this is fucking mental.

    +
    +
    I get oiled up, ready for an afternoon of anxiety.
    +
    +

    The iPod is playing a song off Austin Powers and I can feel a flaccid cock on my foot. Bae need not have worried about anyone trying to penetrate me. I am more rigid than any penis in this room.

    +

    I have spent the majority of the session on my stomach, my breasts inaccessible beneath me. Turning over, I feel, would be crossing the line, taking this beyond the legit massage I'm trying so hard to kid myself this is. But my bladder tells me my position is not sustainable, and several people have slid across the back of my legs, their weight pressing my knee-caps into the floor. I can't take much more of this or I'll be walking like I've had a visit from some thugs.

    +

    I do not want to lift my blindfold to make my way to the bathroom, but if I don't go now, olive oil won't be the only yellow liquid people are rolling around in. As I sit on the toilet, I pick someone's pube off my stomach and wonder what the fuck I'm doing letting randoms rub against me, when I've got a beautiful boyfriend at home. As it happens, we split up a few days later (for unrelated reasons), and I wonder if I'd have experienced it differently, if I'd been single.

    +

    We finish up with a "Love Train" sitting on the floor in two lines. Liquid Love facilitators Jessica and Dione each sit at the end of a line, touching the back of the person in front of them. The idea is that each person copies what they feel, replicating it on the person in front of them. I fail to grasp this, and sit there for some time waiting to start. As I am not touching the man in front of me, he is not touching anyone else, so the Love Train ends at me. Amber is sitting behind me, stroking my back. I wonder why she is doing this and politely pretend not to notice.

    +
    +
    NOT WEIRD AT ALL.
    +
    +

    Showered and dressed, I ask Dione how he and girlfriend Jessica feel about seeing each other with other people. "It strengthens our relationship," says Dione, stroking a naked girl next to him. "We're taught to believe jealousy is a sign that someone cares about you," he continues, as his cock rises, "but actually it's not." So events like this don’t jeopardise your relationship? "On the contrary!" contributes Eyal, "we have relationships starting at these sessions!" He tells me a long-term lesbian couple came to an event, and left in a love triangle with a guy who's now a permanent part of their relationship.

    +

    As we walk to the car, Amber catches sight of blood stains on my sundress and says, "oh my God, are you bleeding?!" I realise I am. Someone's toenail caught my calf at the end of the session, but I hadn't realised it had ripped my skin. My anxiety levels bubbling over, someone sensible spends the next 12 hours assuring me I can't have caught HIV.

    +

    My aversion to forced fun has not been altered by attending the session, but if you're up for getting slippery with strangers, Liquid Love is certainly somewhere to do it.

    +

    Samantha Rea can be found tweeting here.

    +
    +]]>
    One-Night Extravaganza Of Art Takes Over East Londonhttp://londonist.com/london/art-and-photography/one-night-of-art-takes-over-east-londonhttp://londonist.com/london/art-and-photography/one-night-of-art-takes-over-east-london#commentsTue, 27 Jun 2017 15:20:00 +0100http://londonist.com/?p=16c9a150da861a37c1ed +
    +
    Whitechapel Gallery will be open late — a chance to catch their current Benedict Drew exhibition. Courtesy of the artist and Matt's Gallery
    +
    +

    Gallery lates are nothing revolutionary, but Art Night goes on into the wee small hours. For 12 hours from 6pm on 1 July, east London will be sprinkled liberally with all things art; galleries keep their doors open, venues host special installations, and everyone has an artsy ball.

    +

    One of our top tips? Jake and Dinos Chapman — known for their macabre, often disturbing, works — will be haunting a warehouse in the docks, with a show starring creepy mannequins (look out for eyeballs where they shouldn't be).

    +
    +
    We'd love to set foot in the bascule chamber of Tower Bridge for a meditative experience. A great venue. © Steve Stills
    +
    +

    There's an Aleister Crowley-themed video installation in the Masonic temple at Andaz London (a must visit if you've not made it here during Open House), a silent disco in Broadgate Square (you're invited to join in) — or treat your eardrums to a night of sonic experimentation at Village Underground.

    +

    Bars, DJs, live music, and historic tours are the icing on the cake.

    +
    +
    The Chapman brothers are know for their creepy kooky works and they'll have art across two venues. Courtesy of the artists and White Cube
    +
    +

    Last year our biggest gripe was the fact half the exhibitions were ticketed; this time there seems to be less of this going on, though there may be still some queuing. One ticketed work worth noting is a meditative light and sound installation in the bascule chamber of Tower Bridge. It's fully booked but there is a waitlist. Sign up, we say.

    +
    +
    This masonic temple will play host to a video work. Courtesy Andaz London Liverpool Street
    +
    +

    Local galleries are staying up too, so if you haven't caught the latest exhibition at, say, Whitechapel Gallery or Beers London, stock up on coffee, and call in.

    +
    +
    Do Ho Suh wowed with his recent exhibition at Victoria Miro gallery, so let's see what he can do for Art Night
    +
    +

    With so many participants, it's going to be nigh-on impossible to see it all, so plan and book ahead using the online map and download a visitors guide. Otherwise, there are suggested trails to help you out, or there'll be plenty you can get involved with if you just turn up.

    +

    Art Night is on across various venues in east London on 1 July, from 6pm onwards. Some events continue till 2 July.

    +
    +]]>
    Artist's Model Of A Doomed West End Bookshophttp://londonist.com/london/books-and-poetry/an-online-shrine-to-foyleshttp://londonist.com/london/books-and-poetry/an-online-shrine-to-foyles#commentsTue, 27 Jun 2017 13:40:38 +0100http://londonist.com/?p=9381ddfffbd5cca1778e +

    While the address 113-119 Charing Cross Road might not mean much to you, the bookshop that lived there from 1929 until 2014, may well do.

    +
    +

    Foyles lives on as a business a few doors down, yet the building that was its flagship for over 80 years is fated to fall at the feet of developers.

    +

    "Soho is currently being erased!" says artist Sebastian Harding. He make paper models of 'unremarkable' buildings, in order to underline their historical and architectural significance.

    +

    The material, in this case, is particularly poignant — representing, if you like, both the ephemeral nature of the Charing Cross building, and the fragile state that print finds itself in.

    +
    +

    Even from the photos, you can see Harding's work doing its job; able to float over the former Foyles emporium, you can pick out its individual flourishes: the dainty framing of the windows; a cluster of rusty coloured chimney pots.

    +

    By no stretch the most striking, elegant or important building in the area, it exudes a simple charm that the Ilona House development will struggle to follow.

    +
    +

    The paper model is one part of the project; Harding has released a kind of online shrine to 113-119 Charing Cross Road — which features memories from former employees, including Steve Lake, who recalls one particular 'eccentric' customer:

    +

    There was one elderly guy who used to come in with a walking stick, with a dentist's mirror on the end of the stick. He'd use it to look up all the skirts of women. He had to be chucked out a few times.

    +
    +
    Steve Lake outside the 'receiving' bay of the old Foyles store.
    +
    +

    Steve goes on:

    +

    This may be apocryphal but there was a story passed down of a customer who used to sow cress into the carpets. There were certainly areas so quiet, like the Philosophy department where you could definitely have got away with that!

    +

    5,000 signature may not have been enough to save 113-119 Charing Cross Road, but in his own way, Harding has preserved it for the generations to come, who'll discover it on their phones and tablets.

    +

    Read more chronicles of Charing Cross Road here.

    +
    +]]>
    London's Best Cake Shops, Tried And Testedhttp://londonist.com/london/food/london-s-best-cake-shopshttp://londonist.com/london/food/london-s-best-cake-shops#commentsTue, 27 Jun 2017 12:02:19 +0100http://londonist.com/?p=96f8026f774201879811 + +

    +

    Sometimes only a seriously sweet treat will do; dark, fudgy brownies, warm, comforting scones or a massive slab of the biggest, WI impressing Victoria sponge around. Well, hold onto your hats people because we've found the best bakes in town. From globally famous brownies, to curly whirly cakes, to doughnut/muffin hybrids (it's called a 'duffin', OK?) to the most French French patisserie around, we've eaten it all. You're welcome.

    +

    Maison Bertaux

    +

    A much-loved Soho stalwart, the window displays alone are enough to entice you in to this higgledy-piggledy French patisserie. Tourists, Soho-ites and those in-the-know flock here in their droves for a taste of perfect choux, authentic tartlets and generally beautiful bakes. They've been around for over 150 year and, believe us, it shows. Cannot be faulted and we'd happily live here forever feeding off tea, hot chocolate and Paris Brest. A true classic.

    +28 Greek Street, W1D

    +
    +Maison Bertaux London's best cake shops +
    + +

    Bea's of Bloomsbury

    +

    From the lady that invented the 'duffin' (and fought off copycats from Starbucks in the process), this doughnut/muffin hybrid filled with your choice of raspberry jam or Nutella still has people flocking to Bea's of Bloomsbury today. The original Bloomsbury branch is a cosy, shabby chic kind of shop with an open pastry kitchen that gets a lot of neighbourhood love for its sweet and savoury treats. You'll find celebration cakes, brownies, scones with clotted cream and jam, and a dizzying array of cupcake flavours - from chocolate Baileys and chocolate peanut butter to passion fruit and vanilla and a few vegan or free-from choices, should you require. Happily, there are lots of mini things (brownies, marshmallows and even baguettes) so you can squeeze all the more in. Namesake Bea is no longer involved (though look out for her pop up Butterscotch in Old Street station) but there are now branches in Marylebone and St Paul's in addition to the Bloomsbury original. Plus you can grab a treat to take away at Farringdon and Maida Vale. Most have some pavement seating for you to enjoy your sugary creation and watch the world go by.

    +44 Theobald's Road, WC1X

    +
    +Bea's of Bloomsbury London's best cake shops +
    +
    +Bea's of Bloomsbury London's best cake shops +
    +

    Konditor & Cook Ltd

    +

    After over 20 years in London, German-born konditor (pastry chef) and cook, Gerhard Jenne has acquired legendary status for his wares and helped revolutionise cake making in the UK in the process. His lovely little shops and cafes offer a wide range of cakes and confections - with seasonal variations - and even some savoury lunchables for nearby office workers. The original, bijou Waterloo branch still consists of a small shopfront within a late Georgian cottage and a production kitchen attached where they churn out dozens of their intricately designed signature Curly Whirly cakes, Whiskey Bombs and more handmade freshly every day. Their brownies are so good they've a cult following, such is their dense, fudgy chewiness. You'll also find an impressive range of contemporary bakes, frosted sponge cakes and fruity seasonal tarts. Their hot chocs aren't half bad either.

    +22 Cornwall Road, SE1

    +
    +Konditor & Cook Ltd London's best cake shops +
    +
    +Konditor & Cook Ltd London's best cake shops +
    +

    The Hummingbird Bakery

    +

    No, it's not the most original choice of cake shop, but we stand by the fact that it is one of the best. After coming over a decade or so ago, American inspired Hummingbird Bakery quickly made waves (and cookbooks) with their new-style bakes, cheery service and frankly hands down the best red velvet cake you'll find (so good this writer chose it as her wedding cake). The red velvet sponge is deep, dark red and not too sweet and topped with proper cream cheese, plus extra crumbs for decoration. But if you're going occasion cake, you can have whatever the hell you like done to it.

    +

    Famous for the proper American style cupcakes with a strong buttercream icing to sponge ratio, these guys are well known for going all out for any holidays. Visit near Halloween, Christmas or 4 July and you'll find all manner of creative decorations, US flavours and festive cheer galore. Cupcakes not for you? We urge you to try the black bottomed version which replaces most of the dense chocolate sponge base for a lighter cheesecake. It's addictive.

    +Deliveroo now from Notting Hill

    133 Portobello Road, W11

    +
    +The Hummingbird Bakery London's best cake shops +
    +
    +The Hummingbird Bakery London's best cake shops +
    +

    Violet

    +

    Violet Cakes is a cute, small California bakery in east London, born from food writer and stylist Claire Ptak. Having started out as a market stall on Broadway Market cooking her delicious cakes from home, Ptak found such success that she opened Violet. Every cake is make with organic flour, sugar, milk and eggs and all other ingredients are organic where possible. Seasonal limited edition buttercream icings are made by folding in fresh homemade fruit purees (think mango, melted Valhrona chocolate, freshly brewed espresso, homemade flower cordials or the darkest caramels with proper sea salt). There are also thick, indulgent brownies, tempting cinnamon rolls and classic bakes but you'll also find a wealth of healthy sounding items like spelt, oat and prune scones, chocolate spelt and agave cake or gluten free almond polenta layer cake. OK, they're not really healthy, but they are truly scrumptious.

    +47 Wilton Way, E8

    +
    +Violet London's best cake shops +
    +
    +Violet London's best cake shops +
    +

    E5 Bakehouse

    +

    E5 Bakehouse is a charming independent organic bakery in a repurposed railway arch under London Fields station. Chiefly known for their out-of-this-world sourdough and othe breads, their passion for artisan methods and organic, local ingredients spills over into their accomplished cake-making. Provenance is a huge deal for E5 Bakehouse and the cafe will only use trusted organic, seasonal suppliers of everything from veg, fruit and dairy to create their cakes and breads. With an in-house stone mill which uses UK grains, E5 believes this makes for the freshest and most nutrient rich flour for their exemplary bread and cakes which include anything from British bakewells to Scandi fika-style buns, American brownies and traditionals like carrot cake. There's also a decent range of free from for any gluten and dairy dodgers.

    +Arch 395, Mentmore Terrace, E8

    +
    +E5 Bakehouse London's best cake shops +
    +
    +E5 Bakehouse London's best cake shops +
    +

    Lily Vanilli Bakery

    +

    Just off Columbia Road, the achingly cool Lily Vanilli bakery has a weekly changing seasonal menu of cakes, pastries, brownies and savouries. People travel here from afar to try Lily's (of Vanilli fame) goodies, which include bacon and maple syrup cakes, banana salt caramel with chewy banana chips and many a festooned floral creation. There's a big emphasis on rustic, botanical and natural ingredients and decorations and she must be doing something right as she's baked sweet treats for Elton John, Lulu Guiness, 10 Downing Street and many, many more. There are vegan and gluten free bakes available; check their Instagram feed for current specials. Make sure you grab a coffee and a cake from Lily whenever you visit the flower market.

    +6 The Courtyard, E2

    +
    +Lily Vanilli Bakery London's best cake shops +
    +
    +Lily Vanilli Bakery London's best cake shops +
    +

    Belle Époque Patisserie

    +

    French patissier Eric Rosseau's pastry work is legendary and his three stores (Islington, Newington Green and within Selfridges) are all works of art in themselves. His cakes, chocolates, breads, viennoseries, tarts and quiches are all made to incredibly high standards using the best ingredients money can buy: French cream, Valhrona chocolate and only the freshest fruit. Each of Belle Epoque's cakes are made individually by pastry chefs at the top of their game and are all hand finished. Take a trip over to our favourite, the newest Islington shop, and order the Belle epoque itself, created by Rousseau for his then-girlfriend 15 years ago. Classic flavours of orange infused creme brulee are encased in a decadent dark chocolate mousse and there's crunchy orange streusel, praline and a chocolate sponge for contrast. It's all finished with a chocolate mirror glaze and decorated with crunchy pearls and the shop's signature logo. Phew! No wonder she's now his wife.

    +262 Upper Street, N1

    + + +

    Biscuiteers Boutique

    +

    Yes, we know Biscuiteers really specialise in, er, biscuits. But look, their cakes are pretty damn delicious too. If you're after an an extra special occasion cake then you can't go wrong here, and any birthday, baby shower, corporate gifting or wedding cake is going to be pretty great. From triple layered sponges to ultra-traditional fruit cakes, each order is hand made by the talented Biscuiteers team, covered in moreish buttercream before being topped with fondant and hand iced to perfection. And that's what Biscuiteers do best really; if you're after something properly personalised, with spot-on bespoke illustrations for business or pleasure (their Peter Rabbit and Little Miss Sunshines are adorable) these are your guys. We've had many a Biscuiteers gift over the years and they've always been beyond beautiful.

    +

    If you're not in the market for a giant celebrtion cake then do peruse their range of macarons, cupcakes and mini (they're not mini!) cakes.

    +13 Northcote Road, SW12

    +
    +Biscuiteers Boutique London's best cake shops +
    +
    +Biscuiteers Boutique London's best cake shops +
    +

    +
    +]]>
    Victorian Prophecy: 'Crystal Palace Will Be Destroyed'http://londonist.com/london/history/crystalpalacedestroyedhttp://londonist.com/london/history/crystalpalacedestroyed#commentsTue, 27 Jun 2017 11:32:43 +0100http://londonist.com/?p=6083cfbec06223fda24c +
    +
    Crystal Palace on fire, 30 November 1936. Public domain
    +
    +

    London was doomed by its own progress. July 1866 and an anonymous scribe wrote to the Argosy newspaper with his unique vision of apocalypse, brought about by too much tunneling and engineering.

    +

    "Can you escape a shuddering thrill of blow-up-iness and collapse-and-smash-iness?," he writes, in the kind of language that would never find its way into The Times.

    +

    "I cannot. We pity people who live in volcanic and earthquaky [sic] countries. But what if civilisation is coming to similar complexion. What if London, when the population is, say five millions, and it is engineered all over, above, below, and in the middle, should explode?"

    +

    The author has a particular beef about electricity. At the time, electricity was still a novelty. It would be 15 years before the first electric street lighting, on Holborn Viaduct and the Embankment, and nobody had it in their homes.

    +

    "Electric agency will probably be more used than it is now, and in ways not anticipated by the vulgar. Now conceive all London electrified; all the gasometers exploding; all the water-pipes bursting; all the plugs up, and the turnkeys gone mad or crushed; all the railway arches falling in, and all the trains smashing down among the omnibuses and cabs and people! What a catastrophe!”

    +
    "not anticipated by the vulgar"
    +

    And on the raving goes. But, then, we’re offered this choice piece of prophecy:

    +

    "The crash would be sure to climb up to Sydenham; the Crystal Palace itself must go, and what a noise all that glass would make, falling in! It would be like the smashing of a kitchen dresser to the falling of a house."

    +

    The Crystal Palace was utterly consumed by fire almost exactly 70 years later. On the night of 30 November 1936, a devastating conflagration ripped through the building, and it would indeed have sounded like the smashing of a kitchen dresser. The cause was never established, but an electrical fire — as our Victorian seer suggested — is a strong possibility.

    +
    +
    The remains of the Crystal Palace following its destruction by fire in 1936. Public domain.
    +
    +

    Eerily prescient? Not really. The Crystal Palace was one of the marvels of its day. It would be natural to choose it for a symbol of destruction in a piece like this — much as you might damn The Shard or London Eye if you were to fantasize about London's destruction today.

    +

    In any case, our correspondent immediately renounces all claims of being a reliable prophet with his final prediction. He also has it in for the Victoria Tower, tallest tower in the newly built Houses of Parliament.

    +
    +
    One of Rodin's Burghers of Calais helpfully points out the Victoria Tower
    +
    +

    "...but one thing will happen in our time. The Victoria Tower will "settle" and fall down. That I do distinctly prophesy. I have watched that tower like a father; and it has most distinctly the physiognomy of an edifice that contemplates self-destruction. Do you laugh? Very well. Stone the prophetic man, do! You will build me a tomb some day."

    +

    Based on various cuttings from the British Newspaper Archive.

    +
    +]]>
    Ticket Alert: See The Skyline From London's New Ziplinehttp://londonist.com/london/things-to-do/ticket-alert-see-the-skyline-from-london-s-fastest-ziplinehttp://londonist.com/london/things-to-do/ticket-alert-see-the-skyline-from-london-s-fastest-zipline#commentsTue, 27 Jun 2017 10:43:59 +0100http://londonist.com/?p=01008a6be96630b356f0 +
    +

    Calling all adrenalin junkies: you'll be able to get your fix from a new zipline coming to London this summer.

    +

    For 12 weeks, Zip World London will pitch up in Archbishop's Park, next to Lambeth Palace, between Westminster and Lambeth bridges on the south bank. Those brave enough to have a go will launch themselves from a tower 35 metres above the ground, before making the 225 metre descent back to earth.

    +

    It claims to be "the biggest, fastest city zipwire in the world". We're promised a chance to see the likes of the London Eye, Houses of Parliament, the Gherkin and The Shard — although from the mock-up above, it looks like you'll be travelling away from, rather than towards, most of London's skyline landmarks.

    +

    Either way, please nobody tell Boris Johnson.

    +

    Zip World London opens on 6 July for 12 weeks. Tickets need to be booked in advance (and will probably sell out), costing £22.50 for an adult/£16.50 for a child.

    +
    +]]>
    Museum Of London's Next Exhibition Will Reveal The City At Nighthttp://londonist.com/london/art-and-photography/london-at-nighthttp://londonist.com/london/art-and-photography/london-at-night#commentsTue, 27 Jun 2017 10:01:23 +0100http://londonist.com/?p=28e4716325786c720dcc +
    +
    Photograph by Nick Turpin from Through a Glass Darkly © Nick Turpin
    +
    +

    London in the sun is all well and good, but let's not forget it's often at its best in the thick of night.

    +

    200 photos and film clips from the 19th century to the present day form part of Museum of London's next major exhibition, which focuses on the city's nightlife.

    +

    London Nights will feature photos from renowned photographers including Bill Brandt, Alvin Langdon Coburn and Rut Blees Luxemburg, as well as lesser-known artists.

    +
    +
    Buckingham Palace from the north east at night. George Davison Reid
    +
    +

    Split into three parts, the exhibition will also cover the darker side of the capital at night, bringing visitors out of their comfort zone by alluding to the fear of the unknown, including the blackout of the Blitz.

    +
    +
    Night meeting at the Blackfriars Shelter c.1910
    +
    +

    The final part of the exhibition will look at Londoners working and playing in the city after dark, including the commute home, those clocking on for the night shift, and, of course, people heading for a night out.

    +
    +
    A group of teddy boys outside Burger Bar 1962 (C) Henry Grant_Museum of London
    +
    +

    Anna Sparham, Curator of Photography at the Museum of London, said

    +

    Through powerful photography London Nights will explore everything from the twinkling lights and buzzing nightlife to the darker, more uncomfortable vulnerability that sometimes arises in the urban, or suburban night environment.

    +

    A programme of themed events will run alongside the exhibition. The bad news: you'll have to wait a while to see this — it doesn't start until May 2018.

    +
    +
    Trafalgar Square and St Martin in the Fields 1920 to 1933. Photograph by George Davidson Reid
    +
    +

    London Nights will run at Museum of London, 11 May-11 November 2018.

    +
    +]]>
    Life At The Tower Of London Revealed In Fascinating Bookhttp://londonist.com/london/life-at-the-tower-of-london-revealed-in-new-bookhttp://londonist.com/london/life-at-the-tower-of-london-revealed-in-new-book#commentsTue, 27 Jun 2017 10:00:39 +0100http://londonist.com/?p=6ec00d0759d87882c93e +

    This fascinating book about the Tower of London offers a personal glimpse of the ancient fortress.

    +

    In a very unobtrusive way, Chris West made sure that he was present at every event at the Tower — large and small — during 2014 and 2015. He has captured the thoughts of those who live and work there, from the Yeoman Warders to the Chaplain, to the Constable, to the curators and the families of Tower residents.

    +

    Over the years, many histories have been written about the Tower and the great events that have occurred within its walls, but this is a record of life today, proving that the Tower of London is living history and not just a relic of the past. Below we reproduce some abridged extracts from Chris's book.

    +

    21 January: Sir Winston Churchill’s Memorial Wreath

    +
    +

    This wreath of laurel leaves, surmounted by the iconic ‘V’ for Victory symbol in gold, has been specially designed and made by the Royal Poppy Factory and is to be laid on the water of the River Thames, opposite the Houses of Parliament, to commemorate the culmination of Winston Churchill’s state funeral on 30 January 1965. It is kept close to the altar in St Peter ad Vincula — the Tower's church — until collection on the 30th.

    +

    1 February: Saint Peter ad Vincula Morning Service

    +
    +

    The congregation was joined by the Royal Military Police Association and the RAF for their annual services. Many other forces associations use St Peter ad Vincula similarly. The form varies — veterans wear their medals and some gather with their families and friends in the chapel, while others parade and march behind their regimental colours across the Broadwalk, processing to the Chapel. Younger relatives or partners may also wear the medals, but on the right breast, instead of the left. These people have a great sense of camaraderie and purpose, a reminder to us of the price people have paid and the need to honour and respect them.

    +

    18 March: Game of Thrones

    +
    +
    The cleanup after Game of Thrones.
    +
    +

    The world premiere of Game of Thrones season five was screened at the Tower, three weeks before it was released in the USA. The red-carpet premiere was organised by Sky Atlantic. The Director of Sky Atlantic in the UK, Zai Bennett, said:

    +

    I am delighted we will be hosting the world premiere of this epic show at the Tower of London. I can’t think of a more fitting venue to give what promises to be another unmissable series its big launch.

    +

    Considering the way in which the Tower is used for such promotions, I have listened to many different points of view about the best ways to utilise the Tower’s historical moat. Traditionalists argue that it should remain unspoiled, local residents bemoan its ugliness following use by marquees, and others champion the facility for marketing and promoting ‘today’s Tower’. Maybe it’s important to consider the excitement and straightforward joy for those able to visit the moat.

    +

    There are other upsides. Events such as this generate much-needed revenue for Historic Royal Palaces. Also, that period of muck and mud, when the marquees are removed, reminds us ‘after the poppies’, of Flanders fields, and of the 888,246 whom we should never forget.

    +

    7 April: Arrival of New Probationer Gary Thynne

    +
    +

    The latest probationary Yeoman Warder, Gary Thynne, arrived to start his six months’ training, sporting a beard envied by many of his colleagues. Gary, still a young man, has passed through his 22 years’ good conduct and achieved senior rank in the Royal Artillery as Welfare Warrant Officer for two of their regiments.

    +

    Though he is no doubt well prepared, now comes a gruelling period of concentrated, focused training as a probationer. For six months he will be immersed in learning ‘the story’. During this time, he must live alone at the Tower, away from his wife. He will be transformed into a polished, entertaining expert specialist performer and speaker about the Tower of London.

    +

    21 May: The Ceremony of the Lilies and Roses

    +

    This famous annual event is held in the Wakefield Tower and attended by the provosts of Eton College and King’s College, Cambridge. They pay homage to King Henry VI, who founded both their colleges, by laying their college emblems (lilies and roses respectively) on the spot where the King was allegedly murdered on 21 May 1471. Invitations are limited because of the confined space, so I greatly appreciated my own invitation.

    +

    17 July: Harley Davidsons at the Tower

    +

    Quietly walking along Tower Wharf, my eyes nearly popped when I saw 50-plus Harley Davidson motorbikes roaring in through the East Gate. I watched, agog, as I could hear them making their way up the hill and onto the Broadwalk. All was well; Yeoman Serjeant Peter McGowran was there and smiling. David Hutchinson belongs to the 1066 (topical) chapter of the ‘Harley Owners Group’, based in Sussex. Moreover, he is brother-in-law to Canon Hall, who had obtained permission for them to visit.

    +
    +

    According to David: "On a previous visit, some of us gathered together for a photo around my brother-in- law’s splendid Morgan (known affectionately as Mr Toad). This time, as we drove off, we were stopped from leaving at the gate. Most embarrassing: the volume and vibration of the assembled Harley exhausts had set off an alarm system, so we had to wait until we were given the all-clear. This was our third visit and we are not too sure whether we will be welcomed back!

    +

    My guess is that they have been forgiven.

    +

    25 August: Ghosts – Well, Why Not?

    +
    +

    It was late evening as I passed the Byward Tower, close to the Main Gate, when I realised I had left my notebook behind in the Yeoman Warders’ Bar, at the far end of Water Lane. On returning, yes, I was thinking about the eerie spookiness of the Tower at night. I looked to the right (towards the doctor’s surgery and Old Mint) and there, peering through the window, was an illuminated white, shrouded figure. I hadn’t noticed before, but this gadget is permanently displayed in the window and projects various images. It can be switched on at times to suit, so I assume that someone had spotted an easy victim. OK, guys, it was a great scam and, yes, I nearly jumped out of my skin. Ho ho ho!

    +

    Words and photos by Chris West. Chris's book Poppies, Pomp and People: A Year In The Life Of The Tower Of London (from Amazon), or from author's own website, is out now.

    +
    +]]>
    Things To Do Today In London: Tuesday 27 June 2017http://londonist.com/london/things-to-do/things-to-do-today-in-london-tuesday-27th-june-2017http://londonist.com/london/things-to-do/things-to-do-today-in-london-tuesday-27th-june-2017#commentsMon, 26 Jun 2017 19:00:12 +0100http://londonist.com/?p=c1daf1c5fdd29a8c6b50 +

    Things to do in London today is sponsored by Alexandra Palace.

    + +

    What we're reading

    + +

    Things to do

    +

    VIRTUAL REALITY: There are two kinds of people in the world: those who love VR, and those who haven't tried it yet. Book a 20 minute slot in this VR experience in a pub, and see if you can survive the zombies long enough to meet the giant spider — or if that's not your thing, try one of the other experiences available. The Four Thieves (Clapham Junction), £15, book ahead, various times

    +

    STREET GYM:Urban areas shouldn't just be nice to look at, they should be places where are are inspired to train. Take to the street for this free urban physical adventure taster session, where architectural features, gradients and street furniture become workstations for sets and reps. Somerset House, free, book ahead, 12.30pm-1.15pm

    +

    TERRACE TIPPLES: What better way to celebrate the summer than with a fiesta on the terrace, complete with free flowing drinks, cool beats and Argentinian canapés? Round off London Food Month in style. Gaucho Broadgate, £49.95, book ahead, 6pm

    +

    MODERNISM: Explore the readings of Modernism through a non-Western lens, and re-examine the conventional Western narrative of this unique style of architecture. You might be surprised by some of the fantastic examples of Modernist architecture from places rarely featured, such as Kenya, Zambia, China and India. Royal Institute of British Architects, £9, book ahead, 6.30pm-8pm

    +
    + +
    +

    TALK AND WALK: Cover 2000 years of history in two hours in Wren, Romans and Liveryman. This walk will take you around the Square Mile as you hear stories of the Romans and Italians, the hard-hitting Great Plague and Great Fire, and how the city was raised from the ashes once more by Sir Christopher Wren. Start at Tower Hill station, £2/£9/£12, book ahead, 6.30pm-8.30pm

    +

    FASHION FORWARD: Make a one-of-a-kind hard shell party clutch bag, or surprise someone with a personalised gift. In this workshop you can choose from a selection of designer and vintage fabric and add a bit of sparkly embellishment too. Dotty's Tea House (Carshalton), £49, book ahead, 7pm-9.30pm

    +

    UNNECESSARY DETAIL: Enthusiasts, scientists, miscellaneous experts and comedians are invited to talk about whatever they want, in whatever level of detail they want... but be warned, you revoke all rights to complain about what they choose to bang on about by attending this event. Backyard Comedy Club (Cambridge Heath), £11, book ahead, 7.30pm-10.30pm

    +

    POETRY EVENING: Poetry slam winner and Glastonbury performer Vanessa Kisuule headlines this poetry evening. Those with something to say can perform their own poetry in a five minute slot — those who don't can simply sit back and take in the words. Love & Dye (Raynes Park), free, just turn up, 8pm

    +

    FREE COMEDY: You like laughing, right? And you like free things? Then we're set. Barry Ferns presents a mix of comic favourites performing longer sets for a laugh out loud evening. The Camden Head, free, just turn up, 8pm-10pm

    +
    +

    Sponsor message

    +

    Relive your childhood on Alexandra Palace's giant waterslide

    +
    +

    Move over kids: adults can take to the slope on this giant waterslide, which is coming to Alexandra Palace's annual Summer Festival on 22 July.

    +

    As well as this, there’ll be an outdoor cinema and three live music stages, with The Craig Charles Funk & Soul Club headlining. Check out all the craft beer and street food that will get your mouth watering —whether you fancy ribs and a pint, or churros and a cocktail, you’ll be spoilt for choice.

    +

    Bring along the whole family — the kids will enjoy theatre performances and craft workshops, and may even fancy joining in with Big Fish Little Fish’s Family Rave. Get the lowdown on what’s happening at this free entry festival here.

    +
    +

    Art review: little devils

    +
    +

    Sitting in circles, climbing up chains or hanging limply from walls. These cutesy devils by Permindar Kaur are all over the gallery. It’s a bit like walking through a shop filled with eerie dolls, harmless yet somehow threatening at the same time. Permindar Kaur: Black and Blue at New Art Projects, 6D Sheep Lane, E8 4QS. Until 1 July, free. ★★★★☆ (Tuesday-Saturday)

    +

    Food review: hot chicken of your dreams

    +
    +

    It's named after a bad, bad man — folklore-outlaw figure Stag O'Lee — but this Fulham soulfood joint is serving up a seriously good menu. Everything bar the fries is made from scratch in the downstairs kitchen, and that amount of TLC pays off in a big way. All the Southern Americana classics are there — collard greens with ham hock, spinach dip thick with cheese, cornbread, fried catfish... and what might be the best hot chicken you'll find this side of Nashville: it's definitely the best we've found in London. Food to warm the heart comes coupled with a menu of bourbon, rye and moonshine to get you fired up. Cocktails are a strong suit, with the Southern Hospitality an enamel mug of sweet tea vodka, Southern Comfort and tart, homemade lemonade — the sort of cocktail you want to drink on a sultry day on a shady porch. Throw in good, bluesy music and service with Southern warmth, and we have a hunch we'll be spending a lot of time here. Real, ridiculously good soulfood in a soul-warming restaurant. Stagolee's, 453 North End Road, SW6 1NZ. ★★★★★ Lydia Manch

    +

    Theatre review: to go or not to go?

    +
    +

    After Benedict Cumberbatch’s hit performance as the desperate Dane two years ago, it is his Sherlock opposite number Andrew Scott’s turn to play arguably the Bard’s most famous character. The leading man is ably assisted by Truly, Madly, Deeply’s Juliet Stevenson as Gertrude and Jessica Brown Findlay (Downton Abbey’s Lady Sybil) as Ophelia; all three are utterly mesmerising. Director Robert Ive borrows heavily from the Ivo van Hove Shakespeare stylebook, employing recorded and live video techniques similar to those used by the Belgian in his mammoth productions. Scott’s nuanced and passionate performance amid a highly talented ensemble make this one of the theatre hits of the summer. Hamlet. Harold Pinter Theatre, Panton Street, SW1Y 4DN. £15-£95. Until 2 September. ★★★★★ Franco Milazzo

    +

    Good cause for the day

    +
    +

    ONE MILLION STEPS: Why not walk instead of taking the tube, and be on your way to completing the One Million Step Challenge in aid of Diabetes UK. Starting on the 1 July and running until 30 September, participants are encouraged to push themselves out of their comfort zone and take an average of 10,000 steps a day. Free, 1 July-30 September

    +

    +

    Funzing

    +

    Fun things to do with our friends and sponsor Funzing.

    +LDN Talks @ Night | The Science of Psychedelics
    +
    +
    Scientific research is resuming on how psychedelics affect the weirder aspects of human consciousness. This talk from Dr David Luke engages in current study into pyschedelics and their historical use in shamanic rituals. Be prepared, you might leave with more questions than answers. Get tickets +
    +
    +
    Talk: Neuroscience of Powerful Habits
    +
    +
    Every January you do the same thing. You make a New Year's resolution to lose weight, be thriftier, quit smoking or possibly even to start exercising. Yet how many of us find ourselves in the exact spot we started in once the month is up? This talk by Dr Gabija Toleikyte, explains why the brain resists changing habits of a lifetime. She'll also explain how to create long lasting change, by working with your brain rather than against it. Get tickets +
    +
    +
    LDN Talks@Night |Insights of a War Crime Investigator
    +
    +
    What would you say face-to-face to Saddam Hussein? How would you feel digging up the mass graves of Kosovo? Jonathan Tait-Harris will share experiences from his jobs as a policeman, soldier, war-crimes investigator and adviser to UK and Iraqi governments. £10 Get tickets +
    +
    +
    +
    +]]>
    King's Road Chelsea Station Scrapped From Latest Crossrail 2 Planshttp://londonist.com/london/transport/kings-road-chelsea-station-scrapped-from-latest-crossrail-2-planshttp://londonist.com/london/transport/kings-road-chelsea-station-scrapped-from-latest-crossrail-2-plans#commentsMon, 26 Jun 2017 17:34:26 +0100http://londonist.com/?p=1d6ab5d3c08e855fc032 + +

    A controversial station at King's Road Chelsea, set to form part of Crossrail 2, has been dropped from the latest business case for the planned rail route.

    +

    In the business case which TfL sent to the government in March, and seen by City AM, the latest route for the railway running across London and the south east has left out the King's Road Chelsea station that had been planned in between Clapham Junction and Victoria.

    +

    The proposed station had proved divisive, with proponents saying Underground stations in the area will need the support as passenger numbers are set to swell in the next decade.

    +

    Those opposing the station however, including actress Felicity Kendal and broadcaster Loyd Grossman, were concerned about the disruption it would bring, and worried it would wreck the intimate village atmosphere of Chelsea.

    +

    It’s not the only option that has been scrapped in the revised route either, with floated stations at Turnpike Lane and Balham getting the boot too in favour of Wood Green and Tooting Broadway options.

    +
    +

    The changes aren’t concrete ones though and the route hasn’t been committed to. For the purpose of the business case, TfL needed to put together a case scheme option against which to test alternatives, reflecting the recommendations made by the National Infrastructure Commission, set up by the government to oversee infrastructure projects.

    +

    During its 2015 consultation, TfL offered up two options between Seven Sisters and New Southgate. One proposed went via Turnpike Lane and Alexandra Palace, while the other would call at Wood Green only.

    +

    The majority of respondents preferred the former, but the London Borough of Haringey favoured the latter, saying it would provide more economic benefits.

    +

    Another toss-up was between Balham or Tooting Broadway, which TfL hopes will help relieve one of the most crowded parts of the Tube network – the Northern Line section from Balham to Stockwell. Tooting got the go-ahead in TfL’s business case, though it did note that investigations carried out early last year found ground conditions around Tooting would make construction “challenging”.

    +

    And Tooting proved a more popular choice in consultation, despite the fact concerns have been raised over the fate of Tooting Market. Much of the space will likely be subject to a compulsory purchase order if Crossrail 2 comes to the area.

    +

    Michele Dix, TfL’s managing director for Crossrail 2, said:

    +

    No decisions have yet been made. We continue to discuss with government all aspects of the project and are committed to holding a full public consultation on our plans.

    +

    This article originally appeared on City AM.

    +
    +]]>
    Fancy Saving On Your Travel Costs?http://londonist.com/london/fancy-saving-on-your-travel-costshttp://londonist.com/london/fancy-saving-on-your-travel-costs#commentsMon, 26 Jun 2017 14:30:03 +0100http://londonist.com/?p=7f0a93d9e3d7dd7151cd +

    This is a sponsored article on behalf of CommuterClub.

    +
    +

    Travelling in the UK isn't getting any cheaper — in fact, the price keeps on rising every year. Luckily, CommuterClub is here to help you save when it comes to getting to and from work.

    +

    With CommuterClub, you'll get all the benefits of a yearly travelcard, but with the regular and manageable payments that come with a monthly one, meaning that you could save up to £300 a year. Even better, for a short time Londonist readers can get £20 off when booking here.

    +
    +

    Let's face it —monthly travelcards are a much more flexible way to pay for commuting, but they can be a lot more costly than the annual alternative. Although cheaper, the annual travelcard means paying a huge lump sum up front.

    +

    CommuterClub is the answer to all your travelling woes, as they offer the chance to get a yearly travelcard, but pay for it in 11 monthly instalments — the twelfth month will be absolutely free.

    +
    +

    All in all, you could save yourself £300 if you buy with CommuterClub — a decent saving that could be put towards a holiday somewhere away from the bustling capital.

    +

    If you think that sounds too good to be true, you'll be even more blown away by the Gold Card that all CommuterClub customers receive — this gives you 1/3 off National Rail travel, as well as 2-for-1 on loads of London attractions.

    +
    +

    Now is the time to get on board with CommuterClub — from 26 June - 1 July, they are running a Festival of Summer Savings to make sure even more dosh stays in your pocket. As part of this, Londonist readers can get £20 off when booking here.

    +

    CommuterClub are also currently running a competition — if you're feeling lucky, enter here to win free travel this summer for a whole four months.

    +

    It's a no-brainer — regular payments, better value and major money saving is on the cards if you join CommuterClub.

    +

    +

    +

    Representative example: Credit limit: £1200. Interest £67. Total payable: £1267 in 11 monthly instalments of £115. Representative 10.6% APR. Interest rate 5.6% (variable)

    <!--@font-face { font-family: "wf_segoe-ui_light"; src: local("Segoe UI Light"), local("Segoe WP Light"), url('prem/fonts/segoeui-light.woff') format('woff'), url('prem/fonts/segoeui-light.ttf') format('truetype'); } @font-face { font-family: "wf_segoe-ui_normal"; src: local("Segoe UI"), local("Segoe WP"), url('prem/fonts/segoeui-regular.woff') format('woff'), url('prem/fonts/segoeui-regular.ttf') format('truetype'); } @font-face { font-family: "wf_segoe-ui_semibold"; src: local("Segoe UI Semibold"), local("Segoe WP Semibold"), url('prem/fonts/segoeui-semibold.woff') format('woff'), url('prem/fonts/segoeui-semibold.ttf') format('truetype'); font-weight: bold; } @font-face { font-family: "wf_segoe-ui_semilight"; src: local("Segoe UI Semilight"), local("Segoe WP Semilight"), url('prem/fonts/segoeui-semilight.woff') format('woff'), url('prem/fonts/segoeui-semilight.ttf') format('truetype'); } @font-face { font-family: 'webfontPreload'; src: url('prem/16.1809.14.2333995/resources/styles/fonts/office365icons.eot?#iefix') format('embedded-opentype'), url('prem/16.1809.14.2333995/resources/styles/fonts/office365icons.woff') format('woff'), url('prem/16.1809.14.2333995/resources/styles/fonts/office365icons.ttf') format('truetype'); font-weight: normal; font-style: normal; }-->

    <!--.customScrollBar::-webkit-scrollbar{height:18px;width:18px}.customScrollBar::-webkit-scrollbar:disabled{display:none}.customScrollBar::-webkit-scrollbar-button{background-color:#fff;background-repeat:no-repeat;cursor:pointer}.customScrollBar::-webkit-scrollbar-button:horizontal:increment,.customScrollBar::-webkit-scrollbar-button:horizontal:decrement,.customScrollBar::-webkit-scrollbar-button:horizontal:increment:hover,.customScrollBar::-webkit-scrollbar-button:horizontal:decrement:hover,.customScrollBar::-webkit-scrollbar-button:vertical:increment,.customScrollBar::-webkit-scrollbar-button:vertical:decrement,.customScrollBar::-webkit-scrollbar-button:vertical:increment:hover,.customScrollBar::-webkit-scrollbar-button:vertical:decrement:hover{background-position:center;height:18px;width:18px}.customScrollBarLight::-webkit-scrollbar-button{display:none}.customScrollBar::-webkit-scrollbar-track{background-color:#fff}.customScrollBarLight::-webkit-scrollbar-track{background-color:#0072c6}.customScrollBar::-webkit-scrollbar-thumb{border-radius:9px;border:solid 6px #fff;background-color:#c8c8c8}.customScrollBarLight::-webkit-scrollbar-thumb{border-color:#0072c6;background-color:#95b1c1}.customScrollBar::-webkit-scrollbar-thumb:vertical{min-height:50px}.customScrollBar::-webkit-scrollbar-thumb:horizontal{min-width:50px}.customScrollBar::-webkit-scrollbar-thumb:hover{border-radius:9px;border:solid 6px #fff;background-color:#98a3a6}.customScrollBar::-webkit-scrollbar-corner{background-color:#fff}.nativeScrollInertia{-webkit-overflow-scrolling:touch}.csimg{display:inline-block;overflow:hidden}button::-moz-focus-inner{border-width:0;padding:0}.textbox{border-width:1px;border-style:solid;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;-webkit-appearance:none;height:30px;padding:0 5px}.tnarrow .textbox,.twide .textbox{font-size:12px;background-color:#fff;height:14px;padding:3px 5px}.textbox::-webkit-input-placeholder{color:#a6a6a6}.textbox:-moz-placeholder{color:#a6a6a6}.textbox::-moz-placeholder{color:#a6a6a6}.textbox:-ms-input-placeholder{color:#a6a6a6}.textarea{padding:10px}.textarea:hover{background-color:transparent;border-color:transparent}.o365button{background:transparent;border-width:0;padding:0;cursor:pointer!important;font-size:14px}.o365button:disabled,label.o365button[disabled=true]{cursor:default!important}.o365buttonOutlined{padding-right:11px;padding-left:11px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid}.o365buttonOutlined .o365buttonLabel{display:inline-block}.o365buttonOutlined{height:30px}.twide .o365buttonOutlined,.tnarrow .o365buttonOutlined{height:22px}.o365buttonOutlined .o365buttonLabel{height:22px}.checkbox{border-style:none;cursor:pointer;vertical-align:middle}.popupShadow{box-shadow:0 0 20px rgba(0,0,0,.4);border:1px solid #eaeaea}.contextMenuDropShadow{box-shadow:0 0 7px rgba(0,0,0,.4);border:1px solid #eaeaea}.modalBackground{background-color:#fff;height:100%;width:100%;opacity:.65;filter:Alpha(opacity=65)}.clearModalBackground{background-color:#fff;opacity:0;filter:Alpha(opacity=0);height:100%;width:100%}.contextMenuPopup{background-color:#fff}.removeFocusOutline *:focus{outline:none}.addFocusOutline button:focus{outline:dotted 1px}.addFocusRingOutline button:focus{outline:auto 5px -webkit-focus-ring-color}.border-color-transparent{border-color:transparent}.vResize,.hResize{z-index:1000}.hResize,.hResizeCursor *{cursor:row-resize!important}.vResize,.vResizeCursor *{cursor:col-resize!important}.vResizing,.hResizing{filter:alpha(opacity=60);opacity:.6;-moz-opacity:.6;border:solid 1px #666}.vResizing{border-width:0 1px}.hResizing{border-width:1px 0}--><!--.ms-font-su{color:#333;font-family:"wf_segoe-ui_semilight", "Segoe UI Semilight", "Segoe WP Semilight", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:42px;font-weight:normal}.ms-font-xxl{color:#333;font-family:"wf_segoe-ui_light", "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:28px;font-weight:normal}.touch .ms-font-xxl{font-size:30px}.ms-font-xl{color:#333;font-family:"wf_segoe-ui_light", "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:21px;font-weight:normal}.touch .ms-font-xl{font-size:22px}.ms-font-l{color:#333;font-family:"wf_segoe-ui_semilight", "Segoe UI Semilight", "Segoe WP Semilight", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:17px;font-weight:normal}.touch .ms-font-l{font-size:18px}.ms-font-m{color:#333;font-family:"wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:14px;font-weight:normal}.touch .ms-font-m{font-size:15px}.ms-font-s{color:#333;font-family:"wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:12px;font-weight:normal}.touch .ms-font-s{font-size:13px}.ms-font-xs{color:#333;font-family:"wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:11px;font-weight:normal}.touch .ms-font-xs{font-size:12px}.ms-font-mi{color:#333;font-family:"wf_segoe-ui_semibold", "Segoe UI Semibold", "Segoe WP Semibold", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:10px;font-weight:normal}.touch .ms-font-mi{font-size:11px}.ms-font-weight-light,.ms-fwt-l,.ms-font-weight-light-hover:hover,.ms-font-weight-light-before:before,.ms-fwt-l-h:hover,.ms-fwt-l-b:before{font-family:"wf_segoe-ui_light", "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;}.ms-font-weight-semilight,.ms-fwt-sl,.ms-font-weight-semilight-hover:hover,.ms-font-weight-semilight-before:before,.ms-fwt-sl-h:hover,.ms-fwt-sl-b:before{font-family:"wf_segoe-ui_semilight", "Segoe UI Semilight", "Segoe WP Semilight", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif}.ms-font-weight-regular,.ms-fwt-r,.ms-font-weight-regular-hover:hover,.ms-font-weight-regular-before:before,.ms-fwt-r-h:hover,.ms-fwt-r-b:before{font-family:"wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif}.ms-font-weight-semibold,.ms-fwt-sb,.ms-font-weight-semibold-hover:hover,.ms-font-weight-semibold-before:before,.ms-fwt-sb-h:hover,.ms-fwt-sb-b:before{font-family:"wf_segoe-ui_semibold", "Segoe UI Semibold", "Segoe WP Semibold", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-weight:bold}--><!--.ms-bg-color-themeDark, .ms-bgc-td, .ms-bg-color-themeDark-hover:hover, .ms-bg-color-themeDark-focus:focus, .ms-bg-color-themeDark-before:before, .ms-bgc-td-h:hover, .ms-bgc-td-f:focus, .ms-bgc-td-b:before { background-color: #C2171C; }.ms-bg-color-themeDarkAlt, .ms-bgc-tda, .ms-bg-color-themeDarkAlt-hover:hover, .ms-bg-color-themeDarkAlt-focus:focus, .ms-bg-color-themeDarkAlt-before:before, .ms-bgc-tda-h:hover, .ms-bgc-tda-f:focus, .ms-bgc-tda-b:before { background-color: #C2171C; }.ms-bg-color-themeDarker, .ms-bgc-tdr, .ms-bg-color-themeDarker-hover:hover, .ms-bg-color-themeDarker-focus:focus, .ms-bg-color-themeDarker-before:before, .ms-bgc-tdr-h:hover, .ms-bgc-tdr-f:focus, .ms-bgc-tdr-b:before { background-color: #A01318; }.ms-bg-color-themePrimary, .ms-bgc-tp, .ms-bg-color-themePrimary-hover:hover, .ms-bg-color-themePrimary-focus:focus, .ms-bg-color-themePrimary-before:before, .ms-bgc-tp-h:hover, .ms-bgc-tp-f:focus, .ms-bgc-tp-b:before { background-color: #E31E25; }.ms-bg-color-themeSecondary, .ms-bgc-ts, .ms-bg-color-themeSecondary-hover:hover, .ms-bg-color-themeSecondary-focus:focus, .ms-bg-color-themeSecondary-before:before, .ms-bgc-ts-h:hover, .ms-bgc-ts-f:focus, .ms-bgc-ts-b:before { background-color: #E33942; }.ms-bg-color-themeTertiary, .ms-bgc-tt, .ms-bg-color-themeTertiary-hover:hover, .ms-bg-color-themeTertiary-focus:focus, .ms-bg-color-themeTertiary-before:before, .ms-bgc-tt-h:hover, .ms-bgc-tt-f:focus, .ms-bgc-tt-b:before { background-color: #EC7A81; }.ms-bg-color-themeLight, .ms-bgc-tl, .ms-bg-color-themeLight-hover:hover, .ms-bg-color-themeLight-focus:focus, .ms-bg-color-themeLight-before:before, .ms-bgc-tl-h:hover, .ms-bgc-tl-f:focus, .ms-bgc-tl-b:before { background-color: #F3A7AB; }.ms-bg-color-themeLighter, .ms-bgc-tlr, .ms-bg-color-themeLighter-hover:hover, .ms-bg-color-themeLighter-focus:focus, .ms-bg-color-themeLighter-before:before, .ms-bgc-tlr-h:hover, .ms-bgc-tlr-f:focus, .ms-bgc-tlr-b:before { background-color: #FBE0E1; }.ms-bg-color-themeLighterAlt, .ms-bgc-tlra, .ms-bg-color-themeLighterAlt-hover:hover, .ms-bg-color-themeLighterAlt-focus:focus, .ms-bg-color-themeLighterAlt-before:before, .ms-bgc-tlra-h:hover, .ms-bgc-tlra-f:focus, .ms-bgc-tlra-b:before { background-color: #FDEFF0; }.ms-border-color-themeDark, .ms-bcl-td, .ms-border-color-themeDark-hover:hover, .ms-border-color-themeDark-focus:focus, .ms-border-color-themeDark-before:before, .ms-bcl-td-h:hover, .ms-bcl-td-f:focus, .ms-bcl-td-b:before { border-color: #C2171C; }.ms-border-color-themeDarkAlt, .ms-bcl-tda, .ms-border-color-themeDarkAlt-hover:hover, .ms-border-color-themeDarkAlt-focus:focus, .ms-border-color-themeDarkAlt-before:before, .ms-bcl-tda-h:hover, .ms-bcl-tda-f:focus, .ms-bcl-tda-b:before { border-color: #C2171C; }.ms-border-color-themeDarker, .ms-bcl-tdr, .ms-border-color-themeDarker-hover:hover, .ms-border-color-themeDarker-focus:focus, .ms-border-color-themeDarker-before:before, .ms-bcl-tdr-h:hover, .ms-bcl-tdr-f:focus, .ms-bcl-tdr-b:before { border-color: #A01318; }.ms-border-color-themePrimary, .ms-bcl-tp, .ms-border-color-themePrimary-hover:hover, .ms-border-color-themePrimary-focus:focus, .ms-border-color-themePrimary-before:before, .ms-bcl-tp-h:hover, .ms-bcl-tp-f:focus, .ms-bcl-tp-b:before { border-color: #E31E25; }.ms-border-color-themeSecondary, .ms-bcl-ts, .ms-border-color-themeSecondary-hover:hover, .ms-border-color-themeSecondary-focus:focus, .ms-border-color-themeSecondary-before:before, .ms-bcl-ts-h:hover, .ms-bcl-ts-f:focus, .ms-bcl-ts-b:before { border-color: #E33942; }.ms-border-color-themeTertiary, .ms-bcl-tt, .ms-border-color-themeTertiary-hover:hover, .ms-border-color-themeTertiary-focus:focus, .ms-border-color-themeTertiary-before:before, .ms-bcl-tt-h:hover, .ms-bcl-tt-f:focus, .ms-bcl-tt-b:before { border-color: #EC7A81; }.ms-border-color-themeLight, .ms-bcl-tl, .ms-border-color-themeLight-hover:hover, .ms-border-color-themeLight-focus:focus, .ms-border-color-themeLight-before:before, .ms-bcl-tl-h:hover, .ms-bcl-tl-f:focus, .ms-bcl-tl-b:before { border-color: #F3A7AB; }.ms-border-color-themeLighter, .ms-bcl-tlr, .ms-border-color-themeLighter-hover:hover, .ms-border-color-themeLighter-focus:focus, .ms-border-color-themeLighter-before:before, .ms-bcl-tlr-h:hover, .ms-bcl-tlr-f:focus, .ms-bcl-tlr-b:before { border-color: #FBE0E1; }.ms-border-color-themeLighterAlt, .ms-bcl-tlra, .ms-border-color-themeLighterAlt-hover:hover, .ms-border-color-themeLighterAlt-focus:focus, .ms-border-color-themeLighterAlt-before:before, .ms-bcl-tlra-h:hover, .ms-bcl-tlra-f:focus, .ms-bcl-tlra-b:before { border-color: #FDEFF0; }.ms-border-color-top-themePrimary, .ms-bcl-t-tp, .ms-border-color-top-themePrimary-hover:hover, .ms-border-color-top-themePrimary-focus:focus, .ms-border-color-top-themePrimary-before:before, .ms-bcl-t-tp-h:hover, .ms-bcl-t-tp-f:focus, .ms-bcl-t-tp-b:before { border-top-color: #E31E25; }.ms-font-color-themeDark, .ms-fontColor-themeDark, .ms-fontColor-themeDark, .ms-fcl-td, .ms-font-color-themeDark-hover:hover, .ms-font-color-themeDark-focus:focus, .ms-font-color-themeDark-before:before, .ms-fcl-td-h:hover, .ms-fcl-td-f:focus, .ms-fcl-td-b:before { color: #C2171C; }.ms-font-color-themeDarkAlt, .ms-fontColor-themeDarkAlt, .ms-fontColor-themeDarkAlt, .ms-fcl-tda, .ms-font-color-themeDarkAlt-hover:hover, .ms-font-color-themeDarkAlt-focus:focus, .ms-font-color-themeDarkAlt-before:before, .ms-fcl-tda-h:hover, .ms-fcl-tda-f:focus, .ms-fcl-tda-b:before { color: #C2171C; }.ms-font-color-themeDarker, .ms-fontColor-themeDarker, .ms-fontColor-themeDarker, .ms-fcl-tdr, .ms-font-color-themeDarker-hover:hover, .ms-font-color-themeDarker-focus:focus, .ms-font-color-themeDarker-before:before, .ms-fcl-tdr-h:hover, .ms-fcl-tdr-f:focus, .ms-fcl-tdr-b:before { color: #A01318; }.ms-font-color-themePrimary, .ms-fontColor-themePrimary, .ms-fontColor-themePrimary, .ms-fcl-tp, .ms-font-color-themePrimary-hover:hover, .ms-font-color-themePrimary-focus:focus, .ms-font-color-themePrimary-before:before, .ms-fcl-tp-h:hover, .ms-fcl-tp-f:focus, .ms-fcl-tp-b:before { color: #E31E25; }.ms-font-color-themeSecondary, .ms-fontColor-themeSecondary, .ms-fontColor-themeSecondary, .ms-fcl-ts, .ms-font-color-themeSecondary-hover:hover, .ms-font-color-themeSecondary-focus:focus, .ms-font-color-themeSecondary-before:before, .ms-fcl-ts-h:hover, .ms-fcl-ts-f:focus, .ms-fcl-ts-b:before { color: #E33942; }.ms-font-color-themeTertiary, .ms-fontColor-themeTertiary, .ms-fontColor-themeTertiary, .ms-fcl-tt, .ms-font-color-themeTertiary-hover:hover, .ms-font-color-themeTertiary-focus:focus, .ms-font-color-themeTertiary-before:before, .ms-fcl-tt-h:hover, .ms-fcl-tt-f:focus, .ms-fcl-tt-b:before { color: #EC7A81; }.ms-font-color-themeLight, .ms-fontColor-themeLight, .ms-fontColor-themeLight, .ms-fcl-tl, .ms-font-color-themeLight-hover:hover, .ms-font-color-themeLight-focus:focus, .ms-font-color-themeLight-before:before, .ms-fcl-tl-h:hover, .ms-fcl-tl-f:focus, .ms-fcl-tl-b:before { color: #F3A7AB; }.ms-font-color-themeLighter, .ms-fontColor-themeLighter, .ms-fontColor-themeLighter, .ms-fcl-tlr, .ms-font-color-themeLighter-hover:hover, .ms-font-color-themeLighter-focus:focus, .ms-font-color-themeLighter-before:before, .ms-fcl-tlr-h:hover, .ms-fcl-tlr-f:focus, .ms-fcl-tlr-b:before { color: #FBE0E1; }.ms-font-color-themeLighterAlt, .ms-fontColor-themeLighterAlt, .ms-fontColor-themeLighterAlt, .ms-fcl-tlra, .ms-font-color-themeLighterAlt-hover:hover, .ms-font-color-themeLighterAlt-focus:focus, .ms-font-color-themeLighterAlt-before:before, .ms-fcl-tlra-h:hover, .ms-fcl-tlra-f:focus, .ms-fcl-tlra-b:before { color: #FDEFF0; }.o365cs-base.o365cst .o365cs-topnavLinkBackground-2{background-color:transparent;background-color:rgba(228,30,38,.8);}.o365cs-base.o365cst .o365cs-topnavText,.o365cs-base.o365cst .o365cs-topnavText:hover{color:#ffffff;}.o365cs-base.o365cst .o365cs-navMenuButton{color:#ffffff;}.o365cs-base.o365cst.o365cs-topnavBGColor-2{background-color:transparent;}.o365cs-base.o365cst .o365cs-appLauncherBackground{background-color:#A01318}--><!--.ms-bg-color-black,.ms-bgc-b,.ms-bg-color-black-hover:hover,.ms-bg-color-black-focus:focus,.ms-bg-color-black-before:before,.ms-bgc-b-h:hover,.ms-bgc-b-f:focus,.ms-bgc-b-b:before{background-color:#000}.ms-bg-color-neutralDark,.ms-bgc-nd,.ms-bg-color-neutralDark-hover:hover,.ms-bg-color-neutralDark-focus:focus,.ms-bg-color-neutralDark-before:before,.ms-bgc-nd-h:hover,.ms-bgc-nd-f:focus,.ms-bgc-nd-b:before{background-color:#212121}.ms-bg-color-neutralPrimary,.ms-bgc-np,.ms-bg-color-neutralPrimary-hover:hover,.ms-bg-color-neutralPrimary-focus:focus,.ms-bg-color-neutralPrimary-before:before,.ms-bgc-np-h:hover,.ms-bgc-np-f:focus,.ms-bgc-np-b:before{background-color:#333}.ms-bg-color-neutralSecondary,.ms-bgc-ns,.ms-bg-color-neutralSecondary-hover:hover,.ms-bg-color-neutralSecondary-focus:focus,.ms-bg-color-neutralSecondary-before:before,.ms-bgc-ns-h:hover,.ms-bgc-ns-f:focus,.ms-bgc-ns-b:before{background-color:#666}.ms-bg-color-neutralSecondaryAlt,.ms-bgc-nsa,.ms-bg-color-neutralSecondaryAlt-hover:hover,.ms-bg-color-neutralSecondaryAlt-focus:focus,.ms-bg-color-neutralSecondaryAlt-before:before,.ms-bgc-nsa-h:hover,.ms-bgc-nsa-f:focus,.ms-bgc-nsa-b:before{background-color:#767676}.ms-bg-color-neutralTertiary,.ms-bgc-nt,.ms-bg-color-neutralTertiary-hover:hover,.ms-bg-color-neutralTertiary-focus:focus,.ms-bg-color-neutralTertiary-before:before,.ms-bgc-nt-h:hover,.ms-bgc-nt-f:focus,.ms-bgc-nt-b:before{background-color:#a6a6a6}.ms-bg-color-neutralTertiaryAlt,.ms-bgc-nta,.ms-bg-color-neutralTertiaryAlt-hover:hover,.ms-bg-color-neutralTertiaryAlt-focus:focus,.ms-bg-color-neutralTertiaryAlt-before:before,.ms-bgc-nta-h:hover,.ms-bgc-nta-f:focus,.ms-bgc-nta-b:before{background-color:#c8c8c8}.ms-bg-color-neutralLight,.ms-bgc-nl,.ms-bg-color-neutralLight-hover:hover,.ms-bg-color-neutralLight-focus:focus,.ms-bg-color-neutralLight-before:before,.ms-bgc-nl-h:hover,.ms-bgc-nl-f:focus,.ms-bgc-nl-b:before{background-color:#eaeaea}.ms-bg-color-neutralLighter,.ms-bgc-nlr,.ms-bg-color-neutralLighter-hover:hover,.ms-bg-color-neutralLighter-focus:focus,.ms-bg-color-neutralLighter-before:before,.ms-bgc-nlr-h:hover,.ms-bgc-nlr-f:focus,.ms-bgc-nlr-b:before{background-color:#f4f4f4}.ms-bg-color-neutralLighterAlt,.ms-bgc-nlra,.ms-bg-color-neutralLighterAlt-hover:hover,.ms-bg-color-neutralLighterAlt-focus:focus,.ms-bg-color-neutralLighterAlt-before:before,.ms-bgc-nlra-h:hover,.ms-bgc-nlra-f:focus,.ms-bgc-nlra-b:before{background-color:#f8f8f8}.ms-bg-color-white,.ms-bgc-w,.ms-bg-color-white-hover:hover,.ms-bg-color-white-focus:focus,.ms-bg-color-white-before:before,.ms-bgc-w-h:hover,.ms-bgc-w-b:before{background-color:#fff}.ms-border-color-black,.ms-bcl-b,.ms-border-color-black-hover:hover,.ms-border-color-black-focus:focus,.ms-border-color-black-before:before,.ms-bcl-b-h:hover,.ms-bcl-b-f:focus,.ms-bcl-b-b:before{border-color:#000}.ms-border-color-neutralDark,.ms-bcl-nd,.ms-border-color-neutralDark-hover:hover,.ms-border-color-neutralDark-focus:focus,.ms-border-color-neutralDark-before:before,.ms-bcl-nd-h:hover,.ms-bcl-nd-f:focus,.ms-bcl-nd-b:before{border-color:#212121}.ms-border-color-neutralPrimary,.ms-bcl-np,.ms-border-color-neutralPrimary-hover:hover,.ms-border-color-neutralPrimary-focus:focus,.ms-border-color-neutralPrimary-before:before,.ms-bcl-np-h:hover,.ms-bcl-np-f:focus,.ms-bcl-np-b:before{border-color:#333}.ms-border-color-neutralSecondary,.ms-bcl-ns,.ms-border-color-neutralSecondary-hover:hover,.ms-border-color-neutralSecondary-focus:focus,.ms-border-color-neutralSecondary-before:before,.ms-bcl-ns-h:hover,.ms-bcl-ns-f:focus,.ms-bcl-ns-b:before{border-color:#666}.ms-border-color-neutralSecondaryAlt,.ms-bcl-nsa,.ms-border-color-neutralSecondaryAlt-hover:hover,.ms-border-color-neutralSecondaryAlt-focus:focus,.ms-border-color-neutralSecondaryAlt-before:before,.ms-bcl-nsa-h:hover,.ms-bcl-nsa-f:focus,.ms-bcl-nsa-b:before{border-color:#767676}.ms-border-color-neutralTertiary,.ms-bcl-nt,.ms-border-color-neutralTertiary-hover:hover,.ms-border-color-neutralTertiary-focus:focus,.ms-border-color-neutralTertiary-before:before,.ms-bcl-nt-h:hover,.ms-bcl-nt-f:focus,.ms-bcl-nt-b:before{border-color:#a6a6a6}.ms-border-color-neutralTertiaryAlt,.ms-bcl-nta,.ms-border-color-neutralTertiaryAlt-hover:hover,.ms-border-color-neutralTertiaryAlt-focus:focus,.ms-border-color-neutralTertiaryAlt-before:before,.ms-bcl-nta-h:hover,.ms-bcl-nta-f:focus,.ms-bcl-nta-b:before{border-color:#c8c8c8}.ms-border-color-neutralLight,.ms-bcl-nl,.ms-border-color-neutralLight-hover:hover,.ms-border-color-neutralLight-focus:focus,.ms-border-color-neutralLight-before:before,.ms-bcl-nl-h:hover,.ms-bcl-nl-f:focus,.ms-bcl-nl-b:before{border-color:#eaeaea}.ms-border-color-neutralLighter,.ms-bcl-nlr,.ms-border-color-neutralLighter-hover:hover,.ms-border-color-neutralLighter-focus:focus,.ms-border-color-neutralLighter-before:before,.ms-bcl-nlr-h:hover,.ms-bcl-nlr-f:focus,.ms-bcl-nlr-b:before{border-color:#f4f4f4}.ms-border-color-neutralLighterAlt,.ms-bcl-nlra,.ms-border-color-neutralLighterAlt-hover:hover,.ms-border-color-neutralLighterAlt-focus:focus,.ms-border-color-neutralLighterAlt-before:before,.ms-bcl-nlra-h:hover,.ms-bcl-nlra-f:focus,.ms-bcl-nlra-b:before{border-color:#f8f8f8}.ms-border-color-white,.ms-bcl-w,.ms-border-color-white-hover:hover,.ms-border-color-white-focus:focus,.ms-border-color-white-before:before,.ms-bcl-w-h:hover,.ms-bcl-w-f:focus,.ms-bcl-w-b:before{border-color:#fff}.ms-font-color-black,.ms-fontColor-black,.ms-fcl-b,.ms-font-color-black-hover:hover,.ms-font-color-black-focus:focus,.ms-font-color-black-before:before,.ms-fcl-b-h:hover,.ms-fcl-b-f:focus,.ms-fcl-b-b:before{color:#000}.ms-font-color-neutralDark,.ms-fontColor-neutralDark,.ms-fcl-nd,.ms-font-color-neutralDark-hover:hover,.ms-font-color-neutralDark-focus:focus,.ms-font-color-neutralDark-before:before,.ms-fcl-nd-h:hover,.ms-fcl-nd-f:focus,.ms-fcl-nd-b:before{color:#212121}.ms-font-color-neutralPrimary,.ms-fontColor-neutralPrimary,.ms-fcl-np,.ms-font-color-neutralPrimary-hover:hover,.ms-font-color-neutralPrimary-focus:focus,.ms-font-color-neutralPrimary-before:before,.ms-fcl-np-h:hover,.ms-fcl-np-f:focus,.ms-fcl-np-b:before{color:#333}.ms-font-color-neutralSecondary,.ms-fontColor-neutralSecondary,.ms-fcl-ns,.ms-font-color-neutralSecondary-hover:hover,.ms-font-color-neutralSecondary-focus:focus,.ms-font-color-neutralSecondary-before:before,.ms-fcl-ns-h:hover,.ms-fcl-ns-f:focus,.ms-fcl-ns-b:before{color:#666}.ms-font-color-neutralSecondaryAlt,.ms-fontColor-neutralSecondaryAlt,.ms-fcl-nsa,.ms-font-color-neutralSecondaryAlt-hover:hover,.ms-font-color-neutralSecondaryAlt-focus:focus,.ms-font-color-neutralSecondaryAlt-before:before,.ms-fcl-nsa-h:hover,.ms-fcl-nsa-f:focus,.ms-fcl-nsa-b:before{color:#767676}.ms-font-color-neutralTertiary,.ms-fontColor-neutralTertiary,.ms-fcl-nt,.ms-font-color-neutralTertiary-hover:hover,.ms-font-color-neutralTertiary-focus:focus,.ms-font-color-neutralTertiary-before:before,.ms-fcl-nt-h:hover,.ms-fcl-nt-f:focus,.ms-fcl-nt-b:before{color:#a6a6a6}.ms-font-color-neutralTertiaryAlt,.ms-fontColor-neutralTertiaryAlt,.ms-fcl-nta,.ms-font-color-neutralTertiaryAlt-hover:hover,.ms-font-color-neutralTertiaryAlt-focus:focus,.ms-font-color-neutralTertiaryAlt-before:before,.ms-fcl-nta-h:hover,.ms-fcl-nta-f:focus,.ms-fcl-nta-b:before{color:#c8c8c8}.ms-font-color-neutralLight,.ms-fontColor-neutralLight,.ms-fcl-nl,.ms-font-color-neutralLight-hover:hover,.ms-font-color-neutralLight-focus:focus,.ms-font-color-neutralLight-before:before,.ms-fcl-nl-h:hover,.ms-fcl-nl-f:focus,.ms-fcl-nl-b:before{color:#eaeaea}.ms-font-color-neutralLighter,.ms-fontColor-neutralLighter,.ms-fcl-nlr,.ms-font-color-neutralLighter-hover:hover,.ms-font-color-neutralLighter-focus:focus,.ms-font-color-neutralLighter-before:before,.ms-fcl-nlr-h:hover,.ms-fcl-nlr-f:focus,.ms-fcl-nlr-b:before{color:#f4f4f4}.ms-font-color-neutralLighterAlt,.ms-fontColor-neutralLighterAlt,.ms-fcl-nlra,.ms-font-color-neutralLighterAlt-hover:hover,.ms-font-color-neutralLighterAlt-focus:focus,.ms-font-color-neutralLighterAlt-before:before,.ms-fcl-nlra-h:hover,.ms-fcl-nlra-f:focus,.ms-fcl-nlra-b:before{color:#f8f8f8}.ms-font-color-white,.ms-fontColor-white,.ms-fcl-w,.ms-font-color-white-hover:hover,.ms-font-color-white-focus:focus,.ms-font-color-white-before:before,.ms-fcl-w-h:hover,.ms-fcl-w-f:focus,.ms-fcl-w-b:before{color:#fff}--><!--.ms-bg-color-yellow,.ms-bgc-y,.ms-bg-color-yellow-hover:hover,.ms-bg-color-yellow-before:before,.ms-bgc-y-h:hover,.ms-bgc-y-b:before{background-color:#ffb900}.ms-bg-color-yellowLight,.ms-bgc-yl,.ms-bg-color-yellowLight-hover:hover,.ms-bg-color-yellowLight-before:before,.ms-bgc-yl-h:hover,.ms-bgc-yl-b:before{background-color:#fff100}.ms-bg-color-orange,.ms-bgc-o,.ms-bg-color-orange-hover:hover,.ms-bg-color-orange-before:before,.ms-bgc-o-h:hover,.ms-bgc-o-b:before{background-color:#d83b01}.ms-bg-color-orangeLight,.ms-bgc-ol,.ms-bg-color-orangeLight-hover:hover,.ms-bg-color-orangeLight-before:before,.ms-bgc-ol-h:hover,.ms-bgc-ol-b:before{background-color:#ff8c00}.ms-bg-color-redDark,.ms-bgc-rd,.ms-bg-color-redDark-hover:hover,.ms-bg-color-redDark-before:before,.ms-bgc-rd-h:hover,.ms-bgc-rd-b:before{background-color:#a80000}.ms-bg-color-red,.ms-bgc-r,.ms-bg-color-red-hover:hover,.ms-bg-color-red-before:before,.ms-bgc-r-h:hover,.ms-bgc-r-b:before{background-color:#e81123}.ms-bg-color-magentaDark,.ms-bgc-md,.ms-bg-color-magentaDark-hover:hover,.ms-bg-color-magentaDark-before:before,.ms-bgc-md-h:hover,.ms-bgc-md-b:before{background-color:#5c005c}.ms-bg-color-magenta,.ms-bgc-m,.ms-bg-color-magenta-hover:hover,.ms-bg-color-magenta-before:before,.ms-bgc-m-h:hover,.ms-bgc-m-b:before{background-color:#b4009e}.ms-bg-color-magentaLight,.ms-bgc-ml,.ms-bg-color-magentaLight-hover:hover,.ms-bg-color-magentaLight-before:before,.ms-bgc-ml-h:hover,.ms-bgc-ml-b:before{background-color:#e3008c}.ms-bg-color-purpleDark,.ms-bgc-pd,.ms-bg-color-purpleDark-hover:hover,.ms-bg-color-purpleDark-before:before,.ms-bgc-pd-h:hover,.ms-bgc-pd-b:before{background-color:#32145a}.ms-bg-color-purple,.ms-bgc-p,.ms-bg-color-purple-hover:hover,.ms-bg-color-purple-before:before,.ms-bgc-p-h:hover,.ms-bgc-p-b:before{background-color:#5c2d91}.ms-bg-color-purpleLight,.ms-bgc-pl,.ms-bg-color-purpleLight-hover:hover,.ms-bg-color-purpleLight-before:before,.ms-bgc-pl-h:hover,.ms-bgc-pl-b:before{background-color:#b4a0ff}.ms-bg-color-blueDark,.ms-bgc-bd,.ms-bg-color-blueDark-hover:hover,.ms-bg-color-blueDark-before:before,.ms-bgc-bd-h:hover,.ms-bgc-bd-b:before{background-color:#002050}.ms-bg-color-blueMid,.ms-bgc-bm,.ms-bg-color-blueMid-hover:hover,.ms-bg-color-blueMid-before:before,.ms-bgc-bm-h:hover,.ms-bgc-bm-b:before{background-color:#00188f}.ms-bg-color-blue,.ms-bgc-blu,.ms-bg-color-blue-hover:hover,.ms-bg-color-blue-before:before,.ms-bgc-blu-h:hover,.ms-bgc-blu-b:before{background-color:#0078d7}.ms-bg-color-blueLight,.ms-bgc-bl,.ms-bg-color-blueLight-hover:hover,.ms-bg-color-blueLight-before:before,.ms-bgc-bl-h:hover,.ms-bgc-bl-b:before{background-color:#00bcf2}.ms-bg-color-tealDark,.ms-bgc-ted,.ms-bg-color-tealDark-hover:hover,.ms-bg-color-tealDark-before:before,.ms-bgc-ted-h:hover,.ms-bgc-ted-b:before{background-color:#004b50}.ms-bg-color-teal,.ms-bgc-t,.ms-bg-color-teal-hover:hover,.ms-bg-color-teal-before:before,.ms-bgc-t-h:hover,.ms-bgc-t-b:before{background-color:#008272}.ms-bg-color-tealLight,.ms-bgc-tel,.ms-bg-color-tealLight-hover:hover,.ms-bg-color-tealLight-before:before,.ms-bgc-tel-h:hover,.ms-bgc-tel-b:before{background-color:#00b294}.ms-bg-color-greenDark,.ms-bgc-gd,.ms-bg-color-greenDark-hover:hover,.ms-bg-color-greenDark-before:before,.ms-bgc-gd-h:hover,.ms-bgc-gd-b:before{background-color:#004b1c}.ms-bg-color-green,.ms-bgc-g,.ms-bg-color-green-hover:hover,.ms-bg-color-green-before:before,.ms-bgc-g-h:hover,.ms-bgc-g-b:before{background-color:#107c10}.ms-bg-color-greenLight,.ms-bgc-gl,.ms-bg-color-greenLight-hover:hover,.ms-bg-color-greenLight-before:before,.ms-bgc-gl-h:hover,.ms-bgc-gl-b:before{background-color:#bad80a}.ms-border-color-yellow,.ms-bcl-y,.ms-border-color-yellow-hover:hover,.ms-border-color-yellow-before:before,.ms-bcl-y-h:hover,.ms-bcl-y-b:before{border-color:#ffb900}.ms-border-color-yellowLight,.ms-bcl-yl,.ms-border-color-yellowLight-hover:hover,.ms-border-color-yellowLight-before:before,.ms-bcl-yl-h:hover,.ms-bcl-yl-b:before{border-color:#fff100}.ms-border-color-orange,.ms-bcl-o,.ms-border-color-orange-hover:hover,.ms-border-color-orange-before:before,.ms-bcl-o-h:hover,.ms-bcl-o-b:before{border-color:#d83b01}.ms-border-color-orangeLight,.ms-bcl-ol,.ms-border-color-orangeLight-hover:hover,.ms-border-color-orangeLight-before:before,.ms-bcl-ol-h:hover,.ms-bcl-ol-b:before{border-color:#ff8c00}.ms-border-color-redDark,.ms-bcl-rd,.ms-border-color-redDark-hover:hover,.ms-border-color-redDark-before:before,.ms-bcl-rd-h:hover,.ms-bcl-rd-b:before{border-color:#a80000}.ms-border-color-red,.ms-bcl-r,.ms-border-color-red-hover:hover,.ms-border-color-red-before:before,.ms-bcl-r-h:hover,.ms-bcl-r-b:before{border-color:#e81123}.ms-border-color-magentaDark,.ms-bcl-md,.ms-border-color-magentaDark-hover:hover,.ms-border-color-magentaDark-before:before,.ms-bcl-md-h:hover,.ms-bcl-md-b:before{border-color:#5c005c}.ms-border-color-magenta,.ms-bcl-m,.ms-border-color-magenta-hover:hover,.ms-border-color-magenta-before:before,.ms-bcl-m-h:hover,.ms-bcl-m-b:before{border-color:#b4009e}.ms-border-color-magentaLight,.ms-bcl-ml,.ms-border-color-magentaLight-hover:hover,.ms-border-color-magentaLight-before:before,.ms-bcl-ml-h:hover,.ms-bcl-ml-b:before{border-color:#e3008c}.ms-border-color-purpleDark,.ms-bcl-pd,.ms-border-color-purpleDark-hover:hover,.ms-border-color-purpleDark-before:before,.ms-bcl-pd-h:hover,.ms-bcl-pd-b:before{border-color:#32145a}.ms-border-color-purple,.ms-bcl-p,.ms-border-color-purple-hover:hover,.ms-border-color-purple-before:before,.ms-bcl-p-h:hover,.ms-bcl-p-b:before{border-color:#5c2d91}.ms-border-color-purpleLight,.ms-bcl-pl,.ms-border-color-purpleLight-hover:hover,.ms-border-color-purpleLight-before:before,.ms-bcl-pl-h:hover,.ms-bcl-pl-b:before{border-color:#b4a0ff}.ms-border-color-blueDark,.ms-bcl-bd,.ms-border-color-blueDark-hover:hover,.ms-border-color-blueDark-before:before,.ms-bcl-bd-h:hover,.ms-bcl-bd-b:before{border-color:#002050}.ms-border-color-blueMid,.ms-bcl-bm,.ms-border-color-blueMid-hover:hover,.ms-border-color-blueMid-before:before,.ms-bcl-bm-h:hover,.ms-bcl-bm-b:before{border-color:#00188f}.ms-border-color-blue,.ms-bcl-blu,.ms-border-color-blue-hover:hover,.ms-border-color-blue-before:before,.ms-bcl-blu-h:hover,.ms-bcl-blu-b:before{border-color:#0078d7}.ms-border-color-blueLight,.ms-bcl-bl,.ms-border-color-blueLight-hover:hover,.ms-border-color-blueLight-before:before,.ms-bcl-bl-h:hover,.ms-bcl-bl-b:before{border-color:#00bcf2}.ms-border-color-tealDark,.ms-bcl-ted,.ms-border-color-tealDark-hover:hover,.ms-border-color-tealDark-before:before,.ms-bcl-ted-h:hover,.ms-bcl-ted-b:before{border-color:#004b50}.ms-border-color-teal,.ms-bcl-t,.ms-border-color-teal-hover:hover,.ms-border-color-teal-before:before,.ms-bcl-t-h:hover,.ms-bcl-t-b:before{border-color:#008272}.ms-border-color-tealLight,.ms-bcl-tel,.ms-border-color-tealLight-hover:hover,.ms-border-color-tealLight-before:before,.ms-bcl-tel-h:hover,.ms-bcl-tel-b:before{border-color:#00b294}.ms-border-color-greenDark,.ms-bcl-gd,.ms-border-color-greenDark-hover:hover,.ms-border-color-greenDark-before:before,.ms-bcl-gd-h:hover,.ms-bcl-gd-b:before{border-color:#004b1c}.ms-border-color-green,.ms-bcl-g,.ms-border-color-green-hover:hover,.ms-border-color-green-before:before,.ms-bcl-g-h:hover,.ms-bcl-g-b:before{border-color:#107c10}.ms-border-color-greenLight,.ms-bcl-gl,.ms-border-color-greenLight-hover:hover,.ms-border-color-greenLight-before:before,.ms-bcl-gl-h:hover,.ms-bcl-gl-b:before{border-color:#bad80a}.ms-font-color-yellow,.ms-fcl-y,.ms-font-color-yellow-hover:hover,.ms-font-color-yellow-before:before,.ms-fcl-y-h:hover,.ms-fcl-y-b:before{color:#ffb900}.ms-font-color-yellowLight,.ms-fcl-yl,.ms-font-color-yellowLight-hover:hover,.ms-font-color-yellowLight-before:before,.ms-fcl-yl-h:hover,.ms-fcl-yl-b:before{color:#fff100}.ms-font-color-orange,.ms-fcl-o,.ms-font-color-orange-hover:hover,.ms-font-color-orange-before:before,.ms-fcl-o-h:hover,.ms-fcl-o-b:before{color:#d83b01}.ms-font-color-orangeLight,.ms-fcl-ol,.ms-font-color-orangeLight-hover:hover,.ms-font-color-orangeLight-before:before,.ms-fcl-ol-h:hover,.ms-fcl-ol-b:before{color:#ff8c00}.ms-font-color-redDark,.ms-fcl-rd,.ms-font-color-redDark-hover:hover,.ms-font-color-redDark-before:before,.ms-fcl-rd-h:hover,.ms-fcl-rd-b:before{color:#a80000}.ms-font-color-red,.ms-fcl-r,.ms-font-color-red-hover:hover,.ms-font-color-red-before:before,.ms-fcl-r-h:hover,.ms-fcl-r-b:before{color:#e81123}.ms-font-color-magentaDark,.ms-fcl-md,.ms-font-color-magentaDark-hover:hover,.ms-font-color-magentaDark-before:before,.ms-fcl-md-h:hover,.ms-fcl-md-b:before{color:#5c005c}.ms-font-color-magenta,.ms-fcl-m,.ms-font-color-magenta-hover:hover,.ms-font-color-magenta-before:before,.ms-fcl-m-h:hover,.ms-fcl-m-b:before{color:#b4009e}.ms-font-color-magentaLight,.ms-fcl-ml,.ms-font-color-magentaLight-hover:hover,.ms-font-color-magentaLight-before:before,.ms-fcl-ml-h:hover,.ms-fcl-ml-b:before{color:#e3008c}.ms-font-color-purpleDark,.ms-fcl-pd,.ms-font-color-purpleDark-hover:hover,.ms-font-color-purpleDark-before:before,.ms-fcl-pd-h:hover,.ms-fcl-pd-b:before{color:#32145a}.ms-font-color-purple,.ms-fcl-p,.ms-font-color-purple-hover:hover,.ms-font-color-purple-before:before,.ms-fcl-p-h:hover,.ms-fcl-p-b:before{color:#5c2d91}.ms-font-color-purpleLight,.ms-fcl-pl,.ms-font-color-purpleLight-hover:hover,.ms-font-color-purpleLight-before:before,.ms-fcl-pl-h:hover,.ms-fcl-pl-b:before{color:#b4a0ff}.ms-font-color-blueDark,.ms-fcl-bd,.ms-font-color-blueDark-hover:hover,.ms-font-color-blueDark-before:before,.ms-fcl-bd-h:hover,.ms-fcl-bd-b:before{color:#002050}.ms-font-color-blueMid,.ms-fcl-bm,.ms-font-color-blueMid-hover:hover,.ms-font-color-blueMid-before:before,.ms-fcl-bm-h:hover,.ms-fcl-bm-b:before{color:#00188f}.ms-font-color-blue,.ms-fcl-blu,.ms-font-color-blue-hover:hover,.ms-font-color-blue-before:before,.ms-fcl-blu-h:hover,.ms-fcl-blu-b:before{color:#0078d7}.ms-font-color-blueLight,.ms-fcl-bl,.ms-font-color-blueLight-hover:hover,.ms-font-color-blueLight-before:before,.ms-fcl-bl-h:hover,.ms-fcl-bl-b:before{color:#00bcf2}.ms-font-color-tealDark,.ms-fcl-ted,.ms-font-color-tealDark-hover:hover,.ms-font-color-tealDark-before:before,.ms-fcl-ted-h:hover,.ms-fcl-ted-b:before{color:#004b50}.ms-font-color-teal,.ms-fcl-t,.ms-font-color-teal-hover:hover,.ms-font-color-teal-before:before,.ms-fcl-t-h:hover,.ms-fcl-t-b:before{color:#008272}.ms-font-color-tealLight,.ms-fcl-tel,.ms-font-color-tealLight-hover:hover,.ms-font-color-tealLight-before:before,.ms-fcl-tel-h:hover,.ms-fcl-tel-b:before{color:#00b294}.ms-font-color-greenDark,.ms-fcl-gd,.ms-font-color-greenDark-hover:hover,.ms-font-color-greenDark-before:before,.ms-fcl-gd-h:hover,.ms-fcl-gd-b:before{color:#004b1c}.ms-font-color-green,.ms-fcl-g,.ms-font-color-green-hover:hover,.ms-font-color-green-before:before,.ms-fcl-g-h:hover,.ms-fcl-g-b:before{color:#107c10}.ms-font-color-greenLight,.ms-fcl-gl,.ms-font-color-greenLight-hover:hover,.ms-font-color-greenLight-before:before,.ms-fcl-gl-h:hover,.ms-fcl-gl-b:before{color:#bad80a}--><!--.owa-font-compose{font-family:Calibri,Arial,Helvetica,sans-serif}.owa-bg-color-neutral-orange{background-color:#D82300}.owa-bg-color-neutral-red{background-color:#A80F22}.owa-bg-color-neutral-yellow{background-color:#FFEE94}.owa-bg-color-neutral-green{background-color:#5DD255}.owa-bg-color-cal-green{background-color:#68A490}.owa-bg-color-cal-purple{background-color:#976CBE}.owa-border-color-neutral-orange{border-color:#D82300}.owa-border-color-neutral-red{border-color:#A80F22}.owa-border-color-neutral-yellow{border-color:#FFEE94}.owa-border-color-neutral-green{border-color:#5DD255}.owa-border-color-cal-green{border-color:#68A490}.owa-border-color-cal-purple{border-color:#976CBE}.owa-color-neutral-darkBlue{color:#00008B}.owa-color-neutral-orange{color:#D82300}.owa-color-neutral-red{color:#A80F22}.owa-color-neutral-yellow{color:#FFEE94}.owa-color-neutral-green{color:#5DD255}.owa-color-neutral-green-alt,.owa-color-neutral-green-alt:before{color:#107c10}.owa-color-cal-green{color:#68A490}.owa-color-cal-green-hover{color:#377353}.owa-color-cal-purple{color:#976CBE}.owa-color-cal-purple-hover{color:#67397B}.owa-color-cal-blue{color:#71C2EB}.owa-color-cal-brown{color:#AB9B81}.owa-color-cal-green-alt{color:#A9C47A}.owa-color-cal-grey{color:#999B9C}.owa-color-cal-orange{color:#E6975C}.owa-color-cal-pink{color:#CA6AAB}.owa-color-cal-red{color:#D57272}.owa-color-cal-teal{color:#7BCBC4}.owa-color-cal-yellow{color:#E3B75D}.owa-color-folder-brown{color:#EAC282}.ms-font-color-red{color:#E81123}.ms-font-color-redDark{color:#A80000}-->

    <!--.o365cs-topnavBGImage{background:url('prem/16.1809.14.2333995/resources/themes/paint/images/0/headerbgmaing2.png'),url('prem/16.1809.14.2333995/resources/themes/paint/images/0/headerbgmaing2.gif');width:1px;height:1px}-->

    <!--body { width: 100%; height: 100%; margin: 0; padding: 0; } #owaLoading { background-color: #FFF; width: 100%; height: 100%; position: absolute; z-index: 10001; } #loadingLogo, #loadingSpinner, #statusText { display: block; margin-left: auto; margin-right: auto; text-align: center; } #loadingLogo { padding-top: 174px; padding-bottom: 22px; } .tnarrow #loadingLogo { padding-top: 52px; } #statusText { color: #0072c6; font-family: 'wf_segoe-ui_normal', 'Segoe UI', 'Segoe WP', Tahoma, Arial, sans-serif; font-size: 12px; margin-top: 20px; } #statusText > span { display: none; margin-left: auto; margin-right: auto; line-height: 11px; } #statusText.script > .script { display: inline; } #statusText.scriptDelay > .scriptDelay { display: inline; } #statusText.data > .data { display: inline; } #statusText.dataDelay > .dataDelay { display: inline; } #statusText.render > .render { display: inline; }-->

    +

    <!--.msFabricScrollDisabled_d34f8364{overflow:hidden!important}--><!--.root_5a2b2aae{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-shadow:0 0 5px 0 rgba(0,0,0,.4);position:absolute;border:1px solid #eaeaea;box-sizing:border-box}@media screen and (-ms-high-contrast:active){.root_5a2b2aae{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_5a2b2aae{border:1px solid #000000}}.container_5a2b2aae{position:relative}.main_5a2b2aae{background-color:#ffffff;overflow-x:hidden;overflow-y:auto;position:relative}.beak_5a2b2aae{position:absolute;background-color:#ffffff;box-shadow:inherit;border:inherit;box-sizing:border-box;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.beakCurtain_5a2b2aae{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#ffffff}--><!--.rootIsFixed_c0ebb2d8{position:fixed;z-index:1000000;top:0;left:0;width:100vw;height:100vh;visibility:hidden}.content_c0ebb2d8{visibility:visible}--><!--.imageContainer_440a7ad1{overflow:hidden}--><!--.root_f9df2ee4{overflow:hidden}.rootIsMaximizeFrame_f9df2ee4{height:100%;width:100%}.image_f9df2ee4{display:block;opacity:0}.image_f9df2ee4.imageIsLoaded_f9df2ee4{opacity:1}.imageIsCenter_f9df2ee4,.imageIsContain_f9df2ee4,.imageIsCover_f9df2ee4{position:relative;top:50%}html[dir=ltr] .imageIsCenter_f9df2ee4,html[dir=ltr] .imageIsContain_f9df2ee4,html[dir=ltr] .imageIsCover_f9df2ee4{left:50%}html[dir=rtl] .imageIsCenter_f9df2ee4,html[dir=rtl] .imageIsContain_f9df2ee4,html[dir=rtl] .imageIsCover_f9df2ee4{right:50%}html[dir=ltr] .imageIsCenter_f9df2ee4,html[dir=ltr] .imageIsContain_f9df2ee4,html[dir=ltr] .imageIsCover_f9df2ee4{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}html[dir=rtl] .imageIsCenter_f9df2ee4,html[dir=rtl] .imageIsContain_f9df2ee4,html[dir=rtl] .imageIsCover_f9df2ee4{-webkit-transform:translate(50%,-50%);transform:translate(50%,-50%)}.imageIsContain_f9df2ee4.imageIsLandscape_f9df2ee4{width:100%;height:auto}.imageIsContain_f9df2ee4.imageIsPortrait_f9df2ee4{height:100%;width:auto}.imageIsCover_f9df2ee4.imageIsLandscape_f9df2ee4{height:100%;width:auto}.imageIsCover_f9df2ee4.imageIsPortrait_f9df2ee4{width:100%;height:auto}.imageIsNone_f9df2ee4{height:auto;width:auto}.imageIsScaleWidthHeight_f9df2ee4{height:100%;width:100%}.imageIsScaleWidth_f9df2ee4{height:auto;width:100%}.imageIsScaleHeight_f9df2ee4{height:100%;width:auto}--><!--.root_d6e318d8{background-color:#ffffff;min-width:180px}.list_d6e318d8{list-style-type:none;margin:0;padding:0;line-height:0}.item_d6e318d8{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;position:relative;box-sizing:border-box}.link_d6e318d8{font:inherit;color:inherit;background:0 0;border:none;width:100%;height:36px;line-height:36px;display:block;cursor:pointer;padding:0 6px}.link_d6e318d8::-moz-focus-inner{border:0}.link_d6e318d8{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .link_d6e318d8:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .link_d6e318d8{text-align:left}html[dir=rtl] .link_d6e318d8{text-align:right}.link_d6e318d8:hover:not([disabled]){background:#f4f4f4}.link_d6e318d8.isDisabled_d6e318d8,.link_d6e318d8[disabled]{color:#c8c8c8;cursor:default;pointer-events:none}.link_d6e318d8.isDisabled_d6e318d8 .icon_d6e318d8,.link_d6e318d8[disabled] .icon_d6e318d8{color:#c8c8c8}.is-focusVisible .link_d6e318d8:focus{background:#f4f4f4}.link_d6e318d8.isExpanded_d6e318d8,.link_d6e318d8.isExpanded_d6e318d8:hover{background:#dadada;color:#000000;font-weight:600}.header_d6e318d8{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;font-weight:600;color:#0078d7;background:0 0;border:none;height:36px;line-height:36px;cursor:default;padding:0 6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.header_d6e318d8::-moz-focus-inner{border:0}.header_d6e318d8{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .header_d6e318d8:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .header_d6e318d8{text-align:left}html[dir=rtl] .header_d6e318d8{text-align:right}a.link_d6e318d8{padding:0 6px;text-rendering:auto;color:inherit;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-shadow:none;text-decoration:none;box-sizing:border-box}.linkContent_d6e318d8{white-space:nowrap;height:inherit;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.divider_d6e318d8{display:block;height:1px;background-color:#eaeaea;position:relative}.icon_d6e318d8{display:inline-block;min-height:1px;max-height:36px;width:14px;margin:0 4px;vertical-align:middle;-ms-flex-negative:0;flex-shrink:0}.iconColor_d6e318d8{color:#0078d7}.itemText_d6e318d8{margin:0 4px;vertical-align:middle;display:inline-block;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.submenuIcon_d6e318d8{height:36px;line-height:36px;text-align:center;font-size:10px;display:inline-block;vertical-align:middle;-ms-flex-negative:0;flex-shrink:0}--><!--.root_8b49c145{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;color:#0078d7;margin:0;overflow:inherit;padding:0;text-overflow:inherit}.isEnabled_8b49c145:focus,.isEnabled_8b49c145:hover{color:#004578}.isEnabled_8b49c145:active{color:#0078d7}.isDisabled_8b49c145{color:#a6a6a6;pointer-events:none;cursor:default}button.root_8b49c145{background:0 0;border:none;cursor:pointer;display:inline;font-size:inherit}button.root_8b49c145::-moz-focus-inner{border:0}button.root_8b49c145{outline:transparent;position:relative}.ms-Fabric.is-focusVisible button.root_8b49c145:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] button.root_8b49c145{text-align:left}html[dir=rtl] button.root_8b49c145{text-align:right}a.root_8b49c145{text-decoration:none}.ms-Fabric.is-focusVisible a.root_8b49c145:focus{outline:1px solid #666666}--><!--.root_a46124c0{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;margin:23px 0 1px}.list_a46124c0{white-space:nowrap;padding:0;margin:0}.chevron_a46124c0{font-size:12px;color:#666666;vertical-align:top;margin:11px 0;line-height:1}.listItem_a46124c0{list-style-type:none;vertical-align:top;margin:0;padding:0;display:inline-block;position:relative}.listItem_a46124c0:last-of-type .chevron_a46124c0{display:none}.listItem_a46124c0 .itemLink_a46124c0,.listItem_a46124c0 .item_a46124c0{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;display:inline-block;padding:0 8px;max-width:160px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;vertical-align:top}.overflow_a46124c0{display:inline-block;position:relative}.overflowButton_a46124c0{font-size:16px;display:inline-block;color:#0078d7;padding:9px 8px;cursor:pointer;vertical-align:top;line-height:1}.overflowButton_a46124c0:hover{cursor:pointer;background-color:#f4f4f4}.item_a46124c0:hover{cursor:default}.root_a46124c0 .itemLink_a46124c0:hover{background-color:#f4f4f4;color:initial;cursor:pointer}.root_a46124c0 .itemLink_a46124c0:focus{color:#212121}.root_a46124c0 .itemLink_a46124c0:active{outline:transparent;background-color:#c8c8c8;color:#333333}.itemLink_a46124c0,.overflowButton_a46124c0{text-decoration:none;outline:transparent}@media screen and (max-width:639px){.listItem_a46124c0 .itemLink_a46124c0{font-size:17px}.chevron_a46124c0{font-size:10px;margin:8px 0}.overflowButton_a46124c0{font-size:15px;padding:6px 8px;line-height:1}}@media screen and (max-width:479px){.listItem_a46124c0 .itemLink_a46124c0{font-size:14px;max-width:116px}.chevron_a46124c0{font-size:8px;margin:7px 0}.overflowButton_a46124c0{padding:4px 6px}}--><!--.flexContainer_9db79f3e{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.root_9db79f3e{outline:transparent}.screenReaderOnly_9db79f3e{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}--><!--.root_025f4789{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;background-color:#f4f4f4;color:#333333;min-width:80px;height:32px;font-weight:600;font-size:14px}.root_025f4789::-moz-focus-inner{border:0}.root_025f4789{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_025f4789:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.label_025f4789{margin:0 4px;line-height:100%}.icon_025f4789{margin:0 4px;height:16px;line-height:16px;text-align:center;vertical-align:middle}.isEnabled_025f4789.isToggled_025f4789{background-color:#0078d7;color:#ffffff}.isEnabled_025f4789:hover{background-color:#eaeaea;color:#000000}.isEnabled_025f4789:active{background-color:#0078d7;color:#ffffff}.isDisabled_025f4789{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none}.isDisabled_025f4789:focus,.isDisabled_025f4789:hover{outline:0}--><!--.root_196d516c{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;border-width:0;background-color:transparent;padding:0 4px;height:40px;color:#333333}.root_196d516c::-moz-focus-inner{border:0}.root_196d516c{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_196d516c:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.flexContainer_196d516c{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.label_196d516c{margin:0 4px;line-height:100%}.icon_196d516c{margin:0 4px;height:16px;line-height:16px;text-align:center;vertical-align:middle}.isEnabled_196d516c.isToggled_196d516c{background-color:#c8c8c8}.isEnabled_196d516c.isToggled_196d516c:hover{background-color:#eaeaea;color:#004578}.isEnabled_196d516c:hover{color:#004578}.isEnabled_196d516c:active{color:#0078d7}.isEnabled_196d516c .icon_196d516c{color:#0078d7}.isDisabled_196d516c{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none;background-color:transparent}.isDisabled_196d516c:focus,.isDisabled_196d516c:hover{outline:0}--><!--.root_7db910d8{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;padding:16px 20px;background-color:#f4f4f4;color:#666666;min-width:80px;max-width:280px;min-height:72px}.root_7db910d8::-moz-focus-inner{border:0}.root_7db910d8{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_7db910d8:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.flexContainer_7db910d8{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;-ms-grid-row-align:stretch;align-items:stretch;min-width:100%;height:auto}html[dir=ltr] .flexContainer_7db910d8{text-align:left}html[dir=rtl] .flexContainer_7db910d8{text-align:right}.label_7db910d8{margin:0 4px;line-height:100%;font-weight:600;color:#000000;margin:0 0 5px}.description_7db910d8{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#666666;line-height:100%}.isEnabled_7db910d8.isToggled_7db910d8{background-color:#0078d7;color:#ffffff}.isEnabled_7db910d8.isToggled_7db910d8 .description_7db910d8,.isEnabled_7db910d8.isToggled_7db910d8 .label_7db910d8{color:inherit}.isEnabled_7db910d8.isToggled_7db910d8:hover{background-color:#eaeaea}.isEnabled_7db910d8.isToggled_7db910d8:hover .description_7db910d8,.isEnabled_7db910d8.isToggled_7db910d8:hover .label_7db910d8{color:#212121}.isEnabled_7db910d8:hover{background-color:#eaeaea}.isEnabled_7db910d8:hover .description_7db910d8{color:#212121}.isEnabled_7db910d8:active{background-color:#0078d7;color:#ffffff}.isEnabled_7db910d8:active .description_7db910d8,.isEnabled_7db910d8:active .label_7db910d8{color:inherit}.isDisabled_7db910d8{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none}.isDisabled_7db910d8:focus,.isDisabled_7db910d8:hover{outline:0}.isDisabled_7db910d8 .description_7db910d8,.isDisabled_7db910d8 .label_7db910d8{color:inherit}--><!--.root_bf6ba701{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;border-width:0;background-color:transparent;padding:0 4px;width:32px;height:32px;color:#666666;font-size:16px}.root_bf6ba701::-moz-focus-inner{border:0}.root_bf6ba701{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_bf6ba701:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.icon_bf6ba701{margin:0 4px;height:16px;line-height:16px;text-align:center;vertical-align:middle;color:#000000}.isEnabled_bf6ba701.isToggled_bf6ba701{background-color:#c8c8c8}.isEnabled_bf6ba701.isToggled_bf6ba701.icon_bf6ba701{color:#000000}.isEnabled_bf6ba701.isToggled_bf6ba701:hover{background-color:#eaeaea}.isEnabled_bf6ba701:hover{color:#004578}.isEnabled_bf6ba701:active{color:#0078d7}.isDisabled_bf6ba701{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none;background-color:transparent}.isDisabled_bf6ba701:focus,.isDisabled_bf6ba701:hover{outline:0}--><!--.root_96e4843c{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;background-color:#0078d7;color:#ffffff;min-width:80px;height:32px;font-weight:600;font-size:14px}.root_96e4843c::-moz-focus-inner{border:0}.root_96e4843c{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_96e4843c:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.root_96e4843c::-moz-focus-inner{border:0}.root_96e4843c{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_96e4843c:focus:after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:1px solid #ffffff}.label_96e4843c{margin:0 4px;line-height:100%}.icon_96e4843c{margin:0 4px;height:16px;line-height:16px;text-align:center;vertical-align:middle}.isEnabled_96e4843c.isToggled_96e4843c{background-color:#005a9e;color:#ffffff}.isEnabled_96e4843c.isToggled_96e4843c:hover{background-color:#eaeaea;color:#000000}.isEnabled_96e4843c:hover{background-color:#005a9e}.isEnabled_96e4843c:active{background-color:#0078d7;color:#ffffff}.isDisabled_96e4843c{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none}.isDisabled_96e4843c:focus,.isDisabled_96e4843c:hover{outline:0}--><!--.root_e5c4ec90{box-sizing:border-box;margin:0;padding:0;box-shadow:none;margin-bottom:17px}.picker_e5c4ec90{color:#000000;font-size:14px;position:relative}html[dir=ltr] .picker_e5c4ec90{text-align:left}html[dir=rtl] .picker_e5c4ec90{text-align:right}.holder_e5c4ec90{-webkit-overflow-scrolling:touch;box-sizing:border-box;background:#ffffff;min-width:300px;display:none}.picker_e5c4ec90.pickerIsOpened_e5c4ec90 .holder_e5c4ec90{-webkit-animation-name:fadeIn_e5c4ec90,slideDownIn10_e5c4ec90;animation-name:fadeIn_e5c4ec90,slideDownIn10_e5c4ec90;-webkit-animation-duration:167ms;-moz-animation-duration:167ms;-ms-animation-duration:167ms;-o-animation-duration:167ms;-webkit-animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-timing-function:cubic-bezier(.1,.25,.75,.9);-webkit-animation-fill-mode:both;animation-fill-mode:both;box-sizing:border-box;display:block}.pickerIsOpened_e5c4ec90{position:relative}.frame_e5c4ec90{padding:1px;position:relative}.wrap_e5c4ec90{margin:-1px;padding:9px}.dayPicker_e5c4ec90{display:block;margin-bottom:30px}.header_e5c4ec90{height:40px;line-height:44px}.month_e5c4ec90,.year_e5c4ec90{display:inline-block;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;margin-top:-1px}.month_e5c4ec90:hover,.year_e5c4ec90:hover{color:#005a9e;cursor:pointer}html[dir=ltr] .month_e5c4ec90{margin-left:15px}html[dir=rtl] .month_e5c4ec90{margin-right:15px}html[dir=ltr] .year_e5c4ec90{margin-left:15px}html[dir=rtl] .year_e5c4ec90{margin-right:15px}.table_e5c4ec90{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:inherit}.table_e5c4ec90 td{margin:0;padding:0}.table_e5c4ec90 td:hover{outline:1px solid transparent}.day_e5c4ec90,.weekday_e5c4ec90{width:40px;height:40px;padding:0;line-height:40px;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:15px;font-weight:400;color:#333333}.dayIsToday_e5c4ec90{position:relative;background-color:#c7e0f4}.dayIsDisabled_e5c4ec90:before{border-top-color:#a6a6a6}.dayIsUnfocused_e5c4ec90{color:#a6a6a6;font-weight:400}.dayIsFocused_e5c4ec90:hover,.dayIsUnfocused_e5c4ec90:hover{cursor:pointer;color:#000000;background:#eaeaea}.day_e5c4ec90.dayIsHighlighted_e5c4ec90.dayIsFocused_e5c4ec90::-moz-focus-inner{border:0}.day_e5c4ec90.dayIsHighlighted_e5c4ec90.dayIsFocused_e5c4ec90{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .day_e5c4ec90.dayIsHighlighted_e5c4ec90.dayIsFocused_e5c4ec90:focus:after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:1px solid #ffffff}.dayIsHighlighted_e5c4ec90:hover,.pickerIsFocused_e5c4ec90 .dayIsHighlighted_e5c4ec90{cursor:pointer;color:#ffffff;background:#0078d7}.dayIsHighlighted_e5c4ec90.dayDisabled_e5c4ec90,.dayIsHighlighted_e5c4ec90.dayDisabled_e5c4ec90:hover{background:#a6a6a6}.monthPicker_e5c4ec90,.yearPicker_e5c4ec90{display:none}.monthComponents_e5c4ec90{position:absolute;top:9px}html[dir=ltr] .monthComponents_e5c4ec90{right:9px}html[dir=rtl] .monthComponents_e5c4ec90{left:9px}html[dir=ltr] .monthComponents_e5c4ec90{left:9px}html[dir=rtl] .monthComponents_e5c4ec90{right:9px}.decadeComponents_e5c4ec90,.yearComponents_e5c4ec90{position:absolute;top:-2px}html[dir=ltr] .decadeComponents_e5c4ec90,html[dir=ltr] .yearComponents_e5c4ec90{right:10px}html[dir=rtl] .decadeComponents_e5c4ec90,html[dir=rtl] .yearComponents_e5c4ec90{left:10px}.nextDecade_e5c4ec90,.nextMonth_e5c4ec90,.nextYear_e5c4ec90,.prevDecade_e5c4ec90,.prevMonth_e5c4ec90,.prevYear_e5c4ec90{width:40px;height:40px;display:block;text-align:center;line-height:40px;text-align:center;font-size:16px;color:#666666;position:relative;top:2px}html[dir=ltr] .nextDecade_e5c4ec90,html[dir=ltr] .nextMonth_e5c4ec90,html[dir=ltr] .nextYear_e5c4ec90,html[dir=ltr] .prevDecade_e5c4ec90,html[dir=ltr] .prevMonth_e5c4ec90,html[dir=ltr] .prevYear_e5c4ec90{margin-left:10px}html[dir=rtl] .nextDecade_e5c4ec90,html[dir=rtl] .nextMonth_e5c4ec90,html[dir=rtl] .nextYear_e5c4ec90,html[dir=rtl] .prevDecade_e5c4ec90,html[dir=rtl] .prevMonth_e5c4ec90,html[dir=rtl] .prevYear_e5c4ec90{margin-right:10px}.nextDecade_e5c4ec90:hover,.nextMonth_e5c4ec90:hover,.nextYear_e5c4ec90:hover,.prevDecade_e5c4ec90:hover,.prevMonth_e5c4ec90:hover,.prevYear_e5c4ec90:hover{color:#212121;cursor:pointer;outline:1px solid transparent}.headerToggleView_e5c4ec90{height:40px;position:absolute;top:0;width:140px;cursor:pointer}html[dir=ltr] .headerToggleView_e5c4ec90{left:0}html[dir=rtl] .headerToggleView_e5c4ec90{right:0}.currentDecade_e5c4ec90,.currentYear_e5c4ec90{display:block;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;height:40px;line-height:40px}html[dir=ltr] .currentDecade_e5c4ec90,html[dir=ltr] .currentYear_e5c4ec90{margin-left:15px}html[dir=rtl] .currentDecade_e5c4ec90,html[dir=rtl] .currentYear_e5c4ec90{margin-right:15px}.currentYear_e5c4ec90{color:#0078d7}.currentYear_e5c4ec90:hover{color:#005a9e;cursor:pointer}.optionGrid_e5c4ec90{position:relative;height:210px;width:280px;margin:10px 0 30px 5px}html[dir=rtl] .optionGrid_e5c4ec90{margin:10px 5px 30px 0}.monthOption_e5c4ec90,.yearOption_e5c4ec90{background-color:#f4f4f4;width:60px;height:60px;line-height:60px;cursor:pointer;margin:0 10px 10px 0;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:13px;font-weight:400;color:#333333;text-align:center}html[dir=ltr] .monthOption_e5c4ec90,html[dir=ltr] .yearOption_e5c4ec90{float:left}html[dir=rtl] .monthOption_e5c4ec90,html[dir=rtl] .yearOption_e5c4ec90{float:right}html[dir=rtl] .monthOption_e5c4ec90,html[dir=rtl] .yearOption_e5c4ec90{margin:0 0 10px 10px}.monthOption_e5c4ec90:hover,.yearOption_e5c4ec90:hover{background-color:#c8c8c8;outline:1px solid transparent}.monthOption_e5c4ec90.isHighlighted_e5c4ec90,.yearOption_e5c4ec90.isHighlighted_e5c4ec90{background-color:#333333;color:#ffffff}.goToday_e5c4ec90{bottom:9px;color:#0078d7;cursor:pointer;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:13px;font-weight:400;color:#333333;height:30px;line-height:30px;padding:0 10px;position:absolute!important}html[dir=ltr] .goToday_e5c4ec90{right:3px}html[dir=rtl] .goToday_e5c4ec90{left:3px}.goToday_e5c4ec90:hover{outline:1px solid transparent}.root_e5c4ec90.isPickingYears_e5c4ec90 .dayPicker_e5c4ec90,.root_e5c4ec90.isPickingYears_e5c4ec90 .monthComponents_e5c4ec90{display:none}.root_e5c4ec90.isPickingYears_e5c4ec90 .monthPicker_e5c4ec90{display:none}.root_e5c4ec90.isPickingYears_e5c4ec90 .yearPicker_e5c4ec90{display:block}@media (min-width:460px){.header_e5c4ec90{height:30px;line-height:30px}.day_e5c4ec90,.weekday_e5c4ec90{width:30px;height:30px;line-height:28px;font-weight:600;font-size:12px}.monthComponents_e5c4ec90{width:210px}.nextDecade_e5c4ec90,.nextMonth_e5c4ec90,.nextYear_e5c4ec90,.prevDecade_e5c4ec90,.prevMonth_e5c4ec90,.prevYear_e5c4ec90{font-size:12px;width:24px;height:24px;line-height:24px}.holder_e5c4ec90{min-width:230px}.month_e5c4ec90,.year_e5c4ec90{font-weight:300}.month_e5c4ec90,.year_e5c4ec90{font-size:17px;color:#333333}.month_e5c4ec90:hover,.year_e5c4ec90:hover{color:#333333;cursor:default}.pickerIsMonthPickerVisible_e5c4ec90 .dayPicker_e5c4ec90{margin:-10px 0;padding:10px 0}.pickerIsMonthPickerVisible_e5c4ec90 .dayPicker_e5c4ec90{box-sizing:border-box;width:220px;min-height:230px}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .dayPicker_e5c4ec90{border-right:1px solid #eaeaea}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .dayPicker_e5c4ec90{border-left:1px solid #eaeaea}.pickerIsMonthPickerVisible_e5c4ec90 .holder_e5c4ec90{width:440px}.pickerIsMonthPickerVisible_e5c4ec90 .monthPicker_e5c4ec90{display:block}.pickerIsMonthPickerVisible_e5c4ec90 .monthPicker_e5c4ec90,.pickerIsMonthPickerVisible_e5c4ec90 .yearPicker_e5c4ec90{top:9px;position:absolute}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .monthPicker_e5c4ec90,html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .yearPicker_e5c4ec90{left:238px}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .monthPicker_e5c4ec90,html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .yearPicker_e5c4ec90{right:238px}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .month_e5c4ec90{margin-left:12px}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .month_e5c4ec90{margin-right:12px}.pickerIsMonthPickerVisible_e5c4ec90 .optionGrid_e5c4ec90{width:200px;height:auto;margin:10px 0 0 0}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .optionGrid_e5c4ec90{margin:10px 0 0 0}.pickerIsMonthPickerVisible_e5c4ec90 .toggleMonthView_e5c4ec90{display:none}.pickerIsMonthPickerVisible_e5c4ec90 .currentDecade_e5c4ec90,.pickerIsMonthPickerVisible_e5c4ec90 .currentYear_e5c4ec90{font-size:17px;margin:0;height:30px;line-height:26px;padding:0 10px;display:inline-block}.pickerIsMonthPickerVisible_e5c4ec90 .monthOption_e5c4ec90,.pickerIsMonthPickerVisible_e5c4ec90 .yearOption_e5c4ec90{width:40px;height:40px;line-height:38px;font-size:12px;margin:0 10px 10px 0}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .monthOption_e5c4ec90,html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .yearOption_e5c4ec90{margin:0 0 10px 10px}.pickerIsMonthPickerVisible_e5c4ec90 .monthOption_e5c4ec90:hover,.pickerIsMonthPickerVisible_e5c4ec90 .yearOption_e5c4ec90:hover{outline:1px solid transparent}.pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{box-sizing:border-box;font-size:12px;height:30px;line-height:30px;padding:0 10px;top:199px}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{right:3px}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{left:3px}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{text-align:right}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{text-align:left}.pickerIsMonthPickerVisible_e5c4ec90 .root_e5c4ec90.isPickingYears_e5c4ec90 .dayPicker_e5c4ec90,.pickerIsMonthPickerVisible_e5c4ec90 .root_e5c4ec90.isPickingYears_e5c4ec90 .monthComponents_e5c4ec90{display:block}.pickerIsMonthPickerVisible_e5c4ec90 .root_e5c4ec90.isPickingYears_e5c4ec90 .monthPicker_e5c4ec90{display:none}.pickerIsMonthPickerVisible_e5c4ec90 .root_e5c4ec90.isPickingYears_e5c4ec90 .yearPicker_e5c4ec90{display:block}}@media (max-width:459px){.root_e5c4ec90.isPickingMonths_e5c4ec90 .dayPicker_e5c4ec90,.root_e5c4ec90.isPickingMonths_e5c4ec90 .monthComponents_e5c4ec90{display:none}.root_e5c4ec90.isPickingMonths_e5c4ec90 .monthPicker_e5c4ec90{display:block}}.wrap_e5c4ec90 div:focus::-moz-focus-inner,.wrap_e5c4ec90 span:focus::-moz-focus-inner{border:0}.wrap_e5c4ec90 div:focus,.wrap_e5c4ec90 span:focus{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .wrap_e5c4ec90 div:focus:focus:after,.ms-Fabric.is-focusVisible .wrap_e5c4ec90 span:focus:focus:after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:1px solid #0078d7}.goToday_e5c4ec90{width:auto}.nextMonth_e5c4ec90,.nextYear_e5c4ec90,.prevMonth_e5c4ec90,.prevYear_e5c4ec90{display:inline-block}html[dir=ltr] .navContainer_e5c4ec90{float:right}html[dir=rtl] .navContainer_e5c4ec90{float:left}--><!--.root_632a9a87{box-sizing:border-box;color:#333333;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;font-size:14px;font-weight:400;min-height:36px;position:relative}.textLabel_632a9a87{font-size:14px;padding:0 0 0 26px;display:inline-block;font-size:14px}html[dir=rtl] .textLabel_632a9a87{padding:0 26px 0 0}.input_632a9a87{position:absolute;opacity:0;top:8px}.label_632a9a87::before{content:'';display:inline-block;border:1px solid #a6a6a6;width:20px;height:20px;font-weight:400;position:absolute;box-sizing:border-box;transition-property:background,border,border-color;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.23,1)}.label_632a9a87::after{content:"\E73E";font-family:FabricMDL2Icons;display:none;position:absolute;font-weight:900;background-color:transparent;font-size:13px;top:0;color:#ffffff;line-height:20px;width:20px;text-align:center}.label_632a9a87{display:inline-block;cursor:pointer;margin-top:8px;position:relative;vertical-align:top;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;min-width:20px;min-height:20px;line-height:20px}.label_632a9a87:hover::before{border-color:#767676}.label_632a9a87:hover .textLabel_632a9a87{color:#000000}.label_632a9a87:focus::before{border-color:#767676}.label_632a9a87:focus.labelIsDisabled_632a9a87::before{border-color:#c8c8c8}.label_632a9a87:focus.labelIsChecked_632a9a87::before{border-color:#106ebe}.label_632a9a87:active::before{border-color:#767676}.label_632a9a87:active .textLabel_632a9a87{color:#000000}.label_632a9a87.labelIsChecked_632a9a87::before{border:10px solid #0078d7;background-color:#0078d7}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:black-on-white){.label_632a9a87.labelIsChecked_632a9a87::before{display:none}}.label_632a9a87.labelIsChecked_632a9a87::after{display:block}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:black-on-white){.label_632a9a87.labelIsChecked_632a9a87::after{height:16px;width:16px;line-height:16px}}@media screen and (-ms-high-contrast:active){.label_632a9a87.labelIsChecked_632a9a87::after{border:2px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.label_632a9a87.labelIsChecked_632a9a87::after{border:2px solid #000000}}.label_632a9a87.labelIsChecked_632a9a87:focus::before,.label_632a9a87.labelIsChecked_632a9a87:hover::before{border-color:#106ebe}.label_632a9a87.labelIsDisabled_632a9a87{cursor:default}.label_632a9a87.labelIsDisabled_632a9a87:focus::before,.label_632a9a87.labelIsDisabled_632a9a87:hover::before{border-color:#c8c8c8}.label_632a9a87.labelIsDisabled_632a9a87::before{background-color:#c8c8c8;border-color:#c8c8c8;color:#c8c8c8}@media screen and (-ms-high-contrast:active){.label_632a9a87.labelIsDisabled_632a9a87::after{border:2px solid #0f0}}@media screen and (-ms-high-contrast:black-on-white){.label_632a9a87.labelIsDisabled_632a9a87::after{border:2px solid #600000}}@media screen and (-ms-high-contrast:active){.label_632a9a87.labelIsDisabled_632a9a87::after{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.label_632a9a87.labelIsDisabled_632a9a87::after{color:#600000}}.label_632a9a87.labelIsDisabled_632a9a87 .textLabel_632a9a87{color:#a6a6a6}@media screen and (-ms-high-contrast:active){.label_632a9a87.labelIsDisabled_632a9a87 .textLabel_632a9a87{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.label_632a9a87.labelIsDisabled_632a9a87 .textLabel_632a9a87{color:#600000}}.label_632a9a87.labelIsInFocus_632a9a87::before{border-color:#767676}.label_632a9a87.labelIsInFocus_632a9a87.labelIsDisabled_632a9a87::before{border-color:#c8c8c8}.label_632a9a87.labelIsInFocus_632a9a87.labelIsChecked_632a9a87::before{border-color:#106ebe}.ms-Fabric.is-focusVisible .rootIsInFocus_632a9a87::before{content:'';position:absolute;top:0;bottom:0;left:0;right:0;border:1px solid #666666}@media screen and (-ms-high-contrast:active){.ms-Fabric.is-focusVisible .rootIsInFocus_632a9a87::before{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.ms-Fabric.is-focusVisible .rootIsInFocus_632a9a87::before{border:1px solid #000000}}--><!--.root_b71e4c37{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;box-sizing:border-box;margin:0;padding:0;box-shadow:none;color:#333333;box-sizing:border-box;display:block;padding:5px 0;word-wrap:break-word;overflow-wrap:break-word}.isRequired_b71e4c37::after{content:' *';color:#a80000}.isDisabled_b71e4c37{color:#a6a6a6}--><!--.root_ba8e6d49{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;margin-bottom:4px}.choiceField_ba8e6d49{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;box-sizing:border-box;color:#333333;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;font-size:14px;font-weight:400;min-height:26px;border:none;position:relative;margin-top:8px}html[dir=ltr] .choiceField_ba8e6d49{padding-left:8px}html[dir=rtl] .choiceField_ba8e6d49{padding-right:8px}.choiceField_ba8e6d49 .ms-Label{font-size:14px;padding:0 0 0 26px;display:inline-block}html[dir=rtl] .choiceField_ba8e6d49 .ms-Label{padding:0 26px 0 0}.input_ba8e6d49{position:absolute;opacity:0;top:8px}.field_ba8e6d49::before{content:'';display:inline-block;background-color:#ffffff;border:1px solid #767676;width:20px;height:20px;font-weight:400;position:absolute;top:-1px;box-sizing:border-box;transition-property:border-color;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.23,1);border-radius:50%}.field_ba8e6d49::after{content:'';width:0;height:0;border-radius:50%;position:absolute;transition-property:top,left,right,width,height;transition-duration:150ms;transition-timing-function:cubic-bezier(.4,0,.23,1);box-sizing:border-box}html[dir=ltr] .field_ba8e6d49::after{left:10px}html[dir=rtl] .field_ba8e6d49::after{right:10px}html[dir=ltr] .field_ba8e6d49::after{right:0}html[dir=rtl] .field_ba8e6d49::after{left:0}@media screen and (-ms-high-contrast:active){.field_ba8e6d49::after{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49::after{color:#600000}}.field_ba8e6d49{display:inline-block;cursor:pointer;margin-top:0;position:relative;vertical-align:top;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.field_ba8e6d49:focus::before,.field_ba8e6d49:hover::before{border-color:#000000}.field_ba8e6d49:focus .ms-Label,.field_ba8e6d49:hover .ms-Label{color:#000000}.field_ba8e6d49.fieldIsChecked_ba8e6d49::before{border:2px solid #0078d7}@media screen and (-ms-high-contrast:active){.field_ba8e6d49.fieldIsChecked_ba8e6d49::before{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49.fieldIsChecked_ba8e6d49::before{border-color:#37006e}}.field_ba8e6d49.fieldIsChecked_ba8e6d49::after{background-color:#0078d7;top:4px;width:10px;height:10px}html[dir=ltr] .field_ba8e6d49.fieldIsChecked_ba8e6d49::after{left:5px}html[dir=rtl] .field_ba8e6d49.fieldIsChecked_ba8e6d49::after{right:5px}@media screen and (-ms-high-contrast:active){.field_ba8e6d49.fieldIsChecked_ba8e6d49::after{background-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49.fieldIsChecked_ba8e6d49::after{background-color:#37006e}}.field_ba8e6d49.fieldIsChecked_ba8e6d49:focus::before,.field_ba8e6d49.fieldIsChecked_ba8e6d49:hover::before{border-color:#2b88d8}.field_ba8e6d49.fieldIsDisabled_ba8e6d49{cursor:default}.field_ba8e6d49.fieldIsDisabled_ba8e6d49::before{background-color:#c8c8c8;border-color:#c8c8c8}@media screen and (-ms-high-contrast:active){.field_ba8e6d49.fieldIsDisabled_ba8e6d49::before{border-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49.fieldIsDisabled_ba8e6d49::before{border-color:#600000}}.field_ba8e6d49.fieldIsDisabled_ba8e6d49 .ms-Label{color:#c8c8c8}@media screen and (-ms-high-contrast:active){.field_ba8e6d49.fieldIsDisabled_ba8e6d49 .ms-Label{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49.fieldIsDisabled_ba8e6d49 .ms-Label{color:#600000}}.field_ba8e6d49.fieldIsChecked_ba8e6d49.fieldIsDisabled_ba8e6d49::before{background-color:#ffffff;border-color:#c8c8c8}.field_ba8e6d49.fieldIsChecked_ba8e6d49.fieldIsDisabled_ba8e6d49::after{background-color:#c8c8c8}.choiceFieldIsIcon_ba8e6d49,.choiceFieldIsImage_ba8e6d49{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:0;margin:0 4px 4px 0;background-color:#f4f4f4}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49,html[dir=rtl] .choiceFieldIsImage_ba8e6d49{margin:0 0 4px 4px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49,html[dir=ltr] .choiceFieldIsImage_ba8e6d49{padding-left:0}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49,html[dir=rtl] .choiceFieldIsImage_ba8e6d49{padding-right:0}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49{display:inline-block;box-sizing:border-box;min-width:96px;cursor:pointer;padding:4px;padding-top:22px;margin:0;text-align:center;transition:all .2s ease;border:2px solid transparent}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49.fieldIsDisabled_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49.fieldIsDisabled_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49.fieldIsDisabled_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49.fieldIsDisabled_ba8e6d49{cursor:default}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49.fieldIsDisabled_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49.fieldIsDisabled_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49.fieldIsDisabled_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49.fieldIsDisabled_ba8e6d49 .innerField_ba8e6d49{opacity:.25}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49{position:relative;padding:0 28px}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49{padding-bottom:2px;transition:opacity .2s ease}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49.imageWrapperIsHidden_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49.imageWrapperIsHidden_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49.imageWrapperIsHidden_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49.imageWrapperIsHidden_ba8e6d49{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;opacity:0}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49 .ms-Image,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49 .ms-Image,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49 .ms-Image,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49 .ms-Image{display:inline-block}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .labelWrapper_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .labelWrapper_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .labelWrapper_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .labelWrapper_ba8e6d49{display:inline-block;position:relative;margin:4px 0 0 0;height:32px;line-height:16px;overflow-y:hidden;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .labelWrapper_ba8e6d49 .ms-Label,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .labelWrapper_ba8e6d49 .ms-Label,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .labelWrapper_ba8e6d49 .ms-Label,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .labelWrapper_ba8e6d49 .ms-Label{padding:0}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{top:3px;opacity:0}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{right:3px}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{left:3px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{left:auto}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{right:auto}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{top:13px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{right:13px}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{left:13px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{left:auto}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{right:auto}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover{border-color:#c8c8c8}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover::before{opacity:1}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49{border-color:#0078d7}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::before{opacity:1}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after{top:8px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after{right:8px}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after{left:8px}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover{border-color:#005a9e}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::before{border-color:#005a9e}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::after,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::after,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::after,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::after,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::after{background-color:#005a9e}.choiceFieldIsIcon_ba8e6d49{height:96px;width:96px}.choiceFieldIsIcon_ba8e6d49 .iconWrapper_ba8e6d49{font-size:32px;line-height:32px;height:32px}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:1px solid #333333}@media screen and (-ms-high-contrast:active){.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:2px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:2px solid #000000}}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::-moz-focus-inner,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::after,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #333333}@media screen and (-ms-high-contrast:active){.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::-moz-focus-inner,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::after,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:2px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::-moz-focus-inner,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::after,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:3px solid #000000}}--><!--.root_940e5897{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0;padding:0;box-shadow:none;margin-bottom:8px;position:relative}.screenReaderOnly_940e5897{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.fieldGroup_940e5897{border:1px solid #c8c8c8;background:#ffffff;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;position:relative}.fieldGroup_940e5897:hover{border-color:#767676}.fieldGroup_940e5897.fieldGroupIsFocused_940e5897{border-color:#0078d7}.rootIsDisabled_940e5897>.fieldGroup_940e5897{background-color:#f4f4f4;border-color:#f4f4f4;pointer-events:none;cursor:default}@media screen and (-ms-high-contrast:active){.fieldGroup_940e5897.fieldGroupIsFocused_940e5897,.fieldGroup_940e5897:hover{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.fieldGroup_940e5897.fieldGroupIsFocused_940e5897,.fieldGroup_940e5897:hover{border-color:#37006e}}.fieldGroup_940e5897::-ms-clear{display:none}.root_940e5897.rootIsDisabled_940e5897 .field{background-color:#f4f4f4;border-color:#f4f4f4;pointer-events:none;cursor:default}.fieldAddon_940e5897{background:#f4f4f4;color:#666666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 10px;line-height:1}.field_940e5897{box-sizing:border-box;margin:0;padding:0;box-shadow:none;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;border-radius:0;border:none;color:#333333;padding:0 12px 0 12px;width:100%;text-overflow:ellipsis;outline:0}html[dir=rtl] .field_940e5897{padding:0 12px 0 12px}.field_940e5897:active,.field_940e5897:focus,.field_940e5897:hover{outline:0}html[dir=ltr] .field_940e5897.hasIcon_940e5897{padding-right:24px}html[dir=rtl] .field_940e5897.hasIcon_940e5897{padding-left:24px}.field_940e5897[disabled]{background-color:transparent;border-color:transparent;pointer-events:none;cursor:default}.field_940e5897 .field_940e5897::-webkit-input-placeholder{color:#d0d0d0}.field_940e5897 .field_940e5897::-moz-placeholder{color:#d0d0d0}.field_940e5897 .field_940e5897:-moz-placeholder{color:#d0d0d0}.field_940e5897 .field_940e5897:-ms-input-placeholder{color:#d0d0d0}.root_940e5897.rootIsRequired_940e5897 .ms-Label::after{content:' *';color:#a80000}.root_940e5897.rootIsActive_940e5897{border-color:#0078d7}.errorIcon_940e5897{vertical-align:middle;font-size:14px}html[dir=ltr] .errorIcon_940e5897{margin-right:5px}html[dir=rtl] .errorIcon_940e5897{margin-left:5px}.icon_940e5897{position:absolute;bottom:8px;top:auto}html[dir=ltr] .icon_940e5897{right:8px}html[dir=rtl] .icon_940e5897{left:8px}.description_940e5897{color:#666666;font-size:11px}.rootIsBorderless_940e5897 .fieldGroup_940e5897{border-color:transparent}.root_940e5897.rootIsUnderlined_940e5897{border-bottom:1px solid #c8c8c8;border-width:0;border-bottom-width:1px;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.root_940e5897.rootIsUnderlined_940e5897:hover:not(.rootIsDisabled_940e5897){border-color:#767676}@media screen and (-ms-high-contrast:active){.root_940e5897.rootIsUnderlined_940e5897:hover:not(.rootIsDisabled_940e5897){border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_940e5897.rootIsUnderlined_940e5897:hover:not(.rootIsDisabled_940e5897){border-color:#37006e}}.root_940e5897.rootIsUnderlined_940e5897 .ms-Label{font-size:14px;line-height:22px;height:32px}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{margin-right:8px}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{margin-left:8px}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-left:12px}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-right:12px}.root_940e5897.rootIsUnderlined_940e5897 .fieldGroup_940e5897{-webkit-box-flex:1;-ms-flex:1 1 0;flex:1 1 0;border:0}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .fieldGroup_940e5897{text-align:left}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .fieldGroup_940e5897{text-align:right}.root_940e5897.rootIsUnderlined_940e5897.rootIsDisabled_940e5897{border-bottom-color:#f4f4f4}.root_940e5897.rootIsUnderlined_940e5897.rootIsDisabled_940e5897 .ms-Label{color:#a6a6a6}.root_940e5897.rootIsUnderlined_940e5897.rootIsDisabled_940e5897 .field_940e5897{background-color:transparent;color:#c8c8c8}.root_940e5897.rootIsUnderlined_940e5897.rootIsActive_940e5897{border-color:#0078d7}@media screen and (-ms-high-contrast:active){.root_940e5897.rootIsUnderlined_940e5897.rootIsActive_940e5897{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_940e5897.rootIsUnderlined_940e5897.rootIsActive_940e5897{border-color:#37006e}}.root_940e5897.rootIsMultiline_940e5897 .fieldGroup_940e5897{min-height:60px;height:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.root_940e5897.rootIsMultiline_940e5897 .field_940e5897{line-height:17px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-top:6px;overflow:auto;width:100%}html[dir=ltr] .root_940e5897.rootIsMultiline_940e5897 .field_940e5897.hasIcon_940e5897{padding-right:40px}html[dir=rtl] .root_940e5897.rootIsMultiline_940e5897 .field_940e5897.hasIcon_940e5897{padding-left:40px}.errorMessage_940e5897{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#a80000;margin:0;padding-top:5px}.invalid_940e5897,.invalid_940e5897:focus,.invalid_940e5897:hover{border-color:#a80000}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-left:12px}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-right:12px}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-right:0}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-left:0}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .field_940e5897{text-align:left}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .field_940e5897{text-align:right}.root_940e5897.rootIsMultiline_940e5897 .icon_940e5897{padding-bottom:8px;-webkit-box-align:end;-ms-flex-align:end;-ms-grid-row-align:flex-end;align-items:flex-end}html[dir=ltr] .root_940e5897.rootIsMultiline_940e5897 .icon_940e5897{padding-right:24px}html[dir=rtl] .root_940e5897.rootIsMultiline_940e5897 .icon_940e5897{padding-left:24px}.root_940e5897.rootIsMultiline_940e5897 .field_940e5897.fieldIsUnresizable_940e5897{resize:none}.hidden_940e5897{display:none}--><!--.root_c35efa75{position:relative;max-width:300px}.panel_c35efa75{padding:16px}.colorRect_c35efa75{position:relative;margin-bottom:10px}.rectContainer_c35efa75{position:relative}.capture_c35efa75{position:absolute;left:0;top:0;bottom:0;right:0;background:rgba(255,0,0,.1)}.rectContainer_c35efa75.rectContainerIsAdjusting_c35efa75 .capture_c35efa75{position:fixed}.thumb_c35efa75{position:absolute;width:20px;height:20px;background:#fff;border:1px solid rgba(255,255,255,.8);border-radius:50%;box-shadow:0 0 15px -5px #000;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.thumb_c35efa75.thumbIsSlider_c35efa75{top:50%}.light_c35efa75{position:absolute;left:0;right:0;top:0;bottom:0;background:linear-gradient(to right,#fff 0,transparent 100%)}.dark_c35efa75{position:absolute;left:0;right:0;top:0;bottom:0;background:linear-gradient(to bottom,transparent 0,#000 100%)}.slider_c35efa75{position:relative;height:20px;margin-bottom:5px;border:1px solid #eaeaea;box-sizing:border-box}.slider_c35efa75.colorSliderIsHue_c35efa75{background:linear-gradient(to left,red 0,#f09 10%,#cd00ff 20%,#3200ff 30%,#06f 40%,#00fffd 50%,#0f6 60%,#35ff00 70%,#cdff00 80%,#f90 90%,red 100%)}.slider_c35efa75.colorSliderIsAlpha_c35efa75{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAJUlEQVQYV2N89erVfwY0ICYmxoguxjgUFKI7GsTH5m4M3w1ChQC1/Ca8i2n1WgAAAABJRU5ErkJggg==)}.sliderOverlay_c35efa75{content:'';position:absolute;left:0;right:0;top:0;bottom:0}.input_c35efa75{width:100%;border:none;box-sizing:border-box;height:30px}.input_c35efa75.ms-TextField{padding-right:2px}.input_c35efa75 .input_c35efa75.ms-TextField-field{min-width:auto;padding:5px}--><!--.root_c5968264{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;position:relative;background-color:#f4f4f4;height:40px;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.primaryCommands_c5968264{position:absolute;overflow:hidden;display:inline;vertical-align:top;line-height:40px;max-width:100%;margin:0 20px}.sideCommands_c5968264{position:absolute}html[dir=ltr] .sideCommands_c5968264{right:0}html[dir=rtl] .sideCommands_c5968264{left:0}html[dir=ltr] .sideCommands_c5968264{text-align:right}html[dir=rtl] .sideCommands_c5968264{text-align:left}html[dir=ltr] .sideCommands_c5968264{padding-right:20px}html[dir=rtl] .sideCommands_c5968264{padding-left:20px}.item_c5968264{display:inline-block;color:#0078d7;height:40px;outline:transparent;vertical-align:top;margin:0 4px}.item_c5968264:hover{background-color:#eaeaea;color:#333333}.itemChevronDown_c5968264,.itemCommandText_c5968264{display:inline-block;padding:0 4px;vertical-align:top}.itemText_c5968264{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;position:relative;background:0 0;border:none;line-height:40px;min-width:20px;text-align:center;padding:0 4px;display:block;height:100%}.itemText_c5968264::-moz-focus-inner{border:0}.itemText_c5968264{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .itemText_c5968264:focus:after{content:'';position:absolute;top:2px;right:2px;bottom:2px;left:2px;pointer-events:none;border:1px solid #666666}.itemText_c5968264.itemLinkIsNoName_c5968264{padding:0 8px}.itemLink_c5968264{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;position:relative;background:0 0;border:none;line-height:40px;min-width:20px;text-align:center;padding:0 4px;display:block;height:100%;cursor:pointer}.itemLink_c5968264::-moz-focus-inner{border:0}.itemLink_c5968264{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .itemLink_c5968264:focus:after{content:'';position:absolute;top:2px;right:2px;bottom:2px;left:2px;pointer-events:none;border:1px solid #666666}.itemLink_c5968264.itemLinkIsNoName_c5968264{padding:0 8px}@media screen and (-ms-high-contrast:active){.itemLink_c5968264.itemLinkIsExpanded_c5968264::-moz-focus-inner,.itemLink_c5968264:hover::-moz-focus-inner{border:0}.itemLink_c5968264.itemLinkIsExpanded_c5968264,.itemLink_c5968264:hover{outline:transparent;position:relative}.itemLink_c5968264.itemLinkIsExpanded_c5968264::after,.itemLink_c5968264:hover::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.itemLink_c5968264.itemLinkIsExpanded_c5968264::-moz-focus-inner,.itemLink_c5968264:hover::-moz-focus-inner{border:0}.itemLink_c5968264.itemLinkIsExpanded_c5968264,.itemLink_c5968264:hover{outline:transparent;position:relative}.itemLink_c5968264.itemLinkIsExpanded_c5968264::after,.itemLink_c5968264:hover::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #000000}}.itemLink_c5968264:hover:not([disabled]){color:#212121;background-color:#eaeaea}.itemLink_c5968264:hover:not([disabled]) .itemIcon_c5968264{color:#005a9e}.itemLink_c5968264:hover:not([disabled]) .itemChevronDown_c5968264{color:#3c3c3c}.itemLink_c5968264:hover:not([disabled]) .itemOverflow_c5968264{color:#212121}.itemLink_c5968264.itemLinkIsExpanded_c5968264{background-color:#dadada;color:#000000}.itemLink_c5968264.itemLinkIsExpanded_c5968264 .itemIcon_c5968264{color:#004578}.itemLink_c5968264.itemLinkIsExpanded_c5968264 .itemChevronDown_c5968264{color:#212121}.itemLink_c5968264.itemLinkIsExpanded_c5968264 .itemOverflow_c5968264{color:#000000}.itemLink_c5968264.itemLinkIsExpanded_c5968264:hover{background-color:#d0d0d0}.itemLink_c5968264[disabled]{color:#c8c8c8;cursor:default;pointer-events:none}.itemLink_c5968264[disabled] .itemIcon_c5968264{color:#c8c8c8}.itemIcon_c5968264{font-size:16px;padding:0 4px}.itemIconColor_c5968264{color:#106ebe}.itemChevronDown_c5968264{color:#666666;font-size:12px}.itemOverflow_c5968264{font-size:18px;color:#333333;padding:0 7px}.search_c5968264{width:208px;max-width:208px;background-color:#ffffff;color:#333333;height:40px;position:relative;box-sizing:border-box;border-color:transparent}html[dir=ltr] .search_c5968264{float:left}html[dir=rtl] .search_c5968264{float:right}html[dir=ltr] .search_c5968264{border-right:1px solid #eaeaea}html[dir=rtl] .search_c5968264{border-left:1px solid #eaeaea}@media screen and (-ms-high-contrast:active){.search_c5968264{z-index:10}html[dir=ltr] .search_c5968264{border-right:1px solid #ffffff}html[dir=rtl] .search_c5968264{border-left:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){html[dir=ltr] .search_c5968264{border-right:1px solid #000000}html[dir=rtl] .search_c5968264{border-left:1px solid #000000}}.search_c5968264:before{position:absolute;content:' ';right:0;bottom:0;left:0;margin:0 8px;border-bottom:1px solid #eaeaea}.search_c5968264:hover{color:#0078d7}@media screen and (-ms-high-contrast:active){.search_c5968264:hover::-moz-focus-inner{border:0}.search_c5968264:hover{outline:transparent;position:relative}.search_c5968264:hover::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.search_c5968264:hover::-moz-focus-inner{border:0}.search_c5968264:hover{outline:transparent;position:relative}.search_c5968264:hover::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #000000}}.searchInput_c5968264{height:40px;padding:8px 8px 8px 0;border:none;background-color:transparent;width:100%;box-sizing:border-box;outline:0;cursor:pointer;font-size:14px;-webkit-appearance:none;-webkit-border-radius:0}html[dir=ltr] .searchInput_c5968264{border-left:42px solid transparent}html[dir=rtl] .searchInput_c5968264{border-right:42px solid transparent}@media screen and (-ms-high-contrast:active){html[dir=ltr] .searchInput_c5968264{border-left:40px solid #000000}html[dir=rtl] .searchInput_c5968264{border-right:40px solid #000000}}@media screen and (-ms-high-contrast:black-on-white){html[dir=ltr] .searchInput_c5968264{border-left:40px solid #ffffff}html[dir=rtl] .searchInput_c5968264{border-right:40px solid #ffffff}}.searchInput_c5968264::-ms-clear{display:none}.searchIconSearchWrapper_c5968264{display:block}.searchIconArrowWrapper_c5968264{display:none}.searchIconArrowWrapper_c5968264,.searchIconSearchWrapper_c5968264{top:0}html[dir=ltr] .searchIconArrowWrapper_c5968264,html[dir=ltr] .searchIconSearchWrapper_c5968264{padding-left:17px}html[dir=rtl] .searchIconArrowWrapper_c5968264,html[dir=rtl] .searchIconSearchWrapper_c5968264{padding-right:17px}html[dir=ltr] .searchIconArrowWrapper_c5968264,html[dir=ltr] .searchIconSearchWrapper_c5968264{padding-right:8px}html[dir=rtl] .searchIconArrowWrapper_c5968264,html[dir=rtl] .searchIconSearchWrapper_c5968264{padding-left:8px}.searchIconClearWrapper_c5968264{display:none;top:1px;z-index:10}html[dir=ltr] .searchIconClearWrapper_c5968264{right:0}html[dir=rtl] .searchIconClearWrapper_c5968264{left:0}.searchIconWrapper_c5968264{height:40px;line-height:40px;cursor:pointer;position:absolute;text-align:center}.search_c5968264 .ms-Icon:before{font-size:16px;color:#0078d7}.searchInput_c5968264,.searchInput_c5968264::-webkit-input-placeholder{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px}--><!--.root_80ecb764{box-sizing:border-box;margin:0;padding:0;box-shadow:none;margin-bottom:17px}.textField_80ecb764{position:relative}.textField_80ecb764 input::-ms-clear{display:none}.textField_80ecb764 input[readonly]{cursor:pointer}.eventWithLabel_80ecb764{color:#666666;font-size:20px;line-height:20px;pointer-events:none;position:absolute;bottom:5px}html[dir=ltr] .eventWithLabel_80ecb764{right:9px}html[dir=rtl] .eventWithLabel_80ecb764{left:9px}.eventWithoutLabel_80ecb764{color:#666666;font-size:20px;line-height:20px;pointer-events:none;position:absolute;top:7px}html[dir=ltr] .eventWithoutLabel_80ecb764{right:9px}html[dir=rtl] .eventWithoutLabel_80ecb764{left:9px}--><!--.root_bc6aaf09{line-height:1;width:24px;height:24px;vertical-align:top;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.root_bc6aaf09.rootIsChecked_bc6aaf09 .background_bc6aaf09:before{color:#0078d7}.root_bc6aaf09.rootIsChecked_bc6aaf09 .background_bc6aaf09:after{color:#ffffff}.root_bc6aaf09.rootIsChecked_bc6aaf09 .check_bc6aaf09{opacity:1;color:#ffffff;font-weight:900;font-size:12px}.root_bc6aaf09:hover .check_bc6aaf09{opacity:1}.check_bc6aaf09{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;color:#c8c8c8;opacity:0}.background_bc6aaf09{position:relative;height:24px;width:24px}.background_bc6aaf09:before{content:'\E91F';color:#ffffff}.background_bc6aaf09:after{content:'\EA3A';color:#c8c8c8}.background_bc6aaf09:after,.background_bc6aaf09:before{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-size:24px;height:24px;width:24px;position:absolute}--><!--.root_0e8cb6cd{display:inline-block}--><!--.root_3e5aae20{display:inline-block;min-width:100%;vertical-align:top;height:36px;line-height:36px;white-space:nowrap;padding-bottom:1px;border-bottom:1px solid #eaeaea;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.root_3e5aae20.rootIsSelectAllHidden_3e5aae20 .cell_3e5aae20.cellIsCheck_3e5aae20{visibility:hidden}.cell_3e5aae20.cellIsCheck_3e5aae20 .ms-Check-background{opacity:0}.cell_3e5aae20.cellIsCheck_3e5aae20:hover .ms-Check-background,.root_3e5aae20.rootIsAllSelected_3e5aae20 .ms-Check-background{opacity:1}.cellWrapper_3e5aae20{display:inline-block;position:relative}.cell_3e5aae20{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;background:0 0;color:#c8c8c8;font-weight:400;position:relative;display:inline-block;box-sizing:border-box;padding:0 8px;border:none;line-height:inherit;margin:0;height:36px;vertical-align:top;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cell_3e5aae20::-moz-focus-inner{border:0}.cell_3e5aae20{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .cell_3e5aae20:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .cell_3e5aae20{text-align:left}html[dir=rtl] .cell_3e5aae20{text-align:right}html[dir=ltr] .cell_3e5aae20{text-align:left}html[dir=rtl] .cell_3e5aae20{text-align:right}.cell_3e5aae20.cellIsCheck_3e5aae20{position:relative;padding:6px;margin:0}.cell_3e5aae20.cellIsActionable_3e5aae20{color:#666666}.cell_3e5aae20.cellIsActionable_3e5aae20:hover{color:#333333;background:#f8f8f8}.cell_3e5aae20.cellIsActionable_3e5aae20:active{background:#eaeaea}.cell_3e5aae20.cellIsSizer_3e5aae20{position:absolute;width:16px;cursor:ew-resize;bottom:0;top:0;height:inherit;background:0 0}html[dir=ltr] .cell_3e5aae20.cellIsSizer_3e5aae20{margin-left:-10px}html[dir=rtl] .cell_3e5aae20.cellIsSizer_3e5aae20{margin-right:-10px}.cell_3e5aae20.cellIsEmpty_3e5aae20{text-overflow:clip}.cell_3e5aae20.cellIsSizer_3e5aae20:after{content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:#c8c8c8;opacity:0}.cell_3e5aae20.cellIsSizer_3e5aae20.cellIsResizing_3e5aae20:after,.cell_3e5aae20.cellIsSizer_3e5aae20:hover:after{opacity:1;transition:opacity .3s linear}.collapseButton_3e5aae20{text-align:center;-webkit-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear;width:20px;outline:0}.collapseButton_3e5aae20.collapseButtonIsCollapsed_3e5aae20{-webkit-transform:rotate(0);transform:rotate(0)}.cell_3e5aae20 .nearIcon_3e5aae20{color:#666666;opacity:1}html[dir=ltr] .cell_3e5aae20 .nearIcon_3e5aae20{padding-right:4px}html[dir=rtl] .cell_3e5aae20 .nearIcon_3e5aae20{padding-left:4px}.cell_3e5aae20 .filterChevron_3e5aae20{color:#a6a6a6;vertical-align:middle}html[dir=ltr] .cell_3e5aae20 .filterChevron_3e5aae20{padding-left:4px}html[dir=rtl] .cell_3e5aae20 .filterChevron_3e5aae20{padding-right:4px}.sizingOverlay_3e5aae20{position:absolute;left:0;top:0;right:0;bottom:0;cursor:ew-resize;background:rgba(255,255,255,0)}html[dir=ltr] .cell_3e5aae20 .collapseButton_3e5aae20{padding-right:0}html[dir=rtl] .cell_3e5aae20 .collapseButton_3e5aae20{padding-left:0}--><!--.root_3d8e3150{display:inline-block;min-width:100%;min-height:36px;margin:1px 0;vertical-align:top;white-space:nowrap;padding:0;box-sizing:border-box;background:0 0;border:none;vertical-align:top;line-height:16px}.root_3d8e3150::-moz-focus-inner{border:0}.root_3d8e3150{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_3d8e3150:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .root_3d8e3150{text-align:left}html[dir=rtl] .root_3d8e3150{text-align:right}.root_3d8e3150:hover{background:#f4f4f4}.rootIsSelected_3d8e3150{background:#d0d0d0}.rootIsSelected_3d8e3150:hover{background:#dadada}.rootIsContentUnselectable_3d8e3150{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.cell_3d8e3150{display:inline-block;position:relative;box-sizing:border-box;padding:10px 0;margin:0 8px;min-height:36px;vertical-align:top;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cell_3d8e3150>button{max-width:100%}.isMultiline_3d8e3150{white-space:normal;word-break:break-word;text-overflow:clip}.fields_3d8e3150{display:inline-block}.check_3d8e3150{display:inline-block;cursor:default;padding:6px;box-sizing:border-box;vertical-align:top;background:0 0;border:none;opacity:0}.check_3d8e3150::-moz-focus-inner{border:0}.check_3d8e3150{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .check_3d8e3150:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.checkDisabled_3d8e3150{visibility:hidden}.rootIsCheckVisible_3d8e3150 .check_3d8e3150,.rootIsSelected_3d8e3150 .check_3d8e3150,.root_3d8e3150:hover .check_3d8e3150{opacity:1}.cellMeasurer_3d8e3150 .cell_3d8e3150{overflow:visible;white-space:nowrap}.checkSpacer_3d8e3150{display:inline-block;height:20px;width:20px}--><!--.root_d0adda33{position:relative;padding:10px 84px;cursor:pointer}.root_d0adda33 .ms-Link{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px}--><!--@-webkit-keyframes spinAnimation_5328356c{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinAnimation_5328356c{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.root_5328356c>.circle_5328356c{margin:auto;box-sizing:border-box;border-radius:50%;width:100%;height:100%;border:1.5px solid #c7e0f4;border-top-color:#0078d7;-webkit-animation:spinAnimation_5328356c 1.3s infinite cubic-bezier(.53,.21,.29,.67);animation:spinAnimation_5328356c 1.3s infinite cubic-bezier(.53,.21,.29,.67)}.root_5328356c>.circle_5328356c.circleIsXSmall_5328356c{width:12px;height:12px}.root_5328356c>.circle_5328356c.circleIsSmall_5328356c{width:16px;height:16px}.root_5328356c>.circle_5328356c.circleIsMedium_5328356c,.root_5328356c>.circle_5328356c.circleIsTypeMedium_5328356c{width:20px;height:20px}.root_5328356c>.circle_5328356c.circleIsLarge_5328356c,.root_5328356c>.circle_5328356c.circleIsTypeLarge_5328356c{width:28px;height:28px}.root_5328356c .label_5328356c{color:#0078d7;margin-top:10px;text-align:center}.root_5328356c .screenReaderOnly_5328356c{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media screen and (-ms-high-contrast:active){.root_5328356c>.circle_5328356c{border-top-style:none}}--><!--.root_ad643f53{cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.root_ad643f53::-moz-focus-inner{border:0}.root_ad643f53{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_ad643f53:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.root_ad643f53:hover{background:#eff6fc}.root_ad643f53.rootIsSelected_ad643f53{background:#deecf9}.root_ad643f53.rootIsSelected_ad643f53:hover{background:#c7e0f4}.check_ad643f53,.expand_ad643f53{display:inline-block;cursor:default;padding:6px;-webkit-transform:translateY(50%);transform:translateY(50%);margin-top:-12px;box-sizing:border-box;vertical-align:top;background:0 0;border:none;font-size:12px;top:4px}.check_ad643f53::-moz-focus-inner,.expand_ad643f53::-moz-focus-inner{border:0}.check_ad643f53,.expand_ad643f53{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .check_ad643f53:focus:after,.ms-Fabric.is-focusVisible .expand_ad643f53:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.check_ad643f53{opacity:0;margin-top:-10px}.check_ad643f53:focus{opacity:1}.root_ad643f53.rootIsSelected_ad643f53 .check_ad643f53,.root_ad643f53:hover .check_ad643f53{opacity:1}.title_ad643f53{padding:14px 6px;display:inline-block;cursor:pointer;outline:0}.expand_ad643f53{width:36px;height:40px;color:#666666}.expand_ad643f53 .ms-Icon{-webkit-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}.expand_ad643f53 .ms-Icon.expandIsCollapsed_ad643f53{-webkit-transform:rotate(0);transform:rotate(0)}.loading_ad643f53{display:inline-block;visibility:hidden;opacity:0;padding:0 16px;vertical-align:middle;transition:visibility 367ms,opacity 367ms}.loading_ad643f53.loadingIsVisible_ad643f53{visibility:visible;opacity:1}.dropIcon_ad643f53{display:inline-block;position:relative;top:-16px;font-size:20px;color:#767676;transition:opacity 467ms cubic-bezier(.39,.575,.565,1),-webkit-transform 267ms cubic-bezier(.6,-.28,.735,.045);transition:transform 267ms cubic-bezier(.6,-.28,.735,.045),opacity 467ms cubic-bezier(.39,.575,.565,1);transition:transform 267ms cubic-bezier(.6,-.28,.735,.045),opacity 467ms cubic-bezier(.39,.575,.565,1),-webkit-transform 267ms cubic-bezier(.6,-.28,.735,.045);opacity:0;-webkit-transform:rotate(.2deg) scale(.65);transform:rotate(.2deg) scale(.65);-webkit-transform-origin:10px 10px;transform-origin:10px 10px}html[dir=ltr] .dropIcon_ad643f53{left:-26px}html[dir=rtl] .dropIcon_ad643f53{right:-26px}.dropIcon_ad643f53 .ms-Icon--Tag{position:absolute}.ms-GroupedList-group.is-dropping>.root_ad643f53 .dropIcon_ad643f53{transition:opacity 167ms cubic-bezier(.39,.575,.565,1),-webkit-transform 467ms cubic-bezier(.075,.82,.165,1);transition:transform 467ms cubic-bezier(.075,.82,.165,1),opacity 167ms cubic-bezier(.39,.575,.565,1);transition:transform 467ms cubic-bezier(.075,.82,.165,1),opacity 167ms cubic-bezier(.39,.575,.565,1),-webkit-transform 467ms cubic-bezier(.075,.82,.165,1);transition-delay:367ms;opacity:1;-webkit-transform:rotate(.2deg) scale(1);transform:rotate(.2deg) scale(1)}.ms-GroupedList-group.is-dropping .check_ad643f53{opacity:0}--><!--.root_9b1b313e{position:relative;font-size:12px}.root_9b1b313e BUTTON{font-family:inherit;background-color:transparent}.group_9b1b313e{transition:background-color 267ms cubic-bezier(.445,.05,.55,.95)}.groupIsDropping_9b1b313e{background-color:#eaeaea}.root_9b1b313e .ms-List-cell{min-height:38px}--><!--.root_3e55d798{position:relative;font-size:12px;background:0 0;color:#333333}.focusZone_3e55d798{display:inline-block;vertical-align:top;min-width:100%;min-height:1px}.rootIsHorizontalConstrained_3e55d798{overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch}.root_3e55d798 .ms-List-cell{min-height:38px;word-break:break-word}--><!--.root_f22ef814{background-color:rgba(255,255,255,.4);position:absolute;bottom:0;left:0;right:0;top:0}.root_f22ef814.rootIsNone_f22ef814{visibility:hidden}.root_f22ef814.rootIsDark_f22ef814{background-color:rgba(0,0,0,.4)}--><!--.root_39c95f97{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;background-color:transparent;position:fixed;height:100%;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity 267ms}.root_39c95f97 .ms-Button.ms-Button--compound{display:block}html[dir=ltr] .root_39c95f97 .ms-Button.ms-Button--compound{margin-left:0}html[dir=rtl] .root_39c95f97 .ms-Button.ms-Button--compound{margin-right:0}@media screen and (-ms-high-contrast:active){.root_39c95f97 .ms-Overlay{opacity:0}}.rootIsVisible_39c95f97{opacity:1;pointer-events:auto}.main_39c95f97{box-shadow:0 0 5px 0 rgba(0,0,0,.4);background-color:#ffffff;box-sizing:border-box;position:relative;outline:3px solid transparent;max-height:100%;overflow-y:auto}html[dir=ltr] .main_39c95f97{text-align:left}html[dir=rtl] .main_39c95f97{text-align:right}--><!--.isOpen_49e4f91a{display:-webkit-box;display:-ms-flexbox;display:flex}.main_49e4f91a{width:288px}.button_49e4f91a.isClose_49e4f91a{display:none}.button_49e4f91a.isClose_49e4f91a .ms-Icon.ms-Icon--Cancel{color:#666666;font-size:16px}.inner_49e4f91a{padding:0 28px 20px}.header_49e4f91a{position:relative;width:100%;box-sizing:border-box}.title_49e4f91a{margin:0;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;padding:20px 36px 20px 28px}html[dir=rtl] .title_49e4f91a{padding:20px 28px 20px 36px}.topButton_49e4f91a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;top:0;padding:12px 12px 0 0}html[dir=ltr] .topButton_49e4f91a{right:0}html[dir=rtl] .topButton_49e4f91a{left:0}html[dir=rtl] .topButton_49e4f91a{padding:12px 0 0 12px}.topButton_49e4f91a>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.content_49e4f91a{position:relative;width:100%}.content_49e4f91a .ms-Button.ms-Button--compound{margin-bottom:20px}.content_49e4f91a .ms-Button.ms-Button--compound:last-child{margin-bottom:0}.subText_49e4f91a{margin:0 0 20px 0;padding-top:8px;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#333333;font-weight:300;line-height:1.5}.actions_49e4f91a{position:relative;width:100%;min-height:24px;line-height:24px;margin:20px 0 0;font-size:0}.actions_49e4f91a .ms-Button{line-height:normal}.actionsRight_49e4f91a{font-size:0}html[dir=ltr] .actionsRight_49e4f91a{text-align:right}html[dir=rtl] .actionsRight_49e4f91a{text-align:left}html[dir=ltr] .actionsRight_49e4f91a{margin-right:-4px}html[dir=rtl] .actionsRight_49e4f91a{margin-left:-4px}.actionsRight_49e4f91a .action_49e4f91a{margin:0 4px}.isClose_49e4f91a:not(.isLargeHeader_49e4f91a) .button_49e4f91a.isClose_49e4f91a{display:block}.isMultiline_49e4f91a .title_49e4f91a{font-size:28px}.isMultiline_49e4f91a .inner_49e4f91a{padding:0 20px 20px}.isLargeHeader_49e4f91a .header_49e4f91a{background-color:#0078d7}.isLargeHeader_49e4f91a .title_49e4f91a{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:28px;font-weight:100;color:#ffffff;padding:26px 28px 28px;margin-bottom:8px}.isLargeHeader_49e4f91a .subText_49e4f91a{font-size:14px}@media (min-width:480px){.main_49e4f91a{width:auto;min-width:288px;max-width:340px}}--><!--.root_788939a4{-webkit-font-smoothing:antialiased;background-color:#ffffff;border:1px solid #eaeaea;box-sizing:border-box;max-width:320px;min-width:206px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative}.rootIsActionable_788939a4:hover{cursor:pointer;border-color:#c8c8c8}.rootIsActionable_788939a4:hover:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid #c8c8c8;pointer-events:none}.location_788939a4+.title_788939a4{padding-top:4px}.rootIsCompact_788939a4{border-bottom:2px solid #a6a6a6;display:-webkit-box;display:-ms-flexbox;display:flex;max-width:480px;height:109px}.rootIsCompact_788939a4 .ms-DocumentCard-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.rootIsCompact_788939a4 .preview_788939a4{border-bottom:none;max-height:106px;max-width:144px}.rootIsCompact_788939a4 .preview_788939a4 .icon_788939a4 .ms-Image-image{max-height:32px;max-width:32px}html[dir=ltr] .rootIsCompact_788939a4 .preview_788939a4{border-right:1px solid #eaeaea}html[dir=rtl] .rootIsCompact_788939a4 .preview_788939a4{border-left:1px solid #eaeaea}.rootIsCompact_788939a4 .title_788939a4{padding:12px 16px 8px 16px;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:15px;font-weight:400;line-height:16px}.rootIsCompact_788939a4 .activity_788939a4{padding-bottom:12px}.actions_788939a4{height:34px;padding:4px 12px;position:relative}.action_788939a4{color:#666666;cursor:pointer}html[dir=ltr] .action_788939a4{float:left}html[dir=rtl] .action_788939a4{float:right}html[dir=ltr] .action_788939a4{margin-right:4px}html[dir=rtl] .action_788939a4{margin-left:4px}.action_788939a4 .ms-Button{font-size:16px;height:34px;width:34px}.action_788939a4 .ms-Button:hover .ms-Button-icon{color:#1174c3;cursor:pointer}.views_788939a4{line-height:34px}html[dir=ltr] .views_788939a4{text-align:right}html[dir=rtl] .views_788939a4{text-align:left}.views_788939a4 .ms-Icon{font-size:16px;vertical-align:top}html[dir=ltr] .views_788939a4 .ms-Icon{margin-right:4px}html[dir=rtl] .views_788939a4 .ms-Icon{margin-left:4px}.activity_788939a4{padding:8px 16px;position:relative}html[dir=ltr] .activityIsMultiplePeople_788939a4 .avatar_788939a4:nth-of-type(2){margin-left:-16px}html[dir=rtl] .activityIsMultiplePeople_788939a4 .avatar_788939a4:nth-of-type(2){margin-right:-16px}html[dir=ltr] .activityIsMultiplePeople_788939a4 .activityDetails_788939a4{left:72px}html[dir=rtl] .activityIsMultiplePeople_788939a4 .activityDetails_788939a4{right:72px}.avatars_788939a4{height:32px}html[dir=ltr] .avatars_788939a4{margin-left:-2px}html[dir=rtl] .avatars_788939a4{margin-right:-2px}.avatar_788939a4{display:inline-block;vertical-align:top;position:relative;text-align:center;width:32px;height:32px}.avatar_788939a4:after{content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border:2px solid #fafafa;border-radius:50%}.activityDetails_788939a4{height:32px;position:absolute;top:8px;width:calc(100% - 72px)}html[dir=ltr] .activityDetails_788939a4{left:56px}html[dir=rtl] .activityDetails_788939a4{right:56px}.activityActivity_788939a4,.name_788939a4{display:block;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#767676;line-height:15px;height:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.name_788939a4{color:#333333;font-weight:600}.location_788939a4{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#333333;display:block;padding:8px 16px;position:relative;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.location_788939a4:hover{color:#0078d7;cursor:pointer}.preview_788939a4{border-bottom:2px solid #a6a6a6;position:relative;background-color:#f8f8f8;overflow:hidden}.preview_788939a4.previewIsFileList_788939a4{background-color:#ffffff}.icon_788939a4{bottom:10px;position:absolute}html[dir=ltr] .icon_788939a4{left:10px}html[dir=rtl] .icon_788939a4{right:10px}.fileList_788939a4{padding:16px 16px 0 16px;list-style-type:none;margin:0}html[dir=rtl] .fileList_788939a4{padding:16px 16px 0 16px}.fileList_788939a4 li{height:16px;line-height:16px;margin-bottom:8px;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}html[dir=ltr] .fileList_788939a4 li{padding-left:24px}html[dir=rtl] .fileList_788939a4 li{padding-right:24px}.fileList_788939a4 a{font-size:12px;text-decoration:none;color:#212121}.fileList_788939a4 a:hover{color:#0078d7}.fileListIcon_788939a4{position:absolute;top:0}html[dir=ltr] .fileListIcon_788939a4{left:0}html[dir=rtl] .fileListIcon_788939a4{right:0}.fileListMore_788939a4{padding:0 16px 8px 16px;display:block;font-size:12px}html[dir=rtl] .fileListMore_788939a4{padding:0 16px 8px 16px}.title_788939a4{padding:8px 16px;display:block;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:17px;font-weight:300;color:#333333;height:38px;line-height:21px;overflow:hidden;word-wrap:break-word}--><!--.root_46a0fb85{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0;padding:0;box-shadow:none;color:#333333;font-size:14px;font-weight:400;line-height:1;position:relative;height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.root_46a0fb85 .contextualHost_46a0fb85{display:none}.imageArea_46a0fb85{position:relative;overflow:hidden;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 48px;flex:0 0 48px;height:48px;width:48px;border-radius:50%}@media screen and (-ms-high-contrast:active){.imageArea_46a0fb85{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.imageArea_46a0fb85{border:1px solid #000000}}.imageArea_46a0fb85 .image_46a0fb85{border:0}.placeholder_46a0fb85{color:#ffffff;position:absolute;right:0;left:0;font-size:47px;top:9px;z-index:5}.initials_46a0fb85{color:#ffffff;font-size:17px;font-weight:100;line-height:46px;height:48px}.initials_46a0fb85.initialsIsLightBlue_46a0fb85{background-color:#6ba5e7}.initials_46a0fb85.initialsIsBlue_46a0fb85{background-color:#2d89ef}.initials_46a0fb85.initialsIsDarkBlue_46a0fb85{background-color:#2b5797}.initials_46a0fb85.initialsIsTeal_46a0fb85{background-color:#00aba9}.initials_46a0fb85.initialsIsLightGreen_46a0fb85{background-color:#99b433}.initials_46a0fb85.initialsIsGreen_46a0fb85{background-color:#00a300}.initials_46a0fb85.initialsIsDarkGreen_46a0fb85{background-color:#1e7145}.initials_46a0fb85.initialsIsLightPink_46a0fb85{background-color:#e773bd}.initials_46a0fb85.initialsIsPink_46a0fb85{background-color:#ff0097}.initials_46a0fb85.initialsIsMagenta_46a0fb85{background-color:#7e3878}.initials_46a0fb85.initialsIsPurple_46a0fb85{background-color:#603cba}.initials_46a0fb85.initialsIsBlack_46a0fb85{background-color:#1d1d1d}.initials_46a0fb85.initialsIsOrange_46a0fb85{background-color:#da532c}.initials_46a0fb85.initialsIsRed_46a0fb85{background-color:#e11}.initials_46a0fb85.initialsIsDarkRed_46a0fb85{background-color:#b91d47}.image_46a0fb85{position:absolute;top:0;width:100%;height:100%;border-radius:50%;-webkit-perspective:1px;perspective:1px}html[dir=ltr] .image_46a0fb85{margin-right:10px}html[dir=rtl] .image_46a0fb85{margin-left:10px}html[dir=ltr] .image_46a0fb85{left:0}html[dir=rtl] .image_46a0fb85{right:0}.image_46a0fb85[src=""]{display:none}.presence_46a0fb85{background-color:#7fba00;position:absolute;height:12px;width:12px;border-radius:50%;top:auto;bottom:-1px;border:2px solid #ffffff;text-align:center;box-sizing:content-box;-ms-high-contrast-adjust:none}html[dir=ltr] .presence_46a0fb85{left:34px}html[dir=rtl] .presence_46a0fb85{right:34px}@media screen and (-ms-high-contrast:active){.presence_46a0fb85{border-color:#000000;color:#000000;background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.presence_46a0fb85{border-color:#ffffff;color:#ffffff;background-color:#000000}}.presence_46a0fb85 .presenceIcon_46a0fb85{color:#ffffff;font-size:8px;line-height:12px;vertical-align:top}@media screen and (-ms-high-contrast:active){.presence_46a0fb85 .presenceIcon_46a0fb85{color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.presence_46a0fb85 .presenceIcon_46a0fb85{color:#ffffff}}.details_46a0fb85{padding:0 24px 0 12px;min-width:0;width:100%}html[dir=rtl] .details_46a0fb85{padding:0 12px 0 24px}html[dir=ltr] .details_46a0fb85{text-align:left}html[dir=rtl] .details_46a0fb85{text-align:right}.optionalText_46a0fb85,.primaryText_46a0fb85,.secondaryText_46a0fb85,.tertiaryText_46a0fb85,.textContent_46a0fb85{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.primaryText_46a0fb85{color:#333333;font-weight:400;font-size:17px;margin-top:-3px;line-height:1.4}.optionalText_46a0fb85,.secondaryText_46a0fb85,.tertiaryText_46a0fb85{color:#666666;font-weight:400;font-size:12px;white-space:nowrap;line-height:1.3}.secondaryText_46a0fb85{padding-top:3px}.optionalText_46a0fb85,.tertiaryText_46a0fb85{padding-top:5px;display:none}.root_46a0fb85.rootIsTiny_46a0fb85{height:30px;min-width:30px}.root_46a0fb85.rootIsTiny_46a0fb85 .imageArea_46a0fb85{overflow:visible;background:0 0;height:0;width:0}.root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{top:10px;border:0}html[dir=ltr] .root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{right:auto}html[dir=rtl] .root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{left:auto}html[dir=ltr] .root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{left:0}html[dir=rtl] .root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{right:0}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{top:9px;border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{border:1px solid #000000}}html[dir=ltr] .root_46a0fb85.rootIsTiny_46a0fb85 .details_46a0fb85{padding-left:20px}html[dir=rtl] .root_46a0fb85.rootIsTiny_46a0fb85 .details_46a0fb85{padding-right:20px}.root_46a0fb85.rootIsTiny_46a0fb85 .primaryText_46a0fb85{font-size:14px;padding-top:4px}.root_46a0fb85.rootIsTiny_46a0fb85 .secondaryText_46a0fb85{display:none}.root_46a0fb85.rootIsTiny_46a0fb85.rootIsReadonly_46a0fb85{padding:0;background-color:transparent}.root_46a0fb85.rootIsTiny_46a0fb85.rootIsReadonly_46a0fb85 .primaryText_46a0fb85:after{content:';'}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85{height:24px;line-height:24px;min-width:24px;margin-right:4px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 24px;flex:0 0 24px;height:24px;width:24px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .placeholder_46a0fb85{font-size:18px;top:4px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .initials_46a0fb85{font-size:11px;height:24px;line-height:24px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .presence_46a0fb85{height:8px;width:8px;border:4px solid #fff}html[dir=ltr] .root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .presence_46a0fb85{left:16px}html[dir=rtl] .root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .presence_46a0fb85{right:16px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .presenceIcon_46a0fb85{font-size:6px;line-height:9px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .primaryText_46a0fb85{font-size:14px;padding-top:3px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .secondaryText_46a0fb85{display:none}.root_46a0fb85.rootIs28_46a0fb85{height:28px;line-height:28px;min-width:28px}.root_46a0fb85.rootIs28_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIs28_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 28px;flex:0 0 28px;height:28px;width:28px}.root_46a0fb85.rootIs28_46a0fb85 .placeholder_46a0fb85{font-size:18px;top:4px}.root_46a0fb85.rootIs28_46a0fb85 .initials_46a0fb85{font-size:11px;height:28px;line-height:28px}.root_46a0fb85.rootIs28_46a0fb85 .presence_46a0fb85{height:8px;width:8px;border:4px solid #fff}html[dir=ltr] .root_46a0fb85.rootIs28_46a0fb85 .presence_46a0fb85{left:16px}html[dir=rtl] .root_46a0fb85.rootIs28_46a0fb85 .presence_46a0fb85{right:16px}.root_46a0fb85.rootIs28_46a0fb85 .presenceIcon_46a0fb85{font-size:6px;line-height:9px}.root_46a0fb85.rootIs28_46a0fb85 .primaryText_46a0fb85{font-size:14px;padding-top:3px}.root_46a0fb85.rootIs28_46a0fb85 .secondaryText_46a0fb85{display:none}.root_46a0fb85.rootIsExtraSmall_46a0fb85{height:32px;line-height:32px;min-width:32px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsExtraSmall_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 32px;flex:0 0 32px;height:32px;width:32px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .placeholder_46a0fb85{font-size:28px;top:6px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .initials_46a0fb85{font-size:14px;height:32px;line-height:32px}html[dir=ltr] .root_46a0fb85.rootIsExtraSmall_46a0fb85 .presence_46a0fb85{left:19px}html[dir=rtl] .root_46a0fb85.rootIsExtraSmall_46a0fb85 .presence_46a0fb85{right:19px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .primaryText_46a0fb85{font-size:14px;padding-top:3px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .secondaryText_46a0fb85{display:none}.root_46a0fb85.rootIsSmall_46a0fb85{height:40px;line-height:40px;min-width:40px}.root_46a0fb85.rootIsSmall_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsSmall_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 40px;flex:0 0 40px;height:40px;width:40px}.root_46a0fb85.rootIsSmall_46a0fb85 .placeholder_46a0fb85{font-size:38px;top:5px}.root_46a0fb85.rootIsSmall_46a0fb85 .initials_46a0fb85{font-size:14px;height:40px;line-height:40px}html[dir=ltr] .root_46a0fb85.rootIsSmall_46a0fb85 .presence_46a0fb85{left:27px}html[dir=rtl] .root_46a0fb85.rootIsSmall_46a0fb85 .presence_46a0fb85{right:27px}.root_46a0fb85.rootIsSmall_46a0fb85 .primaryText_46a0fb85{font-size:14px}.root_46a0fb85.rootIsSmall_46a0fb85 .primaryText_46a0fb85,.root_46a0fb85.rootIsSmall_46a0fb85 .secondaryText_46a0fb85{padding-top:1px}.root_46a0fb85.rootIsLarge_46a0fb85{height:72px;line-height:72px;min-width:72px}.root_46a0fb85.rootIsLarge_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsLarge_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 72px;flex:0 0 72px;height:72px;width:72px}.root_46a0fb85.rootIsLarge_46a0fb85 .placeholder_46a0fb85{font-size:67px;top:10px}.root_46a0fb85.rootIsLarge_46a0fb85 .initials_46a0fb85{font-size:28px;height:72px;line-height:70px}.root_46a0fb85.rootIsLarge_46a0fb85 .presence_46a0fb85{height:20px;width:20px;border-width:3px}html[dir=ltr] .root_46a0fb85.rootIsLarge_46a0fb85 .presence_46a0fb85{left:49px}html[dir=rtl] .root_46a0fb85.rootIsLarge_46a0fb85 .presence_46a0fb85{right:49px}.root_46a0fb85.rootIsLarge_46a0fb85 .presenceIcon_46a0fb85{line-height:20px;font-size:14px}.root_46a0fb85.rootIsLarge_46a0fb85 .secondaryText_46a0fb85{padding-top:3px}.root_46a0fb85.rootIsLarge_46a0fb85 .tertiaryText_46a0fb85{padding-top:5px;display:block}.root_46a0fb85.rootIsExtraLarge_46a0fb85{height:100px;line-height:100px;min-width:100px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsExtraLarge_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;height:100px;width:100px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .placeholder_46a0fb85{font-size:95px;top:12px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .initials_46a0fb85{font-size:42px;height:100px;line-height:96px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .presence_46a0fb85{height:28px;width:28px;border-width:4px}html[dir=ltr] .root_46a0fb85.rootIsExtraLarge_46a0fb85 .presence_46a0fb85{left:71px}html[dir=rtl] .root_46a0fb85.rootIsExtraLarge_46a0fb85 .presence_46a0fb85{right:71px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .presenceIcon_46a0fb85{line-height:28px;font-size:21px;position:relative;top:1px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .primaryText_46a0fb85{font-size:21px;font-weight:300;margin-top:0}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .secondaryText_46a0fb85{padding-top:2px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .optionalText_46a0fb85,.root_46a0fb85.rootIsExtraLarge_46a0fb85 .tertiaryText_46a0fb85{padding-top:5px;display:block}.root_46a0fb85.rootIsDarkText_46a0fb85 .primaryText_46a0fb85{color:#212121}.root_46a0fb85.rootIsDarkText_46a0fb85 .optionalText_46a0fb85,.root_46a0fb85.rootIsDarkText_46a0fb85 .secondaryText_46a0fb85,.root_46a0fb85.rootIsDarkText_46a0fb85 .tertiaryText_46a0fb85{color:#333333}.root_46a0fb85.rootIsSelectable_46a0fb85{cursor:pointer;padding:0 10px}.root_46a0fb85.rootIsSelectable_46a0fb85:not(.rootExtraLarge_46a0fb85):focus,.root_46a0fb85.rootIsSelectable_46a0fb85:not(.rootExtraLarge_46a0fb85):hover{background-color:#deecf9;outline:1px solid transparent}.root_46a0fb85.rootIsAvailable_46a0fb85 .presence_46a0fb85{background-color:#7fba00}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsAvailable_46a0fb85 .presence_46a0fb85{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsAvailable_46a0fb85 .presence_46a0fb85{background-color:#600000}}.root_46a0fb85.rootIsAway_46a0fb85 .presence_46a0fb85{background-color:#fcd116}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsAway_46a0fb85 .presence_46a0fb85{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsAway_46a0fb85 .presence_46a0fb85{background-color:#000000}}.root_46a0fb85.rootIsAway_46a0fb85 .presenceIcon_46a0fb85{position:relative}html[dir=ltr] .root_46a0fb85.rootIsAway_46a0fb85 .presenceIcon_46a0fb85{left:1px}html[dir=rtl] .root_46a0fb85.rootIsAway_46a0fb85 .presenceIcon_46a0fb85{right:1px}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85{background-color:#ffffff}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{content:'';width:100%;height:100%;position:absolute;top:0;box-shadow:0 0 0 2px #d93b3b inset;border-radius:50%}html[dir=ltr] .root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{left:0}html[dir=rtl] .root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{right:0}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{content:'';width:100%;height:2px;background-color:#d93b3b;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);position:absolute;top:5px}html[dir=ltr] .root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{left:0}html[dir=rtl] .root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{right:0}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85{color:#0f0;background-color:#000000}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{box-shadow:0 0 0 2px #0f0 inset}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85{color:#600000;background-color:#ffffff}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{box-shadow:0 0 0 2px #600000 inset}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{background-color:#600000}}.root_46a0fb85.rootIsBlocked_46a0fb85.rootIsLarge_46a0fb85 .presence_46a0fb85::after{top:9px}.root_46a0fb85.rootIsBlocked_46a0fb85.rootIsExtraLarge_46a0fb85 .presence_46a0fb85::after{top:13px}.root_46a0fb85.rootIsBusy_46a0fb85 .presence_46a0fb85{background-color:#d93b3b}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsBusy_46a0fb85 .presence_46a0fb85{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsBusy_46a0fb85 .presence_46a0fb85{background-color:#600000}}.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85{background-color:#e81123}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85{color:#000000;background-color:#0f0}.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85::before{background-color:#0f0}.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85::after{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85{background-color:#600000}}.root_46a0fb85.rootIsOffline_46a0fb85 .presence_46a0fb85{background-color:#93abbd}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsOffline_46a0fb85 .presence_46a0fb85{background-color:#0f0;box-shadow:0 0 0 1px #ffffff inset}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsOffline_46a0fb85 .presence_46a0fb85{background-color:#ffffff;box-shadow:0 0 0 1px #000000 inset}}--><!--.root_f4b03d55{display:none;pointer-events:none;position:absolute;top:0;left:0;right:0;bottom:0}.root_f4b03d55 .overlay_f4b03d55{display:none;pointer-events:none;opacity:1;cursor:pointer;transition:opacity 367ms cubic-bezier(.1,.9,.2,1)}.main_f4b03d55{background-color:#ffffff;position:absolute;width:100%;bottom:0;top:0;display:none;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}html[dir=ltr] .main_f4b03d55{right:0}html[dir=rtl] .main_f4b03d55{left:0}@media (min-width:480px){.main_f4b03d55{border-left:1px solid #eaeaea;border-right:1px solid #eaeaea;pointer-events:auto;width:340px;box-shadow:-30px 0 30px -30px rgba(0,0,0,.2)}html[dir=ltr] .main_f4b03d55{left:auto}html[dir=rtl] .main_f4b03d55{right:auto}}.root_f4b03d55.rootIsSmall_f4b03d55 .main_f4b03d55{width:272px}@media (min-width:480px){.root_f4b03d55.rootIsSmall_f4b03d55 .main_f4b03d55{width:340px}}.root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{width:272px;box-shadow:30px 0 30px -30px rgba(0,0,0,.2)}html[dir=ltr] .root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{right:auto}html[dir=rtl] .root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{left:auto}html[dir=ltr] .root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{left:0}html[dir=rtl] .root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{right:0}.root_f4b03d55.rootIsSmallFluid_f4b03d55 .main_f4b03d55{width:100%}@media (min-width:640px){.root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55,.root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55,.root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55,.root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{width:auto}html[dir=ltr] .root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55,html[dir=ltr] .root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55,html[dir=ltr] .root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55,html[dir=ltr] .root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{left:48px}html[dir=rtl] .root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55,html[dir=rtl] .root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55,html[dir=rtl] .root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55,html[dir=rtl] .root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{right:48px}}@media (min-width:1024px){.root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55{width:643px}html[dir=ltr] .root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55{left:auto}html[dir=rtl] .root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55{right:auto}}@media (min-width:1366px){html[dir=ltr] .root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55{left:428px}html[dir=rtl] .root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55{right:428px}}@media (min-width:1366px){.root_f4b03d55.rootIsLarge_f4b03d55.rootIsFixed_f4b03d55 .main_f4b03d55{width:940px}html[dir=ltr] .root_f4b03d55.rootIsLarge_f4b03d55.rootIsFixed_f4b03d55 .main_f4b03d55{left:auto}html[dir=rtl] .root_f4b03d55.rootIsLarge_f4b03d55.rootIsFixed_f4b03d55 .main_f4b03d55{right:auto}}@media (min-width:1366px){html[dir=ltr] .root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{left:176px}html[dir=rtl] .root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{right:176px}}@media (min-width:1024px){html[dir=ltr] .root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55{left:auto}html[dir=rtl] .root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55{right:auto}}.root_f4b03d55.rootIsOpen_f4b03d55{display:block}.root_f4b03d55.rootIsOpen_f4b03d55 .main_f4b03d55{opacity:1;pointer-events:auto;display:block}.root_f4b03d55.rootIsOpen_f4b03d55 .overlay_f4b03d55{cursor:pointer;display:block;pointer-events:auto}@media screen and (-ms-high-contrast:active){.root_f4b03d55.rootIsOpen_f4b03d55 .overlay_f4b03d55{opacity:0}}.closeButton_f4b03d55{background:0 0;border:0;cursor:pointer;position:absolute;top:0;height:44px;width:44px;line-height:44px;padding:0;color:#666666;font-size:20px}html[dir=ltr] .closeButton_f4b03d55{right:4px}html[dir=rtl] .closeButton_f4b03d55{left:4px}.closeButton_f4b03d55:hover{color:#333333}.contentInner_f4b03d55{position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-overflow-scrolling:touch;-webkit-transform:translateZ(0);transform:translateZ(0)}.rootHasCloseButton_f4b03d55 .contentInner_f4b03d55{top:44px}.content_f4b03d55,.footerInner_f4b03d55,.header_f4b03d55{padding-left:16px;padding-right:16px}@media (min-width:640px){.content_f4b03d55,.footerInner_f4b03d55,.header_f4b03d55{padding-left:32px;padding-right:32px}}@media (min-width:1366px){.content_f4b03d55,.footerInner_f4b03d55,.header_f4b03d55{padding-left:40px;padding-right:40px}}.header_f4b03d55{margin:14px 0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}@media (min-width:1024px){.header_f4b03d55{margin-top:30px}}.content_f4b03d55{margin-bottom:0;overflow-y:auto}.footer_f4b03d55{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;border-top:1px solid transparent;transition:border 367ms cubic-bezier(.1,.25,.75,.9)}.footerInner_f4b03d55{padding-bottom:20px;padding-top:20px}.footerIsSticky_f4b03d55{background:#ffffff;border-top-color:#eaeaea}.headerText_f4b03d55{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;line-height:32px;margin:0}--><!--.root_ca4b5a14{box-sizing:border-box;margin:0;padding:0;box-shadow:none;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;margin-bottom:10px;position:relative;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.root_ca4b5a14:active .caretDown_ca4b5a14,.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:focus .caretDown_ca4b5a14,.root_ca4b5a14:focus .title_ca4b5a14,.root_ca4b5a14:hover .caretDown_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{color:#000000}@media screen and (-ms-high-contrast:active){.root_ca4b5a14:active .caretDown_ca4b5a14,.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:focus .caretDown_ca4b5a14,.root_ca4b5a14:focus .title_ca4b5a14,.root_ca4b5a14:hover .caretDown_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14:active .caretDown_ca4b5a14,.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:focus .caretDown_ca4b5a14,.root_ca4b5a14:focus .title_ca4b5a14,.root_ca4b5a14:hover .caretDown_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{color:#37006e}}.root_ca4b5a14:active .titleIsPlaceHolder_ca4b5a14,.root_ca4b5a14:focus .titleIsPlaceHolder_ca4b5a14,.root_ca4b5a14:hover .titleIsPlaceHolder_ca4b5a14{color:#a6a6a6}.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{border-color:#0078d7}@media screen and (-ms-high-contrast:active){.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{border-color:#37006e}}.root_ca4b5a14:focus .title_ca4b5a14{border-color:#0078d7}@media screen and (-ms-high-contrast:active){.root_ca4b5a14:focus .title_ca4b5a14{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14:focus .title_ca4b5a14{border-color:#37006e}}.root_ca4b5a14 .ms-Label{display:inline-block;margin-bottom:8px}.root_ca4b5a14.rootIsDisabled_ca4b5a14 .title_ca4b5a14{background-color:#f4f4f4;border-color:#f4f4f4;color:#a6a6a6;cursor:default}@media screen and (-ms-high-contrast:active){.root_ca4b5a14.rootIsDisabled_ca4b5a14 .title_ca4b5a14{border-color:#0f0;color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14.rootIsDisabled_ca4b5a14 .title_ca4b5a14{border-color:#600000;color:#600000}}.root_ca4b5a14.rootIsDisabled_ca4b5a14 .title_ca4b5a14.titleIsError_ca4b5a14{border-color:#a80000}.root_ca4b5a14.rootIsDisabled_ca4b5a14 .caretDown_ca4b5a14{color:#a6a6a6}@media screen and (-ms-high-contrast:active){.root_ca4b5a14.rootIsDisabled_ca4b5a14 .caretDown_ca4b5a14{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14.rootIsDisabled_ca4b5a14 .caretDown_ca4b5a14{color:#600000}}.caretDown_ca4b5a14{color:#212121;font-size:12px;position:absolute;top:1px;pointer-events:none;height:32px;line-height:30px}html[dir=ltr] .caretDown_ca4b5a14{right:12px}html[dir=rtl] .caretDown_ca4b5a14{left:12px}.title_ca4b5a14{box-sizing:border-box;margin:0;padding:0;box-shadow:none;background:#ffffff;border:1px solid #c8c8c8;cursor:pointer;display:block;height:32px;line-height:30px;padding:0 32px 0 12px;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}html[dir=rtl] .title_ca4b5a14{padding:0 12px 0 32px}.title_ca4b5a14.titleIsError_ca4b5a14{border-color:#a80000}.title_ca4b5a14.titleIsPlaceHolder_ca4b5a14{color:#a6a6a6}.panel_ca4b5a14 .ms-Panel-main{box-shadow:-30px 0 30px -30px rgba(0,0,0,.2)}.panel_ca4b5a14 .ms-Panel-contentInner{padding:0 0 20px}.callout_ca4b5a14{box-shadow:0 0 5px 0 rgba(0,0,0,.4);border:1px solid #eaeaea}.errorMessage_ca4b5a14{color:#a80000}.errorMessage_ca4b5a14::before{content:'* '}.items_ca4b5a14{display:block}.item_ca4b5a14{background:0 0;box-sizing:border-box;cursor:pointer;display:block;width:100%;height:auto;min-height:36px;line-height:20px;padding:5px 16px;position:relative;border:1px solid transparent;word-wrap:break-word;overflow-wrap:break-word;text-align:left}@media screen and (-ms-high-contrast:active){.item_ca4b5a14{border-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14{border-color:#ffffff}}.item_ca4b5a14:hover{background-color:#f4f4f4;color:#000000}@media screen and (-ms-high-contrast:active){.item_ca4b5a14:hover{background-color:#1aebff;border-color:#1aebff;color:#000000}.item_ca4b5a14:hover:focus{border-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14:hover{background-color:#37006e;border-color:#37006e;color:#ffffff}}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14:hover{-ms-high-contrast-adjust:none}}.item_ca4b5a14::-moz-focus-inner{border:0}.item_ca4b5a14{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .item_ca4b5a14:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.item_ca4b5a14:focus{background-color:#f4f4f4}.item_ca4b5a14:active{background-color:#f4f4f4;color:#000000}.item_ca4b5a14.itemIsDisabled_ca4b5a14{background:#ffffff;color:#a6a6a6;cursor:default}.item_ca4b5a14 .ms-Button-flexContainer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.item_ca4b5a14.itemIsSelected_ca4b5a14{background-color:#dadada;color:#000000}.item_ca4b5a14.itemIsSelected_ca4b5a14:hover{background-color:#dadada}.item_ca4b5a14.itemIsSelected_ca4b5a14::-moz-focus-inner{border:0}.item_ca4b5a14.itemIsSelected_ca4b5a14{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .item_ca4b5a14.itemIsSelected_ca4b5a14:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}@media screen and (-ms-high-contrast:active){.item_ca4b5a14.itemIsSelected_ca4b5a14{background-color:#1aebff;border-color:#1aebff;color:#000000}.item_ca4b5a14.itemIsSelected_ca4b5a14:focus{border-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14.itemIsSelected_ca4b5a14{background-color:#37006e;border-color:#37006e;color:#ffffff}}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14.itemIsSelected_ca4b5a14{-ms-high-contrast-adjust:none}}.header_ca4b5a14{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;font-weight:600;color:#0078d7;background:0 0;border:none;height:36px;line-height:36px;cursor:default;padding:0 16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html[dir=ltr] .header_ca4b5a14{text-align:left}html[dir=rtl] .header_ca4b5a14{text-align:right}.divider_ca4b5a14{height:1px;background-color:#eaeaea}.optionText_ca4b5a14{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:100%;word-wrap:break-word;overflow-wrap:break-word;margin:1px}--><!--.root_c70d018d{width:auto}.clear_c70d018d{clear:both}.itemContainer_c70d018d{display:-webkit-box;display:-ms-flexbox;display:flex}.members_c70d018d{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;overflow:hidden;margin:-2px}.members_c70d018d>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:2px}.itemButton_c70d018d{text-align:center;padding:0;border-radius:50%;vertical-align:top}.itemButton_c70d018d::-moz-focus-inner{border:0}.itemButton_c70d018d{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .itemButton_c70d018d:focus:after{content:'';position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;pointer-events:none;border:1px solid #666666}.itemButton_c70d018d .ms-Persona-details{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}button.itemButton_c70d018d{display:inline;background:0 0;padding:0;cursor:pointer;border:none}button.itemButton_c70d018d::-moz-focus-inner{padding:0;border:0}button.addButton_c70d018d{font-size:14px;color:#ffffff;background-color:#0078d7}html[dir=ltr] button.addButton_c70d018d{margin-right:4px}html[dir=rtl] button.addButton_c70d018d{margin-left:4px}button.addButton_c70d018d:focus,button.addButton_c70d018d:hover{background-color:#005a9e}button.addButton_c70d018d:active{background-color:#004578}button.addButton_c70d018d:disabled{background-color:#c8c8c8}button.overflowButton_c70d018d{font-size:14px;color:#666666;background-color:#eaeaea}html[dir=ltr] button.overflowButton_c70d018d{margin-left:4px}html[dir=rtl] button.overflowButton_c70d018d{margin-right:4px}button.descriptiveOverflowButton_c70d018d{font-size:12px;color:#666666;background-color:#eaeaea}html[dir=ltr] button.descriptiveOverflowButton_c70d018d{margin-left:4px}html[dir=rtl] button.descriptiveOverflowButton_c70d018d{margin-right:4px}.screenReaderOnly_c70d018d{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}--><!--.root_1b8277ae{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;background-color:#f4f4f4;color:#333333;width:100%;box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.root_1b8277ae .icon_1b8277ae{color:#767676}html[dir=ltr] .root_1b8277ae .icon_1b8277ae{padding-right:8px}html[dir=rtl] .root_1b8277ae .icon_1b8277ae{padding-left:8px}.root_1b8277ae .ms-Link{font-size:12px;color:#005a9e}html[dir=ltr] .root_1b8277ae .ms-Button{margin-left:6px}html[dir=rtl] .root_1b8277ae .ms-Button{margin-right:6px}.icon_1b8277ae,.text_1b8277ae{display:table-cell;vertical-align:top}.icon_1b8277ae{font-size:16px;min-width:16px;min-height:16px;display:-webkit-box;display:-ms-flexbox;display:flex}.text_1b8277ae{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;min-width:0;display:-webkit-box;display:-ms-flexbox;display:flex}.root_1b8277ae.rootIsWarning_1b8277ae{background-color:#fff4ce;color:#333333}.root_1b8277ae.rootIsSevereWarning_1b8277ae{background-color:#fed9cc;color:#333333}.root_1b8277ae.rootIsSevereWarning_1b8277ae .icon_1b8277ae{color:#d83b01}.root_1b8277ae.rootIsError_1b8277ae{background-color:#fde7e9;color:#333333}.root_1b8277ae.rootIsError_1b8277ae .icon_1b8277ae{color:#a80000}.root_1b8277ae.rootIsBlocked_1b8277ae{background-color:#fde7e9;color:#333333}.root_1b8277ae.rootIsBlocked_1b8277ae .icon_1b8277ae{color:#a80000}.root_1b8277ae.rootIsSuccess_1b8277ae{background-color:#dff6dd;color:#333333}.root_1b8277ae.rootIsSuccess_1b8277ae .icon_1b8277ae{color:#107c10}.content_1b8277ae{padding:16px;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;box-sizing:border-box}.content_1b8277ae:before{pointer-events:none;position:absolute;right:0;bottom:0;left:0;top:0;margin:0}@media screen and (-ms-high-contrast:active){.content_1b8277ae:before{border:1px solid #ffffff;content:' '}}@media screen and (-ms-high-contrast:black-on-white){.content_1b8277ae:before{border:1px solid #000000;content:' '}}.actionables_1b8277ae{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;min-width:0}.actionables_1b8277ae>.dismissal_1b8277ae{right:0;top:0;position:absolute!important}.actionsOneline_1b8277ae,.actions_1b8277ae{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.actionsOneline_1b8277ae{position:relative}.dismissal_1b8277ae{min-width:0}.dismissal_1b8277ae::-moz-focus-inner{border:0}.dismissal_1b8277ae{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .dismissal_1b8277ae:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .dismissalOneline_1b8277ae .dismissal_1b8277ae{margin-right:-8px}html[dir=rtl] .dismissalOneline_1b8277ae .dismissal_1b8277ae{margin-left:-8px}.root_1b8277ae+.root_1b8277ae{margin-top:6px}html[dir=ltr] .innerTextPadding_1b8277ae{padding-right:24px}html[dir=rtl] .innerTextPadding_1b8277ae{padding-left:24px}html[dir=ltr] .innerTextPadding_1b8277ae .innerText_1b8277ae>span,html[dir=ltr] .innerTextPadding_1b8277ae span{padding-right:4px}html[dir=rtl] .innerTextPadding_1b8277ae .innerText_1b8277ae>span,html[dir=rtl] .innerTextPadding_1b8277ae span{padding-left:4px}.multiline_1b8277ae>.content_1b8277ae>.actionables_1b8277ae{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.singleline_1b8277ae .content_1b8277ae .icon_1b8277ae{-webkit-box-align:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center}.singleline_1b8277ae .content_1b8277ae .actionables_1b8277ae>.text_1b8277ae{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center}.singleline_1b8277ae .content_1b8277ae .actionables_1b8277ae>.text_1b8277ae .innerTextPadding_1b8277ae,.singleline_1b8277ae .content_1b8277ae .actionables_1b8277ae>.text_1b8277ae .innerText_1b8277ae{max-height:1.3em;line-height:1.3em;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.singleline_1b8277ae .content_1b8277ae>.actionables_1b8277ae{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.root_1b8277ae .ms-Icon--Cancel{font-size:14px}--><!--.root_1f4f07e8{position:relative;cursor:default}.dragMask_1f4f07e8{position:absolute;background:rgba(255,0,0,0);left:0;top:0;right:0;bottom:0}.box_1f4f07e8{position:absolute;box-sizing:border-box;border:1px solid #0078d7;pointer-events:none}.boxFill_1f4f07e8{position:absolute;box-sizing:border-box;background-color:#0078d7;opacity:.1;left:0;top:0;right:0;bottom:0}--><!--.root_374224b2{overflow-y:auto;-webkit-overflow-scrolling:touch;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.rootIsOnTop_374224b2{position:absolute}.navItems_374224b2{list-style-type:none}.navItems_374224b2,.navItems_374224b2>.navItem_374224b2{padding:0}.groupContent_374224b2{display:none;margin-bottom:40px}.group_374224b2.groupIsExpanded_374224b2 .groupContent_374224b2{display:block}.icon_374224b2{padding:0;color:#333333;background:#f4f4f4;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}html[dir=ltr] .iconLink_374224b2{margin-right:4px}html[dir=rtl] .iconLink_374224b2{margin-left:4px}.chevronButton_374224b2{display:block;font-weight:400;font-size:12px;line-height:36px;margin:5px 0;padding:0 20px 0 28px;background:0 0;border:none;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;cursor:pointer;color:#333333;background:#ffffff}html[dir=ltr] .chevronButton_374224b2{text-align:left}html[dir=rtl] .chevronButton_374224b2{text-align:right}html[dir=rtl] .chevronButton_374224b2{padding:0 28px 0 20px}.chevronButton_374224b2:visited{color:inherit}.chevronButton_374224b2:hover{color:#333333;background:#f8f8f8}.chevronButton_374224b2.chevronButtonIsGroup_374224b2{width:100%;height:36px;border-bottom:1px solid #eaeaea}.chevronIcon_374224b2{position:absolute;height:36px;line-height:36px;font-size:12px;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}html[dir=ltr] .chevronIcon_374224b2{left:8px}html[dir=rtl] .chevronIcon_374224b2{right:8px}.chevronIsExpanded_374224b2{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}.linkText_374224b2{vertical-align:middle}.compositeLink_374224b2{display:block;position:relative;color:#333333;background:#ffffff}.compositeLink_374224b2 .chevronButton_374224b2.chevronButtonLink_374224b2{display:block;width:26px;height:34px;position:absolute;top:1px;z-index:1;padding:0;margin:0}html[dir=ltr] .compositeLink_374224b2 .chevronButton_374224b2.chevronButtonLink_374224b2{left:1px}html[dir=rtl] .compositeLink_374224b2 .chevronButton_374224b2.chevronButtonLink_374224b2{right:1px}.compositeLink_374224b2 .chevronButton_374224b2.chevronButtonLink_374224b2 .chevronIcon_374224b2{position:relative}.compositeLink_374224b2 a{color:#333333}.compositeLink_374224b2:hover .chevronButton_374224b2,.compositeLink_374224b2:hover a{background:#f8f8f8;color:#333333}.compositeLink_374224b2.compositeLinkIsExpanded_374224b2 .chevronIcon_374224b2{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}.compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2,.compositeLink_374224b2.compositeLinkIsSelected_374224b2 a{color:#0078d7;background:#f4f4f4}.compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,.compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{content:'';position:absolute;top:0;bottom:0}html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{border-left:2px solid #0078d7}html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{border-right:2px solid #0078d7}html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{right:0}html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{left:0}html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{left:0}html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{right:0}.link_374224b2{display:block;position:relative;height:36px;line-height:36px;text-decoration:none;padding:0 20px;cursor:pointer;text-overflow:ellipsis;text-decoration:none;white-space:nowrap;overflow:hidden}.groupHeaderFontSize_374224b2{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:17px;font-weight:300}.chevronButtonGroup_374224b2::-moz-focus-inner,.chevronButtonLink_374224b2::-moz-focus-inner,.chevronButton_374224b2::-moz-focus-inner,.link_374224b2::-moz-focus-inner{border:0}.chevronButtonGroup_374224b2,.chevronButtonLink_374224b2,.chevronButton_374224b2,.link_374224b2{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .chevronButtonGroup_374224b2:focus:after,.ms-Fabric.is-focusVisible .chevronButtonLink_374224b2:focus:after,.ms-Fabric.is-focusVisible .chevronButton_374224b2:focus:after,.ms-Fabric.is-focusVisible .link_374224b2:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .root_374224b2 .link_374224b2{padding-left:20px}html[dir=rtl] .root_374224b2 .link_374224b2{padding-right:20px}.root_374224b2 .link_374224b2 .ms-Button-label{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#0078d7}html[dir=ltr] .root_374224b2 .link_374224b2.linkIsOnExpanded_374224b2{padding-left:28px}html[dir=rtl] .root_374224b2 .link_374224b2.linkIsOnExpanded_374224b2{padding-right:28px}--><!--.root_bf0c5865{min-width:180px}.suggestionsItem_bf0c5865{width:100%;height:auto;padding:4px 20px 6px;display:block;border:none;background:#ffffff}html[dir=ltr] .suggestionsItem_bf0c5865{text-align:left}html[dir=rtl] .suggestionsItem_bf0c5865{text-align:right}.suggestionsItem_bf0c5865:hover{background:#eaeaea}.suggestionsItem_bf0c5865.suggestionsItemIsSuggested_bf0c5865{background:#d0d0d0}.suggestionsItem_bf0c5865.suggestionsItemIsSuggested_bf0c5865:hover{background:#dadada}.searchMoreButton_bf0c5865{background:0 0;border:0;cursor:pointer;height:auto;text-align:center;margin:0;width:100%}.searchMoreButton_bf0c5865:hover{background-color:#eaeaea;cursor:pointer}.searchMoreButton_bf0c5865:active,.searchMoreButton_bf0c5865:focus{background-color:#c7e0f4}.suggestionsTitle_bf0c5865{color:#0078d7;font-size:12px;text-align:center;text-transform:uppercase;line-height:40px;border-bottom:1px solid #eaeaea}.suggestionsContainer_bf0c5865{overflow-y:auto;overflow-x:hidden;max-height:300px;border-bottom:1px solid #eaeaea}.suggestionsNone_bf0c5865{text-align:center;color:#767676;font-size:12px;line-height:30px}.suggestionsSpinner_bf0c5865{margin:5px;text-align:center;white-space:nowrap;line-height:20px}.suggestionsSpinner_bf0c5865 .ms-Spinner-circle{display:inline-block;vertical-align:middle}.suggestionsSpinner_bf0c5865 .ms-Spinner-label{display:inline-block;margin:0 10px;vertical-align:middle}--><!--.pickerText_02ee47ef{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;box-sizing:border-box;border:1px solid #eaeaea;min-width:180px;padding:1px;min-height:32px}.pickerText_02ee47ef:hover{border-color:#c7e0f4}.pickerText_02ee47ef.inputFocused_02ee47ef{border-color:#0078d7}.pickerInput_02ee47ef{height:26px;border:none;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;outline:0;padding:0 6px 0;margin:1px}--><!--.personaContainer_4ebdd9aa{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#f4f4f4;margin:1px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;max-width:100%}.personaContainer_4ebdd9aa::-moz-focus-inner{border:0}.personaContainer_4ebdd9aa{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .personaContainer_4ebdd9aa:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.personaContainer_4ebdd9aa:hover{background:#eaeaea}.personaContainer_4ebdd9aa.personaContainerIsSelected_4ebdd9aa{background:#d0d0d0}.personaContainer_4ebdd9aa.personaContainerIsSelected_4ebdd9aa:hover{background:#dadada}.personaContainer_4ebdd9aa .itemContent_4ebdd9aa{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0;max-width:100%;overflow-x:hidden}.personaContainer_4ebdd9aa .removeButton_4ebdd9aa{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-preferred-size:32px;flex-basis:32px;height:100%}.personaContainer_4ebdd9aa .personaDetails_4ebdd9aa{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.itemContainer_4ebdd9aa{display:inline-block;vertical-align:top}--><!--.resultContent_f9d9df29{display:table-row}.resultContent_f9d9df29 .resultItem_f9d9df29{display:table-cell;vertical-align:bottom}.peoplePickerPersona_f9d9df29{width:180px}.peoplePickerPersona_f9d9df29 .ms-Persona-details{width:100%}.peoplePicker_f9d9df29 .ms-BasePicker-text{min-height:40px}--><!--.root_c90a8776{-ms-flex-negative:1;flex-shrink:1;background:#f4f4f4;margin:1px;height:26px;line-height:26px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;min-width:100px;max-width:100%}.root_c90a8776::-moz-focus-inner{border:0}.root_c90a8776{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_c90a8776:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.root_c90a8776:hover{background:#eaeaea}.root_c90a8776.isSelected_c90a8776{background:#d0d0d0}.root_c90a8776.isSelected_c90a8776:hover{background:#dadada}.tagItemText_c90a8776{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:100px;margin:0 8px}.tagItemClose_c90a8776{cursor:pointer;color:#666666;font-size:12px;display:inline-block;text-align:center;vertical-align:top;width:30px;height:100%;-ms-flex-negative:0;flex-shrink:0}.tagItemTextOverflow_c90a8776{overflow:hidden;text-overflow:ellipsis;max-width:60vw}--><!--.root_57c1f354{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0;padding:0;box-shadow:none;font-size:14px;font-weight:400;position:relative;color:#0078d7;white-space:nowrap}.links_57c1f354{font-size:0;height:40px;list-style-type:none;padding:0;white-space:nowrap}.root_57c1f354 .link_57c1f354{color:#333333;display:inline-block;font-size:14px;font-weight:400;line-height:40px;padding:0 8px;text-align:center;position:relative;background-color:transparent;border:0}html[dir=ltr] .root_57c1f354 .link_57c1f354{margin-right:8px}html[dir=rtl] .root_57c1f354 .link_57c1f354{margin-left:8px}.root_57c1f354 .link_57c1f354:hover{cursor:pointer}.root_57c1f354 .link_57c1f354:focus{outline:0}.root_57c1f354 .link_57c1f354::before{background-color:transparent;bottom:0;content:'';height:2px;left:8px;position:absolute;right:8px;transition:background-color 267ms cubic-bezier(.1,.25,.75,.9)}.root_57c1f354 .link_57c1f354::after{color:transparent;content:attr(title);display:block;font-weight:700;height:1px;overflow:hidden;visibility:hidden}.root_57c1f354 .link_57c1f354 .count_57c1f354,.root_57c1f354 .link_57c1f354 .text_57c1f354{display:inline-block;vertical-align:top}html[dir=ltr] .root_57c1f354 .link_57c1f354 .icon_57c1f354+.text_57c1f354{margin-left:4px}html[dir=rtl] .root_57c1f354 .link_57c1f354 .icon_57c1f354+.text_57c1f354{margin-right:4px}html[dir=ltr] .root_57c1f354 .link_57c1f354 .count_57c1f354{margin-left:4px}html[dir=rtl] .root_57c1f354 .link_57c1f354 .count_57c1f354{margin-right:4px}.root_57c1f354 .link_57c1f354.linkIsSelected_57c1f354{font-weight:600}.root_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{background-color:#0078d7}@media screen and (-ms-high-contrast:active){.root_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{background-color:transparent;border-bottom:2px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{background-color:transparent;border-bottom:2px solid #000000}}.root_57c1f354 .link_57c1f354.linkIsDisabled_57c1f354{color:#a6a6a6}.ms-Fabric.is-focusVisible .link_57c1f354:focus{outline:1px solid #767676}.link_57c1f354.linkIsOverflow_57c1f354{color:#666666}.link_57c1f354.linkIsOverflow_57c1f354.linkIsSelected_57c1f354{color:#0078d7}.link_57c1f354.linkIsOverflow_57c1f354:focus:not(.linkIsSelected_57c1f354),.link_57c1f354.linkIsOverflow_57c1f354:hover:not(.linkIsSelected_57c1f354){color:#212121}.link_57c1f354.linkIsOverflow_57c1f354:active{color:#0078d7}.ellipsis_57c1f354{font-size:15px;position:relative;top:0}.root_57c1f354.rootIsLarge_57c1f354 .link_57c1f354{font-size:17px}.root_57c1f354.rootIsLarge_57c1f354 .link_57c1f354.linkIsOverflow_57c1f354::after{font-size:17px}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354{height:40px;line-height:40px;background-color:#f4f4f4;padding:0 10px;vertical-align:top}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354::-moz-focus-inner{border:0}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354{margin-right:0}html[dir=rtl] .root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354{margin-left:0}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:focus:not(.linkIsSelected_57c1f354):not(.linkIsOverflow_57c1f354),.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:hover:not(.linkIsSelected_57c1f354):not(.linkIsOverflow_57c1f354){color:#000000}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:active{color:#ffffff;background-color:#0078d7}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354{background-color:#0078d7;color:#ffffff;font-weight:300}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{background-color:transparent;transition:none;position:absolute;top:0;left:0;right:0;bottom:0;content:'';height:auto}@media screen and (-ms-high-contrast:active){.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{border:1px solid #000000}}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsOverflow_57c1f354:focus:not(.linkIsSelected_57c1f354),.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsOverflow_57c1f354:hover:not(.linkIsSelected_57c1f354){background-color:#ffffff}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsOverflow_57c1f354:active{background-color:#0078d7}.ms-Fabric.is-focusVisible .root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:focus:before{height:auto;background:0 0;transition:none}@media screen and (-ms-high-contrast:active){.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354{font-weight:600}}--><!--.root_57da241f{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-weight:400}.itemName_57da241f{color:#333333;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding-top:4px;line-height:20px}.itemDescription_57da241f{color:#767676;font-size:11px;line-height:18px}.itemProgress_57da241f{position:relative;height:2px;padding:8px 0}.progressTrack_57da241f{position:absolute;width:100%;height:2px;background-color:#eaeaea;outline:1px solid transparent}.progressBar_57da241f{background-color:#0078d7;height:2px;position:absolute;transition:width .3s ease;width:0}@media screen and (-ms-high-contrast:active){.progressBar_57da241f{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.progressBar_57da241f{background-color:#000000}}.smoothTransition_57da241f{transition-property:width;transition-timing-function:linear;transition-duration:150ms}--><!--.input_ef7d3b07{position:absolute;opacity:0;top:0}.container_ef7d3b07{position:relative;display:inline-block}.container_ef7d3b07:hover .star_ef7d3b07:not(.starIsDisabled_ef7d3b07){color:#000000}.container_ef7d3b07:hover .star_ef7d3b07:not(.starIsDisabled_ef7d3b07).star_ef7d3b07:hover{color:#106ebe}.container_ef7d3b07:hover .star_ef7d3b07:not(.starIsDisabled_ef7d3b07).star_ef7d3b07:hover~.star_ef7d3b07{color:#a6a6a6}.container_ef7d3b07 .star_ef7d3b07{display:inline-block;text-align:center;color:#a6a6a6}.container_ef7d3b07 .star_ef7d3b07.starIsSelected_ef7d3b07{color:#000000}.container_ef7d3b07 .star_ef7d3b07.starIsDisabled_ef7d3b07{color:#c8c8c8}.container_ef7d3b07 .star_ef7d3b07.starIsDisabled_ef7d3b07 .label_ef7d3b07{cursor:default}.container_ef7d3b07 .star_ef7d3b07 .label_ef7d3b07{display:inline-block;cursor:pointer;font-size:16px;padding:12px 0;border:1px solid transparent}.rootIsLarge_ef7d3b07 .container_ef7d3b07 .label_ef7d3b07{font-size:20px;padding:6px 2px 9px 2px}.labelText_ef7d3b07{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.ms-Fabric.is-focusVisible .starIsInFocus_ef7d3b07 .label_ef7d3b07{border:1px solid #666666}--><!--.root_2f85df04{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;box-sizing:border-box;margin:0;padding:0;box-shadow:none;color:#333333;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin-bottom:10px;padding:0 0 0 8px;border:1px solid #71afe5;height:32px}html[dir=rtl] .root_2f85df04{padding:0 8px 0 0}@media screen and (-ms-high-contrast:active){.root_2f85df04{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_2f85df04{border:1px solid #000000}}.iconContainer_2f85df04{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;color:#767676;font-size:16px;width:32px;text-align:center;transition:width 167ms;color:#0078d7}.icon_2f85df04{opacity:1;transition:opacity 167ms 0s}.field_2f85df04{box-sizing:border-box;margin:0;padding:0;box-shadow:none;border:none;outline:0;font-weight:inherit;font-family:inherit;font-size:inherit;color:#000000;background-color:transparent;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px;overflow:hidden;text-overflow:ellipsis;padding-bottom:.5px}.field_2f85df04::-ms-clear{display:none}.clearButton_2f85df04{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:none;cursor:pointer;text-align:center;font-size:12px;-ms-flex-preferred-size:32px;flex-basis:32px;-ms-flex-negative:0;flex-shrink:0;color:#0078d7}.root_2f85df04:hover{border-color:#004578}.root_2f85df04:hover .label_2f85df04{color:#000000}.root_2f85df04:hover .label_2f85df04 .iconContainer_2f85df04{color:#004578}.rootIsActive_2f85df04{border-color:#004578}.rootIsActive_2f85df04 .iconContainer_2f85df04{width:4px;transition:width 167ms}.rootIsActive_2f85df04 .icon_2f85df04{opacity:0;opacity:0 0s 167ms}.rootIsDisabled_2f85df04{border-color:#f4f4f4}.rootIsDisabled_2f85df04 .iconContainer_2f85df04{color:#c8c8c8}.rootIsDisabled_2f85df04 .field_2f85df04{background-color:#f4f4f4;pointer-events:none;cursor:default}.rootCanClear_2f85df04 .clearButton_2f85df04{display:-webkit-box;display:-ms-flexbox;display:flex}--><!--.root_4cb163ab{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:8px}.titleLabel_4cb163ab{padding:0}.line_4cb163ab{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;width:100%}.line_4cb163ab span{height:4px;border-radius:4px;box-sizing:border-box}.activeSection_4cb163ab{background:#666666}@media screen and (-ms-high-contrast:active){.activeSection_4cb163ab{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.activeSection_4cb163ab{background-color:#000000}}.inactiveSection_4cb163ab{background:#c8c8c8}@media screen and (-ms-high-contrast:active){.inactiveSection_4cb163ab{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.inactiveSection_4cb163ab{border:1px solid #000000}}.showTransitions_4cb163ab .thumb_4cb163ab{transition:left 367ms cubic-bezier(.1,.9,.2,1)}.showTransitions_4cb163ab .activeSection_4cb163ab,.showTransitions_4cb163ab .inactiveSection_4cb163ab{transition:width 367ms cubic-bezier(.1,.9,.2,1)}.slideBox_4cb163ab{background:0 0;border:none;padding:0;margin:0}.slideBox_4cb163ab .thumb_4cb163ab{border:2px solid #666666;box-sizing:border-box;background:#ffffff;display:block;width:16px;height:16px;position:absolute;top:-6px;border-radius:10px}html[dir=ltr] .slideBox_4cb163ab .thumb_4cb163ab{-webkit-transform:translateX(-50%);transform:translateX(-50%)}html[dir=rtl] .slideBox_4cb163ab .thumb_4cb163ab{-webkit-transform:translateX(50%);transform:translateX(50%)}.container_4cb163ab{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.slideBox_4cb163ab{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;height:28px;line-height:28px;padding:0 8px}.slideBox_4cb163ab::-moz-focus-inner{border:0}.slideBox_4cb163ab{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .slideBox_4cb163ab:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.valueLabel_4cb163ab{-ms-flex-negative:1;flex-shrink:1;width:30px;margin:0 8px;line-height:1}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .thumb_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .thumb_4cb163ab{border:2px solid #0078d7}@media screen and (-ms-high-contrast:active){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .thumb_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .thumb_4cb163ab{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .thumb_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .thumb_4cb163ab{border-color:#37006e}}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .activeSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .activeSection_4cb163ab{background-color:#0078d7}@media screen and (-ms-high-contrast:active){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .activeSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .activeSection_4cb163ab{background-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .activeSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .activeSection_4cb163ab{background-color:#37006e}}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .inactiveSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .inactiveSection_4cb163ab{background-color:#c7e0f4}@media screen and (-ms-high-contrast:active){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .inactiveSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .inactiveSection_4cb163ab{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .inactiveSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .inactiveSection_4cb163ab{border-color:#37006e}}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .thumb_4cb163ab{border:2px solid #106ebe}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .activeSection_4cb163ab{background-color:#106ebe}.rootIsDisabled_4cb163ab .thumb_4cb163ab{border-color:#c8c8c8}@media screen and (-ms-high-contrast:active){.rootIsDisabled_4cb163ab .thumb_4cb163ab{border-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.rootIsDisabled_4cb163ab .thumb_4cb163ab{border-color:#600000}}@media screen and (-ms-high-contrast:active){.rootIsDisabled_4cb163ab .activeSection_4cb163ab,.rootIsDisabled_4cb163ab .inactiveSection_4cb163ab{background-color:#0f0;border-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.rootIsDisabled_4cb163ab .activeSection_4cb163ab,.rootIsDisabled_4cb163ab .inactiveSection_4cb163ab{background-color:#600000;border-color:#600000}}.rootIsDisabled_4cb163ab .activeSection_4cb163ab{background:#c8c8c8}.rootIsDisabled_4cb163ab .inactiveSection_4cb163ab{background:#eaeaea}--><!--.root_2ee7cd8d{display:block;max-width:364px}.bodyContent_2ee7cd8d{padding:20px}.headerIsLarge_2ee7cd8d:not(:last-child){margin-bottom:14px}.headline_2ee7cd8d{margin:0;color:#ffffff}.headerIsLarge_2ee7cd8d .headline_2ee7cd8d{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:28px;font-weight:100;font-weight:100}.headerIsSmall_2ee7cd8d .headline_2ee7cd8d{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;font-weight:600}html[dir=ltr] .headerIsSmall_2ee7cd8d .headline_2ee7cd8d{margin-right:10px}html[dir=rtl] .headerIsSmall_2ee7cd8d .headline_2ee7cd8d{margin-left:10px}.body_2ee7cd8d:not(:last-child){margin-bottom:20px}.subText_2ee7cd8d{margin:0;font-size:14px;color:#ffffff;font-weight:300}.root_2ee7cd8d .closeButton_2ee7cd8d{position:absolute;top:0;color:#ffffff;font-size:12px}html[dir=ltr] .root_2ee7cd8d .closeButton_2ee7cd8d{right:0}html[dir=rtl] .root_2ee7cd8d .closeButton_2ee7cd8d{left:0}html[dir=ltr] .footer_2ee7cd8d .ms-Button:not(:first-child){margin-left:20px}html[dir=rtl] .footer_2ee7cd8d .ms-Button:not(:first-child){margin-right:20px}.root_2ee7cd8d .ms-Callout-beak,.root_2ee7cd8d .ms-Callout-main,.root_2ee7cd8d .ms-Callout-smallbeak{background:#0078d7}.root_2ee7cd8d .primaryButton_2ee7cd8d{background-color:#ffffff;border-color:#ffffff}.root_2ee7cd8d .primaryButton_2ee7cd8d .ms-Button-label{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#0078d7}.root_2ee7cd8d .primaryButton_2ee7cd8d:hover{background-color:#deecf9;border-color:#deecf9}.root_2ee7cd8d .primaryButton_2ee7cd8d:focus{background-color:#deecf9;border-color:#ffffff}.root_2ee7cd8d .primaryButton_2ee7cd8d:active{background-color:#ffffff;border-color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d{background-color:#0078d7;border-color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d .ms-Button-label{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d:hover{background-color:#106ebe;border-color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d:focus{background-color:#106ebe;border-color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d:active{background-color:#0078d7;border-color:#ffffff}--><!--.root_f151e544{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0;padding:0;box-shadow:none;position:relative;display:block;margin-bottom:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.isEnabled_f151e544 .invisibleToggle_f151e544{cursor:pointer}.isEnabled_f151e544 .background_f151e544{background:#ffffff;border:1px solid #767676}.isEnabled_f151e544 .thumb_f151e544{background:#767676}@media screen and (-ms-high-contrast:active){.isEnabled_f151e544 .thumb_f151e544{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.isEnabled_f151e544 .thumb_f151e544{background-color:#000000}}.isEnabled_f151e544 .slider_f151e544:hover .background_f151e544{border:1px solid #000000}.isEnabled_f151e544 .slider_f151e544:hover .thumb_f151e544{background:#000000}.isEnabled_f151e544.isChecked_f151e544 .background_f151e544{background:#0078d7;border:1px solid transparent}@media screen and (-ms-high-contrast:active){.isEnabled_f151e544.isChecked_f151e544 .background_f151e544{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.isEnabled_f151e544.isChecked_f151e544 .background_f151e544{background-color:#000000}}.isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{background:#ffffff}html[dir=ltr] .isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{left:28px}html[dir=rtl] .isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{right:28px}@media screen and (-ms-high-contrast:active){.isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{background-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{background-color:#ffffff}}.isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .background_f151e544{border:1px solid #0078d7;background:#2b88d8}.isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{background:#ffffff}html[dir=ltr] .isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{left:28px}html[dir=rtl] .isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{right:28px}@media screen and (-ms-high-contrast:active){.isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{background-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{background-color:#ffffff}}.isDisabled_f151e544 .thumb_f151e544{background:#c8c8c8}@media screen and (-ms-high-contrast:active){.isDisabled_f151e544 .thumb_f151e544{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.isDisabled_f151e544 .thumb_f151e544{background-color:#600000}}.isDisabled_f151e544 .background_f151e544{background:#ffffff;border:1px solid #c8c8c8}@media screen and (-ms-high-contrast:active){.isDisabled_f151e544 .background_f151e544{border-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.isDisabled_f151e544 .background_f151e544{border-color:#600000}}.isDisabled_f151e544.isChecked_f151e544 .background_f151e544{background:#c8c8c8;border:1px solid transparent}@media screen and (-ms-high-contrast:active){.isDisabled_f151e544.isChecked_f151e544 .background_f151e544{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.isDisabled_f151e544.isChecked_f151e544 .background_f151e544{background-color:#600000}}.isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{background:#f4f4f4}html[dir=ltr] .isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{left:28px}html[dir=rtl] .isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{right:28px}@media screen and (-ms-high-contrast:active){.isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{background-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{background-color:#ffffff}}.innerContainer_f151e544{display:inline-block;min-width:45px}.ms-Fabric.is-focusVisible .root_f151e544.isEnabled_f151e544 .invisibleToggle_f151e544:focus+.background_f151e544 .focus_f151e544{border:1px solid #000000}.invisibleToggle_f151e544{position:absolute;opacity:0;left:0;top:0;width:100%;height:100%;margin:0;padding:0}.slider_f151e544{position:relative;min-height:20px}.background_f151e544{display:inline-block;position:absolute;width:44px;height:20px;box-sizing:border-box;vertical-align:middle;border-radius:20px;cursor:pointer;transition:all .1s ease;pointer-events:none}.thumb_f151e544{position:absolute;width:10px;height:10px;border-radius:10px;top:4px;transition:all .1s ease}html[dir=ltr] .thumb_f151e544{left:4px}html[dir=rtl] .thumb_f151e544{right:4px}.stateText_f151e544{display:inline-block;vertical-align:top;line-height:20px;padding:0}html[dir=ltr] .stateText_f151e544{margin-left:54px}html[dir=rtl] .stateText_f151e544{margin-right:54px}.focus_f151e544{position:absolute;left:-3px;top:-3px;right:-3px;bottom:-3px;box-sizing:border-box;outline:transparent}--><!--.root_d110f881{max-width:364px;background:#ffffff;padding:8px;pointer-events:none}.root_d110f881.hasMediumDelay_d110f881{-webkit-animation-delay:.3s;animation-delay:.3s}.content_d110f881{font-size:12px;color:#333333;word-wrap:break-word;overflow-wrap:break-word}.subText_d110f881{margin:0}--><!--.host_df8e5554{display:inline}--><!--.qjbZdNS-BeDNFcx5IWgt{display:inline-block}.qjbZdNS-BeDNFcx5IWgt button,.qjbZdNS-BeDNFcx5IWgt button:focus{color:#767676;width:70px;height:30px;font-size:12px;font-weight:300}html[dir] .qjbZdNS-BeDNFcx5IWgt button,html[dir] .qjbZdNS-BeDNFcx5IWgt button:focus{padding:4px 10px 6px;border:none;background-color:#fff}html[dir=ltr] .qjbZdNS-BeDNFcx5IWgt button,html[dir=ltr] .qjbZdNS-BeDNFcx5IWgt button:focus{text-align:left}html[dir=rtl] .qjbZdNS-BeDNFcx5IWgt button,html[dir=rtl] .qjbZdNS-BeDNFcx5IWgt button:focus{text-align:right}.qjbZdNS-BeDNFcx5IWgt button:active,.qjbZdNS-BeDNFcx5IWgt button:hover{color:#212121}html[dir] .qjbZdNS-BeDNFcx5IWgt button:hover{background-color:#fff}.qjbZdNS-BeDNFcx5IWgt button:disabled{color:#a6a6a6}html[dir] .qjbZdNS-BeDNFcx5IWgt button:disabled{border-color:#fff;background-color:#fff}.qjbZdNS-BeDNFcx5IWgt button span{font-weight:400;font-size:16px}html[dir] .qjbZdNS-BeDNFcx5IWgt button span{padding:0 7px}.qjbZdNS-BeDNFcx5IWgt button:disabled .ms-Icon--chevronDown{color:#a6a6a6}.qjbZdNS-BeDNFcx5IWgt button .ms-Button-label{font-size:12px}._1uSKA9DzFXl4J0_Tjc1MXP{z-index:1901}html[dir] ._1uSKA9DzFXl4J0_Tjc1MXP{box-shadow:0 0 7px rgba(0,0,0,.4)}._1uSKA9DzFXl4J0_Tjc1MXP>div{overflow:inherit}._3MbVb_n8GM-qhdnP2oQ9w-{height:auto;width:280px;font-size:12px}._35oA_09s2dnUde7IiZc9d8{max-height:180px;overflow-y:auto;overflow-x:hidden;display:block}html[dir] ._2AFChQXDDqm0FXiq_h5yKf{padding-bottom:9px}._1ooEZoznLqTL7gYkkUG3WT{width:100%}html[dir] ._1ooEZoznLqTL7gYkkUG3WT{border-collapse:collapse}.pGOsO7qTTcjUalYemhBH_{line-height:30px;font-size:14px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}html[dir] .pGOsO7qTTcjUalYemhBH_{background-color:#f4f4f4;padding:6px 26px 8px;margin-bottom:9px}html[dir=ltr] .pGOsO7qTTcjUalYemhBH_{margin-left:10px}html[dir=rtl] .pGOsO7qTTcjUalYemhBH_{margin-right:10px}html[dir=ltr] ._103wA56dWR_VMTQGiGvwvX{margin-left:22px}html[dir=rtl] ._103wA56dWR_VMTQGiGvwvX{margin-right:22px}html[dir] .pGOsO7qTTcjUalYemhBH_:hover{background-color:#eaeaea}._3W6WuHPSz5FLMJWALHuJHz{font-family:Segoe UI Semibold,Segoe UI,Tahoma,Geneva,Verdana,sans-serif}._3fboll9VxYlXRyDK4ZO0JA{position:relative}html[dir=ltr] ._3fboll9VxYlXRyDK4ZO0JA{margin-left:10px}html[dir=rtl] ._3fboll9VxYlXRyDK4ZO0JA{margin-right:10px}._3FfmQ5tDQaeZYYKw-InuWM{position:absolute;top:36px;width:263px;z-index:1901}html[dir] ._3FfmQ5tDQaeZYYKw-InuWM{background:#fff;border:1px solid #eaeaea}html[dir=ltr] ._3FfmQ5tDQaeZYYKw-InuWM{box-shadow:1px 1px 7px rgba(0,0,0,.4)}html[dir=rtl] ._3FfmQ5tDQaeZYYKw-InuWM{box-shadow:-1px 1px 7px rgba(0,0,0,.4)}._3FfmQ5tDQaeZYYKw-InuWM ._2wCM7vY0mKNq8HvZYZww3R{width:193px}html[dir=ltr] ._3FfmQ5tDQaeZYYKw-InuWM ._2wCM7vY0mKNq8HvZYZww3R{padding-left:9px}html[dir=rtl] ._3FfmQ5tDQaeZYYKw-InuWM ._2wCM7vY0mKNq8HvZYZww3R{padding-right:9px}.DZNhSfi-rz9iyw0MNy_hG{height:28px}html[dir] .DZNhSfi-rz9iyw0MNy_hG{padding:0 3px}._10r6V_QECrej5MH2y537Fw{font-weight:700}._2wCM7vY0mKNq8HvZYZww3R{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px}html[dir] ._3qCJFJVQBxvO1EWWAPdCWn{padding:0 10px}html[dir=ltr] ._3qCJFJVQBxvO1EWWAPdCWn{text-align:right}html[dir=rtl] ._3qCJFJVQBxvO1EWWAPdCWn{text-align:left}html[dir=ltr] ._3GuidKSk6lFFWcrn9s_Dek{margin:10px 6px 15px 0}html[dir=rtl] ._3GuidKSk6lFFWcrn9s_Dek{margin:10px 0 15px 6px}.kjuxTS2OLJactWVWThvS3{font-size:11px}html[dir] .kjuxTS2OLJactWVWThvS3{padding:0 3px}._2AFChQXDDqm0FXiq_h5yKf hr{color:#eaeaea}html[dir] ._2AFChQXDDqm0FXiq_h5yKf hr{background-color:#eaeaea;border-color:#eaeaea;border-bottom-width:0;border-style:solid;margin-bottom:5px}._3MbVb_n8GM-qhdnP2oQ9w-{cursor:default}html[dir=ltr] ._3MbVb_n8GM-qhdnP2oQ9w-{text-align:left}html[dir=rtl] ._3MbVb_n8GM-qhdnP2oQ9w-{text-align:right}html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button,html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button:active,html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button:focus,html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button:hover,html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button:visited,html[dir] .qjbZdNS-BeDNFcx5IWgt,html[dir] .qjbZdNS-BeDNFcx5IWgt.ms-Button:disabled{background-color:transparent;border-color:transparent}._3MbVb_n8GM-qhdnP2oQ9w-:active>.ms-Button-label,._3MbVb_n8GM-qhdnP2oQ9w->.ms-Button-label{font-family:Segoe UI Semilight,Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-weight:400;color:#000}.ms-SearchBox-closebutton{color:#fff}--><!--.RaaSll0e3hOeJTHMQLySs{position:relative;width:230px;height:280px;overflow:hidden}html[dir] .RaaSll0e3hOeJTHMQLySs{margin:20px;border:1px solid #eaeaea}._3GHjI_hOL8hL6kUeNl4og8{position:absolute!important;top:0;z-index:2002;width:50px;height:20px}html[dir=ltr] ._3GHjI_hOL8hL6kUeNl4og8{right:0}html[dir=rtl] ._3GHjI_hOL8hL6kUeNl4og8{left:0}._1M8uGZLuwOOhHtEaKE5brI{min-width:10px;color:#666}html[dir] ._1M8uGZLuwOOhHtEaKE5brI{background-color:transparent;padding:10px}html[dir] ._2iZiJ52p5Ibp1tcMXn-Zto{padding-top:15px;padding-bottom:15px;border-bottom-style:solid;border-width:1px;border-color:#eaeaea}html[dir=ltr] ._2iZiJ52p5Ibp1tcMXn-Zto{padding-left:20px}html[dir=rtl] ._2iZiJ52p5Ibp1tcMXn-Zto{padding-right:20px}._7_xBLMLcwKO1qUMSEeAjO{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400}html[dir] ._7_xBLMLcwKO1qUMSEeAjO{border-bottom-style:solid;border-width:1px;padding:15px 20px;margin-bottom:15px;border-color:#eaeaea}html[dir=ltr] ._7_xBLMLcwKO1qUMSEeAjO{text-align:left}html[dir=rtl] ._7_xBLMLcwKO1qUMSEeAjO{text-align:right}._3R_akt1uzq0BBGENj8ZYSp{height:60px;width:100%;color:#0078d7;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400}html[dir] ._3R_akt1uzq0BBGENj8ZYSp{margin-top:10px;margin-bottom:15px}html[dir] .GmaGb-7fO-IiegLSxw4g_{padding-top:10px}._2eR3ihGy4eNTaeC9BvL7tN{width:60px;height:25px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;font-weight:600;color:#0078d7}html[dir] ._2eR3ihGy4eNTaeC9BvL7tN{background-color:#fff;border-radius:3px;border:1px solid;margin-top:15px}._18vUGRlxQiO38TP5BpVXQ7{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#a6a6a6}html[dir] ._18vUGRlxQiO38TP5BpVXQ7{margin:12px}._32fZkTb40RHcjM7Tyv-469{height:45px}html[dir] ._32fZkTb40RHcjM7Tyv-469{border-bottom-style:solid;border-width:1px;margin-top:12px;border-color:#eaeaea}.YzChVSQnspHQ4EtzHpEZP{overflow:hidden;height:30px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400}html[dir] .YzChVSQnspHQ4EtzHpEZP{margin:0 20px}html[dir=ltr] .YzChVSQnspHQ4EtzHpEZP{text-align:left}html[dir=rtl] .YzChVSQnspHQ4EtzHpEZP{text-align:right}._3rDCTWOrNEIO9kgau9D2cU{text-overflow:ellipsis;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:11px;font-weight:400;color:#a6a6a6}html[dir] ._3rDCTWOrNEIO9kgau9D2cU{padding:5px 20px}html[dir=ltr] ._3rDCTWOrNEIO9kgau9D2cU{text-align:left}html[dir=rtl] ._3rDCTWOrNEIO9kgau9D2cU{text-align:right}._2a_HGDwOzuGq8FnXAaBCZH{text-overflow:ellipsis;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400}html[dir] ._2a_HGDwOzuGq8FnXAaBCZH{padding:5px 20px}html[dir=ltr] ._2a_HGDwOzuGq8FnXAaBCZH{text-align:left}html[dir=rtl] ._2a_HGDwOzuGq8FnXAaBCZH{text-align:right}--><!--.W3Gro7btK0K_9bZvMv84a{-webkit-overflow-scrolling:touch;overflow-x:hidden;width:100%}html[dir] .W3Gro7btK0K_9bZvMv84a{padding:20px 0;background-color:#fff}.zH5sUqTasM8eTJ-iaKvwR{overflow-y:hidden}.GlZYfgS9Ysv-hF4iWLmSc{overflow-y:auto}.QdYlTiUbLVk_dHvixK3oM{min-width:200px}html[dir] .QdYlTiUbLVk_dHvixK3oM{background-color:#fff}html[dir=ltr] .QdYlTiUbLVk_dHvixK3oM{float:right}html[dir=rtl] .QdYlTiUbLVk_dHvixK3oM{float:left}._3XMWGsbV7jx2tpFHZpy7Jk{cursor:pointer;min-width:200px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}html[dir] ._3XMWGsbV7jx2tpFHZpy7Jk{border:none;background-color:#fff}html[dir=ltr] ._3XMWGsbV7jx2tpFHZpy7Jk{float:right}html[dir=rtl] ._3XMWGsbV7jx2tpFHZpy7Jk{float:left}._2PMRU_Au00dO_7tHXEveG6{min-height:200px}._31xsuGWhNOZ7Pp10XgZP6y{width:100%;height:50px}html[dir] ._31xsuGWhNOZ7Pp10XgZP6y{margin-top:20px}._2VlOBiCHIlYRRQAsESYOKu{display:inline;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100}.OLdwCXIpAJqNhNuJ4uBNl{outline:0;position:relative}html[dir] .OLdwCXIpAJqNhNuJ4uBNl{text-align:center}html[dir=ltr] .OLdwCXIpAJqNhNuJ4uBNl{float:left}html[dir=rtl] .OLdwCXIpAJqNhNuJ4uBNl{float:right}._3OTYAocki1mEQVDeQQRY1p{position:absolute;top:2px;bottom:2px}html[dir=ltr] ._3OTYAocki1mEQVDeQQRY1p,html[dir=rtl] ._3OTYAocki1mEQVDeQQRY1p{left:2px;right:2px}._2sG2jXov6lUoWvSbPtecBH{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}html[dir] ._2sG2jXov6lUoWvSbPtecBH{text-align:center;margin-top:80px}._2VO5zUV9DLu7cL8SYVA1nb{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}.J5cKa2vglCmxsd03ZkLc2 ._1HnH_mcUPRL6S1ME-zEp-B{position:relative}._3PoHNweRptVJZ4TajQou8a{width:100%;height:30px}.uRi831CfzTLN2cIrXlM3S{cursor:pointer;min-width:200px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}html[dir] .uRi831CfzTLN2cIrXlM3S{border:none;background-color:#fff}html[dir=ltr] .uRi831CfzTLN2cIrXlM3S{float:right}html[dir=rtl] .uRi831CfzTLN2cIrXlM3S{float:left}._2NsHR0ypfZd7_tGNJJwwPM{width:100px;height:30px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#69afe5;font-weight:600}html[dir] ._2NsHR0ypfZd7_tGNJJwwPM{margin:10px;background-color:#fff;border-radius:4px;border:1px solid;border-color:#69afe5}--><!--._2YY-l3IQnlpjOujWG8-7mm{width:90%;min-height:200px}html[dir] ._2YY-l3IQnlpjOujWG8-7mm{margin:auto;padding-top:40px}._3R7bBEgB4fVxmrsEsI3oIq{max-width:200px}html[dir] ._3R7bBEgB4fVxmrsEsI3oIq{margin-top:20px}._2mGF-a2EePyWNwgs_jDlbY{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}html[dir] ._2mGF-a2EePyWNwgs_jDlbY{margin-top:50px}--><!--html[dir] ._241o7hpuGyRa6Pkrc8dy3w{margin-bottom:10px}._3dH-qFs992B7oRQncGYfo5{width:100%;height:66px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:42px;font-weight:100;color:#0078d7}html[dir] ._3dH-qFs992B7oRQncGYfo5{text-align:center}._3tE7GqX-k4AblGzqGqfh72{width:100%}._39GZsvibnu6oE3djDseEDW{position:relative;overflow-y:auto;width:100%}._3tE7GqX-k4AblGzqGqfh72 ul{height:45px}html[dir] ._3tE7GqX-k4AblGzqGqfh72 ul{text-align:center}._3tE7GqX-k4AblGzqGqfh72 ul button{width:100px}._3tE7GqX-k4AblGzqGqfh72 ul button span{width:100%}--><!--._1ADkIfYVZS2bQUXWpjyCfY{bottom:0;height:40px;position:relative;top:0;width:340px;z-index:1;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] ._1ADkIfYVZS2bQUXWpjyCfY{background-position:50% 50%;background:#eaeaea none no-repeat scroll 50% 50%/cover padding-box border-box}html[dir=ltr] ._1ADkIfYVZS2bQUXWpjyCfY{left:0;right:0;text-align:left}html[dir=rtl] ._1ADkIfYVZS2bQUXWpjyCfY{right:0;left:0;text-align:right}._2QoS7z2xsdxUJKQ4EilidV{bottom:-33.5px;display:block;height:73.5px;position:absolute;top:0;width:340px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir=ltr] ._2QoS7z2xsdxUJKQ4EilidV{left:0;right:0;text-align:left}html[dir=rtl] ._2QoS7z2xsdxUJKQ4EilidV{right:0;left:0;text-align:right}._2I74SlNmAGvrr-0PW3VcC_{bottom:450px;height:100px;position:absolute;top:12px;width:100px;z-index:4;perspective-origin:56px 56px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir] ._2I74SlNmAGvrr-0PW3VcC_{transform:matrix(.5,0,0,.5,0,0);transform-origin:112px 0;border:6px solid #fff;border-radius:50% 50% 50% 50%}html[dir=ltr] ._2I74SlNmAGvrr-0PW3VcC_{left:212px;right:16px;text-align:left;background:#eaeaea none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._2I74SlNmAGvrr-0PW3VcC_{right:212px;left:16px;text-align:right;background:#eaeaea none repeat scroll 100% 0/auto padding-box border-box}.ebfvOHpTX0LUiW1glKMh6{bottom:0;height:82px;position:relative;top:0;width:300px;z-index:0;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] .ebfvOHpTX0LUiW1glKMh6{border-bottom:1px solid rgba(0,0,0,.14902)}html[dir=ltr] .ebfvOHpTX0LUiW1glKMh6{left:0;right:0;text-align:left;background:#fff none repeat scroll 0 0/auto padding-box border-box;padding:8px 16px 16px 24px}html[dir=rtl] .ebfvOHpTX0LUiW1glKMh6{right:0;left:0;text-align:right;background:#fff none repeat scroll 100% 0/auto padding-box border-box;padding:8px 24px 16px 16px}._3EpjI431BnmL0PGNx07-5j{color:#333;height:31px;max-width:250px;text-overflow:ellipsis;white-space:nowrap;width:250px;column-rule-color:#333;font:normal normal normal normal 21px/31.5px Segoe UI Semilight WestEuropean,Segoe UI Semilight,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333;overflow:hidden}html[dir] ._3EpjI431BnmL0PGNx07-5j{border:0 none #333}html[dir=ltr] ._3EpjI431BnmL0PGNx07-5j{text-align:left}html[dir=rtl] ._3EpjI431BnmL0PGNx07-5j{text-align:right}._2Vug3fO3sVVI_SOgqzRMmF{color:#767676;height:19px;text-overflow:ellipsis;white-space:nowrap;width:300px;column-rule-color:#767676;font:normal normal normal normal 12px/18px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #767676;overflow:hidden}html[dir] ._2Vug3fO3sVVI_SOgqzRMmF{border:0 none #767676}html[dir=ltr] ._2Vug3fO3sVVI_SOgqzRMmF{text-align:left}html[dir=rtl] ._2Vug3fO3sVVI_SOgqzRMmF{text-align:right}._1o4xwaNRRgeAw0PArEX4VI{color:#eaeaea;white-space:nowrap;column-rule-color:#eaeaea;font:normal normal normal normal 15.6px/18px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #eaeaea}html[dir] ._1o4xwaNRRgeAw0PArEX4VI{border:0 none #eaeaea;margin:0 7.8px}html[dir=ltr] ._1o4xwaNRRgeAw0PArEX4VI{text-align:left}html[dir=rtl] ._1o4xwaNRRgeAw0PArEX4VI{text-align:right}._2_0U5WX-EicjeIWfV5k0Mg{color:#094ab2;cursor:pointer;display:block;height:22px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;width:300px;column-rule-color:#094ab2;font:normal normal normal normal 12px/20px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #094ab2;overflow:hidden}html[dir] ._2_0U5WX-EicjeIWfV5k0Mg{border:0 none #094ab2;margin:10px 0 0}html[dir=ltr] ._2_0U5WX-EicjeIWfV5k0Mg{text-align:left}html[dir=rtl] ._2_0U5WX-EicjeIWfV5k0Mg{text-align:right}._1OlJn15Vbm07pmj1S-Nz8a{color:#333;cursor:pointer;vertical-align:middle;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/20px Segoe UI Semibold WestEuropean,Segoe UI Semibold,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._1OlJn15Vbm07pmj1S-Nz8a{border:0 none #333}html[dir=ltr] ._1OlJn15Vbm07pmj1S-Nz8a{text-align:left}html[dir=rtl] ._1OlJn15Vbm07pmj1S-Nz8a{text-align:right}--><!--._3x0MXdpHCF2RZzwTQLUpGE{bottom:0;height:190px;min-height:105px;position:relative;top:0;width:290px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;list-style:none outside none;overflow:hidden}html[dir] ._3x0MXdpHCF2RZzwTQLUpGE{border:1px solid rgba(0,0,0,.14902);margin:0 0 8px;padding:16px}html[dir=ltr] ._3x0MXdpHCF2RZzwTQLUpGE{left:0;right:0;background:#fff none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._3x0MXdpHCF2RZzwTQLUpGE{right:0;left:0;background:#fff none repeat scroll 100% 0/auto padding-box border-box}.OCypFjOIydJqrlLtPYzwR{color:#767676;cursor:pointer;height:20px;width:242px;column-rule-color:#767676;font:normal normal normal normal 15px/normal Segoe UI Light WestEuropean,Segoe UI Light,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #767676}html[dir] .OCypFjOIydJqrlLtPYzwR{text-align:center;border:0 none #767676;margin:0 0 10px;padding:0 24px}._1UNo29gcSFlcXCZ5lO_DK7{color:#333;height:125px;width:290px;column-rule-color:#333;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;list-style:none outside none;outline:0 none #333}html[dir] ._1UNo29gcSFlcXCZ5lO_DK7{border:0 none #333;margin:0;padding:0}html[dir=ltr] ._1UNo29gcSFlcXCZ5lO_DK7{text-align:left}html[dir=rtl] ._1UNo29gcSFlcXCZ5lO_DK7{text-align:right}._3sADx2StTgZjvznJzqYc-k{color:#333;height:25px;width:290px;column-rule-color:#333;font:normal normal normal normal 12px/25px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._3sADx2StTgZjvznJzqYc-k{border:0 none #333}.JC-o1R-Imuyno7Qd3yJHn{color:#333;height:25px;width:290px;column-rule-color:#333;font:normal normal normal normal 12px/25px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] .JC-o1R-Imuyno7Qd3yJHn{border:0 none #333}._10wU23ML08U6AkusphMFpD{bottom:2px;color:#333;cursor:pointer;display:inline-block;height:16px;position:relative;top:-2px;white-space:nowrap;width:16px;column-rule-color:#333;font:normal normal normal normal 12px/25px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._10wU23ML08U6AkusphMFpD{border:0 none #333}html[dir=ltr] ._10wU23ML08U6AkusphMFpD{left:0;right:0;text-align:left;margin:0 4px 0 0}html[dir=rtl] ._10wU23ML08U6AkusphMFpD{right:0;left:0;text-align:right;margin:0 0 0 4px}._2SABWZU5KXNWVC_f8fXxUU{color:#333;cursor:pointer;display:inline-block;height:16px;vertical-align:middle;white-space:nowrap;width:16px;column-rule-color:#333;font:normal normal normal normal 16px/25px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._2SABWZU5KXNWVC_f8fXxUU{border:0 none #333}html[dir=ltr] ._2SABWZU5KXNWVC_f8fXxUU{text-align:left}html[dir=rtl] ._2SABWZU5KXNWVC_f8fXxUU{text-align:right}._2FsnZoHitAsCOUiNzidNjQ{color:#333;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/25px Segoe UI Semibold WestEuropean,Segoe UI Semibold,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333;overflow:hidden}html[dir] ._2FsnZoHitAsCOUiNzidNjQ{border:0 none #333}html[dir=ltr] ._2FsnZoHitAsCOUiNzidNjQ{text-align:left}html[dir=rtl] ._2FsnZoHitAsCOUiNzidNjQ{text-align:right}._11cEuwHkRH9RcM6F7RksJi{color:#333;content:'"\E038"';cursor:pointer;speak:none;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/12px Office365Icons;outline:0 none #333}html[dir] ._11cEuwHkRH9RcM6F7RksJi{border:0 none #333}html[dir=ltr] ._11cEuwHkRH9RcM6F7RksJi{text-align:left}html[dir=rtl] ._11cEuwHkRH9RcM6F7RksJi{text-align:right}html[dir=ltr] ._37fIUonJ8aCq3EpXqfTFJP{float:right}html[dir=rtl] ._37fIUonJ8aCq3EpXqfTFJP{float:left}._1ZIlIn4JBbMFR8Ln22Jken{height:40px;width:290px;font:normal normal normal normal 12px/38px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir] ._1ZIlIn4JBbMFR8Ln22Jken{border-top:1px solid #f4f4f4;margin:10px -10px -16px;padding:0 10px}html[dir=ltr] ._1ZIlIn4JBbMFR8Ln22Jken{text-align:left}html[dir=rtl] ._1ZIlIn4JBbMFR8Ln22Jken{text-align:right}._3uA1VyQztfx2UiHw_q3ypB{color:#0078d7;cursor:pointer;text-decoration:none;column-rule-color:#0078d7;font:normal normal normal normal 12px/38px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #0078d7}html[dir] ._3uA1VyQztfx2UiHw_q3ypB{border:0 none #0078d7}html[dir=ltr] ._3uA1VyQztfx2UiHw_q3ypB{text-align:left}html[dir=rtl] ._3uA1VyQztfx2UiHw_q3ypB{text-align:right}--><!--._1HMiHNN5DTAijMYyQF04qi{bottom:0;color:#fff;cursor:pointer;display:block;height:32px;object-fit:cover;position:absolute;speak:none;top:0;width:32px;column-rule-color:#fff;font:normal normal normal normal 21px/40px Office365Icons;outline:0 none #fff}html[dir] ._1HMiHNN5DTAijMYyQF04qi{text-align:center;border:0 none #fff}html[dir=ltr] ._1HMiHNN5DTAijMYyQF04qi,html[dir=rtl] ._1HMiHNN5DTAijMYyQF04qi{left:0;right:0}._1R76bIsjLumorvhvLBj0R-{color:#767676;cursor:pointer;height:20px;width:242px;column-rule-color:#767676;font:normal normal normal normal 15px/normal Segoe UI Light WestEuropean,Segoe UI Light,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #767676}html[dir] ._1R76bIsjLumorvhvLBj0R-{text-align:center;border:0 none #767676;margin:0 0 10px;padding:0 24px;transition:color .1s ease 0s}._1WZbpgeRh0HpoBNXLaDtKi{bottom:0;color:#fff;cursor:pointer;display:inline-block;height:32px;position:relative;speak:none;top:0;vertical-align:middle;width:32px;z-index:0;column-rule-color:#fff;font:normal normal normal normal 21px/40px Office365Icons;outline:0 none #fff;overflow:hidden}html[dir] ._1WZbpgeRh0HpoBNXLaDtKi{text-align:center;border:0 none #fff;border-radius:50% 50% 50% 50%}html[dir=ltr] ._1WZbpgeRh0HpoBNXLaDtKi{left:0;right:0;background:#a6a6a6 none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._1WZbpgeRh0HpoBNXLaDtKi{right:0;left:0;background:#a6a6a6 none repeat scroll 100% 0/auto padding-box border-box}._3em9swG76rKZHUXQsyA83z{color:#094ab2;cursor:pointer;display:block;height:16px;min-height:auto;min-width:auto;text-overflow:ellipsis;white-space:nowrap;width:250px;column-rule-color:#094ab2;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #094ab2;overflow:hidden}html[dir] ._3em9swG76rKZHUXQsyA83z{border:0 none #094ab2}html[dir=ltr] ._3em9swG76rKZHUXQsyA83z{text-align:left}html[dir=rtl] ._3em9swG76rKZHUXQsyA83z{text-align:right}.GwikMziIUttMpn-5F7xEU{color:#333;cursor:pointer;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/normal Segoe UI Semibold WestEuropean,Segoe UI Semibold,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] .GwikMziIUttMpn-5F7xEU{border:0 none #333}html[dir=ltr] .GwikMziIUttMpn-5F7xEU{text-align:left}html[dir=rtl] .GwikMziIUttMpn-5F7xEU{text-align:right}._2SPeiql8P-7reGfnrmId6u{color:#333;cursor:pointer;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/normal Segoe UI Semilight WestEuropean,Segoe UI Semilight,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._2SPeiql8P-7reGfnrmId6u{border-top:0 none #333;border-bottom:0 none #333}html[dir=ltr] ._2SPeiql8P-7reGfnrmId6u{text-align:left;border-right:0 none #333;border-left:1px solid rgba(0,0,0,.0980392);margin:0 0 0 7.2px;padding:0 0 0 9.6px}html[dir=rtl] ._2SPeiql8P-7reGfnrmId6u{text-align:right;border-left:0 none #333;border-right:1px solid rgba(0,0,0,.0980392);margin:0 7.2px 0 0;padding:0 9.6px 0 0}._8o2L_9vlCq2qxLunoAIrZ{bottom:0;height:105px;min-height:105px;position:relative;top:0;width:290px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] ._8o2L_9vlCq2qxLunoAIrZ{border:1px solid rgba(0,0,0,.14902);margin:0 0 8px;padding:16px;transition:border-color .167s ease 0s,box-shadow .167s ease 0s}html[dir=ltr] ._8o2L_9vlCq2qxLunoAIrZ{left:0;right:0;background:#fff none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._8o2L_9vlCq2qxLunoAIrZ{right:0;left:0;background:#fff none repeat scroll 100% 0/auto padding-box border-box}._28gxcFJHoDWSC0FEUaRp1p{height:40px;width:290px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir=ltr] ._28gxcFJHoDWSC0FEUaRp1p{text-align:left}html[dir=rtl] ._28gxcFJHoDWSC0FEUaRp1p{text-align:right}.mPY1BoQ1p2VIT-ma8xr-C{height:40px;width:290px;font:normal normal normal normal 12px/38px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir] .mPY1BoQ1p2VIT-ma8xr-C{border-top:1px solid #f4f4f4;margin:10px -10px -16px;padding:0 10px}html[dir=ltr] .mPY1BoQ1p2VIT-ma8xr-C{text-align:left}html[dir=rtl] .mPY1BoQ1p2VIT-ma8xr-C{text-align:right}.DV5ah-0pRw3rHzOf_w331{color:#0078d7;cursor:pointer;text-decoration:none;column-rule-color:#0078d7;font:normal normal normal normal 12px/38px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #0078d7}html[dir] .DV5ah-0pRw3rHzOf_w331{border:0 none #0078d7}html[dir=ltr] .DV5ah-0pRw3rHzOf_w331{text-align:left}html[dir=rtl] .DV5ah-0pRw3rHzOf_w331{text-align:right}--><!--._37PF7054bD8dBPcGZ-AVEs{height:32px;width:324px;perspective-origin:162px 16px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;list-style:none outside none}html[dir] ._37PF7054bD8dBPcGZ-AVEs{text-align:center;transform-origin:162px 16px}._2EoKloCGPngo_e92-lQt1y{color:#0078d7;display:inline-block;height:32px;text-decoration:none;column-rule-color:#0078d7;perspective-origin:67.9531px 16px;font:normal normal normal normal 12px/32px Segoe UI Semibold WestEuropean,Segoe UI Semibold,Segoe UI,Tahoma,Arial,sans-serif;list-style:none outside none;outline:0 none #0078d7}html[dir] ._2EoKloCGPngo_e92-lQt1y{text-align:center;transform-origin:67.9531px 16px;border:0 none #0078d7;padding:0 8px}--><!--.y8KhungVYDPkSBu02LDAt{height:411px;max-height:420px;width:324px;perspective-origin:170px 213.5px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:auto}html[dir] .y8KhungVYDPkSBu02LDAt{transform-origin:170px 213.5px;padding:8px;transition:opacity .467s cubic-bezier(.175,.885,.32,1.275) 0s,max-height .467s cubic-bezier(.175,.885,.32,1.275) 0s}html[dir=ltr] .y8KhungVYDPkSBu02LDAt{text-align:left}html[dir=rtl] .y8KhungVYDPkSBu02LDAt{text-align:right}--><!--.K3uDTJJ9jObolmgnP_OT7{bottom:0;height:40px;position:relative;top:0;width:340px;z-index:1;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] .K3uDTJJ9jObolmgnP_OT7{background-position:50% 50%;background:#eaeaea none no-repeat scroll 50% 50%/cover padding-box border-box}html[dir=ltr] .K3uDTJJ9jObolmgnP_OT7{left:0;right:0;text-align:left}html[dir=rtl] .K3uDTJJ9jObolmgnP_OT7{right:0;left:0;text-align:right}._230zlaYLrpB6dI8s6c9hnq{bottom:-33.5px;display:block;height:73.5px;position:absolute;top:0;width:340px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir=ltr] ._230zlaYLrpB6dI8s6c9hnq{left:0;right:0;text-align:left}html[dir=rtl] ._230zlaYLrpB6dI8s6c9hnq{right:0;left:0;text-align:right}.rok3bnVvO3OD4Z062PMcS{bottom:0;position:absolute;top:0;height:40px;width:40px;z-index:4;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden;opacity:.75}html[dir] .rok3bnVvO3OD4Z062PMcS{background-position:50% 50%;border:0;background:#868686 none no-repeat scroll 50% 50%/cover padding-box border-box}html[dir=ltr] .rok3bnVvO3OD4Z062PMcS{left:0;right:0;text-align:left}html[dir=rtl] .rok3bnVvO3OD4Z062PMcS{right:0;left:0;text-align:right}._27v09l_gTuHkrDOP5XUbZq{bottom:0;position:absolute;top:0;height:40px;z-index:4;font:normal normal 700 normal 16px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] ._27v09l_gTuHkrDOP5XUbZq{border:0}html[dir=ltr] ._27v09l_gTuHkrDOP5XUbZq{left:45px;right:0;text-align:left}html[dir=rtl] ._27v09l_gTuHkrDOP5XUbZq{right:45px;left:0;text-align:right}._2oOhTaZq6VHZSnoAoOPwfy{bottom:450px;height:100px;position:absolute;top:12px;width:100px;z-index:4;perspective-origin:56px 56px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir] ._2oOhTaZq6VHZSnoAoOPwfy{transform:matrix(.5,0,0,.5,0,0);transform-origin:112px 0;border:6px solid #fff;border-radius:50% 50% 50% 50%}html[dir=ltr] ._2oOhTaZq6VHZSnoAoOPwfy{left:212px;right:16px;text-align:left;background:#eaeaea none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._2oOhTaZq6VHZSnoAoOPwfy{right:212px;left:16px;text-align:right;background:#eaeaea none repeat scroll 100% 0/auto padding-box border-box}--><!--._3oibwpF4wGzWAsrkNKkkFA{bottom:0;height:574px;position:relative;top:0;width:340px;z-index:2;perspective-origin:171px 288px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] ._3oibwpF4wGzWAsrkNKkkFA{box-shadow:0 0 20px 0 rgba(0,0,0,.2);transform-origin:171px 288px;border:1px solid rgba(0,0,0,.14902);transition:opacity .267s ease-out 0s}html[dir=ltr] ._3oibwpF4wGzWAsrkNKkkFA{left:180px;right:-160px;text-align:left;background:#eaeaea none repeat scroll 0 0/auto padding-box border-box;margin:-20px 0 0 -180px}html[dir=rtl] ._3oibwpF4wGzWAsrkNKkkFA{right:180px;left:-160px;text-align:right;background:#eaeaea none repeat scroll 100% 0/auto padding-box border-box;margin:-20px -180px 0 0}.SW2_Ez_huokK8vbvLV0ak{position:absolute;top:510px}html[dir=ltr] .SW2_Ez_huokK8vbvLV0ak{float:left}html[dir=rtl] .SW2_Ez_huokK8vbvLV0ak{float:right}--><!--.ms-u-borderBox,.ms-u-borderBox:after,.ms-u-borderBox:before{box-sizing:border-box}html[dir] .ms-u-borderBase{border:1px solid}.ms-u-clearfix{*zoom:1}.ms-u-clearfix:after,.ms-u-clearfix:before{display:table;content:"";line-height:0}.ms-u-clearfix:after{clear:both}.ms-u-normalize{box-sizing:border-box}html[dir] .ms-u-normalize{margin:0;padding:0;box-shadow:none}html[dir=ltr] .ms-u-textAlignLeft{text-align:left}html[dir=rtl] .ms-u-textAlignLeft{text-align:right}html[dir] .ms-u-textAlignCenter{text-align:center}html[dir=ltr] .ms-u-textAlignRight{text-align:right}html[dir=rtl] .ms-u-textAlignRight{text-align:left}.ms-u-screenReaderOnly{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}html[dir] .ms-u-screenReaderOnly{padding:0;margin:-1px;border:0}.ms-u-textTruncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.ms-u-noWrap{white-space:nowrap}html[dir] .ms-bgColor-themeDark,html[dir] .ms-bgColor-themeDark--hover:hover{background-color:#005a9e}html[dir] .ms-bgColor-themeDarkAlt,html[dir] .ms-bgColor-themeDarkAlt--hover:hover{background-color:#106ebe}html[dir] .ms-bgColor-themeDarker,html[dir] .ms-bgColor-themeDarker--hover:hover{background-color:#004578}html[dir] .ms-bgColor-themePrimary,html[dir] .ms-bgColor-themePrimary--hover:hover{background-color:#0078d7}html[dir] .ms-bgColor-themeSecondary,html[dir] .ms-bgColor-themeSecondary--hover:hover{background-color:#2488d8}html[dir] .ms-bgColor-themeTertiary,html[dir] .ms-bgColor-themeTertiary--hover:hover{background-color:#69afe5}html[dir] .ms-bgColor-themeLight,html[dir] .ms-bgColor-themeLight--hover:hover{background-color:#b3d6f2}html[dir] .ms-bgColor-themeLighter,html[dir] .ms-bgColor-themeLighter--hover:hover{background-color:#deecf9}html[dir] .ms-bgColor-themeLighterAlt,html[dir] .ms-bgColor-themeLighterAlt--hover:hover{background-color:#eff6fc}html[dir] .ms-bgColor-black,html[dir] .ms-bgColor-black--hover:hover{background-color:#000}html[dir] .ms-bgColor-neutralDark,html[dir] .ms-bgColor-neutralDark--hover:hover{background-color:#212121}html[dir] .ms-bgColor-neutralPrimary,html[dir] .ms-bgColor-neutralPrimary--hover:hover{background-color:#333}html[dir] .ms-bgColor-neutralPrimaryAlt,html[dir] .ms-bgColor-neutralPrimaryAlt--hover:hover{background-color:#3c3c3c}html[dir] .ms-bgColor-neutralSecondary,html[dir] .ms-bgColor-neutralSecondary--hover:hover{background-color:#666}html[dir] .ms-bgColor-neutralSecondaryAlt,html[dir] .ms-bgColor-neutralSecondaryAlt--hover:hover{background-color:#767676}html[dir] .ms-bgColor-neutralTertiary,html[dir] .ms-bgColor-neutralTertiary--hover:hover{background-color:#a6a6a6}html[dir] .ms-bgColor-neutralTertiaryAlt,html[dir] .ms-bgColor-neutralTertiaryAlt--hover:hover{background-color:#c8c8c8}html[dir] .ms-bgColor-neutralLight,html[dir] .ms-bgColor-neutralLight--hover:hover{background-color:#eaeaea}html[dir] .ms-bgColor-neutralLighter,html[dir] .ms-bgColor-neutralLighter--hover:hover{background-color:#f4f4f4}html[dir] .ms-bgColor-neutralLighterAlt,html[dir] .ms-bgColor-neutralLighterAlt--hover:hover{background-color:#f8f8f8}html[dir] .ms-bgColor-white,html[dir] .ms-bgColor-white--hover:hover{background-color:#fff}html[dir] .ms-bgColor-yellow{background-color:#ffb900}html[dir] .ms-bgColor-yellowLight{background-color:#fff100}html[dir] .ms-bgColor-orange{background-color:#d83b01}html[dir] .ms-bgColor-orangeLight{background-color:#ea4300}html[dir] .ms-bgColor-orangeLighter{background-color:#ff8c00}html[dir] .ms-bgColor-redDark{background-color:#a80000}html[dir] .ms-bgColor-red{background-color:#e81123}html[dir] .ms-bgColor-magentaDark{background-color:#5c005c}html[dir] .ms-bgColor-magenta{background-color:#b4009e}html[dir] .ms-bgColor-magentaLight{background-color:#e3008c}html[dir] .ms-bgColor-purpleDark{background-color:#32145a}html[dir] .ms-bgColor-purple{background-color:#5c2d91}html[dir] .ms-bgColor-purpleLight{background-color:#b4a0ff}html[dir] .ms-bgColor-blueDark{background-color:#002050}html[dir] .ms-bgColor-blueMid{background-color:#00188f}html[dir] .ms-bgColor-blue{background-color:#0078d7}html[dir] .ms-bgColor-blueLight{background-color:#00bcf2}html[dir] .ms-bgColor-tealDark{background-color:#004b50}html[dir] .ms-bgColor-teal{background-color:#008272}html[dir] .ms-bgColor-tealLight{background-color:#00b294}html[dir] .ms-bgColor-greenDark{background-color:#004b1c}html[dir] .ms-bgColor-green{background-color:#107c10}html[dir] .ms-bgColor-greenLight{background-color:#bad80a}html[dir] .ms-bgColor-info{background-color:#f4f4f4}html[dir] .ms-bgColor-success{background-color:#dff6dd}html[dir] .ms-bgColor-severeWarning{background-color:#fed9cc}html[dir] .ms-bgColor-warning{background-color:#fff4ce}html[dir] .ms-bgColor-error{background-color:#fde7e9}html[dir] .ms-borderColor-themeDark,html[dir] .ms-borderColor-themeDark--hover:hover{border-color:#005a9e}html[dir] .ms-borderColor-themeDarkAlt,html[dir] .ms-borderColor-themeDarkAlt--hover:hover{border-color:#106ebe}html[dir] .ms-borderColor-themeDarker,html[dir] .ms-borderColor-themeDarker--hover:hover{border-color:#004578}html[dir] .ms-borderColor-themePrimary,html[dir] .ms-borderColor-themePrimary--hover:hover{border-color:#0078d7}html[dir] .ms-borderColor-themeSecondary,html[dir] .ms-borderColor-themeSecondary--hover:hover{border-color:#2488d8}html[dir] .ms-borderColor-themeTertiary,html[dir] .ms-borderColor-themeTertiary--hover:hover{border-color:#69afe5}html[dir] .ms-borderColor-themeLight,html[dir] .ms-borderColor-themeLight--hover:hover{border-color:#b3d6f2}html[dir] .ms-borderColor-themeLighter,html[dir] .ms-borderColor-themeLighter--hover:hover{border-color:#deecf9}html[dir] .ms-borderColor-themeLighterAlt,html[dir] .ms-borderColor-themeLighterAlt--hover:hover{border-color:#eff6fc}html[dir] .ms-borderColor-black,html[dir] .ms-borderColor-black--hover:hover{border-color:#000}html[dir] .ms-borderColor-neutralDark,html[dir] .ms-borderColor-neutralDark--hover:hover{border-color:#212121}html[dir] .ms-borderColor-neutralPrimary,html[dir] .ms-borderColor-neutralPrimary--hover:hover{border-color:#333}html[dir] .ms-borderColor-neutralPrimaryAlt,html[dir] .ms-borderColor-neutralPrimaryAlt--hover:hover{border-color:#3c3c3c}html[dir] .ms-borderColor-neutralSecondary,html[dir] .ms-borderColor-neutralSecondary--hover:hover{border-color:#666}html[dir] .ms-borderColor-neutralSecondaryAlt,html[dir] .ms-borderColor-neutralSecondaryAlt--hover:hover{border-color:#767676}html[dir] .ms-borderColor-neutralTertiary,html[dir] .ms-borderColor-neutralTertiary--hover:hover{border-color:#a6a6a6}html[dir] .ms-borderColor-neutralTertiaryAlt,html[dir] .ms-borderColor-neutralTertiaryAlt--hover:hover{border-color:#c8c8c8}html[dir] .ms-borderColor-neutralLight,html[dir] .ms-borderColor-neutralLight--hover:hover{border-color:#eaeaea}html[dir] .ms-borderColor-neutralLighter,html[dir] .ms-borderColor-neutralLighter--hover:hover{border-color:#f4f4f4}html[dir] .ms-borderColor-neutralLighterAlt,html[dir] .ms-borderColor-neutralLighterAlt--hover:hover{border-color:#f8f8f8}html[dir] .ms-borderColor-white,html[dir] .ms-borderColor-white--hover:hover{border-color:#fff}html[dir] .ms-borderColor-yellow{border-color:#ffb900}html[dir] .ms-borderColor-yellowLight{border-color:#fff100}html[dir] .ms-borderColor-orange{border-color:#d83b01}html[dir] .ms-borderColor-orangeLight{border-color:#ea4300}html[dir] .ms-borderColor-orangeLighter{border-color:#ff8c00}html[dir] .ms-borderColor-redDark{border-color:#a80000}html[dir] .ms-borderColor-red{border-color:#e81123}html[dir] .ms-borderColor-magentaDark{border-color:#5c005c}html[dir] .ms-borderColor-magenta{border-color:#b4009e}html[dir] .ms-borderColor-magentaLight{border-color:#e3008c}html[dir] .ms-borderColor-purpleDark{border-color:#32145a}html[dir] .ms-borderColor-purple{border-color:#5c2d91}html[dir] .ms-borderColor-purpleLight{border-color:#b4a0ff}html[dir] .ms-borderColor-blueDark{border-color:#002050}html[dir] .ms-borderColor-blueMid{border-color:#00188f}html[dir] .ms-borderColor-blue{border-color:#0078d7}html[dir] .ms-borderColor-blueLight{border-color:#00bcf2}html[dir] .ms-borderColor-tealDark{border-color:#004b50}html[dir] .ms-borderColor-teal{border-color:#008272}html[dir] .ms-borderColor-tealLight{border-color:#00b294}html[dir] .ms-borderColor-greenDark{border-color:#004b1c}html[dir] .ms-borderColor-green{border-color:#107c10}html[dir] .ms-borderColor-greenLight{border-color:#bad80a}html[dir] .ms-borderColorTop-themePrimary,html[dir] .ms-borderColorTop-themePrimary--hover:hover{border-top-color:#0078d7}.ms-fontWeight-light,.ms-fontWeight-light--hover:hover{font-weight:100}.ms-fontWeight-semilight,.ms-fontWeight-semilight--hover:hover{font-weight:300}.ms-fontWeight-regular,.ms-fontWeight-regular--hover:hover{font-weight:400}.ms-fontWeight-semibold,.ms-fontWeight-semibold--hover:hover{font-weight:600}.ms-fontSize-su{font-size:42px}.ms-fontSize-xxl{font-size:28px}.ms-fontSize-xl{font-size:21px}.ms-fontSize-l{font-size:17px}.ms-fontSize-mPlus{font-size:15px}.ms-fontSize-m{font-size:14px}.ms-fontSize-sPlus{font-size:13px}.ms-fontSize-s{font-size:12px}.ms-fontSize-xs{font-size:11px}.ms-fontSize-mi{font-size:10px}.ms-fontColor-themeDarker,.ms-fontColor-themeDarker--hover:hover{color:#004578}.ms-fontColor-themeDark,.ms-fontColor-themeDark--hover:hover{color:#005a9e}.ms-fontColor-themeDarkAlt,.ms-fontColor-themeDarkAlt--hover:hover{color:#106ebe}.ms-fontColor-themePrimary,.ms-fontColor-themePrimary--hover:hover{color:#0078d7}.ms-fontColor-themeSecondary,.ms-fontColor-themeSecondary--hover:hover{color:#2488d8}.ms-fontColor-themeTertiary,.ms-fontColor-themeTertiary--hover:hover{color:#69afe5}.ms-fontColor-themeLight,.ms-fontColor-themeLight--hover:hover{color:#b3d6f2}.ms-fontColor-themeLighter,.ms-fontColor-themeLighter--hover:hover{color:#deecf9}.ms-fontColor-themeLighterAlt,.ms-fontColor-themeLighterAlt--hover:hover{color:#eff6fc}.ms-fontColor-black,.ms-fontColor-black--hover:hover{color:#000}.ms-fontColor-neutralDark,.ms-fontColor-neutralDark--hover:hover{color:#212121}.ms-fontColor-neutralPrimary,.ms-fontColor-neutralPrimary--hover:hover{color:#333}.ms-fontColor-neutralPrimaryAlt,.ms-fontColor-neutralPrimaryAlt--hover:hover{color:#3c3c3c}.ms-fontColor-neutralSecondary,.ms-fontColor-neutralSecondary--hover:hover{color:#666}.ms-fontColor-neutralSecondaryAlt,.ms-fontColor-neutralSecondaryAlt--hover:hover{color:#767676}.ms-fontColor-neutralTertiary,.ms-fontColor-neutralTertiary--hover:hover{color:#a6a6a6}.ms-fontColor-neutralTertiaryAlt,.ms-fontColor-neutralTertiaryAlt--hover:hover{color:#c8c8c8}.ms-fontColor-neutralLight,.ms-fontColor-neutralLight--hover:hover{color:#eaeaea}.ms-fontColor-neutralLighter,.ms-fontColor-neutralLighter--hover:hover{color:#f4f4f4}.ms-fontColor-neutralLighterAlt,.ms-fontColor-neutralLighterAlt--hover:hover{color:#f8f8f8}.ms-fontColor-white,.ms-fontColor-white--hover:hover{color:#fff}.ms-fontColor-yellow,.ms-fontColor-yellow--hover:hover{color:#ffb900}.ms-fontColor-yellowLight,.ms-fontColor-yellowLight--hover:hover{color:#fff100}.ms-fontColor-orange,.ms-fontColor-orange--hover:hover{color:#d83b01}.ms-fontColor-orangeLight,.ms-fontColor-orangeLight--hover:hover{color:#ea4300}.ms-fontColor-orangeLighter,.ms-fontColor-orangeLighter--hover:hover{color:#ff8c00}.ms-fontColor-redDark,.ms-fontColor-redDark--hover:hover{color:#a80000}.ms-fontColor-red,.ms-fontColor-red--hover:hover{color:#e81123}.ms-fontColor-magentaDark,.ms-fontColor-magentaDark--hover:hover{color:#5c005c}.ms-fontColor-magenta,.ms-fontColor-magenta--hover:hover{color:#b4009e}.ms-fontColor-magentaLight,.ms-fontColor-magentaLight--hover:hover{color:#e3008c}.ms-fontColor-purpleDark,.ms-fontColor-purpleDark--hover:hover{color:#32145a}.ms-fontColor-purple,.ms-fontColor-purple--hover:hover{color:#5c2d91}.ms-fontColor-purpleLight,.ms-fontColor-purpleLight--hover:hover{color:#b4a0ff}.ms-fontColor-blueDark,.ms-fontColor-blueDark--hover:hover{color:#002050}.ms-fontColor-blueMid,.ms-fontColor-blueMid--hover:hover{color:#00188f}.ms-fontColor-blue,.ms-fontColor-blue--hover:hover{color:#0078d7}.ms-fontColor-blueLight,.ms-fontColor-blueLight--hover:hover{color:#00bcf2}.ms-fontColor-tealDark,.ms-fontColor-tealDark--hover:hover{color:#004b50}.ms-fontColor-teal,.ms-fontColor-teal--hover:hover{color:#008272}.ms-fontColor-tealLight,.ms-fontColor-tealLight--hover:hover{color:#00b294}.ms-fontColor-greenDark,.ms-fontColor-greenDark--hover:hover{color:#004b1c}.ms-fontColor-green,.ms-fontColor-green--hover:hover{color:#107c10}.ms-fontColor-greenLight,.ms-fontColor-greenLight--hover:hover{color:#bad80a}.ms-fontColor-info,.ms-fontColor-info--hover:hover{color:#767676}.ms-fontColor-success,.ms-fontColor-success--hover:hover{color:#107c10}.ms-fontColor-alert,.ms-fontColor-alert--hover:hover{color:#d83b01}.ms-fontColor-warning,.ms-fontColor-warning--hover:hover{color:#767676}.ms-fontColor-severeWarning,.ms-fontColor-severeWarning--hover:hover{color:#d83b01}.ms-fontColor-error,.ms-fontColor-error--hover:hover{color:#a80000}.ms-Icon,.ms-Icon:before{-moz-osx-font-smoothing:grayscale;font-family:FabricMDL2Icons;font-style:normal;font-weight:400;speak:none}.ms-Icon,.ms-Icon--circle,.ms-Icon:before{-webkit-font-smoothing:antialiased;display:inline-block}.ms-Icon--circle{position:relative;font-size:1rem;width:1em;height:1em}html[dir] .ms-Icon--circle{padding:0}html[dir=ltr] .ms-Icon--circle{margin:0 .5em 0 0;text-align:left}html[dir=rtl] .ms-Icon--circle{margin:0 0 0 .5em;text-align:right}.ms-Icon--circle:after,.ms-Icon--circle:before{line-height:1;font-size:inherit}.ms-Icon--circle:before{display:block;width:100%;height:100%;vertical-align:top;position:absolute}html[dir] .ms-Icon--circle:before{margin:0;padding:0}.ms-Icon--circle:after{content:"\E000";position:absolute;top:0;z-index:0}html[dir] .ms-Icon--circle:after{transform:scale(2);transform-origin:50% 50%}html[dir=ltr] .ms-Icon--circle:after{left:0}html[dir=rtl] .ms-Icon--circle:after{right:0}.ms-Icon--xs{font-size:10px}.ms-Icon--s{font-size:12px}.ms-Icon--m{font-size:16px}.ms-Icon--l{font-size:20px}.ms-Icon--CarotRightSolid8:before{content:"\EDDA"}.ms-Icon--DynamicsCRMLogo:before{content:"\EDCC"}.ms-Icon--DecreaseIndentLegacy:before{content:"\E290"}.ms-Icon--IncreaseIndentLegacy:before{content:"\E291"}.ms-Icon--GlobalNavButton:before{content:"\E700"}.ms-Icon--InternetSharing:before{content:"\E704"}.ms-Icon--Brightness:before{content:"\E706"}.ms-Icon--MapPin:before{content:"\E707"}.ms-Icon--Airplane:before{content:"\E709"}.ms-Icon--Tablet:before{content:"\E70A"}.ms-Icon--QuickNote:before{content:"\E70B"}.ms-Icon--ChevronDown:before{content:"\E70D"}.ms-Icon--ChevronUp:before{content:"\E70E"}.ms-Icon--Edit:before{content:"\E70F"}.ms-Icon--Add:before{content:"\E710"}.ms-Icon--Cancel:before{content:"\E711"}.ms-Icon--More:before{content:"\E712"}.ms-Icon--Settings:before{content:"\E713"}.ms-Icon--Video:before{content:"\E714"}.ms-Icon--Mail:before{content:"\E715"}.ms-Icon--People:before{content:"\E716"}.ms-Icon--Phone:before{content:"\E717"}.ms-Icon--Pin:before{content:"\E718"}.ms-Icon--Shop:before{content:"\E719"}.ms-Icon--Link:before{content:"\E71B"}.ms-Icon--Filter:before{content:"\E71C"}.ms-Icon--Zoom:before{content:"\E71E"}.ms-Icon--ZoomOut:before{content:"\E71F"}.ms-Icon--Microphone:before{content:"\E720"}.ms-Icon--Search:before{content:"\E721"}.ms-Icon--Camera:before{content:"\E722"}.ms-Icon--Attach:before{content:"\E723"}.ms-Icon--Send:before{content:"\E724"}.ms-Icon--FavoriteList:before{content:"\E728"}.ms-Icon--PageSolid:before{content:"\E729"}.ms-Icon--Forward:before{content:"\E72A"}.ms-Icon--Back:before{content:"\E72B"}.ms-Icon--Refresh:before{content:"\E72C"}.ms-Icon--Share:before{content:"\E72D"}.ms-Icon--Lock:before{content:"\E72E"}.ms-Icon--EMI:before{content:"\E731"}.ms-Icon--MiniLink:before{content:"\E732"}.ms-Icon--Blocked:before{content:"\E733"}.ms-Icon--FavoriteStar:before{content:"\E734"}.ms-Icon--FavoriteStarFill:before{content:"\E735"}.ms-Icon--ReadingMode:before{content:"\E736"}.ms-Icon--Remove:before{content:"\E738"}.ms-Icon--Checkbox:before{content:"\E739"}.ms-Icon--CheckboxComposite:before{content:"\E73A"}.ms-Icon--CheckboxIndeterminate:before{content:"\E73C"}.ms-Icon--CheckMark:before{content:"\E73E"}.ms-Icon--BackToWindow:before{content:"\E73F"}.ms-Icon--FullScreen:before{content:"\E740"}.ms-Icon--Print:before{content:"\E749"}.ms-Icon--Up:before{content:"\E74A"}.ms-Icon--Down:before{content:"\E74B"}.ms-Icon--Delete:before{content:"\E74D"}.ms-Icon--Save:before{content:"\E74E"}.ms-Icon--Sad:before{content:"\E757"}.ms-Icon--SIPMove:before{content:"\E759"}.ms-Icon--EraseTool:before{content:"\E75C"}.ms-Icon--GripperTool:before{content:"\E75E"}.ms-Icon--Dialpad:before{content:"\E75F"}.ms-Icon--PageLeft:before{content:"\E760"}.ms-Icon--PageRight:before{content:"\E761"}.ms-Icon--MultiSelect:before{content:"\E762"}.ms-Icon--Play:before{content:"\E768"}.ms-Icon--Pause:before{content:"\E769"}.ms-Icon--ChevronLeft:before{content:"\E76B"}.ms-Icon--ChevronRight:before{content:"\E76C"}.ms-Icon--Emoji2:before{content:"\E76E"}.ms-Icon--System:before{content:"\E770"}.ms-Icon--Globe:before{content:"\E774"}.ms-Icon--ContactInfo:before{content:"\E779"}.ms-Icon--Unpin:before{content:"\E77A"}.ms-Icon--Contact:before{content:"\E77B"}.ms-Icon--Memo:before{content:"\E77C"}.ms-Icon--WindowsLogo:before{content:"\E782"}.ms-Icon--Error:before{content:"\E783"}.ms-Icon--Unlock:before{content:"\E785"}.ms-Icon--Calendar:before{content:"\E787"}.ms-Icon--Megaphone:before{content:"\E789"}.ms-Icon--AutoEnhanceOn:before{content:"\E78D"}.ms-Icon--AutoEnhanceOff:before{content:"\E78E"}.ms-Icon--Color:before{content:"\E790"}.ms-Icon--SaveAs:before{content:"\E792"}.ms-Icon--Light:before{content:"\E793"}.ms-Icon--Filters:before{content:"\E795"}.ms-Icon--Contrast:before{content:"\E7A1"}.ms-Icon--Redo:before{content:"\E7A6"}.ms-Icon--Undo:before{content:"\E7A7"}.ms-Icon--PhotoCollection:before{content:"\E7AA"}.ms-Icon--Album:before{content:"\E7AB"}.ms-Icon--Rotate:before{content:"\E7AD"}.ms-Icon--PanoIndicator:before{content:"\E7B0"}.ms-Icon--RedEye:before{content:"\E7B3"}.ms-Icon--ThumbnailView:before{content:"\E7B6"}.ms-Icon--Package:before{content:"\E7B8"}.ms-Icon--Warning:before{content:"\E7BA"}.ms-Icon--Financial:before{content:"\E7BB"}.ms-Icon--ShoppingCart:before{content:"\E7BF"}.ms-Icon--Train:before{content:"\E7C0"}.ms-Icon--Flag:before{content:"\E7C1"}.ms-Icon--Move:before{content:"\E7C2"}.ms-Icon--Page:before{content:"\E7C3"}.ms-Icon--TouchPointer:before{content:"\E7C9"}.ms-Icon--Merge:before{content:"\E7D5"}.ms-Icon--TurnRight:before{content:"\E7DB"}.ms-Icon--Ferry:before{content:"\E7E3"}.ms-Icon--Tab:before{content:"\E7E9"}.ms-Icon--Admin:before{content:"\E7EF"}.ms-Icon--TVMonitor:before{content:"\E7F4"}.ms-Icon--Speakers:before{content:"\E7F5"}.ms-Icon--Nav2DMapView:before{content:"\E800"}.ms-Icon--Car:before{content:"\E804"}.ms-Icon--EatDrink:before{content:"\E807"}.ms-Icon--LocationCircle:before{content:"\E80E"}.ms-Icon--Home:before{content:"\E80F"}.ms-Icon--SwitcherStartEnd:before{content:"\E810"}.ms-Icon--IncidentTriangle:before{content:"\E814"}.ms-Icon--Touch:before{content:"\E815"}.ms-Icon--MapDirections:before{content:"\E816"}.ms-Icon--History:before{content:"\E81C"}.ms-Icon--Location:before{content:"\E81D"}.ms-Icon--Work:before{content:"\E821"}.ms-Icon--Recent:before{content:"\E823"}.ms-Icon--Hotel:before{content:"\E824"}.ms-Icon--LocationDot:before{content:"\E827"}.ms-Icon--News:before{content:"\E900"}.ms-Icon--Chat:before{content:"\E901"}.ms-Icon--Group:before{content:"\E902"}.ms-Icon--View:before{content:"\E890"}.ms-Icon--Clear:before{content:"\E894"}.ms-Icon--Sync:before{content:"\E895"}.ms-Icon--Download:before{content:"\E896"}.ms-Icon--Help:before{content:"\E897"}.ms-Icon--Upload:before{content:"\E898"}.ms-Icon--Emoji:before{content:"\E899"}.ms-Icon--MailForward:before{content:"\E89C"}.ms-Icon--ClosePane:before{content:"\E89F"}.ms-Icon--OpenPane:before{content:"\E8A0"}.ms-Icon--PreviewLink:before{content:"\E8A1"}.ms-Icon--ZoomIn:before{content:"\E8A3"}.ms-Icon--Bookmarks:before{content:"\E8A4"}.ms-Icon--Document:before{content:"\E8A5"}.ms-Icon--ProtectedDocument:before{content:"\E8A6"}.ms-Icon--OpenInNewWindow:before{content:"\E8A7"}.ms-Icon--MailFill:before{content:"\E8A8"}.ms-Icon--ViewAll:before{content:"\E8A9"}.ms-Icon--Switch:before{content:"\E8AB"}.ms-Icon--Rename:before{content:"\E8AC"}.ms-Icon--Folder:before{content:"\E8B7"}.ms-Icon--Picture:before{content:"\E8B9"}.ms-Icon--ShowResults:before{content:"\E8BC"}.ms-Icon--Message:before{content:"\E8BD"}.ms-Icon--CalendarDay:before{content:"\E8BF"}.ms-Icon--CalendarWeek:before{content:"\E8C0"}.ms-Icon--MailReplyAll:before{content:"\E8C2"}.ms-Icon--Read:before{content:"\E8C3"}.ms-Icon--PaymentCard:before{content:"\E8C7"}.ms-Icon--Copy:before{content:"\E8C8"}.ms-Icon--Important:before{content:"\E8C9"}.ms-Icon--MailReply:before{content:"\E8CA"}.ms-Icon--Sort:before{content:"\E8CB"}.ms-Icon--GotoToday:before{content:"\E8D1"}.ms-Icon--Font:before{content:"\E8D2"}.ms-Icon--FontColor:before{content:"\E8D3"}.ms-Icon--FolderFill:before{content:"\E8D5"}.ms-Icon--Permissions:before{content:"\E8D7"}.ms-Icon--DisableUpdates:before{content:"\E8D8"}.ms-Icon--Unfavorite:before{content:"\E8D9"}.ms-Icon--Italic:before{content:"\E8DB"}.ms-Icon--Underline:before{content:"\E8DC"}.ms-Icon--Bold:before{content:"\E8DD"}.ms-Icon--MoveToFolder:before{content:"\E8DE"}.ms-Icon--Dislike:before{content:"\E8E0"}.ms-Icon--Like:before{content:"\E8E1"}.ms-Icon--AlignRight:before{content:"\E8E2"}.ms-Icon--AlignCenter:before{content:"\E8E3"}.ms-Icon--AlignLeft:before{content:"\E8E4"}.ms-Icon--OpenFile:before{content:"\E8E5"}.ms-Icon--FontDecrease:before{content:"\E8E7"}.ms-Icon--FontIncrease:before{content:"\E8E8"}.ms-Icon--FontSize:before{content:"\E8E9"}.ms-Icon--CellPhone:before{content:"\E8EA"}.ms-Icon--Tag:before{content:"\E8EC"}.ms-Icon--Library:before{content:"\E8F1"}.ms-Icon--PostUpdate:before{content:"\E8F3"}.ms-Icon--NewFolder:before{content:"\E8F4"}.ms-Icon--CalendarReply:before{content:"\E8F5"}.ms-Icon--UnsyncFolder:before{content:"\E8F6"}.ms-Icon--SyncFolder:before{content:"\E8F7"}.ms-Icon--BlockContact:before{content:"\E8F8"}.ms-Icon--AddFriend:before{content:"\E8FA"}.ms-Icon--BulletedList:before{content:"\E8FD"}.ms-Icon--Preview:before{content:"\E8FF"}.ms-Icon--DockLeft:before{content:"\E90C"}.ms-Icon--DockRight:before{content:"\E90D"}.ms-Icon--Repair:before{content:"\E90F"}.ms-Icon--Accounts:before{content:"\E910"}.ms-Icon--RadioBullet:before{content:"\E915"}.ms-Icon--Stopwatch:before{content:"\E916"}.ms-Icon--Clock:before{content:"\E917"}.ms-Icon--WorldClock:before{content:"\E918"}.ms-Icon--AlarmClock:before{content:"\E919"}.ms-Icon--Hospital:before{content:"\E91D"}.ms-Icon--Timer:before{content:"\E91E"}.ms-Icon--FullCircleMask:before{content:"\E91F"}.ms-Icon--LocationFill:before{content:"\E920"}.ms-Icon--ChromeMinimize:before{content:"\E921"}.ms-Icon--Annotation:before{content:"\E924"}.ms-Icon--ChromeClose:before{content:"\E8BB"}.ms-Icon--Accept:before{content:"\E8FB"}.ms-Icon--Fingerprint:before{content:"\E928"}.ms-Icon--Handwriting:before{content:"\E929"}.ms-Icon--StackIndicator:before{content:"\E7FF"}.ms-Icon--Completed:before{content:"\E930"}.ms-Icon--Label:before{content:"\E932"}.ms-Icon--FlickDown:before{content:"\E935"}.ms-Icon--FlickUp:before{content:"\E936"}.ms-Icon--FlickLeft:before{content:"\E937"}.ms-Icon--FlickRight:before{content:"\E938"}.ms-Icon--MusicInCollection:before{content:"\E940"}.ms-Icon--OneDrive:before{content:"\E941"}.ms-Icon--CompassNW:before{content:"\E942"}.ms-Icon--Code:before{content:"\E943"}.ms-Icon--LightningBolt:before{content:"\E945"}.ms-Icon--Info:before{content:"\E946"}.ms-Icon--CalculatorAddition:before{content:"\E948"}.ms-Icon--CalculatorSubtract:before{content:"\E949"}.ms-Icon--PrintfaxPrinterFile:before{content:"\E956"}.ms-Icon--Headset:before{content:"\E95B"}.ms-Icon--Health:before{content:"\E95E"}.ms-Icon--ChevronUpSmall:before{content:"\E96D"}.ms-Icon--ChevronDownSmall:before{content:"\E96E"}.ms-Icon--ChevronLeftSmall:before{content:"\E96F"}.ms-Icon--ChevronRightSmall:before{content:"\E970"}.ms-Icon--ChevronUpMed:before{content:"\E971"}.ms-Icon--ChevronDownMed:before{content:"\E972"}.ms-Icon--ChevronLeftMed:before{content:"\E973"}.ms-Icon--ChevronRightMed:before{content:"\E974"}.ms-Icon--Dictionary:before{content:"\E82D"}.ms-Icon--ChromeBack:before{content:"\E830"}.ms-Icon--PC1:before{content:"\E977"}.ms-Icon--PresenceChickletVideo:before{content:"\E979"}.ms-Icon--Reply:before{content:"\E97A"}.ms-Icon--DoubleChevronLeftMed:before{content:"\E991"}.ms-Icon--Volume0:before{content:"\E992"}.ms-Icon--Volume1:before{content:"\E993"}.ms-Icon--Volume2:before{content:"\E994"}.ms-Icon--Volume3:before{content:"\E995"}.ms-Icon--CaretHollow:before{content:"\E817"}.ms-Icon--CaretSolid:before{content:"\E818"}.ms-Icon--FolderOpen:before{content:"\E838"}.ms-Icon--Pinned:before{content:"\E840"}.ms-Icon--PinnedFill:before{content:"\E842"}.ms-Icon--Chart:before{content:"\E999"}.ms-Icon--BidiLtr:before{content:"\E9AA"}.ms-Icon--BidiRtl:before{content:"\E9AB"}.ms-Icon--RevToggleKey:before{content:"\E845"}.ms-Icon--RightDoubleQuote:before{content:"\E9B1"}.ms-Icon--Sunny:before{content:"\E9BD"}.ms-Icon--CloudWeather:before{content:"\E9BE"}.ms-Icon--Cloudy:before{content:"\E9BF"}.ms-Icon--PartlyCloudyDay:before{content:"\E9C0"}.ms-Icon--PartlyCloudyNight:before{content:"\E9C1"}.ms-Icon--ClearNight:before{content:"\E9C2"}.ms-Icon--RainShowersDay:before{content:"\E9C3"}.ms-Icon--Rain:before{content:"\E9C4"}.ms-Icon--Thunderstorms:before{content:"\E9C6"}.ms-Icon--RainSnow:before{content:"\E9C7"}.ms-Icon--BlowingSnow:before{content:"\E9C9"}.ms-Icon--Frigid:before{content:"\E9CA"}.ms-Icon--Fog:before{content:"\E9CB"}.ms-Icon--Squalls:before{content:"\E9CC"}.ms-Icon--Duststorm:before{content:"\E9CD"}.ms-Icon--Precipitation:before{content:"\E9CF"}.ms-Icon--Ringer:before{content:"\EA8F"}.ms-Icon--PDF:before{content:"\EA90"}.ms-Icon--SortLines:before{content:"\E9D0"}.ms-Icon--Ribbon:before{content:"\E9D1"}.ms-Icon--CheckList:before{content:"\E9D5"}.ms-Icon--Generate:before{content:"\E9DA"}.ms-Icon--Equalizer:before{content:"\E9E9"}.ms-Icon--BarChartHorizontal:before{content:"\E9EB"}.ms-Icon--Freezing:before{content:"\E9EF"}.ms-Icon--SnowShowerDay:before{content:"\E9FD"}.ms-Icon--HailDay:before{content:"\EA00"}.ms-Icon--WorkFlow:before{content:"\EA01"}.ms-Icon--StoreLogoMed:before{content:"\EA04"}.ms-Icon--RainShowersNight:before{content:"\EA0F"}.ms-Icon--SnowShowerNight:before{content:"\EA11"}.ms-Icon--HailNight:before{content:"\EA13"}.ms-Icon--Info2:before{content:"\EA1F"}.ms-Icon--StoreLogo:before{content:"\EA96"}.ms-Icon--MultiSelectMirrored:before{content:"\EA98"}.ms-Icon--Broom:before{content:"\EA99"}.ms-Icon--MusicInCollectionFill:before{content:"\EA36"}.ms-Icon--List:before{content:"\EA37"}.ms-Icon--Asterisk:before{content:"\EA38"}.ms-Icon--ErrorBadge:before{content:"\EA39"}.ms-Icon--CircleRing:before{content:"\EA3A"}.ms-Icon--CircleFill:before{content:"\EA3B"}.ms-Icon--BookmarksMirrored:before{content:"\EA41"}.ms-Icon--BulletedListMirrored:before{content:"\EA42"}.ms-Icon--CaretHollowMirrored:before{content:"\EA45"}.ms-Icon--CaretSolidMirrored:before{content:"\EA46"}.ms-Icon--ChromeBackMirrored:before{content:"\EA47"}.ms-Icon--ClosePaneMirrored:before{content:"\EA49"}.ms-Icon--DockLeftMirrored:before{content:"\EA4C"}.ms-Icon--DoubleChevronLeftMedMirrored:before{content:"\EA4D"}.ms-Icon--HelpMirrored:before{content:"\EA51"}.ms-Icon--ListMirrored:before{content:"\EA55"}.ms-Icon--MailForwardMirrored:before{content:"\EA56"}.ms-Icon--MailReplyMirrored:before{content:"\EA57"}.ms-Icon--MailReplyAllMirrored:before{content:"\EA58"}.ms-Icon--OpenPaneMirrored:before{content:"\EA5B"}.ms-Icon--SendMirrored:before{content:"\EA63"}.ms-Icon--ShowResultsMirrored:before{content:"\EA65"}.ms-Icon--ThumbnailViewMirrored:before{content:"\EA67"}.ms-Icon--Devices3:before{content:"\EA6C"}.ms-Icon--Lightbulb:before{content:"\EA80"}.ms-Icon--StatusTriangle:before{content:"\EA82"}.ms-Icon--VolumeDisabled:before{content:"\EA85"}.ms-Icon--Puzzle:before{content:"\EA86"}.ms-Icon--EmojiNeutral:before{content:"\EA87"}.ms-Icon--EmojiDisappointed:before{content:"\EA88"}.ms-Icon--HomeSolid:before{content:"\EA8A"}.ms-Icon--Cocktails:before{content:"\EA9D"}.ms-Icon--Articles:before{content:"\EAC1"}.ms-Icon--Cycling:before{content:"\EAC7"}.ms-Icon--DietPlanNotebook:before{content:"\EAC8"}.ms-Icon--Pill:before{content:"\EACB"}.ms-Icon--Running:before{content:"\EADA"}.ms-Icon--Weights:before{content:"\EADB"}.ms-Icon--BarChart4:before{content:"\EAE7"}.ms-Icon--CirclePlus:before{content:"\EAEE"}.ms-Icon--Coffee:before{content:"\EAEF"}.ms-Icon--Cotton:before{content:"\EAF3"}.ms-Icon--Market:before{content:"\EAFC"}.ms-Icon--Money:before{content:"\EAFD"}.ms-Icon--PieDouble:before{content:"\EB04"}.ms-Icon--RemoveFilter:before{content:"\EB08"}.ms-Icon--StockDown:before{content:"\EB0F"}.ms-Icon--StockUp:before{content:"\EB11"}.ms-Icon--Cricket:before{content:"\EB1E"}.ms-Icon--Golf:before{content:"\EB1F"}.ms-Icon--Baseball:before{content:"\EB20"}.ms-Icon--Soccer:before{content:"\EB21"}.ms-Icon--MoreSports:before{content:"\EB22"}.ms-Icon--AutoRacing:before{content:"\EB24"}.ms-Icon--CollegeHoops:before{content:"\EB25"}.ms-Icon--CollegeFootball:before{content:"\EB26"}.ms-Icon--ProFootball:before{content:"\EB27"}.ms-Icon--ProHockey:before{content:"\EB28"}.ms-Icon--Rugby:before{content:"\EB2D"}.ms-Icon--Tennis:before{content:"\EB33"}.ms-Icon--Arrivals:before{content:"\EB34"}.ms-Icon--Design:before{content:"\EB3C"}.ms-Icon--Website:before{content:"\EB41"}.ms-Icon--Drop:before{content:"\EB42"}.ms-Icon--Snow:before{content:"\EB46"}.ms-Icon--BusSolid:before{content:"\EB47"}.ms-Icon--FerrySolid:before{content:"\EB48"}.ms-Icon--TrainSolid:before{content:"\EB4D"}.ms-Icon--Heart:before{content:"\EB51"}.ms-Icon--HeartFill:before{content:"\EB52"}.ms-Icon--Ticket:before{content:"\EB54"}.ms-Icon--Devices4:before{content:"\EB66"}.ms-Icon--AzureLogo:before{content:"\EB6A"}.ms-Icon--BingLogo:before{content:"\EB6B"}.ms-Icon--MSNLogo:before{content:"\EB6C"}.ms-Icon--OutlookLogo:before{content:"\EB6D"}.ms-Icon--OfficeLogo:before{content:"\EB6E"}.ms-Icon--SkypeLogo:before{content:"\EB6F"}.ms-Icon--Door:before{content:"\EB75"}.ms-Icon--EditMirrored:before{content:"\EB7E"}.ms-Icon--GiftCard:before{content:"\EB8E"}.ms-Icon--DoubleBookmark:before{content:"\EB8F"}.ms-Icon--StatusErrorFull:before{content:"\EB90"}.ms-Icon--Certificate:before{content:"\EB95"}.ms-Icon--Photo2:before{content:"\EB9F"}.ms-Icon--CloudDownload:before{content:"\EBD3"}.ms-Icon--WindDirection:before{content:"\EBE6"}.ms-Icon--Family:before{content:"\EBDA"}.ms-Icon--CSS:before{content:"\EBEF"}.ms-Icon--JS:before{content:"\EBF0"}.ms-Icon--ReminderGroup:before{content:"\EBF8"}.ms-Icon--Section:before{content:"\EC0C"}.ms-Icon--OneNoteLogo:before{content:"\EC0D"}.ms-Icon--ToggleFilled:before{content:"\EC11"}.ms-Icon--ToggleBorder:before{content:"\EC12"}.ms-Icon--SliderThumb:before{content:"\EC13"}.ms-Icon--ToggleThumb:before{content:"\EC14"}.ms-Icon--Documentation:before{content:"\EC17"}.ms-Icon--Badge:before{content:"\EC1B"}.ms-Icon--Giftbox:before{content:"\EC1F"}.ms-Icon--ExcelLogo:before{content:"\EC28"}.ms-Icon--WordLogo:before{content:"\EC29"}.ms-Icon--PowerPointLogo:before{content:"\EC2A"}.ms-Icon--Cafe:before{content:"\EC32"}.ms-Icon--SpeedHigh:before{content:"\EC4A"}.ms-Icon--MusicNote:before{content:"\EC4F"}.ms-Icon--EdgeLogo:before{content:"\EC60"}.ms-Icon--CompletedSolid:before{content:"\EC61"}.ms-Icon--AlbumRemove:before{content:"\EC62"}.ms-Icon--MessageFill:before{content:"\EC70"}.ms-Icon--TabletSelected:before{content:"\EC74"}.ms-Icon--MobileSelected:before{content:"\EC75"}.ms-Icon--LaptopSelected:before{content:"\EC76"}.ms-Icon--TVMonitorSelected:before{content:"\EC77"}.ms-Icon--DeveloperTools:before{content:"\EC7A"}.ms-Icon--InsertTextBox:before{content:"\EC7D"}.ms-Icon--LowerBrightness:before{content:"\EC8A"}.ms-Icon--CloudUpload:before{content:"\EC8E"}.ms-Icon--DateTime:before{content:"\EC92"}.ms-Icon--Event:before{content:"\ECA3"}.ms-Icon--Cake:before{content:"\ECA4"}.ms-Icon--Tiles:before{content:"\ECA5"}.ms-Icon--Org:before{content:"\ECA6"}.ms-Icon--PartyLeader:before{content:"\ECA7"}.ms-Icon--DRM:before{content:"\ECA8"}.ms-Icon--CloudAdd:before{content:"\ECA9"}.ms-Icon--AppIconDefault:before{content:"\ECAA"}.ms-Icon--Photo2Add:before{content:"\ECAB"}.ms-Icon--Photo2Remove:before{content:"\ECAC"}.ms-Icon--POI:before{content:"\ECAF"}.ms-Icon--FacebookLogo:before{content:"\ECB3"}.ms-Icon--AddTo:before{content:"\ECC8"}.ms-Icon--RadioBtnOn:before{content:"\ECCB"}.ms-Icon--Embed:before{content:"\ECCE"}.ms-Icon--VideoSolid:before{content:"\EA0C"}.ms-Icon--Teamwork:before{content:"\EA12"}.ms-Icon--PeopleAdd:before{content:"\EA15"}.ms-Icon--Glasses:before{content:"\EA16"}.ms-Icon--DateTime2:before{content:"\EA17"}.ms-Icon--Shield:before{content:"\EA18"}.ms-Icon--Header1:before{content:"\EA19"}.ms-Icon--PageAdd:before{content:"\EA1A"}.ms-Icon--NumberedList:before{content:"\EA1C"}.ms-Icon--PowerBILogo:before{content:"\EA1E"}.ms-Icon--Product:before{content:"\ECDC"}.ms-Icon--Blocked2:before{content:"\ECE4"}.ms-Icon--FangBody:before{content:"\ECEB"}.ms-Icon--Glimmer:before{content:"\ECF4"}.ms-Icon--ChatInviteFriend:before{content:"\ECFE"}.ms-Icon--SharepointLogo:before{content:"\ED18"}.ms-Icon--YammerLogo:before{content:"\ED19"}.ms-Icon--Hide:before{content:"\ED1A"}.ms-Icon--ReturnToSession:before{content:"\ED24"}.ms-Icon--OpenFolderHorizontal:before{content:"\ED25"}.ms-Icon--CalendarMirrored:before{content:"\ED28"}.ms-Icon--SwayLogo:before{content:"\ED29"}.ms-Icon--OutOfOffice:before{content:"\ED34"}.ms-Icon--Trophy:before{content:"\ED3F"}.ms-Icon--ReopenPages:before{content:"\ED50"}.ms-Icon--AADLogo:before{content:"\ED68"}.ms-Icon--AccessLogo:before{content:"\ED69"}.ms-Icon--AdminALogo:before{content:"\ED6A"}.ms-Icon--AdminCLogo:before{content:"\ED6B"}.ms-Icon--AdminDLogo:before{content:"\ED6C"}.ms-Icon--AdminELogo:before{content:"\ED6D"}.ms-Icon--AdminLLogo:before{content:"\ED6E"}.ms-Icon--AdminMLogo:before{content:"\ED6F"}.ms-Icon--AdminOLogo:before{content:"\ED70"}.ms-Icon--AdminPLogo:before{content:"\ED71"}.ms-Icon--AdminSLogo:before{content:"\ED72"}.ms-Icon--AdminYLogo:before{content:"\ED73"}.ms-Icon--AlchemyLogo:before{content:"\ED74"}.ms-Icon--BoxLogo:before{content:"\ED75"}.ms-Icon--DelveLogo:before{content:"\ED76"}.ms-Icon--DropboxLogo:before{content:"\ED77"}.ms-Icon--ExchangeLogo:before{content:"\ED78"}.ms-Icon--LyncLogo:before{content:"\ED79"}.ms-Icon--OfficeVideoLogo:before{content:"\ED7A"}.ms-Icon--ParatureLogo:before{content:"\ED7B"}.ms-Icon--SocialListeningLogo:before{content:"\ED7C"}.ms-Icon--VisioLogo:before{content:"\ED7D"}.ms-Icon--Balloons:before{content:"\ED7E"}.ms-Icon--Cat:before{content:"\ED7F"}.ms-Icon--MailAlert:before{content:"\ED80"}.ms-Icon--MailCheck:before{content:"\ED81"}.ms-Icon--MailLowImportance:before{content:"\ED82"}.ms-Icon--MailPause:before{content:"\ED83"}.ms-Icon--MailRepeat:before{content:"\ED84"}.ms-Icon--SecurityGroup:before{content:"\ED85"}.ms-Icon--Table:before{content:"\ED86"}.ms-Icon--VoicemailForward:before{content:"\ED87"}.ms-Icon--VoicemailReply:before{content:"\ED88"}.ms-Icon--Waffle:before{content:"\ED89"}.ms-Icon--RemoveEvent:before{content:"\ED8A"}.ms-Icon--EventInfo:before{content:"\ED8B"}.ms-Icon--ForwardEvent:before{content:"\ED8C"}.ms-Icon--WipePhone:before{content:"\ED8D"}.ms-Icon--AddOnlineMeeting:before{content:"\ED8E"}.ms-Icon--JoinOnlineMeeting:before{content:"\ED8F"}.ms-Icon--RemoveLink:before{content:"\ED90"}.ms-Icon--PeopleBlock:before{content:"\ED91"}.ms-Icon--PeopleRepeat:before{content:"\ED92"}.ms-Icon--PeopleAlert:before{content:"\ED93"}.ms-Icon--PeoplePause:before{content:"\ED94"}.ms-Icon--TransferCall:before{content:"\ED95"}.ms-Icon--AddPhone:before{content:"\ED96"}.ms-Icon--UnknownCall:before{content:"\ED97"}.ms-Icon--NoteReply:before{content:"\ED98"}.ms-Icon--NoteForward:before{content:"\ED99"}.ms-Icon--NotePinned:before{content:"\ED9A"}.ms-Icon--RemoveOccurrence:before{content:"\ED9B"}.ms-Icon--Timeline:before{content:"\ED9C"}.ms-Icon--EditNote:before{content:"\ED9D"}.ms-Icon--CircleHalfFull:before{content:"\ED9E"}.ms-Icon--Room:before{content:"\ED9F"}.ms-Icon--Unsubscribe:before{content:"\EDA0"}.ms-Icon--Subscribe:before{content:"\EDA1"}.ms-Icon--RecurringTask:before{content:"\EDB2"}.ms-Icon--TaskManager:before{content:"\EDB7"}.ms-Icon--TaskManagerMirrored:before{content:"\EDB8"}.ms-Icon--Combine:before{content:"\EDBB"}.ms-Icon--Split:before{content:"\EDBC"}.ms-Icon--DoubleChevronUp:before{content:"\EDBD"}.ms-Icon--DoubleChevronLeft:before{content:"\EDBE"}.ms-Icon--DoubleChevronRight:before{content:"\EDBF"}.ms-Icon--Ascending:before{content:"\EDC0"}.ms-Icon--Descending:before{content:"\EDC1"}.ms-Icon--TextBox:before{content:"\EDC2"}.ms-Icon--TextField:before{content:"\EDC3"}.ms-Icon--NumberField:before{content:"\EDC4"}.ms-Icon--Dropdown:before{content:"\EDC5"}.ms-Icon--BookingsLogo:before{content:"\EDC7"}.ms-Icon--ClassNotebookLogo:before{content:"\EDC8"}.ms-Icon--CollabsDBLogo:before{content:"\EDC9"}.ms-Icon--DelveAnalyticsLogo:before{content:"\EDCA"}.ms-Icon--DocsLogo:before{content:"\EDCB"}.ms-Icon--Dynamics365Logo:before{content:"\EDCC"}.ms-Icon--DynamicSMBLogo:before{content:"\EDCD"}.ms-Icon--OfficeAssistantLogo:before{content:"\EDCE"}.ms-Icon--OfficeStoreLogo:before{content:"\EDCF"}.ms-Icon--OneNoteEduLogo:before{content:"\EDD0"}.ms-Icon--Planner:before{content:"\EDD1"}.ms-Icon--PowerApps:before{content:"\EDD2"}.ms-Icon--Suitcase:before{content:"\EDD3"}.ms-Icon--ProjectLogo:before{content:"\EDD4"}.ms-Icon--CaretLeft8:before{content:"\EDD5"}.ms-Icon--CaretRight8:before{content:"\EDD6"}.ms-Icon--CaretUp8:before{content:"\EDD7"}.ms-Icon--CaretDown8:before{content:"\EDD8"}.ms-Icon--CaretLeftSolid8:before{content:"\EDD9"}.ms-Icon--CaretRightSolid8:before{content:"\EDDA"}.ms-Icon--CaretUpSolid8:before{content:"\EDDB"}.ms-Icon--CaretDownSolid8:before{content:"\EDDC"}.ms-Icon--ClearFormatting:before{content:"\EDDD"}.ms-Icon--Superscript:before{content:"\EDDE"}.ms-Icon--Subscript:before{content:"\EDDF"}.ms-Icon--Strikethrough:before{content:"\EDE0"}.ms-Icon--SingleBookmark:before{content:"\EDFF"}.ms-Icon--DoubleChevronDown:before{content:"\EE04"}.ms-Icon--ReplyAll:before{content:"\EE0A"}.ms-Icon--GoogleDriveLogo:before{content:"\EE0B"}.ms-Icon--Questionnaire:before{content:"\EE19"}.ms-Icon--ReplyMirrored:before{content:"\EE35"}.ms-Icon--ReplyAllMirrored:before{content:"\EE36"}.ms-Icon--AddGroup:before{content:"\EE3D"}.ms-Icon--QuestionnaireMirrored:before{content:"\EE4B"}.ms-Icon--TemporaryUser:before{content:"\EE58"}.ms-Icon--GroupedDescending:before{content:"\EE66"}.ms-Icon--GroupedAscending:before{content:"\EE67"}.ms-Icon--SortUp:before{content:"\EE68"}.ms-Icon--SortDown:before{content:"\EE69"}.ms-Icon--AwayStatus:before{content:"\EE6A"}.ms-Icon--SyncToPC:before{content:"\EE6E"}.ms-Icon--AustralianRules:before{content:"\EE70"}.ms-Icon--DateTimeMirrored:before{content:"\EE93"}.ms-Icon--DoubleChevronUp12:before{content:"\EE96"}.ms-Icon--DoubleChevronDown12:before{content:"\EE97"}.ms-Icon--DoubleChevronLeft12:before{content:"\EE98"}.ms-Icon--DoubleChevronRight12:before{content:"\EE99"}.ms-Icon--CalendarAgenda:before{content:"\EE9A"}.ms-Icon--AddEvent:before{content:"\EEB5"}.ms-Icon--AssetLibrary:before{content:"\EEB6"}.ms-Icon--DataConnectionLibrary:before{content:"\EEB7"}.ms-Icon--DocLibrary:before{content:"\EEB8"}.ms-Icon--FormLibrary:before{content:"\EEB9"}.ms-Icon--FormLibraryMirrored:before{content:"\EEBA"}.ms-Icon--ReportLibrary:before{content:"\EEBB"}.ms-Icon--ReportLibraryMirrored:before{content:"\EEBC"}.ms-Icon--ContactCard:before{content:"\EEBD"}.ms-Icon--CustomList:before{content:"\EEBE"}.ms-Icon--CustomListMirrored:before{content:"\EEBF"}.ms-Icon--IssueTracking:before{content:"\EEC0"}.ms-Icon--IssueTrackingMirrored:before{content:"\EEC1"}.ms-Icon--PictureLibrary:before{content:"\EEC2"}.ms-Icon--AppForOfficeLogo:before{content:"\EEC7"}.ms-Icon--OfflineOneDriveParachute:before{content:"\EEC8"}.ms-Icon--OfflineOneDriveParachuteDisabled:before{content:"\EEC9"}.ms-Icon--LargeGrid:before{content:"\EECB"}.ms-Icon--TriangleSolidUp12:before{content:"\EECC"}.ms-Icon--TriangleSolidDown12:before{content:"\EECD"}.ms-Icon--TriangleSolidLeft12:before{content:"\EECE"}.ms-Icon--TriangleSolidRight12:before{content:"\EECF"}.ms-Icon--TriangleUp12:before{content:"\EED0"}.ms-Icon--TriangleDown12:before{content:"\EED1"}.ms-Icon--TriangleLeft12:before{content:"\EED2"}.ms-Icon--TriangleRight12:before{content:"\EED3"}.ms-Icon--ArrowUpRight8:before{content:"\EED4"}.ms-Icon--ArrowDownRight8:before{content:"\EED5"}.ms-Icon--DocumentSet:before{content:"\EED6"}.ms-Icon--DelveAnalytics:before{content:"\EEEE"}.ms-Icon--ArrowUpRightMirrored8:before{content:"\EEEF"}.ms-Icon--ArrowDownRightMirrored8:before{content:"\EEF0"}.ms-Icon--OneDriveAdd:before{content:"\EF32"}.ms-Icon--Header2:before{content:"\EF36"}.ms-Icon--Header3:before{content:"\EF37"}.ms-Icon--Header4:before{content:"\EF38"}.ms-Icon--MarketDown:before{content:"\EF42"}.ms-Icon--CalendarWorkWeek:before{content:"\EF51"}.ms-Icon--SidePanel:before{content:"\EF52"}.ms-Icon--GlobeFavorite:before{content:"\EF53"}.ms-Icon--CaretTopLeftSolid8:before{content:"\EF54"}.ms-Icon--CaretTopRightSolid8:before{content:"\EF55"}.ms-Icon--ViewAll2:before{content:"\EF56"}.ms-Icon--DocumentReply:before{content:"\EF57"}.ms-Icon--PlayerSettings:before{content:"\EF58"}.ms-Icon--ReceiptForward:before{content:"\EF59"}.ms-Icon--ReceiptReply:before{content:"\EF5A"}.ms-Icon--ReceiptCheck:before{content:"\EF5B"}.ms-Icon--Fax:before{content:"\EF5C"}.ms-Icon--RecurringEvent:before{content:"\EF5D"}.ms-Icon--ReplyAlt:before{content:"\EF5E"}.ms-Icon--ReplyAllAlt:before{content:"\EF5F"}.ms-Icon--EditStyle:before{content:"\EF60"}.ms-Icon--EditMail:before{content:"\EF61"}.ms-Icon--Lifesaver:before{content:"\EF62"}.ms-Icon--LifesaverLock:before{content:"\EF63"}.ms-Icon--InboxCheck:before{content:"\EF64"}.ms-Icon--FolderSearch:before{content:"\EF65"}.ms-Icon--CollapseMenu:before{content:"\EF66"}.ms-Icon--ExpandMenu:before{content:"\EF67"}.ms-Icon--Boards:before{content:"\EF68"}.ms-Icon--SunAdd:before{content:"\EF69"}.ms-Icon--SunQuestionMark:before{content:"\EF6A"}.ms-Icon--LandscapeOrientation:before{content:"\EF6B"}.ms-Icon--DocumentSearch:before{content:"\EF6C"}.ms-Icon--PublicCalendar:before{content:"\EF6D"}.ms-Icon--PublicContactCard:before{content:"\EF6E"}.ms-Icon--PublicEmail:before{content:"\EF6F"}.ms-Icon--PublicFolder:before{content:"\EF70"}.ms-Icon--WordDocument:before{content:"\EF71"}.ms-Icon--PowerPointDocument:before{content:"\EF72"}.ms-Icon--ExcelDocument:before{content:"\EF73"}.ms-Icon--GroupedList:before{content:"\EF74"}.ms-Icon--ClassroomLogo:before{content:"\EF75"}.ms-Icon--Sections:before{content:"\EF76"}.ms-Icon--EditPhoto:before{content:"\EF77"}.ms-Icon--Starburst:before{content:"\EF78"}.ms-Icon--ShareiOS:before{content:"\EF79"}.ms-Icon--AirTickets:before{content:"\EF7A"}.ms-Icon--PencilReply:before{content:"\EF7B"}.ms-Icon--Tiles2:before{content:"\EF7C"}.ms-Icon--SkypeCircleCheck:before{content:"\EF7D"}.ms-Icon--SkypeCircleClock:before{content:"\EF7E"}.ms-Icon--SkypeCircleMinus:before{content:"\EF7F"}.ms-Icon--SkypeCheck:before{content:"\EF80"}.ms-Icon--SkypeClock:before{content:"\EF81"}.ms-Icon--SkypeMinus:before{content:"\EF82"}.ms-Icon--SkypeMessage:before{content:"\EF83"}.ms-Icon--ClosedCaption:before{content:"\EF84"}.ms-Icon--ATPLogo:before{content:"\EF85"}.ms-Icon--OfficeFormLogo:before{content:"\EF86"}.ms-Icon--RecycleBin:before{content:"\EF87"}.ms-Icon--EmptyRecycleBin:before{content:"\EF88"}.ms-Icon--Hide2:before{content:"\EF89"}.ms-Icon--iOSAppStoreLogo:before{content:"\EF8A"}.ms-Icon--AndroidLogo:before{content:"\EF8B"}.ms-Icon--Breadcrumb:before{content:"\EF8C"}.ms-Icon--ClearFilter:before{content:"\EF8F"}.ms-Icon--Flow:before{content:"\EF90"}.ms-Icon--PageCheckedOut:before{content:"\F02C"}.ms-Icon--SetAction:before{content:"\F071"}.ms-Icon--PowerAppsLogo:before{content:"\F091"}.ms-Icon--PowerApps2Logo:before{content:"\F092"}.ms-Icon--FabricAssetLibrary:before{content:"\F09C"}.ms-Icon--FabricDataConnectionLibrary:before{content:"\F09D"}.ms-Icon--FabricDocLibrary:before{content:"\F09E"}.ms-Icon--FabricFormLibrary:before{content:"\F09F"}.ms-Icon--FabricFormLibraryMirrored:before{content:"\F0A0"}.ms-Icon--FabricReportLibrary:before{content:"\F0A1"}.ms-Icon--FabricReportLibraryMirrored:before{content:"\F0A2"}.ms-Icon--FabricPublicFolder:before{content:"\F0A3"}.ms-Icon--FabricFolderSearch:before{content:"\F0A4"}.ms-Icon--FabricMovetoFolder:before{content:"\F0A5"}.ms-Icon--FabricUnsyncFolder:before{content:"\F0A6"}.ms-Icon--FabricSyncFolder:before{content:"\F0A7"}.ms-Icon--FabricOpenFolderHorizontal:before{content:"\F0A8"}.ms-Icon--FabricFolder:before{content:"\F0A9"}.ms-Icon--FabricFolderFill:before{content:"\F0AA"}.ms-Icon--FabricNewFolder:before{content:"\F0AB"}.ms-Icon--FabricPictureLibrary:before{content:"\F0AC"}.ms-Icon--AddFavorite:before{content:"\F0C8"}.ms-Icon--AddFavoriteFill:before{content:"\F0C9"}.ms-Icon--BufferTimeBefore:before{content:"\F0CF"}.ms-Icon--BufferTimeAfter:before{content:"\F0D0"}.ms-Icon--BufferTimeBoth:before{content:"\F0D1"}.ms-Icon--PageCheckedin:before{content:"\F104"}.ms-Icon--CaretBottomLeftSolid8:before{content:"\F121"}.ms-Icon--CaretBottomRightSolid8:before{content:"\F122"}.ms-Icon--FolderHorizontal:before{content:"\F12B"}.ms-Icon--MicrosoftStaffhubLogo:before{content:"\F130"}.ms-Icon--CaloriesAdd:before{content:"\F172"}.ms-Icon--BranchFork:before{content:"\F173"}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x1.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x1.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x1.png)}.ms-BrandIcon--Icon16{width:16px;height:16px}html[dir] .ms-BrandIcon--Icon16{background-size:100% 100%}.ms-BrandIcon--Icon48{width:48px;height:48px}html[dir] .ms-BrandIcon--Icon48{background-size:100% 100%}.ms-BrandIcon--Icon96{width:96px;height:96px}html[dir] .ms-BrandIcon--Icon96{background-size:100% 100%}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x1_5.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x1_5.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x1_5.png)}}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:192dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x2.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x2.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x2.png)}}@media only screen and (-webkit-min-device-pixel-ratio:3),only screen and (min-resolution:288dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x3.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x3.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x3.png)}}.ms-u-slideRightIn10{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn10{animation-name:fadeIn,slideRightIn10}html[dir=rtl] .ms-u-slideRightIn10{animation-name:fadeIn-rtl,slideRightIn10-rtl}@keyframes slideRightIn10-rtl{0%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn10{0%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn20{animation-name:fadeIn,slideRightIn20}html[dir=rtl] .ms-u-slideRightIn20{animation-name:fadeIn-rtl,slideRightIn20-rtl}@keyframes slideRightIn20-rtl{0%{transform:translate3d(20px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn20{0%{transform:translate3d(-20px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn40{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn40{animation-name:fadeIn,slideRightIn40}html[dir=rtl] .ms-u-slideRightIn40{animation-name:fadeIn-rtl,slideRightIn40-rtl}@keyframes slideRightIn40-rtl{0%{transform:translate3d(40px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn40{0%{transform:translate3d(-40px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn10{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn10{animation-name:fadeIn,slideLeftIn10}html[dir=rtl] .ms-u-slideLeftIn10{animation-name:fadeIn-rtl,slideLeftIn10-rtl}@keyframes slideLeftIn10-rtl{0%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn10{0%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn20{animation-name:fadeIn,slideLeftIn20}html[dir=rtl] .ms-u-slideLeftIn20{animation-name:fadeIn-rtl,slideLeftIn20-rtl}@keyframes slideLeftIn20-rtl{0%{transform:translate3d(-20px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn20{0%{transform:translate3d(20px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn40{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn40{animation-name:fadeIn,slideLeftIn40}html[dir=rtl] .ms-u-slideLeftIn40{animation-name:fadeIn-rtl,slideLeftIn40-rtl}@keyframes slideLeftIn40-rtl{0%{transform:translate3d(-40px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn40{0%{transform:translate3d(40px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn400{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn400{animation-name:fadeIn,slideRightIn400}html[dir=rtl] .ms-u-slideRightIn400{animation-name:fadeIn-rtl,slideRightIn400-rtl}@keyframes slideRightIn400-rtl{0%{transform:translate3d(400px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn400{0%{transform:translate3d(-400px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn400{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn400{animation-name:fadeIn,slideLeft400}html[dir=rtl] .ms-u-slideLeftIn400{animation-name:fadeIn-rtl,slideLeft400-rtl}@keyframes slideLeft400-rtl{0%{transform:translate3d(-400px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeft400{0%{transform:translate3d(400px,0,0)}to{transform:translateZ(0)}}.ms-u-slideUpIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpIn20{animation-name:fadeIn,slideUpIn20}html[dir=rtl] .ms-u-slideUpIn20{animation-name:fadeIn-rtl,slideUpIn20-rtl}@keyframes slideUpIn20-rtl{0%{transform:translate3d(0,20px,0)}to{transform:translateZ(0)}}@keyframes slideUpIn20{0%{transform:translate3d(0,20px,0)}to{transform:translateZ(0)}}.ms-u-slideUpIn10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpIn10{animation-name:fadeIn,slideUpIn10}html[dir=rtl] .ms-u-slideUpIn10{animation-name:fadeIn-rtl,slideUpIn10-rtl}@keyframes slideUpIn10-rtl{0%{transform:translate3d(0,10px,0)}to{transform:translateZ(0)}}@keyframes slideUpIn10{0%{transform:translate3d(0,10px,0)}to{transform:translateZ(0)}}.ms-u-slideDownIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownIn20{animation-name:fadeIn,slideDownIn20}html[dir=rtl] .ms-u-slideDownIn20{animation-name:fadeIn-rtl,slideDownIn20-rtl}@keyframes slideDownIn20-rtl{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}@keyframes slideDownIn20{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}.ms-u-slideDownIn10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownIn10{animation-name:fadeIn,slideDownIn10}html[dir=rtl] .ms-u-slideDownIn10{animation-name:fadeIn-rtl,slideDownIn10-rtl}@keyframes slideDownIn10-rtl{0%{transform:translate3d(0,-10px,0)}to{transform:translateZ(0)}}@keyframes slideDownIn10{0%{transform:translate3d(0,-10px,0)}to{transform:translateZ(0)}}.ms-u-slideRightOut40{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightOut40{animation-name:fadeOut,slideRightOut40}html[dir=rtl] .ms-u-slideRightOut40{animation-name:fadeOut-rtl,slideRightOut40-rtl}@keyframes slideRightOut40-rtl{0%{transform:translateZ(0)}to{transform:translate3d(-40px,0,0)}}@keyframes slideRightOut40{0%{transform:translateZ(0)}to{transform:translate3d(40px,0,0)}}.ms-u-slideLeftOut40{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftOut40{animation-name:fadeOut,slideLeftOut40}html[dir=rtl] .ms-u-slideLeftOut40{animation-name:fadeOut-rtl,slideLeftOut40-rtl}@keyframes slideLeftOut40-rtl{0%{transform:translateZ(0)}to{transform:translate3d(40px,0,0)}}@keyframes slideLeftOut40{0%{transform:translateZ(0)}to{transform:translate3d(-40px,0,0)}}.ms-u-slideRightOut400{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightOut400{animation-name:fadeOut,slideRightOut400}html[dir=rtl] .ms-u-slideRightOut400{animation-name:fadeOut-rtl,slideRightOut400-rtl}@keyframes slideRightOut400-rtl{0%{transform:translateZ(0)}to{transform:translate3d(-400px,0,0)}}@keyframes slideRightOut400{0%{transform:translateZ(0)}to{transform:translate3d(400px,0,0)}}.ms-u-slideLeftOut400{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftOut400{animation-name:fadeOut,slideLeftOut400}html[dir=rtl] .ms-u-slideLeftOut400{animation-name:fadeOut-rtl,slideLeftOut400-rtl}@keyframes slideLeftOut400-rtl{0%{transform:translateZ(0)}to{transform:translate3d(400px,0,0)}}@keyframes slideLeftOut400{0%{transform:translateZ(0)}to{transform:translate3d(-400px,0,0)}}.ms-u-slideUpOut20{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpOut20{animation-name:fadeOut,slideUpOut20}html[dir=rtl] .ms-u-slideUpOut20{animation-name:fadeOut-rtl,slideUpOut20-rtl}@keyframes slideUpOut20-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}@keyframes slideUpOut20{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}.ms-u-slideUpOut10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpOut10{animation-name:fadeOut,slideUpOut10}html[dir=rtl] .ms-u-slideUpOut10{animation-name:fadeOut-rtl,slideUpOut10-rtl}@keyframes slideUpOut10-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,-10px,0)}}@keyframes slideUpOut10{0%{transform:translateZ(0)}to{transform:translate3d(0,-10px,0)}}.ms-u-slideDownOut20{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownOut20{animation-name:fadeOut,slideDownOut20}html[dir=rtl] .ms-u-slideDownOut20{animation-name:fadeOut-rtl,slideDownOut20-rtl}@keyframes slideDownOut20-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,20px,0)}}@keyframes slideDownOut20{0%{transform:translateZ(0)}to{transform:translate3d(0,20px,0)}}.ms-u-slideDownOut10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownOut10{animation-name:fadeOut,slideDownOut10}html[dir=rtl] .ms-u-slideDownOut10{animation-name:fadeOut-rtl,slideDownOut10-rtl}@keyframes slideDownOut10-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,10px,0)}}@keyframes slideDownOut10{0%{transform:translateZ(0)}to{transform:translate3d(0,10px,0)}}.ms-u-scaleUpIn100{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleUpIn100{animation-name:fadeIn,scaleUp100}html[dir=rtl] .ms-u-scaleUpIn100{animation-name:fadeIn-rtl,scaleUp100-rtl}@keyframes scaleUp100-rtl{0%{transform:scale3d(.98,.98,1)}to{transform:scaleX(1)}}@keyframes scaleUp100{0%{transform:scale3d(.98,.98,1)}to{transform:scaleX(1)}}.ms-u-scaleDownIn100{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleDownIn100{animation-name:fadeIn,scaleDown100}html[dir=rtl] .ms-u-scaleDownIn100{animation-name:fadeIn-rtl,scaleDown100-rtl}@keyframes scaleDown100-rtl{0%{transform:scale3d(1.03,1.03,1)}to{transform:scaleX(1)}}@keyframes scaleDown100{0%{transform:scale3d(1.03,1.03,1)}to{transform:scaleX(1)}}.ms-u-scaleUpOut103{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleUpOut103{animation-name:fadeOut,scaleUp103}html[dir=rtl] .ms-u-scaleUpOut103{animation-name:fadeOut-rtl,scaleUp103-rtl}@keyframes scaleUp103-rtl{0%{transform:scaleX(1)}to{transform:scale3d(1.03,1.03,1)}}@keyframes scaleUp103{0%{transform:scaleX(1)}to{transform:scale3d(1.03,1.03,1)}}.ms-u-scaleDownOut98{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleDownOut98{animation-name:fadeOut,scaleDown98}html[dir=rtl] .ms-u-scaleDownOut98{animation-name:fadeOut-rtl,scaleDown98-rtl}@keyframes scaleDown98-rtl{0%{transform:scaleX(1)}to{transform:scale3d(.98,.98,1)}}@keyframes scaleDown98{0%{transform:scaleX(1)}to{transform:scale3d(.98,.98,1)}}.ms-u-fadeIn100,.ms-u-fadeIn400{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both}html[dir=ltr] .ms-u-fadeIn100,html[dir=ltr] .ms-u-fadeIn400{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn100,html[dir=rtl] .ms-u-fadeIn400{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn100{animation-duration:.167s}.ms-u-fadeIn200{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.267s}html[dir=ltr] .ms-u-fadeIn200{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn200{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn500{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.467s}html[dir=ltr] .ms-u-fadeIn500{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn500{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}@keyframes fadeIn-rtl{0%{opacity:0;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:1}}@keyframes fadeIn{0%{opacity:0;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:1}}.ms-u-fadeOut100,.ms-u-fadeOut400{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both}html[dir=ltr] .ms-u-fadeOut100,html[dir=ltr] .ms-u-fadeOut400{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut100,html[dir=rtl] .ms-u-fadeOut400{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut100{animation-duration:.1s}.ms-u-fadeOut200{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.167s}html[dir=ltr] .ms-u-fadeOut200{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut200{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut500{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.467s}html[dir=ltr] .ms-u-fadeOut500{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut500{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}@keyframes fadeOut-rtl{0%{opacity:1;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:0}}@keyframes fadeOut{0%{opacity:1;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:0}}.ms-u-rotate90deg{-webkit-animation-duration:.1s;-moz-animation-duration:.1s;-ms-animation-duration:.1s;-o-animation-duration:.1s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-rotate90deg{animation-name:rotate90}html[dir=rtl] .ms-u-rotate90deg{animation-name:rotate90-rtl}@keyframes rotate90-rtl{0%{transform:rotate(0deg)}to{transform:rotate(-90deg)}}@keyframes rotate90{0%{transform:rotate(0deg)}to{transform:rotate(90deg)}}.ms-u-rotateN90deg{-webkit-animation-duration:.1s;-moz-animation-duration:.1s;-ms-animation-duration:.1s;-o-animation-duration:.1s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-rotateN90deg{animation-name:rotateN90}html[dir=rtl] .ms-u-rotateN90deg{animation-name:rotateN90-rtl}@keyframes rotateN90-rtl{0%{transform:rotate(-90deg)}to{transform:rotate(0deg)}}@keyframes rotateN90{0%{transform:rotate(90deg)}to{transform:rotate(0deg)}}html[dir] .ms-u-expandCollapse400{transition:height .367s cubic-bezier(.1,.25,.75,.9)}html[dir] .ms-u-expandCollapse200{transition:height .167s cubic-bezier(.1,.25,.75,.9)}html[dir] .ms-u-expandCollapse100{transition:height .1s cubic-bezier(.1,.25,.75,.9)}.ms-u-delay100{animation-delay:.167s}.ms-u-delay200{animation-delay:.267s}@media (max-width:479px){.ms-u-hiddenLgDown,.ms-u-hiddenMdDown,.ms-u-hiddenSm,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:480px) and (max-width:639px){.ms-u-hiddenLgDown,.ms-u-hiddenMd,.ms-u-hiddenMdDown,.ms-u-hiddenMdUp,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:640px) and (max-width:1023px){.ms-u-hiddenLg,.ms-u-hiddenLgDown,.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:1024px) and (max-width:1365px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXl,.ms-u-hiddenXlDown,.ms-u-hiddenXlUp,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:1366px) and (max-width:1919px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlUp,.ms-u-hiddenXxl,.ms-u-hiddenXxlDown,.ms-u-hiddenXxlUp{display:none!important}}@media (min-width:1920px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlUp,.ms-u-hiddenXxlUp,.ms-u-hiddenXxxl{display:none!important}}.ms-u-sm12{width:100%}.ms-u-sm11{width:91.66666666666666%}.ms-u-sm10{width:83.33333333333334%}.ms-u-sm9{width:75%}.ms-u-sm8{width:66.66666666666666%}.ms-u-sm7{width:58.333333333333336%}.ms-u-sm6{width:50%}.ms-u-sm5{width:41.66666666666667%}.ms-u-sm4{width:33.33333333333333%}.ms-u-sm3{width:25%}.ms-u-sm2{width:16.666666666666664%}.ms-u-sm1{width:8.333333333333332%}html[dir=ltr] .ms-u-smPull12{right:100%}html[dir=rtl] .ms-u-smPull12{left:100%}html[dir=ltr] .ms-u-smPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-smPull11{left:91.66666666666666%}html[dir=ltr] .ms-u-smPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-smPull10{left:83.33333333333334%}html[dir=ltr] .ms-u-smPull9{right:75%}html[dir=rtl] .ms-u-smPull9{left:75%}html[dir=ltr] .ms-u-smPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-smPull8{left:66.66666666666666%}html[dir=ltr] .ms-u-smPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-smPull7{left:58.333333333333336%}html[dir=ltr] .ms-u-smPull6{right:50%}html[dir=rtl] .ms-u-smPull6{left:50%}html[dir=ltr] .ms-u-smPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-smPull5{left:41.66666666666667%}html[dir=ltr] .ms-u-smPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-smPull4{left:33.33333333333333%}html[dir=ltr] .ms-u-smPull3{right:25%}html[dir=rtl] .ms-u-smPull3{left:25%}html[dir=ltr] .ms-u-smPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-smPull2{left:16.666666666666664%}html[dir=ltr] .ms-u-smPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-smPull1{left:8.333333333333332%}html[dir=ltr] .ms-u-smPull0{right:auto}html[dir=rtl] .ms-u-smPull0{left:auto}html[dir=ltr] .ms-u-smPush12{left:100%}html[dir=rtl] .ms-u-smPush12{right:100%}html[dir=ltr] .ms-u-smPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-smPush11{right:91.66666666666666%}html[dir=ltr] .ms-u-smPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-smPush10{right:83.33333333333334%}html[dir=ltr] .ms-u-smPush9{left:75%}html[dir=rtl] .ms-u-smPush9{right:75%}html[dir=ltr] .ms-u-smPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-smPush8{right:66.66666666666666%}html[dir=ltr] .ms-u-smPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-smPush7{right:58.333333333333336%}html[dir=ltr] .ms-u-smPush6{left:50%}html[dir=rtl] .ms-u-smPush6{right:50%}html[dir=ltr] .ms-u-smPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-smPush5{right:41.66666666666667%}html[dir=ltr] .ms-u-smPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-smPush4{right:33.33333333333333%}html[dir=ltr] .ms-u-smPush3{left:25%}html[dir=rtl] .ms-u-smPush3{right:25%}html[dir=ltr] .ms-u-smPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-smPush2{right:16.666666666666664%}html[dir=ltr] .ms-u-smPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-smPush1{right:8.333333333333332%}html[dir=ltr] .ms-u-smPush0{left:auto}html[dir=rtl] .ms-u-smPush0{right:auto}html[dir=ltr] .ms-u-smOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-smOffset11{margin-right:91.66666666666666%}html[dir=ltr] .ms-u-smOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-smOffset10{margin-right:83.33333333333334%}html[dir=ltr] .ms-u-smOffset9{margin-left:75%}html[dir=rtl] .ms-u-smOffset9{margin-right:75%}html[dir=ltr] .ms-u-smOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-smOffset8{margin-right:66.66666666666666%}html[dir=ltr] .ms-u-smOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-smOffset7{margin-right:58.333333333333336%}html[dir=ltr] .ms-u-smOffset6{margin-left:50%}html[dir=rtl] .ms-u-smOffset6{margin-right:50%}html[dir=ltr] .ms-u-smOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-smOffset5{margin-right:41.66666666666667%}html[dir=ltr] .ms-u-smOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-smOffset4{margin-right:33.33333333333333%}html[dir=ltr] .ms-u-smOffset3{margin-left:25%}html[dir=rtl] .ms-u-smOffset3{margin-right:25%}html[dir=ltr] .ms-u-smOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-smOffset2{margin-right:16.666666666666664%}html[dir=ltr] .ms-u-smOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-smOffset1{margin-right:8.333333333333332%}html[dir=ltr] .ms-u-smOffset0{margin-left:0}html[dir=rtl] .ms-u-smOffset0{margin-right:0}@media (min-width:480px){.ms-u-md12{width:100%}}@media (min-width:480px){.ms-u-md11{width:91.66666666666666%}}@media (min-width:480px){.ms-u-md10{width:83.33333333333334%}}@media (min-width:480px){.ms-u-md9{width:75%}}@media (min-width:480px){.ms-u-md8{width:66.66666666666666%}}@media (min-width:480px){.ms-u-md7{width:58.333333333333336%}}@media (min-width:480px){.ms-u-md6{width:50%}}@media (min-width:480px){.ms-u-md5{width:41.66666666666667%}}@media (min-width:480px){.ms-u-md4{width:33.33333333333333%}}@media (min-width:480px){.ms-u-md3{width:25%}}@media (min-width:480px){.ms-u-md2{width:16.666666666666664%}}@media (min-width:480px){.ms-u-md1{width:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull12{right:100%}html[dir=rtl] .ms-u-mdPull12{left:100%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-mdPull11{left:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-mdPull10{left:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull9{right:75%}html[dir=rtl] .ms-u-mdPull9{left:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-mdPull8{left:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-mdPull7{left:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull6{right:50%}html[dir=rtl] .ms-u-mdPull6{left:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-mdPull5{left:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-mdPull4{left:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull3{right:25%}html[dir=rtl] .ms-u-mdPull3{left:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-mdPull2{left:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-mdPull1{left:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull0{right:auto}html[dir=rtl] .ms-u-mdPull0{left:auto}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush12{left:100%}html[dir=rtl] .ms-u-mdPush12{right:100%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-mdPush11{right:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-mdPush10{right:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush9{left:75%}html[dir=rtl] .ms-u-mdPush9{right:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-mdPush8{right:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-mdPush7{right:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush6{left:50%}html[dir=rtl] .ms-u-mdPush6{right:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-mdPush5{right:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-mdPush4{right:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush3{left:25%}html[dir=rtl] .ms-u-mdPush3{right:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-mdPush2{right:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-mdPush1{right:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush0{left:auto}html[dir=rtl] .ms-u-mdPush0{right:auto}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-mdOffset11{margin-right:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-mdOffset10{margin-right:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset9{margin-left:75%}html[dir=rtl] .ms-u-mdOffset9{margin-right:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-mdOffset8{margin-right:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-mdOffset7{margin-right:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset6{margin-left:50%}html[dir=rtl] .ms-u-mdOffset6{margin-right:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-mdOffset5{margin-right:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-mdOffset4{margin-right:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset3{margin-left:25%}html[dir=rtl] .ms-u-mdOffset3{margin-right:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-mdOffset2{margin-right:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-mdOffset1{margin-right:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset0{margin-left:0}html[dir=rtl] .ms-u-mdOffset0{margin-right:0}}@media (min-width:640px){.ms-u-lg12{width:100%}}@media (min-width:640px){.ms-u-lg11{width:91.66666666666666%}}@media (min-width:640px){.ms-u-lg10{width:83.33333333333334%}}@media (min-width:640px){.ms-u-lg9{width:75%}}@media (min-width:640px){.ms-u-lg8{width:66.66666666666666%}}@media (min-width:640px){.ms-u-lg7{width:58.333333333333336%}}@media (min-width:640px){.ms-u-lg6{width:50%}}@media (min-width:640px){.ms-u-lg5{width:41.66666666666667%}}@media (min-width:640px){.ms-u-lg4{width:33.33333333333333%}}@media (min-width:640px){.ms-u-lg3{width:25%}}@media (min-width:640px){.ms-u-lg2{width:16.666666666666664%}}@media (min-width:640px){.ms-u-lg1{width:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull12{right:100%}html[dir=rtl] .ms-u-lgPull12{left:100%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-lgPull11{left:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-lgPull10{left:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull9{right:75%}html[dir=rtl] .ms-u-lgPull9{left:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-lgPull8{left:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-lgPull7{left:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull6{right:50%}html[dir=rtl] .ms-u-lgPull6{left:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-lgPull5{left:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-lgPull4{left:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull3{right:25%}html[dir=rtl] .ms-u-lgPull3{left:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-lgPull2{left:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-lgPull1{left:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull0{right:auto}html[dir=rtl] .ms-u-lgPull0{left:auto}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush12{left:100%}html[dir=rtl] .ms-u-lgPush12{right:100%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-lgPush11{right:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-lgPush10{right:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush9{left:75%}html[dir=rtl] .ms-u-lgPush9{right:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-lgPush8{right:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-lgPush7{right:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush6{left:50%}html[dir=rtl] .ms-u-lgPush6{right:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-lgPush5{right:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-lgPush4{right:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush3{left:25%}html[dir=rtl] .ms-u-lgPush3{right:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-lgPush2{right:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-lgPush1{right:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush0{left:auto}html[dir=rtl] .ms-u-lgPush0{right:auto}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-lgOffset11{margin-right:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-lgOffset10{margin-right:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset9{margin-left:75%}html[dir=rtl] .ms-u-lgOffset9{margin-right:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-lgOffset8{margin-right:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-lgOffset7{margin-right:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset6{margin-left:50%}html[dir=rtl] .ms-u-lgOffset6{margin-right:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-lgOffset5{margin-right:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-lgOffset4{margin-right:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset3{margin-left:25%}html[dir=rtl] .ms-u-lgOffset3{margin-right:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-lgOffset2{margin-right:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-lgOffset1{margin-right:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset0{margin-left:0}html[dir=rtl] .ms-u-lgOffset0{margin-right:0}}@media (min-width:1024px){.ms-u-xl12{width:100%}}@media (min-width:1024px){.ms-u-xl11{width:91.66666666666666%}}@media (min-width:1024px){.ms-u-xl10{width:83.33333333333334%}}@media (min-width:1024px){.ms-u-xl9{width:75%}}@media (min-width:1024px){.ms-u-xl8{width:66.66666666666666%}}@media (min-width:1024px){.ms-u-xl7{width:58.333333333333336%}}@media (min-width:1024px){.ms-u-xl6{width:50%}}@media (min-width:1024px){.ms-u-xl5{width:41.66666666666667%}}@media (min-width:1024px){.ms-u-xl4{width:33.33333333333333%}}@media (min-width:1024px){.ms-u-xl3{width:25%}}@media (min-width:1024px){.ms-u-xl2{width:16.666666666666664%}}@media (min-width:1024px){.ms-u-xl1{width:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull12{right:100%}html[dir=rtl] .ms-u-xlPull12{left:100%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xlPull11{left:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xlPull10{left:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull9{right:75%}html[dir=rtl] .ms-u-xlPull9{left:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xlPull8{left:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xlPull7{left:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull6{right:50%}html[dir=rtl] .ms-u-xlPull6{left:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xlPull5{left:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xlPull4{left:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull3{right:25%}html[dir=rtl] .ms-u-xlPull3{left:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xlPull2{left:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xlPull1{left:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull0{right:auto}html[dir=rtl] .ms-u-xlPull0{left:auto}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush12{left:100%}html[dir=rtl] .ms-u-xlPush12{right:100%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xlPush11{right:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xlPush10{right:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush9{left:75%}html[dir=rtl] .ms-u-xlPush9{right:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xlPush8{right:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xlPush7{right:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush6{left:50%}html[dir=rtl] .ms-u-xlPush6{right:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xlPush5{right:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xlPush4{right:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush3{left:25%}html[dir=rtl] .ms-u-xlPush3{right:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xlPush2{right:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xlPush1{right:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush0{left:auto}html[dir=rtl] .ms-u-xlPush0{right:auto}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xlOffset11{margin-right:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xlOffset10{margin-right:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xlOffset9{margin-right:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xlOffset8{margin-right:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xlOffset7{margin-right:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xlOffset6{margin-right:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xlOffset5{margin-right:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xlOffset4{margin-right:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xlOffset3{margin-right:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xlOffset2{margin-right:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xlOffset1{margin-right:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset0{margin-left:0}html[dir=rtl] .ms-u-xlOffset0{margin-right:0}}@media (min-width:1366px){.ms-u-xxl12{width:100%}}@media (min-width:1366px){.ms-u-xxl11{width:91.66666666666666%}}@media (min-width:1366px){.ms-u-xxl10{width:83.33333333333334%}}@media (min-width:1366px){.ms-u-xxl9{width:75%}}@media (min-width:1366px){.ms-u-xxl8{width:66.66666666666666%}}@media (min-width:1366px){.ms-u-xxl7{width:58.333333333333336%}}@media (min-width:1366px){.ms-u-xxl6{width:50%}}@media (min-width:1366px){.ms-u-xxl5{width:41.66666666666667%}}@media (min-width:1366px){.ms-u-xxl4{width:33.33333333333333%}}@media (min-width:1366px){.ms-u-xxl3{width:25%}}@media (min-width:1366px){.ms-u-xxl2{width:16.666666666666664%}}@media (min-width:1366px){.ms-u-xxl1{width:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull12{right:100%}html[dir=rtl] .ms-u-xxlPull12{left:100%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xxlPull11{left:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xxlPull10{left:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull9{right:75%}html[dir=rtl] .ms-u-xxlPull9{left:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xxlPull8{left:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xxlPull7{left:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull6{right:50%}html[dir=rtl] .ms-u-xxlPull6{left:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xxlPull5{left:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xxlPull4{left:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull3{right:25%}html[dir=rtl] .ms-u-xxlPull3{left:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xxlPull2{left:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xxlPull1{left:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull0{right:auto}html[dir=rtl] .ms-u-xxlPull0{left:auto}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush12{left:100%}html[dir=rtl] .ms-u-xxlPush12{right:100%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xxlPush11{right:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xxlPush10{right:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush9{left:75%}html[dir=rtl] .ms-u-xxlPush9{right:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xxlPush8{right:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xxlPush7{right:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush6{left:50%}html[dir=rtl] .ms-u-xxlPush6{right:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xxlPush5{right:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xxlPush4{right:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush3{left:25%}html[dir=rtl] .ms-u-xxlPush3{right:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xxlPush2{right:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xxlPush1{right:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush0{left:auto}html[dir=rtl] .ms-u-xxlPush0{right:auto}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xxlOffset11{margin-right:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xxlOffset10{margin-right:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xxlOffset9{margin-right:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xxlOffset8{margin-right:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xxlOffset7{margin-right:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xxlOffset6{margin-right:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xxlOffset5{margin-right:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xxlOffset4{margin-right:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xxlOffset3{margin-right:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xxlOffset2{margin-right:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xxlOffset1{margin-right:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset0{margin-left:0}html[dir=rtl] .ms-u-xxlOffset0{margin-right:0}}@media (min-width:1920px){.ms-u-xxxl12{width:100%}}@media (min-width:1920px){.ms-u-xxxl11{width:91.66666666666666%}}@media (min-width:1920px){.ms-u-xxxl10{width:83.33333333333334%}}@media (min-width:1920px){.ms-u-xxxl9{width:75%}}@media (min-width:1920px){.ms-u-xxxl8{width:66.66666666666666%}}@media (min-width:1920px){.ms-u-xxxl7{width:58.333333333333336%}}@media (min-width:1920px){.ms-u-xxxl6{width:50%}}@media (min-width:1920px){.ms-u-xxxl5{width:41.66666666666667%}}@media (min-width:1920px){.ms-u-xxxl4{width:33.33333333333333%}}@media (min-width:1920px){.ms-u-xxxl3{width:25%}}@media (min-width:1920px){.ms-u-xxxl2{width:16.666666666666664%}}@media (min-width:1920px){.ms-u-xxxl1{width:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull12{right:100%}html[dir=rtl] .ms-u-xxxlPull12{left:100%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xxxlPull11{left:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xxxlPull10{left:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull9{right:75%}html[dir=rtl] .ms-u-xxxlPull9{left:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xxxlPull8{left:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xxxlPull7{left:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull6{right:50%}html[dir=rtl] .ms-u-xxxlPull6{left:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xxxlPull5{left:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xxxlPull4{left:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull3{right:25%}html[dir=rtl] .ms-u-xxxlPull3{left:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xxxlPull2{left:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xxxlPull1{left:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull0{right:auto}html[dir=rtl] .ms-u-xxxlPull0{left:auto}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush12{left:100%}html[dir=rtl] .ms-u-xxxlPush12{right:100%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xxxlPush11{right:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xxxlPush10{right:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush9{left:75%}html[dir=rtl] .ms-u-xxxlPush9{right:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xxxlPush8{right:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xxxlPush7{right:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush6{left:50%}html[dir=rtl] .ms-u-xxxlPush6{right:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xxxlPush5{right:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xxxlPush4{right:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush3{left:25%}html[dir=rtl] .ms-u-xxxlPush3{right:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xxxlPush2{right:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xxxlPush1{right:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush0{left:auto}html[dir=rtl] .ms-u-xxxlPush0{right:auto}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xxxlOffset11{margin-right:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xxxlOffset10{margin-right:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xxxlOffset9{margin-right:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xxxlOffset8{margin-right:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xxxlOffset7{margin-right:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xxxlOffset6{margin-right:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xxxlOffset5{margin-right:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xxxlOffset4{margin-right:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xxxlOffset3{margin-right:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xxxlOffset2{margin-right:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xxxlOffset1{margin-right:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset0{margin-left:0}html[dir=rtl] .ms-u-xxxlOffset0{margin-right:0}}.ms-Grid{box-sizing:border-box;*zoom:1}html[dir] .ms-Grid{padding:0 8px}.ms-Grid:after,.ms-Grid:before{display:table;content:"";line-height:0}.ms-Grid:after{clear:both}.ms-Grid-row{box-sizing:border-box;*zoom:1}html[dir] .ms-Grid-row{margin:0 -8px}.ms-Grid-row:after,.ms-Grid-row:before{display:table;content:"";line-height:0}.ms-Grid-row:after{clear:both}.ms-Grid-col{position:relative;min-height:1px;box-sizing:border-box}html[dir=ltr] .ms-Grid-col{padding-left:8px;padding-right:8px;float:left}html[dir=rtl] .ms-Grid-col{padding-right:8px;padding-left:8px;float:right}html[dir] .ms-Grid-col .ms-Grid{padding:0}.ms-Fabric{color:#333}-->

    <!--.fkDATHPs67KecPZTWjyC5{display:block;box-sizing:border-box;line-height:30px;width:100%}html[dir] .fkDATHPs67KecPZTWjyC5{border:none;margin:0}html[dir=ltr] .fkDATHPs67KecPZTWjyC5{text-align:left}html[dir=rtl] .fkDATHPs67KecPZTWjyC5{text-align:right}.fkDATHPs67KecPZTWjyC5 :first-child{line-height:30px;height:30px}.fkDATHPs67KecPZTWjyC5 span{font-size:11px}._3WqwqkAHXbeawL_HRTV850 :first-child{color:#0078d7;cursor:default}html[dir] ._3WqwqkAHXbeawL_HRTV850 :first-child{background-color:inherit}html[dir=ltr] ._3WqwqkAHXbeawL_HRTV850 :first-child{background:0 0}html[dir=rtl] ._3WqwqkAHXbeawL_HRTV850 :first-child{background:100% 0}html[dir] ._2Z0C7fbHGKQAz3VrYnCM2p{border:none}._2Z0C7fbHGKQAz3VrYnCM2p ul{overflow:hidden}._2cdS7ynh8ypFb3vCm5ruAj :first-child{line-height:30px;height:30px}._2cdS7ynh8ypFb3vCm5ruAj :first-child span{font-size:12px}._2cdS7ynh8ypFb3vCm5ruAj :first-child i{line-height:30px;height:30px}html[dir] ._2cdS7ynh8ypFb3vCm5ruAj button{background-color:inherit}.ms-LayerHost-overlay div{z-index:2000!important}.ms-Dialog-button.ms-Dialog-button--close{z-index:2001!important}.ms-Dialog{z-index:2000!important}--><!--._1ZK5qz71rnRbVDWBQXxSbL{display:block}html[dir] ._1ZK5qz71rnRbVDWBQXxSbL{background:transparent;border:none}html[dir=ltr] ._1ZK5qz71rnRbVDWBQXxSbL{margin-right:5px}html[dir=rtl] ._1ZK5qz71rnRbVDWBQXxSbL{margin-left:5px}.iUrQ8xvQuVGBkYlnuJW8i{height:16px;width:0}html[dir] .iUrQ8xvQuVGBkYlnuJW8i{padding:0;margin:7px 0}html[dir=ltr] .iUrQ8xvQuVGBkYlnuJW8i{border-right-width:1px;border-right-style:solid;float:left}html[dir=rtl] .iUrQ8xvQuVGBkYlnuJW8i{border-left-width:1px;border-left-style:solid;float:right}._1pNkfPiuQJ-FIKn0Vb8roY{display:inline-block;width:30px;height:30px}._1NUpqxTtvfjqe2cXAJrJl_{width:16px;height:16px}--><!--._3InrqsNczfVzST1g2rD0jq{display:block;cursor:pointer}html[dir=ltr] ._3InrqsNczfVzST1g2rD0jq{margin:0 5px 0 0}html[dir=rtl] ._3InrqsNczfVzST1g2rD0jq{margin:0 0 0 5px}._1lcq5WOFQSOc3pAP9-QSU-{width:16px;height:16px}html[dir] ._1lcq5WOFQSOc3pAP9-QSU-{padding:7px}._2eBUN7HrrPwqc-9visTxwO{width:30px;height:30px}--><!--._1sXebP9dhDeSRDu_ykstQ{display:-ms-flexbox;display:flex;display:-webkit-flex;height:30px}--><!--.Nr_OEkeERSs4g3KmXglLs{display:-ms-flexbox;display:flex;display:-webkit-flex}--><!--._3OH24vPORLvOxW6VNaj7tk{width:100%;height:100%}--><!--._37cHtDIuxCJ6YLGmDZry9u{max-width:none}._1fdP-gn4bP3Klri8dd8u47{height:190px}._2e73G9uLYEJxo3Xn4EHeLs{width:550px;height:400px}._1aWP3GHQ3wdn65AEBmYgPD{display:none!important}--><!--.ms-u-borderBox,.ms-u-borderBox:after,.ms-u-borderBox:before{box-sizing:border-box}html[dir] .ms-u-borderBase{border:1px solid}.ms-u-clearfix{*zoom:1}.ms-u-clearfix:after,.ms-u-clearfix:before{display:table;content:"";line-height:0}.ms-u-clearfix:after{clear:both}.ms-u-normalize{box-sizing:border-box}html[dir] .ms-u-normalize{margin:0;padding:0;box-shadow:none}html[dir=ltr] .ms-u-textAlignLeft{text-align:left}html[dir=rtl] .ms-u-textAlignLeft{text-align:right}html[dir] .ms-u-textAlignCenter{text-align:center}html[dir=ltr] .ms-u-textAlignRight{text-align:right}html[dir=rtl] .ms-u-textAlignRight{text-align:left}.ms-u-screenReaderOnly{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}html[dir] .ms-u-screenReaderOnly{padding:0;margin:-1px;border:0}.ms-u-textTruncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.ms-u-noWrap{white-space:nowrap}html[dir] .ms-bgColor-themeDark,html[dir] .ms-bgColor-themeDark--hover:hover{background-color:#005a9e}html[dir] .ms-bgColor-themeDarkAlt,html[dir] .ms-bgColor-themeDarkAlt--hover:hover{background-color:#106ebe}html[dir] .ms-bgColor-themeDarker,html[dir] .ms-bgColor-themeDarker--hover:hover{background-color:#004578}html[dir] .ms-bgColor-themePrimary,html[dir] .ms-bgColor-themePrimary--hover:hover{background-color:#0078d7}html[dir] .ms-bgColor-themeSecondary,html[dir] .ms-bgColor-themeSecondary--hover:hover{background-color:#2488d8}html[dir] .ms-bgColor-themeTertiary,html[dir] .ms-bgColor-themeTertiary--hover:hover{background-color:#69afe5}html[dir] .ms-bgColor-themeLight,html[dir] .ms-bgColor-themeLight--hover:hover{background-color:#b3d6f2}html[dir] .ms-bgColor-themeLighter,html[dir] .ms-bgColor-themeLighter--hover:hover{background-color:#deecf9}html[dir] .ms-bgColor-themeLighterAlt,html[dir] .ms-bgColor-themeLighterAlt--hover:hover{background-color:#eff6fc}html[dir] .ms-bgColor-black,html[dir] .ms-bgColor-black--hover:hover{background-color:#000}html[dir] .ms-bgColor-neutralDark,html[dir] .ms-bgColor-neutralDark--hover:hover{background-color:#212121}html[dir] .ms-bgColor-neutralPrimary,html[dir] .ms-bgColor-neutralPrimary--hover:hover{background-color:#333}html[dir] .ms-bgColor-neutralPrimaryAlt,html[dir] .ms-bgColor-neutralPrimaryAlt--hover:hover{background-color:#3c3c3c}html[dir] .ms-bgColor-neutralSecondary,html[dir] .ms-bgColor-neutralSecondary--hover:hover{background-color:#666}html[dir] .ms-bgColor-neutralSecondaryAlt,html[dir] .ms-bgColor-neutralSecondaryAlt--hover:hover{background-color:#767676}html[dir] .ms-bgColor-neutralTertiary,html[dir] .ms-bgColor-neutralTertiary--hover:hover{background-color:#a6a6a6}html[dir] .ms-bgColor-neutralTertiaryAlt,html[dir] .ms-bgColor-neutralTertiaryAlt--hover:hover{background-color:#c8c8c8}html[dir] .ms-bgColor-neutralLight,html[dir] .ms-bgColor-neutralLight--hover:hover{background-color:#eaeaea}html[dir] .ms-bgColor-neutralLighter,html[dir] .ms-bgColor-neutralLighter--hover:hover{background-color:#f4f4f4}html[dir] .ms-bgColor-neutralLighterAlt,html[dir] .ms-bgColor-neutralLighterAlt--hover:hover{background-color:#f8f8f8}html[dir] .ms-bgColor-white,html[dir] .ms-bgColor-white--hover:hover{background-color:#fff}html[dir] .ms-bgColor-yellow{background-color:#ffb900}html[dir] .ms-bgColor-yellowLight{background-color:#fff100}html[dir] .ms-bgColor-orange{background-color:#d83b01}html[dir] .ms-bgColor-orangeLight{background-color:#ea4300}html[dir] .ms-bgColor-orangeLighter{background-color:#ff8c00}html[dir] .ms-bgColor-redDark{background-color:#a80000}html[dir] .ms-bgColor-red{background-color:#e81123}html[dir] .ms-bgColor-magentaDark{background-color:#5c005c}html[dir] .ms-bgColor-magenta{background-color:#b4009e}html[dir] .ms-bgColor-magentaLight{background-color:#e3008c}html[dir] .ms-bgColor-purpleDark{background-color:#32145a}html[dir] .ms-bgColor-purple{background-color:#5c2d91}html[dir] .ms-bgColor-purpleLight{background-color:#b4a0ff}html[dir] .ms-bgColor-blueDark{background-color:#002050}html[dir] .ms-bgColor-blueMid{background-color:#00188f}html[dir] .ms-bgColor-blue{background-color:#0078d7}html[dir] .ms-bgColor-blueLight{background-color:#00bcf2}html[dir] .ms-bgColor-tealDark{background-color:#004b50}html[dir] .ms-bgColor-teal{background-color:#008272}html[dir] .ms-bgColor-tealLight{background-color:#00b294}html[dir] .ms-bgColor-greenDark{background-color:#004b1c}html[dir] .ms-bgColor-green{background-color:#107c10}html[dir] .ms-bgColor-greenLight{background-color:#bad80a}html[dir] .ms-bgColor-info{background-color:#f4f4f4}html[dir] .ms-bgColor-success{background-color:#dff6dd}html[dir] .ms-bgColor-severeWarning{background-color:#fed9cc}html[dir] .ms-bgColor-warning{background-color:#fff4ce}html[dir] .ms-bgColor-error{background-color:#fde7e9}html[dir] .ms-borderColor-themeDark,html[dir] .ms-borderColor-themeDark--hover:hover{border-color:#005a9e}html[dir] .ms-borderColor-themeDarkAlt,html[dir] .ms-borderColor-themeDarkAlt--hover:hover{border-color:#106ebe}html[dir] .ms-borderColor-themeDarker,html[dir] .ms-borderColor-themeDarker--hover:hover{border-color:#004578}html[dir] .ms-borderColor-themePrimary,html[dir] .ms-borderColor-themePrimary--hover:hover{border-color:#0078d7}html[dir] .ms-borderColor-themeSecondary,html[dir] .ms-borderColor-themeSecondary--hover:hover{border-color:#2488d8}html[dir] .ms-borderColor-themeTertiary,html[dir] .ms-borderColor-themeTertiary--hover:hover{border-color:#69afe5}html[dir] .ms-borderColor-themeLight,html[dir] .ms-borderColor-themeLight--hover:hover{border-color:#b3d6f2}html[dir] .ms-borderColor-themeLighter,html[dir] .ms-borderColor-themeLighter--hover:hover{border-color:#deecf9}html[dir] .ms-borderColor-themeLighterAlt,html[dir] .ms-borderColor-themeLighterAlt--hover:hover{border-color:#eff6fc}html[dir] .ms-borderColor-black,html[dir] .ms-borderColor-black--hover:hover{border-color:#000}html[dir] .ms-borderColor-neutralDark,html[dir] .ms-borderColor-neutralDark--hover:hover{border-color:#212121}html[dir] .ms-borderColor-neutralPrimary,html[dir] .ms-borderColor-neutralPrimary--hover:hover{border-color:#333}html[dir] .ms-borderColor-neutralPrimaryAlt,html[dir] .ms-borderColor-neutralPrimaryAlt--hover:hover{border-color:#3c3c3c}html[dir] .ms-borderColor-neutralSecondary,html[dir] .ms-borderColor-neutralSecondary--hover:hover{border-color:#666}html[dir] .ms-borderColor-neutralSecondaryAlt,html[dir] .ms-borderColor-neutralSecondaryAlt--hover:hover{border-color:#767676}html[dir] .ms-borderColor-neutralTertiary,html[dir] .ms-borderColor-neutralTertiary--hover:hover{border-color:#a6a6a6}html[dir] .ms-borderColor-neutralTertiaryAlt,html[dir] .ms-borderColor-neutralTertiaryAlt--hover:hover{border-color:#c8c8c8}html[dir] .ms-borderColor-neutralLight,html[dir] .ms-borderColor-neutralLight--hover:hover{border-color:#eaeaea}html[dir] .ms-borderColor-neutralLighter,html[dir] .ms-borderColor-neutralLighter--hover:hover{border-color:#f4f4f4}html[dir] .ms-borderColor-neutralLighterAlt,html[dir] .ms-borderColor-neutralLighterAlt--hover:hover{border-color:#f8f8f8}html[dir] .ms-borderColor-white,html[dir] .ms-borderColor-white--hover:hover{border-color:#fff}html[dir] .ms-borderColor-yellow{border-color:#ffb900}html[dir] .ms-borderColor-yellowLight{border-color:#fff100}html[dir] .ms-borderColor-orange{border-color:#d83b01}html[dir] .ms-borderColor-orangeLight{border-color:#ea4300}html[dir] .ms-borderColor-orangeLighter{border-color:#ff8c00}html[dir] .ms-borderColor-redDark{border-color:#a80000}html[dir] .ms-borderColor-red{border-color:#e81123}html[dir] .ms-borderColor-magentaDark{border-color:#5c005c}html[dir] .ms-borderColor-magenta{border-color:#b4009e}html[dir] .ms-borderColor-magentaLight{border-color:#e3008c}html[dir] .ms-borderColor-purpleDark{border-color:#32145a}html[dir] .ms-borderColor-purple{border-color:#5c2d91}html[dir] .ms-borderColor-purpleLight{border-color:#b4a0ff}html[dir] .ms-borderColor-blueDark{border-color:#002050}html[dir] .ms-borderColor-blueMid{border-color:#00188f}html[dir] .ms-borderColor-blue{border-color:#0078d7}html[dir] .ms-borderColor-blueLight{border-color:#00bcf2}html[dir] .ms-borderColor-tealDark{border-color:#004b50}html[dir] .ms-borderColor-teal{border-color:#008272}html[dir] .ms-borderColor-tealLight{border-color:#00b294}html[dir] .ms-borderColor-greenDark{border-color:#004b1c}html[dir] .ms-borderColor-green{border-color:#107c10}html[dir] .ms-borderColor-greenLight{border-color:#bad80a}html[dir] .ms-borderColorTop-themePrimary,html[dir] .ms-borderColorTop-themePrimary--hover:hover{border-top-color:#0078d7}.ms-fontWeight-light,.ms-fontWeight-light--hover:hover{font-weight:100}.ms-fontWeight-semilight,.ms-fontWeight-semilight--hover:hover{font-weight:300}.ms-fontWeight-regular,.ms-fontWeight-regular--hover:hover{font-weight:400}.ms-fontWeight-semibold,.ms-fontWeight-semibold--hover:hover{font-weight:600}.ms-fontSize-su{font-size:42px}.ms-fontSize-xxl{font-size:28px}.ms-fontSize-xl{font-size:21px}.ms-fontSize-l{font-size:17px}.ms-fontSize-mPlus{font-size:15px}.ms-fontSize-m{font-size:14px}.ms-fontSize-sPlus{font-size:13px}.ms-fontSize-s{font-size:12px}.ms-fontSize-xs{font-size:11px}.ms-fontSize-mi{font-size:10px}.ms-fontColor-themeDarker,.ms-fontColor-themeDarker--hover:hover{color:#004578}.ms-fontColor-themeDark,.ms-fontColor-themeDark--hover:hover{color:#005a9e}.ms-fontColor-themeDarkAlt,.ms-fontColor-themeDarkAlt--hover:hover{color:#106ebe}.ms-fontColor-themePrimary,.ms-fontColor-themePrimary--hover:hover{color:#0078d7}.ms-fontColor-themeSecondary,.ms-fontColor-themeSecondary--hover:hover{color:#2488d8}.ms-fontColor-themeTertiary,.ms-fontColor-themeTertiary--hover:hover{color:#69afe5}.ms-fontColor-themeLight,.ms-fontColor-themeLight--hover:hover{color:#b3d6f2}.ms-fontColor-themeLighter,.ms-fontColor-themeLighter--hover:hover{color:#deecf9}.ms-fontColor-themeLighterAlt,.ms-fontColor-themeLighterAlt--hover:hover{color:#eff6fc}.ms-fontColor-black,.ms-fontColor-black--hover:hover{color:#000}.ms-fontColor-neutralDark,.ms-fontColor-neutralDark--hover:hover{color:#212121}.ms-fontColor-neutralPrimary,.ms-fontColor-neutralPrimary--hover:hover{color:#333}.ms-fontColor-neutralPrimaryAlt,.ms-fontColor-neutralPrimaryAlt--hover:hover{color:#3c3c3c}.ms-fontColor-neutralSecondary,.ms-fontColor-neutralSecondary--hover:hover{color:#666}.ms-fontColor-neutralSecondaryAlt,.ms-fontColor-neutralSecondaryAlt--hover:hover{color:#767676}.ms-fontColor-neutralTertiary,.ms-fontColor-neutralTertiary--hover:hover{color:#a6a6a6}.ms-fontColor-neutralTertiaryAlt,.ms-fontColor-neutralTertiaryAlt--hover:hover{color:#c8c8c8}.ms-fontColor-neutralLight,.ms-fontColor-neutralLight--hover:hover{color:#eaeaea}.ms-fontColor-neutralLighter,.ms-fontColor-neutralLighter--hover:hover{color:#f4f4f4}.ms-fontColor-neutralLighterAlt,.ms-fontColor-neutralLighterAlt--hover:hover{color:#f8f8f8}.ms-fontColor-white,.ms-fontColor-white--hover:hover{color:#fff}.ms-fontColor-yellow,.ms-fontColor-yellow--hover:hover{color:#ffb900}.ms-fontColor-yellowLight,.ms-fontColor-yellowLight--hover:hover{color:#fff100}.ms-fontColor-orange,.ms-fontColor-orange--hover:hover{color:#d83b01}.ms-fontColor-orangeLight,.ms-fontColor-orangeLight--hover:hover{color:#ea4300}.ms-fontColor-orangeLighter,.ms-fontColor-orangeLighter--hover:hover{color:#ff8c00}.ms-fontColor-redDark,.ms-fontColor-redDark--hover:hover{color:#a80000}.ms-fontColor-red,.ms-fontColor-red--hover:hover{color:#e81123}.ms-fontColor-magentaDark,.ms-fontColor-magentaDark--hover:hover{color:#5c005c}.ms-fontColor-magenta,.ms-fontColor-magenta--hover:hover{color:#b4009e}.ms-fontColor-magentaLight,.ms-fontColor-magentaLight--hover:hover{color:#e3008c}.ms-fontColor-purpleDark,.ms-fontColor-purpleDark--hover:hover{color:#32145a}.ms-fontColor-purple,.ms-fontColor-purple--hover:hover{color:#5c2d91}.ms-fontColor-purpleLight,.ms-fontColor-purpleLight--hover:hover{color:#b4a0ff}.ms-fontColor-blueDark,.ms-fontColor-blueDark--hover:hover{color:#002050}.ms-fontColor-blueMid,.ms-fontColor-blueMid--hover:hover{color:#00188f}.ms-fontColor-blue,.ms-fontColor-blue--hover:hover{color:#0078d7}.ms-fontColor-blueLight,.ms-fontColor-blueLight--hover:hover{color:#00bcf2}.ms-fontColor-tealDark,.ms-fontColor-tealDark--hover:hover{color:#004b50}.ms-fontColor-teal,.ms-fontColor-teal--hover:hover{color:#008272}.ms-fontColor-tealLight,.ms-fontColor-tealLight--hover:hover{color:#00b294}.ms-fontColor-greenDark,.ms-fontColor-greenDark--hover:hover{color:#004b1c}.ms-fontColor-green,.ms-fontColor-green--hover:hover{color:#107c10}.ms-fontColor-greenLight,.ms-fontColor-greenLight--hover:hover{color:#bad80a}.ms-fontColor-info,.ms-fontColor-info--hover:hover{color:#767676}.ms-fontColor-success,.ms-fontColor-success--hover:hover{color:#107c10}.ms-fontColor-alert,.ms-fontColor-alert--hover:hover{color:#d83b01}.ms-fontColor-warning,.ms-fontColor-warning--hover:hover{color:#767676}.ms-fontColor-severeWarning,.ms-fontColor-severeWarning--hover:hover{color:#d83b01}.ms-fontColor-error,.ms-fontColor-error--hover:hover{color:#a80000}@font-face{font-family:FabricMDL2Icons;src:url("https://static2.sharepointonline.com/files/fabric/assets/icons/fabricmdl2icons.woff2") format("woff2"),url("https://static2.sharepointonline.com/files/fabric/assets/icons/fabricmdl2icons.woff") format("woff"),url("https://static2.sharepointonline.com/files/fabric/assets/icons/fabricmdl2icons.ttf") format("truetype");font-weight:400;font-style:normal}.ms-Icon,.ms-Icon:before{-moz-osx-font-smoothing:grayscale;font-family:FabricMDL2Icons;font-style:normal;font-weight:400;speak:none}.ms-Icon,.ms-Icon--circle,.ms-Icon:before{-webkit-font-smoothing:antialiased;display:inline-block}.ms-Icon--circle{position:relative;font-size:1rem;width:1em;height:1em}html[dir] .ms-Icon--circle{padding:0}html[dir=ltr] .ms-Icon--circle{margin:0 .5em 0 0;text-align:left}html[dir=rtl] .ms-Icon--circle{margin:0 0 0 .5em;text-align:right}.ms-Icon--circle:after,.ms-Icon--circle:before{line-height:1;font-size:inherit}.ms-Icon--circle:before{display:block;width:100%;height:100%;vertical-align:top;position:absolute}html[dir] .ms-Icon--circle:before{margin:0;padding:0}.ms-Icon--circle:after{content:"\E000";position:absolute;top:0;z-index:0}html[dir] .ms-Icon--circle:after{transform:scale(2);transform-origin:50% 50%}html[dir=ltr] .ms-Icon--circle:after{left:0}html[dir=rtl] .ms-Icon--circle:after{right:0}.ms-Icon--xs{font-size:10px}.ms-Icon--s{font-size:12px}.ms-Icon--m{font-size:16px}.ms-Icon--l{font-size:20px}.ms-Icon--CarotRightSolid8:before{content:"\EDDA"}.ms-Icon--DynamicsCRMLogo:before{content:"\EDCC"}.ms-Icon--DecreaseIndentLegacy:before{content:"\E290"}.ms-Icon--IncreaseIndentLegacy:before{content:"\E291"}.ms-Icon--GlobalNavButton:before{content:"\E700"}.ms-Icon--InternetSharing:before{content:"\E704"}.ms-Icon--Brightness:before{content:"\E706"}.ms-Icon--MapPin:before{content:"\E707"}.ms-Icon--Airplane:before{content:"\E709"}.ms-Icon--Tablet:before{content:"\E70A"}.ms-Icon--QuickNote:before{content:"\E70B"}.ms-Icon--ChevronDown:before{content:"\E70D"}.ms-Icon--ChevronUp:before{content:"\E70E"}.ms-Icon--Edit:before{content:"\E70F"}.ms-Icon--Add:before{content:"\E710"}.ms-Icon--Cancel:before{content:"\E711"}.ms-Icon--More:before{content:"\E712"}.ms-Icon--Settings:before{content:"\E713"}.ms-Icon--Video:before{content:"\E714"}.ms-Icon--Mail:before{content:"\E715"}.ms-Icon--People:before{content:"\E716"}.ms-Icon--Phone:before{content:"\E717"}.ms-Icon--Pin:before{content:"\E718"}.ms-Icon--Shop:before{content:"\E719"}.ms-Icon--Link:before{content:"\E71B"}.ms-Icon--Filter:before{content:"\E71C"}.ms-Icon--Zoom:before{content:"\E71E"}.ms-Icon--ZoomOut:before{content:"\E71F"}.ms-Icon--Microphone:before{content:"\E720"}.ms-Icon--Search:before{content:"\E721"}.ms-Icon--Camera:before{content:"\E722"}.ms-Icon--Attach:before{content:"\E723"}.ms-Icon--Send:before{content:"\E724"}.ms-Icon--FavoriteList:before{content:"\E728"}.ms-Icon--PageSolid:before{content:"\E729"}.ms-Icon--Forward:before{content:"\E72A"}.ms-Icon--Back:before{content:"\E72B"}.ms-Icon--Refresh:before{content:"\E72C"}.ms-Icon--Share:before{content:"\E72D"}.ms-Icon--Lock:before{content:"\E72E"}.ms-Icon--EMI:before{content:"\E731"}.ms-Icon--MiniLink:before{content:"\E732"}.ms-Icon--Blocked:before{content:"\E733"}.ms-Icon--FavoriteStar:before{content:"\E734"}.ms-Icon--FavoriteStarFill:before{content:"\E735"}.ms-Icon--ReadingMode:before{content:"\E736"}.ms-Icon--Remove:before{content:"\E738"}.ms-Icon--Checkbox:before{content:"\E739"}.ms-Icon--CheckboxComposite:before{content:"\E73A"}.ms-Icon--CheckboxIndeterminate:before{content:"\E73C"}.ms-Icon--CheckMark:before{content:"\E73E"}.ms-Icon--BackToWindow:before{content:"\E73F"}.ms-Icon--FullScreen:before{content:"\E740"}.ms-Icon--Print:before{content:"\E749"}.ms-Icon--Up:before{content:"\E74A"}.ms-Icon--Down:before{content:"\E74B"}.ms-Icon--Delete:before{content:"\E74D"}.ms-Icon--Save:before{content:"\E74E"}.ms-Icon--Sad:before{content:"\E757"}.ms-Icon--SIPMove:before{content:"\E759"}.ms-Icon--EraseTool:before{content:"\E75C"}.ms-Icon--GripperTool:before{content:"\E75E"}.ms-Icon--Dialpad:before{content:"\E75F"}.ms-Icon--PageLeft:before{content:"\E760"}.ms-Icon--PageRight:before{content:"\E761"}.ms-Icon--MultiSelect:before{content:"\E762"}.ms-Icon--Play:before{content:"\E768"}.ms-Icon--Pause:before{content:"\E769"}.ms-Icon--ChevronLeft:before{content:"\E76B"}.ms-Icon--ChevronRight:before{content:"\E76C"}.ms-Icon--Emoji2:before{content:"\E76E"}.ms-Icon--System:before{content:"\E770"}.ms-Icon--Globe:before{content:"\E774"}.ms-Icon--ContactInfo:before{content:"\E779"}.ms-Icon--Unpin:before{content:"\E77A"}.ms-Icon--Contact:before{content:"\E77B"}.ms-Icon--Memo:before{content:"\E77C"}.ms-Icon--WindowsLogo:before{content:"\E782"}.ms-Icon--Error:before{content:"\E783"}.ms-Icon--Unlock:before{content:"\E785"}.ms-Icon--Calendar:before{content:"\E787"}.ms-Icon--Megaphone:before{content:"\E789"}.ms-Icon--AutoEnhanceOn:before{content:"\E78D"}.ms-Icon--AutoEnhanceOff:before{content:"\E78E"}.ms-Icon--Color:before{content:"\E790"}.ms-Icon--SaveAs:before{content:"\E792"}.ms-Icon--Light:before{content:"\E793"}.ms-Icon--Filters:before{content:"\E795"}.ms-Icon--Contrast:before{content:"\E7A1"}.ms-Icon--Redo:before{content:"\E7A6"}.ms-Icon--Undo:before{content:"\E7A7"}.ms-Icon--PhotoCollection:before{content:"\E7AA"}.ms-Icon--Album:before{content:"\E7AB"}.ms-Icon--Rotate:before{content:"\E7AD"}.ms-Icon--PanoIndicator:before{content:"\E7B0"}.ms-Icon--RedEye:before{content:"\E7B3"}.ms-Icon--ThumbnailView:before{content:"\E7B6"}.ms-Icon--Package:before{content:"\E7B8"}.ms-Icon--Warning:before{content:"\E7BA"}.ms-Icon--Financial:before{content:"\E7BB"}.ms-Icon--ShoppingCart:before{content:"\E7BF"}.ms-Icon--Train:before{content:"\E7C0"}.ms-Icon--Flag:before{content:"\E7C1"}.ms-Icon--Move:before{content:"\E7C2"}.ms-Icon--Page:before{content:"\E7C3"}.ms-Icon--TouchPointer:before{content:"\E7C9"}.ms-Icon--Merge:before{content:"\E7D5"}.ms-Icon--TurnRight:before{content:"\E7DB"}.ms-Icon--Ferry:before{content:"\E7E3"}.ms-Icon--Tab:before{content:"\E7E9"}.ms-Icon--Admin:before{content:"\E7EF"}.ms-Icon--TVMonitor:before{content:"\E7F4"}.ms-Icon--Speakers:before{content:"\E7F5"}.ms-Icon--Nav2DMapView:before{content:"\E800"}.ms-Icon--Car:before{content:"\E804"}.ms-Icon--EatDrink:before{content:"\E807"}.ms-Icon--LocationCircle:before{content:"\E80E"}.ms-Icon--Home:before{content:"\E80F"}.ms-Icon--SwitcherStartEnd:before{content:"\E810"}.ms-Icon--IncidentTriangle:before{content:"\E814"}.ms-Icon--Touch:before{content:"\E815"}.ms-Icon--MapDirections:before{content:"\E816"}.ms-Icon--History:before{content:"\E81C"}.ms-Icon--Location:before{content:"\E81D"}.ms-Icon--Work:before{content:"\E821"}.ms-Icon--Recent:before{content:"\E823"}.ms-Icon--Hotel:before{content:"\E824"}.ms-Icon--LocationDot:before{content:"\E827"}.ms-Icon--News:before{content:"\E900"}.ms-Icon--Chat:before{content:"\E901"}.ms-Icon--Group:before{content:"\E902"}.ms-Icon--View:before{content:"\E890"}.ms-Icon--Clear:before{content:"\E894"}.ms-Icon--Sync:before{content:"\E895"}.ms-Icon--Download:before{content:"\E896"}.ms-Icon--Help:before{content:"\E897"}.ms-Icon--Upload:before{content:"\E898"}.ms-Icon--Emoji:before{content:"\E899"}.ms-Icon--MailForward:before{content:"\E89C"}.ms-Icon--ClosePane:before{content:"\E89F"}.ms-Icon--OpenPane:before{content:"\E8A0"}.ms-Icon--PreviewLink:before{content:"\E8A1"}.ms-Icon--ZoomIn:before{content:"\E8A3"}.ms-Icon--Bookmarks:before{content:"\E8A4"}.ms-Icon--Document:before{content:"\E8A5"}.ms-Icon--ProtectedDocument:before{content:"\E8A6"}.ms-Icon--OpenInNewWindow:before{content:"\E8A7"}.ms-Icon--MailFill:before{content:"\E8A8"}.ms-Icon--ViewAll:before{content:"\E8A9"}.ms-Icon--Switch:before{content:"\E8AB"}.ms-Icon--Rename:before{content:"\E8AC"}.ms-Icon--Folder:before{content:"\E8B7"}.ms-Icon--Picture:before{content:"\E8B9"}.ms-Icon--ShowResults:before{content:"\E8BC"}.ms-Icon--Message:before{content:"\E8BD"}.ms-Icon--CalendarDay:before{content:"\E8BF"}.ms-Icon--CalendarWeek:before{content:"\E8C0"}.ms-Icon--MailReplyAll:before{content:"\E8C2"}.ms-Icon--Read:before{content:"\E8C3"}.ms-Icon--PaymentCard:before{content:"\E8C7"}.ms-Icon--Copy:before{content:"\E8C8"}.ms-Icon--Important:before{content:"\E8C9"}.ms-Icon--MailReply:before{content:"\E8CA"}.ms-Icon--Sort:before{content:"\E8CB"}.ms-Icon--GotoToday:before{content:"\E8D1"}.ms-Icon--Font:before{content:"\E8D2"}.ms-Icon--FontColor:before{content:"\E8D3"}.ms-Icon--FolderFill:before{content:"\E8D5"}.ms-Icon--Permissions:before{content:"\E8D7"}.ms-Icon--DisableUpdates:before{content:"\E8D8"}.ms-Icon--Unfavorite:before{content:"\E8D9"}.ms-Icon--Italic:before{content:"\E8DB"}.ms-Icon--Underline:before{content:"\E8DC"}.ms-Icon--Bold:before{content:"\E8DD"}.ms-Icon--MoveToFolder:before{content:"\E8DE"}.ms-Icon--Dislike:before{content:"\E8E0"}.ms-Icon--Like:before{content:"\E8E1"}.ms-Icon--AlignRight:before{content:"\E8E2"}.ms-Icon--AlignCenter:before{content:"\E8E3"}.ms-Icon--AlignLeft:before{content:"\E8E4"}.ms-Icon--OpenFile:before{content:"\E8E5"}.ms-Icon--FontDecrease:before{content:"\E8E7"}.ms-Icon--FontIncrease:before{content:"\E8E8"}.ms-Icon--FontSize:before{content:"\E8E9"}.ms-Icon--CellPhone:before{content:"\E8EA"}.ms-Icon--Tag:before{content:"\E8EC"}.ms-Icon--Library:before{content:"\E8F1"}.ms-Icon--PostUpdate:before{content:"\E8F3"}.ms-Icon--NewFolder:before{content:"\E8F4"}.ms-Icon--CalendarReply:before{content:"\E8F5"}.ms-Icon--UnsyncFolder:before{content:"\E8F6"}.ms-Icon--SyncFolder:before{content:"\E8F7"}.ms-Icon--BlockContact:before{content:"\E8F8"}.ms-Icon--AddFriend:before{content:"\E8FA"}.ms-Icon--BulletedList:before{content:"\E8FD"}.ms-Icon--Preview:before{content:"\E8FF"}.ms-Icon--DockLeft:before{content:"\E90C"}.ms-Icon--DockRight:before{content:"\E90D"}.ms-Icon--Repair:before{content:"\E90F"}.ms-Icon--Accounts:before{content:"\E910"}.ms-Icon--RadioBullet:before{content:"\E915"}.ms-Icon--Stopwatch:before{content:"\E916"}.ms-Icon--Clock:before{content:"\E917"}.ms-Icon--WorldClock:before{content:"\E918"}.ms-Icon--AlarmClock:before{content:"\E919"}.ms-Icon--Hospital:before{content:"\E91D"}.ms-Icon--Timer:before{content:"\E91E"}.ms-Icon--FullCircleMask:before{content:"\E91F"}.ms-Icon--LocationFill:before{content:"\E920"}.ms-Icon--ChromeMinimize:before{content:"\E921"}.ms-Icon--Annotation:before{content:"\E924"}.ms-Icon--ChromeClose:before{content:"\E8BB"}.ms-Icon--Accept:before{content:"\E8FB"}.ms-Icon--Fingerprint:before{content:"\E928"}.ms-Icon--Handwriting:before{content:"\E929"}.ms-Icon--StackIndicator:before{content:"\E7FF"}.ms-Icon--Completed:before{content:"\E930"}.ms-Icon--Label:before{content:"\E932"}.ms-Icon--FlickDown:before{content:"\E935"}.ms-Icon--FlickUp:before{content:"\E936"}.ms-Icon--FlickLeft:before{content:"\E937"}.ms-Icon--FlickRight:before{content:"\E938"}.ms-Icon--MusicInCollection:before{content:"\E940"}.ms-Icon--OneDrive:before{content:"\E941"}.ms-Icon--CompassNW:before{content:"\E942"}.ms-Icon--Code:before{content:"\E943"}.ms-Icon--LightningBolt:before{content:"\E945"}.ms-Icon--Info:before{content:"\E946"}.ms-Icon--CalculatorAddition:before{content:"\E948"}.ms-Icon--CalculatorSubtract:before{content:"\E949"}.ms-Icon--PrintfaxPrinterFile:before{content:"\E956"}.ms-Icon--Headset:before{content:"\E95B"}.ms-Icon--Health:before{content:"\E95E"}.ms-Icon--ChevronUpSmall:before{content:"\E96D"}.ms-Icon--ChevronDownSmall:before{content:"\E96E"}.ms-Icon--ChevronLeftSmall:before{content:"\E96F"}.ms-Icon--ChevronRightSmall:before{content:"\E970"}.ms-Icon--ChevronUpMed:before{content:"\E971"}.ms-Icon--ChevronDownMed:before{content:"\E972"}.ms-Icon--ChevronLeftMed:before{content:"\E973"}.ms-Icon--ChevronRightMed:before{content:"\E974"}.ms-Icon--Dictionary:before{content:"\E82D"}.ms-Icon--ChromeBack:before{content:"\E830"}.ms-Icon--PC1:before{content:"\E977"}.ms-Icon--PresenceChickletVideo:before{content:"\E979"}.ms-Icon--Reply:before{content:"\E97A"}.ms-Icon--DoubleChevronLeftMed:before{content:"\E991"}.ms-Icon--Volume0:before{content:"\E992"}.ms-Icon--Volume1:before{content:"\E993"}.ms-Icon--Volume2:before{content:"\E994"}.ms-Icon--Volume3:before{content:"\E995"}.ms-Icon--CaretHollow:before{content:"\E817"}.ms-Icon--CaretSolid:before{content:"\E818"}.ms-Icon--FolderOpen:before{content:"\E838"}.ms-Icon--Pinned:before{content:"\E840"}.ms-Icon--PinnedFill:before{content:"\E842"}.ms-Icon--Chart:before{content:"\E999"}.ms-Icon--BidiLtr:before{content:"\E9AA"}.ms-Icon--BidiRtl:before{content:"\E9AB"}.ms-Icon--RevToggleKey:before{content:"\E845"}.ms-Icon--RightDoubleQuote:before{content:"\E9B1"}.ms-Icon--Sunny:before{content:"\E9BD"}.ms-Icon--CloudWeather:before{content:"\E9BE"}.ms-Icon--Cloudy:before{content:"\E9BF"}.ms-Icon--PartlyCloudyDay:before{content:"\E9C0"}.ms-Icon--PartlyCloudyNight:before{content:"\E9C1"}.ms-Icon--ClearNight:before{content:"\E9C2"}.ms-Icon--RainShowersDay:before{content:"\E9C3"}.ms-Icon--Rain:before{content:"\E9C4"}.ms-Icon--Thunderstorms:before{content:"\E9C6"}.ms-Icon--RainSnow:before{content:"\E9C7"}.ms-Icon--BlowingSnow:before{content:"\E9C9"}.ms-Icon--Frigid:before{content:"\E9CA"}.ms-Icon--Fog:before{content:"\E9CB"}.ms-Icon--Squalls:before{content:"\E9CC"}.ms-Icon--Duststorm:before{content:"\E9CD"}.ms-Icon--Precipitation:before{content:"\E9CF"}.ms-Icon--Ringer:before{content:"\EA8F"}.ms-Icon--PDF:before{content:"\EA90"}.ms-Icon--SortLines:before{content:"\E9D0"}.ms-Icon--Ribbon:before{content:"\E9D1"}.ms-Icon--CheckList:before{content:"\E9D5"}.ms-Icon--Generate:before{content:"\E9DA"}.ms-Icon--Equalizer:before{content:"\E9E9"}.ms-Icon--BarChartHorizontal:before{content:"\E9EB"}.ms-Icon--Freezing:before{content:"\E9EF"}.ms-Icon--SnowShowerDay:before{content:"\E9FD"}.ms-Icon--HailDay:before{content:"\EA00"}.ms-Icon--WorkFlow:before{content:"\EA01"}.ms-Icon--StoreLogoMed:before{content:"\EA04"}.ms-Icon--RainShowersNight:before{content:"\EA0F"}.ms-Icon--SnowShowerNight:before{content:"\EA11"}.ms-Icon--HailNight:before{content:"\EA13"}.ms-Icon--Info2:before{content:"\EA1F"}.ms-Icon--StoreLogo:before{content:"\EA96"}.ms-Icon--MultiSelectMirrored:before{content:"\EA98"}.ms-Icon--Broom:before{content:"\EA99"}.ms-Icon--MusicInCollectionFill:before{content:"\EA36"}.ms-Icon--List:before{content:"\EA37"}.ms-Icon--Asterisk:before{content:"\EA38"}.ms-Icon--ErrorBadge:before{content:"\EA39"}.ms-Icon--CircleRing:before{content:"\EA3A"}.ms-Icon--CircleFill:before{content:"\EA3B"}.ms-Icon--BookmarksMirrored:before{content:"\EA41"}.ms-Icon--BulletedListMirrored:before{content:"\EA42"}.ms-Icon--CaretHollowMirrored:before{content:"\EA45"}.ms-Icon--CaretSolidMirrored:before{content:"\EA46"}.ms-Icon--ChromeBackMirrored:before{content:"\EA47"}.ms-Icon--ClosePaneMirrored:before{content:"\EA49"}.ms-Icon--DockLeftMirrored:before{content:"\EA4C"}.ms-Icon--DoubleChevronLeftMedMirrored:before{content:"\EA4D"}.ms-Icon--HelpMirrored:before{content:"\EA51"}.ms-Icon--ListMirrored:before{content:"\EA55"}.ms-Icon--MailForwardMirrored:before{content:"\EA56"}.ms-Icon--MailReplyMirrored:before{content:"\EA57"}.ms-Icon--MailReplyAllMirrored:before{content:"\EA58"}.ms-Icon--OpenPaneMirrored:before{content:"\EA5B"}.ms-Icon--SendMirrored:before{content:"\EA63"}.ms-Icon--ShowResultsMirrored:before{content:"\EA65"}.ms-Icon--ThumbnailViewMirrored:before{content:"\EA67"}.ms-Icon--Devices3:before{content:"\EA6C"}.ms-Icon--Lightbulb:before{content:"\EA80"}.ms-Icon--StatusTriangle:before{content:"\EA82"}.ms-Icon--VolumeDisabled:before{content:"\EA85"}.ms-Icon--Puzzle:before{content:"\EA86"}.ms-Icon--EmojiNeutral:before{content:"\EA87"}.ms-Icon--EmojiDisappointed:before{content:"\EA88"}.ms-Icon--HomeSolid:before{content:"\EA8A"}.ms-Icon--Cocktails:before{content:"\EA9D"}.ms-Icon--Articles:before{content:"\EAC1"}.ms-Icon--Cycling:before{content:"\EAC7"}.ms-Icon--DietPlanNotebook:before{content:"\EAC8"}.ms-Icon--Pill:before{content:"\EACB"}.ms-Icon--Running:before{content:"\EADA"}.ms-Icon--Weights:before{content:"\EADB"}.ms-Icon--BarChart4:before{content:"\EAE7"}.ms-Icon--CirclePlus:before{content:"\EAEE"}.ms-Icon--Coffee:before{content:"\EAEF"}.ms-Icon--Cotton:before{content:"\EAF3"}.ms-Icon--Market:before{content:"\EAFC"}.ms-Icon--Money:before{content:"\EAFD"}.ms-Icon--PieDouble:before{content:"\EB04"}.ms-Icon--RemoveFilter:before{content:"\EB08"}.ms-Icon--StockDown:before{content:"\EB0F"}.ms-Icon--StockUp:before{content:"\EB11"}.ms-Icon--Cricket:before{content:"\EB1E"}.ms-Icon--Golf:before{content:"\EB1F"}.ms-Icon--Baseball:before{content:"\EB20"}.ms-Icon--Soccer:before{content:"\EB21"}.ms-Icon--MoreSports:before{content:"\EB22"}.ms-Icon--AutoRacing:before{content:"\EB24"}.ms-Icon--CollegeHoops:before{content:"\EB25"}.ms-Icon--CollegeFootball:before{content:"\EB26"}.ms-Icon--ProFootball:before{content:"\EB27"}.ms-Icon--ProHockey:before{content:"\EB28"}.ms-Icon--Rugby:before{content:"\EB2D"}.ms-Icon--Tennis:before{content:"\EB33"}.ms-Icon--Arrivals:before{content:"\EB34"}.ms-Icon--Design:before{content:"\EB3C"}.ms-Icon--Website:before{content:"\EB41"}.ms-Icon--Drop:before{content:"\EB42"}.ms-Icon--Snow:before{content:"\EB46"}.ms-Icon--BusSolid:before{content:"\EB47"}.ms-Icon--FerrySolid:before{content:"\EB48"}.ms-Icon--TrainSolid:before{content:"\EB4D"}.ms-Icon--Heart:before{content:"\EB51"}.ms-Icon--HeartFill:before{content:"\EB52"}.ms-Icon--Ticket:before{content:"\EB54"}.ms-Icon--Devices4:before{content:"\EB66"}.ms-Icon--AzureLogo:before{content:"\EB6A"}.ms-Icon--BingLogo:before{content:"\EB6B"}.ms-Icon--MSNLogo:before{content:"\EB6C"}.ms-Icon--OutlookLogo:before{content:"\EB6D"}.ms-Icon--OfficeLogo:before{content:"\EB6E"}.ms-Icon--SkypeLogo:before{content:"\EB6F"}.ms-Icon--Door:before{content:"\EB75"}.ms-Icon--EditMirrored:before{content:"\EB7E"}.ms-Icon--GiftCard:before{content:"\EB8E"}.ms-Icon--DoubleBookmark:before{content:"\EB8F"}.ms-Icon--StatusErrorFull:before{content:"\EB90"}.ms-Icon--Certificate:before{content:"\EB95"}.ms-Icon--Photo2:before{content:"\EB9F"}.ms-Icon--CloudDownload:before{content:"\EBD3"}.ms-Icon--WindDirection:before{content:"\EBE6"}.ms-Icon--Family:before{content:"\EBDA"}.ms-Icon--CSS:before{content:"\EBEF"}.ms-Icon--JS:before{content:"\EBF0"}.ms-Icon--ReminderGroup:before{content:"\EBF8"}.ms-Icon--Section:before{content:"\EC0C"}.ms-Icon--OneNoteLogo:before{content:"\EC0D"}.ms-Icon--ToggleFilled:before{content:"\EC11"}.ms-Icon--ToggleBorder:before{content:"\EC12"}.ms-Icon--SliderThumb:before{content:"\EC13"}.ms-Icon--ToggleThumb:before{content:"\EC14"}.ms-Icon--Documentation:before{content:"\EC17"}.ms-Icon--Badge:before{content:"\EC1B"}.ms-Icon--Giftbox:before{content:"\EC1F"}.ms-Icon--ExcelLogo:before{content:"\EC28"}.ms-Icon--WordLogo:before{content:"\EC29"}.ms-Icon--PowerPointLogo:before{content:"\EC2A"}.ms-Icon--Cafe:before{content:"\EC32"}.ms-Icon--SpeedHigh:before{content:"\EC4A"}.ms-Icon--MusicNote:before{content:"\EC4F"}.ms-Icon--EdgeLogo:before{content:"\EC60"}.ms-Icon--CompletedSolid:before{content:"\EC61"}.ms-Icon--AlbumRemove:before{content:"\EC62"}.ms-Icon--MessageFill:before{content:"\EC70"}.ms-Icon--TabletSelected:before{content:"\EC74"}.ms-Icon--MobileSelected:before{content:"\EC75"}.ms-Icon--LaptopSelected:before{content:"\EC76"}.ms-Icon--TVMonitorSelected:before{content:"\EC77"}.ms-Icon--DeveloperTools:before{content:"\EC7A"}.ms-Icon--InsertTextBox:before{content:"\EC7D"}.ms-Icon--LowerBrightness:before{content:"\EC8A"}.ms-Icon--CloudUpload:before{content:"\EC8E"}.ms-Icon--DateTime:before{content:"\EC92"}.ms-Icon--Event:before{content:"\ECA3"}.ms-Icon--Cake:before{content:"\ECA4"}.ms-Icon--Tiles:before{content:"\ECA5"}.ms-Icon--Org:before{content:"\ECA6"}.ms-Icon--PartyLeader:before{content:"\ECA7"}.ms-Icon--DRM:before{content:"\ECA8"}.ms-Icon--CloudAdd:before{content:"\ECA9"}.ms-Icon--AppIconDefault:before{content:"\ECAA"}.ms-Icon--Photo2Add:before{content:"\ECAB"}.ms-Icon--Photo2Remove:before{content:"\ECAC"}.ms-Icon--POI:before{content:"\ECAF"}.ms-Icon--FacebookLogo:before{content:"\ECB3"}.ms-Icon--AddTo:before{content:"\ECC8"}.ms-Icon--RadioBtnOn:before{content:"\ECCB"}.ms-Icon--Embed:before{content:"\ECCE"}.ms-Icon--VideoSolid:before{content:"\EA0C"}.ms-Icon--Teamwork:before{content:"\EA12"}.ms-Icon--PeopleAdd:before{content:"\EA15"}.ms-Icon--Glasses:before{content:"\EA16"}.ms-Icon--DateTime2:before{content:"\EA17"}.ms-Icon--Shield:before{content:"\EA18"}.ms-Icon--Header1:before{content:"\EA19"}.ms-Icon--PageAdd:before{content:"\EA1A"}.ms-Icon--NumberedList:before{content:"\EA1C"}.ms-Icon--PowerBILogo:before{content:"\EA1E"}.ms-Icon--Product:before{content:"\ECDC"}.ms-Icon--Blocked2:before{content:"\ECE4"}.ms-Icon--FangBody:before{content:"\ECEB"}.ms-Icon--Glimmer:before{content:"\ECF4"}.ms-Icon--ChatInviteFriend:before{content:"\ECFE"}.ms-Icon--SharepointLogo:before{content:"\ED18"}.ms-Icon--YammerLogo:before{content:"\ED19"}.ms-Icon--Hide:before{content:"\ED1A"}.ms-Icon--ReturnToSession:before{content:"\ED24"}.ms-Icon--OpenFolderHorizontal:before{content:"\ED25"}.ms-Icon--CalendarMirrored:before{content:"\ED28"}.ms-Icon--SwayLogo:before{content:"\ED29"}.ms-Icon--OutOfOffice:before{content:"\ED34"}.ms-Icon--Trophy:before{content:"\ED3F"}.ms-Icon--ReopenPages:before{content:"\ED50"}.ms-Icon--AADLogo:before{content:"\ED68"}.ms-Icon--AccessLogo:before{content:"\ED69"}.ms-Icon--AdminALogo:before{content:"\ED6A"}.ms-Icon--AdminCLogo:before{content:"\ED6B"}.ms-Icon--AdminDLogo:before{content:"\ED6C"}.ms-Icon--AdminELogo:before{content:"\ED6D"}.ms-Icon--AdminLLogo:before{content:"\ED6E"}.ms-Icon--AdminMLogo:before{content:"\ED6F"}.ms-Icon--AdminOLogo:before{content:"\ED70"}.ms-Icon--AdminPLogo:before{content:"\ED71"}.ms-Icon--AdminSLogo:before{content:"\ED72"}.ms-Icon--AdminYLogo:before{content:"\ED73"}.ms-Icon--AlchemyLogo:before{content:"\ED74"}.ms-Icon--BoxLogo:before{content:"\ED75"}.ms-Icon--DelveLogo:before{content:"\ED76"}.ms-Icon--DropboxLogo:before{content:"\ED77"}.ms-Icon--ExchangeLogo:before{content:"\ED78"}.ms-Icon--LyncLogo:before{content:"\ED79"}.ms-Icon--OfficeVideoLogo:before{content:"\ED7A"}.ms-Icon--ParatureLogo:before{content:"\ED7B"}.ms-Icon--SocialListeningLogo:before{content:"\ED7C"}.ms-Icon--VisioLogo:before{content:"\ED7D"}.ms-Icon--Balloons:before{content:"\ED7E"}.ms-Icon--Cat:before{content:"\ED7F"}.ms-Icon--MailAlert:before{content:"\ED80"}.ms-Icon--MailCheck:before{content:"\ED81"}.ms-Icon--MailLowImportance:before{content:"\ED82"}.ms-Icon--MailPause:before{content:"\ED83"}.ms-Icon--MailRepeat:before{content:"\ED84"}.ms-Icon--SecurityGroup:before{content:"\ED85"}.ms-Icon--Table:before{content:"\ED86"}.ms-Icon--VoicemailForward:before{content:"\ED87"}.ms-Icon--VoicemailReply:before{content:"\ED88"}.ms-Icon--Waffle:before{content:"\ED89"}.ms-Icon--RemoveEvent:before{content:"\ED8A"}.ms-Icon--EventInfo:before{content:"\ED8B"}.ms-Icon--ForwardEvent:before{content:"\ED8C"}.ms-Icon--WipePhone:before{content:"\ED8D"}.ms-Icon--AddOnlineMeeting:before{content:"\ED8E"}.ms-Icon--JoinOnlineMeeting:before{content:"\ED8F"}.ms-Icon--RemoveLink:before{content:"\ED90"}.ms-Icon--PeopleBlock:before{content:"\ED91"}.ms-Icon--PeopleRepeat:before{content:"\ED92"}.ms-Icon--PeopleAlert:before{content:"\ED93"}.ms-Icon--PeoplePause:before{content:"\ED94"}.ms-Icon--TransferCall:before{content:"\ED95"}.ms-Icon--AddPhone:before{content:"\ED96"}.ms-Icon--UnknownCall:before{content:"\ED97"}.ms-Icon--NoteReply:before{content:"\ED98"}.ms-Icon--NoteForward:before{content:"\ED99"}.ms-Icon--NotePinned:before{content:"\ED9A"}.ms-Icon--RemoveOccurrence:before{content:"\ED9B"}.ms-Icon--Timeline:before{content:"\ED9C"}.ms-Icon--EditNote:before{content:"\ED9D"}.ms-Icon--CircleHalfFull:before{content:"\ED9E"}.ms-Icon--Room:before{content:"\ED9F"}.ms-Icon--Unsubscribe:before{content:"\EDA0"}.ms-Icon--Subscribe:before{content:"\EDA1"}.ms-Icon--RecurringTask:before{content:"\EDB2"}.ms-Icon--TaskManager:before{content:"\EDB7"}.ms-Icon--TaskManagerMirrored:before{content:"\EDB8"}.ms-Icon--Combine:before{content:"\EDBB"}.ms-Icon--Split:before{content:"\EDBC"}.ms-Icon--DoubleChevronUp:before{content:"\EDBD"}.ms-Icon--DoubleChevronLeft:before{content:"\EDBE"}.ms-Icon--DoubleChevronRight:before{content:"\EDBF"}.ms-Icon--Ascending:before{content:"\EDC0"}.ms-Icon--Descending:before{content:"\EDC1"}.ms-Icon--TextBox:before{content:"\EDC2"}.ms-Icon--TextField:before{content:"\EDC3"}.ms-Icon--NumberField:before{content:"\EDC4"}.ms-Icon--Dropdown:before{content:"\EDC5"}.ms-Icon--BookingsLogo:before{content:"\EDC7"}.ms-Icon--ClassNotebookLogo:before{content:"\EDC8"}.ms-Icon--CollabsDBLogo:before{content:"\EDC9"}.ms-Icon--DelveAnalyticsLogo:before{content:"\EDCA"}.ms-Icon--DocsLogo:before{content:"\EDCB"}.ms-Icon--Dynamics365Logo:before{content:"\EDCC"}.ms-Icon--DynamicSMBLogo:before{content:"\EDCD"}.ms-Icon--OfficeAssistantLogo:before{content:"\EDCE"}.ms-Icon--OfficeStoreLogo:before{content:"\EDCF"}.ms-Icon--OneNoteEduLogo:before{content:"\EDD0"}.ms-Icon--Planner:before{content:"\EDD1"}.ms-Icon--PowerApps:before{content:"\EDD2"}.ms-Icon--Suitcase:before{content:"\EDD3"}.ms-Icon--ProjectLogo:before{content:"\EDD4"}.ms-Icon--CaretLeft8:before{content:"\EDD5"}.ms-Icon--CaretRight8:before{content:"\EDD6"}.ms-Icon--CaretUp8:before{content:"\EDD7"}.ms-Icon--CaretDown8:before{content:"\EDD8"}.ms-Icon--CaretLeftSolid8:before{content:"\EDD9"}.ms-Icon--CaretRightSolid8:before{content:"\EDDA"}.ms-Icon--CaretUpSolid8:before{content:"\EDDB"}.ms-Icon--CaretDownSolid8:before{content:"\EDDC"}.ms-Icon--ClearFormatting:before{content:"\EDDD"}.ms-Icon--Superscript:before{content:"\EDDE"}.ms-Icon--Subscript:before{content:"\EDDF"}.ms-Icon--Strikethrough:before{content:"\EDE0"}.ms-Icon--SingleBookmark:before{content:"\EDFF"}.ms-Icon--DoubleChevronDown:before{content:"\EE04"}.ms-Icon--ReplyAll:before{content:"\EE0A"}.ms-Icon--GoogleDriveLogo:before{content:"\EE0B"}.ms-Icon--Questionnaire:before{content:"\EE19"}.ms-Icon--ReplyMirrored:before{content:"\EE35"}.ms-Icon--ReplyAllMirrored:before{content:"\EE36"}.ms-Icon--AddGroup:before{content:"\EE3D"}.ms-Icon--QuestionnaireMirrored:before{content:"\EE4B"}.ms-Icon--TemporaryUser:before{content:"\EE58"}.ms-Icon--GroupedDescending:before{content:"\EE66"}.ms-Icon--GroupedAscending:before{content:"\EE67"}.ms-Icon--SortUp:before{content:"\EE68"}.ms-Icon--SortDown:before{content:"\EE69"}.ms-Icon--AwayStatus:before{content:"\EE6A"}.ms-Icon--SyncToPC:before{content:"\EE6E"}.ms-Icon--AustralianRules:before{content:"\EE70"}.ms-Icon--DateTimeMirrored:before{content:"\EE93"}.ms-Icon--DoubleChevronUp12:before{content:"\EE96"}.ms-Icon--DoubleChevronDown12:before{content:"\EE97"}.ms-Icon--DoubleChevronLeft12:before{content:"\EE98"}.ms-Icon--DoubleChevronRight12:before{content:"\EE99"}.ms-Icon--CalendarAgenda:before{content:"\EE9A"}.ms-Icon--AddEvent:before{content:"\EEB5"}.ms-Icon--AssetLibrary:before{content:"\EEB6"}.ms-Icon--DataConnectionLibrary:before{content:"\EEB7"}.ms-Icon--DocLibrary:before{content:"\EEB8"}.ms-Icon--FormLibrary:before{content:"\EEB9"}.ms-Icon--FormLibraryMirrored:before{content:"\EEBA"}.ms-Icon--ReportLibrary:before{content:"\EEBB"}.ms-Icon--ReportLibraryMirrored:before{content:"\EEBC"}.ms-Icon--ContactCard:before{content:"\EEBD"}.ms-Icon--CustomList:before{content:"\EEBE"}.ms-Icon--CustomListMirrored:before{content:"\EEBF"}.ms-Icon--IssueTracking:before{content:"\EEC0"}.ms-Icon--IssueTrackingMirrored:before{content:"\EEC1"}.ms-Icon--PictureLibrary:before{content:"\EEC2"}.ms-Icon--AppForOfficeLogo:before{content:"\EEC7"}.ms-Icon--OfflineOneDriveParachute:before{content:"\EEC8"}.ms-Icon--OfflineOneDriveParachuteDisabled:before{content:"\EEC9"}.ms-Icon--LargeGrid:before{content:"\EECB"}.ms-Icon--TriangleSolidUp12:before{content:"\EECC"}.ms-Icon--TriangleSolidDown12:before{content:"\EECD"}.ms-Icon--TriangleSolidLeft12:before{content:"\EECE"}.ms-Icon--TriangleSolidRight12:before{content:"\EECF"}.ms-Icon--TriangleUp12:before{content:"\EED0"}.ms-Icon--TriangleDown12:before{content:"\EED1"}.ms-Icon--TriangleLeft12:before{content:"\EED2"}.ms-Icon--TriangleRight12:before{content:"\EED3"}.ms-Icon--ArrowUpRight8:before{content:"\EED4"}.ms-Icon--ArrowDownRight8:before{content:"\EED5"}.ms-Icon--DocumentSet:before{content:"\EED6"}.ms-Icon--DelveAnalytics:before{content:"\EEEE"}.ms-Icon--ArrowUpRightMirrored8:before{content:"\EEEF"}.ms-Icon--ArrowDownRightMirrored8:before{content:"\EEF0"}.ms-Icon--OneDriveAdd:before{content:"\EF32"}.ms-Icon--Header2:before{content:"\EF36"}.ms-Icon--Header3:before{content:"\EF37"}.ms-Icon--Header4:before{content:"\EF38"}.ms-Icon--MarketDown:before{content:"\EF42"}.ms-Icon--CalendarWorkWeek:before{content:"\EF51"}.ms-Icon--SidePanel:before{content:"\EF52"}.ms-Icon--GlobeFavorite:before{content:"\EF53"}.ms-Icon--CaretTopLeftSolid8:before{content:"\EF54"}.ms-Icon--CaretTopRightSolid8:before{content:"\EF55"}.ms-Icon--ViewAll2:before{content:"\EF56"}.ms-Icon--DocumentReply:before{content:"\EF57"}.ms-Icon--PlayerSettings:before{content:"\EF58"}.ms-Icon--ReceiptForward:before{content:"\EF59"}.ms-Icon--ReceiptReply:before{content:"\EF5A"}.ms-Icon--ReceiptCheck:before{content:"\EF5B"}.ms-Icon--Fax:before{content:"\EF5C"}.ms-Icon--RecurringEvent:before{content:"\EF5D"}.ms-Icon--ReplyAlt:before{content:"\EF5E"}.ms-Icon--ReplyAllAlt:before{content:"\EF5F"}.ms-Icon--EditStyle:before{content:"\EF60"}.ms-Icon--EditMail:before{content:"\EF61"}.ms-Icon--Lifesaver:before{content:"\EF62"}.ms-Icon--LifesaverLock:before{content:"\EF63"}.ms-Icon--InboxCheck:before{content:"\EF64"}.ms-Icon--FolderSearch:before{content:"\EF65"}.ms-Icon--CollapseMenu:before{content:"\EF66"}.ms-Icon--ExpandMenu:before{content:"\EF67"}.ms-Icon--Boards:before{content:"\EF68"}.ms-Icon--SunAdd:before{content:"\EF69"}.ms-Icon--SunQuestionMark:before{content:"\EF6A"}.ms-Icon--LandscapeOrientation:before{content:"\EF6B"}.ms-Icon--DocumentSearch:before{content:"\EF6C"}.ms-Icon--PublicCalendar:before{content:"\EF6D"}.ms-Icon--PublicContactCard:before{content:"\EF6E"}.ms-Icon--PublicEmail:before{content:"\EF6F"}.ms-Icon--PublicFolder:before{content:"\EF70"}.ms-Icon--WordDocument:before{content:"\EF71"}.ms-Icon--PowerPointDocument:before{content:"\EF72"}.ms-Icon--ExcelDocument:before{content:"\EF73"}.ms-Icon--GroupedList:before{content:"\EF74"}.ms-Icon--ClassroomLogo:before{content:"\EF75"}.ms-Icon--Sections:before{content:"\EF76"}.ms-Icon--EditPhoto:before{content:"\EF77"}.ms-Icon--Starburst:before{content:"\EF78"}.ms-Icon--ShareiOS:before{content:"\EF79"}.ms-Icon--AirTickets:before{content:"\EF7A"}.ms-Icon--PencilReply:before{content:"\EF7B"}.ms-Icon--Tiles2:before{content:"\EF7C"}.ms-Icon--SkypeCircleCheck:before{content:"\EF7D"}.ms-Icon--SkypeCircleClock:before{content:"\EF7E"}.ms-Icon--SkypeCircleMinus:before{content:"\EF7F"}.ms-Icon--SkypeCheck:before{content:"\EF80"}.ms-Icon--SkypeClock:before{content:"\EF81"}.ms-Icon--SkypeMinus:before{content:"\EF82"}.ms-Icon--SkypeMessage:before{content:"\EF83"}.ms-Icon--ClosedCaption:before{content:"\EF84"}.ms-Icon--ATPLogo:before{content:"\EF85"}.ms-Icon--OfficeFormLogo:before{content:"\EF86"}.ms-Icon--RecycleBin:before{content:"\EF87"}.ms-Icon--EmptyRecycleBin:before{content:"\EF88"}.ms-Icon--Hide2:before{content:"\EF89"}.ms-Icon--iOSAppStoreLogo:before{content:"\EF8A"}.ms-Icon--AndroidLogo:before{content:"\EF8B"}.ms-Icon--Breadcrumb:before{content:"\EF8C"}.ms-Icon--ClearFilter:before{content:"\EF8F"}.ms-Icon--Flow:before{content:"\EF90"}.ms-Icon--PageCheckedOut:before{content:"\F02C"}.ms-Icon--SetAction:before{content:"\F071"}.ms-Icon--PowerAppsLogo:before{content:"\F091"}.ms-Icon--PowerApps2Logo:before{content:"\F092"}.ms-Icon--FabricAssetLibrary:before{content:"\F09C"}.ms-Icon--FabricDataConnectionLibrary:before{content:"\F09D"}.ms-Icon--FabricDocLibrary:before{content:"\F09E"}.ms-Icon--FabricFormLibrary:before{content:"\F09F"}.ms-Icon--FabricFormLibraryMirrored:before{content:"\F0A0"}.ms-Icon--FabricReportLibrary:before{content:"\F0A1"}.ms-Icon--FabricReportLibraryMirrored:before{content:"\F0A2"}.ms-Icon--FabricPublicFolder:before{content:"\F0A3"}.ms-Icon--FabricFolderSearch:before{content:"\F0A4"}.ms-Icon--FabricMovetoFolder:before{content:"\F0A5"}.ms-Icon--FabricUnsyncFolder:before{content:"\F0A6"}.ms-Icon--FabricSyncFolder:before{content:"\F0A7"}.ms-Icon--FabricOpenFolderHorizontal:before{content:"\F0A8"}.ms-Icon--FabricFolder:before{content:"\F0A9"}.ms-Icon--FabricFolderFill:before{content:"\F0AA"}.ms-Icon--FabricNewFolder:before{content:"\F0AB"}.ms-Icon--FabricPictureLibrary:before{content:"\F0AC"}.ms-Icon--AddFavorite:before{content:"\F0C8"}.ms-Icon--AddFavoriteFill:before{content:"\F0C9"}.ms-Icon--BufferTimeBefore:before{content:"\F0CF"}.ms-Icon--BufferTimeAfter:before{content:"\F0D0"}.ms-Icon--BufferTimeBoth:before{content:"\F0D1"}.ms-Icon--PageCheckedin:before{content:"\F104"}.ms-Icon--CaretBottomLeftSolid8:before{content:"\F121"}.ms-Icon--CaretBottomRightSolid8:before{content:"\F122"}.ms-Icon--FolderHorizontal:before{content:"\F12B"}.ms-Icon--MicrosoftStaffhubLogo:before{content:"\F130"}.ms-Icon--CaloriesAdd:before{content:"\F172"}.ms-Icon--BranchFork:before{content:"\F173"}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x1.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x1.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x1.png)}.ms-BrandIcon--Icon16{width:16px;height:16px}html[dir] .ms-BrandIcon--Icon16{background-size:100% 100%}.ms-BrandIcon--Icon48{width:48px;height:48px}html[dir] .ms-BrandIcon--Icon48{background-size:100% 100%}.ms-BrandIcon--Icon96{width:96px;height:96px}html[dir] .ms-BrandIcon--Icon96{background-size:100% 100%}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x1_5.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x1_5.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x1_5.png)}}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:192dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x2.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x2.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x2.png)}}@media only screen and (-webkit-min-device-pixel-ratio:3),only screen and (min-resolution:288dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x3.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x3.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x3.png)}}.ms-u-slideRightIn10{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn10{animation-name:fadeIn,slideRightIn10}html[dir=rtl] .ms-u-slideRightIn10{animation-name:fadeIn-rtl,slideRightIn10-rtl}@keyframes slideRightIn10-rtl{0%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn10{0%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn20{animation-name:fadeIn,slideRightIn20}html[dir=rtl] .ms-u-slideRightIn20{animation-name:fadeIn-rtl,slideRightIn20-rtl}@keyframes slideRightIn20-rtl{0%{transform:translate3d(20px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn20{0%{transform:translate3d(-20px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn40{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn40{animation-name:fadeIn,slideRightIn40}html[dir=rtl] .ms-u-slideRightIn40{animation-name:fadeIn-rtl,slideRightIn40-rtl}@keyframes slideRightIn40-rtl{0%{transform:translate3d(40px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn40{0%{transform:translate3d(-40px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn10{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn10{animation-name:fadeIn,slideLeftIn10}html[dir=rtl] .ms-u-slideLeftIn10{animation-name:fadeIn-rtl,slideLeftIn10-rtl}@keyframes slideLeftIn10-rtl{0%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn10{0%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn20{animation-name:fadeIn,slideLeftIn20}html[dir=rtl] .ms-u-slideLeftIn20{animation-name:fadeIn-rtl,slideLeftIn20-rtl}@keyframes slideLeftIn20-rtl{0%{transform:translate3d(-20px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn20{0%{transform:translate3d(20px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn40{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn40{animation-name:fadeIn,slideLeftIn40}html[dir=rtl] .ms-u-slideLeftIn40{animation-name:fadeIn-rtl,slideLeftIn40-rtl}@keyframes slideLeftIn40-rtl{0%{transform:translate3d(-40px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn40{0%{transform:translate3d(40px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn400{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn400{animation-name:fadeIn,slideRightIn400}html[dir=rtl] .ms-u-slideRightIn400{animation-name:fadeIn-rtl,slideRightIn400-rtl}@keyframes slideRightIn400-rtl{0%{transform:translate3d(400px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn400{0%{transform:translate3d(-400px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn400{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn400{animation-name:fadeIn,slideLeft400}html[dir=rtl] .ms-u-slideLeftIn400{animation-name:fadeIn-rtl,slideLeft400-rtl}@keyframes slideLeft400-rtl{0%{transform:translate3d(-400px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeft400{0%{transform:translate3d(400px,0,0)}to{transform:translateZ(0)}}.ms-u-slideUpIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpIn20{animation-name:fadeIn,slideUpIn20}html[dir=rtl] .ms-u-slideUpIn20{animation-name:fadeIn-rtl,slideUpIn20-rtl}@keyframes slideUpIn20-rtl{0%{transform:translate3d(0,20px,0)}to{transform:translateZ(0)}}@keyframes slideUpIn20{0%{transform:translate3d(0,20px,0)}to{transform:translateZ(0)}}.ms-u-slideUpIn10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpIn10{animation-name:fadeIn,slideUpIn10}html[dir=rtl] .ms-u-slideUpIn10{animation-name:fadeIn-rtl,slideUpIn10-rtl}@keyframes slideUpIn10-rtl{0%{transform:translate3d(0,10px,0)}to{transform:translateZ(0)}}@keyframes slideUpIn10{0%{transform:translate3d(0,10px,0)}to{transform:translateZ(0)}}.ms-u-slideDownIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownIn20{animation-name:fadeIn,slideDownIn20}html[dir=rtl] .ms-u-slideDownIn20{animation-name:fadeIn-rtl,slideDownIn20-rtl}@keyframes slideDownIn20-rtl{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}@keyframes slideDownIn20{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}.ms-u-slideDownIn10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownIn10{animation-name:fadeIn,slideDownIn10}html[dir=rtl] .ms-u-slideDownIn10{animation-name:fadeIn-rtl,slideDownIn10-rtl}@keyframes slideDownIn10-rtl{0%{transform:translate3d(0,-10px,0)}to{transform:translateZ(0)}}@keyframes slideDownIn10{0%{transform:translate3d(0,-10px,0)}to{transform:translateZ(0)}}.ms-u-slideRightOut40{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightOut40{animation-name:fadeOut,slideRightOut40}html[dir=rtl] .ms-u-slideRightOut40{animation-name:fadeOut-rtl,slideRightOut40-rtl}@keyframes slideRightOut40-rtl{0%{transform:translateZ(0)}to{transform:translate3d(-40px,0,0)}}@keyframes slideRightOut40{0%{transform:translateZ(0)}to{transform:translate3d(40px,0,0)}}.ms-u-slideLeftOut40{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftOut40{animation-name:fadeOut,slideLeftOut40}html[dir=rtl] .ms-u-slideLeftOut40{animation-name:fadeOut-rtl,slideLeftOut40-rtl}@keyframes slideLeftOut40-rtl{0%{transform:translateZ(0)}to{transform:translate3d(40px,0,0)}}@keyframes slideLeftOut40{0%{transform:translateZ(0)}to{transform:translate3d(-40px,0,0)}}.ms-u-slideRightOut400{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightOut400{animation-name:fadeOut,slideRightOut400}html[dir=rtl] .ms-u-slideRightOut400{animation-name:fadeOut-rtl,slideRightOut400-rtl}@keyframes slideRightOut400-rtl{0%{transform:translateZ(0)}to{transform:translate3d(-400px,0,0)}}@keyframes slideRightOut400{0%{transform:translateZ(0)}to{transform:translate3d(400px,0,0)}}.ms-u-slideLeftOut400{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftOut400{animation-name:fadeOut,slideLeftOut400}html[dir=rtl] .ms-u-slideLeftOut400{animation-name:fadeOut-rtl,slideLeftOut400-rtl}@keyframes slideLeftOut400-rtl{0%{transform:translateZ(0)}to{transform:translate3d(400px,0,0)}}@keyframes slideLeftOut400{0%{transform:translateZ(0)}to{transform:translate3d(-400px,0,0)}}.ms-u-slideUpOut20{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpOut20{animation-name:fadeOut,slideUpOut20}html[dir=rtl] .ms-u-slideUpOut20{animation-name:fadeOut-rtl,slideUpOut20-rtl}@keyframes slideUpOut20-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}@keyframes slideUpOut20{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}.ms-u-slideUpOut10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpOut10{animation-name:fadeOut,slideUpOut10}html[dir=rtl] .ms-u-slideUpOut10{animation-name:fadeOut-rtl,slideUpOut10-rtl}@keyframes slideUpOut10-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,-10px,0)}}@keyframes slideUpOut10{0%{transform:translateZ(0)}to{transform:translate3d(0,-10px,0)}}.ms-u-slideDownOut20{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownOut20{animation-name:fadeOut,slideDownOut20}html[dir=rtl] .ms-u-slideDownOut20{animation-name:fadeOut-rtl,slideDownOut20-rtl}@keyframes slideDownOut20-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,20px,0)}}@keyframes slideDownOut20{0%{transform:translateZ(0)}to{transform:translate3d(0,20px,0)}}.ms-u-slideDownOut10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownOut10{animation-name:fadeOut,slideDownOut10}html[dir=rtl] .ms-u-slideDownOut10{animation-name:fadeOut-rtl,slideDownOut10-rtl}@keyframes slideDownOut10-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,10px,0)}}@keyframes slideDownOut10{0%{transform:translateZ(0)}to{transform:translate3d(0,10px,0)}}.ms-u-scaleUpIn100{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleUpIn100{animation-name:fadeIn,scaleUp100}html[dir=rtl] .ms-u-scaleUpIn100{animation-name:fadeIn-rtl,scaleUp100-rtl}@keyframes scaleUp100-rtl{0%{transform:scale3d(.98,.98,1)}to{transform:scaleX(1)}}@keyframes scaleUp100{0%{transform:scale3d(.98,.98,1)}to{transform:scaleX(1)}}.ms-u-scaleDownIn100{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleDownIn100{animation-name:fadeIn,scaleDown100}html[dir=rtl] .ms-u-scaleDownIn100{animation-name:fadeIn-rtl,scaleDown100-rtl}@keyframes scaleDown100-rtl{0%{transform:scale3d(1.03,1.03,1)}to{transform:scaleX(1)}}@keyframes scaleDown100{0%{transform:scale3d(1.03,1.03,1)}to{transform:scaleX(1)}}.ms-u-scaleUpOut103{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleUpOut103{animation-name:fadeOut,scaleUp103}html[dir=rtl] .ms-u-scaleUpOut103{animation-name:fadeOut-rtl,scaleUp103-rtl}@keyframes scaleUp103-rtl{0%{transform:scaleX(1)}to{transform:scale3d(1.03,1.03,1)}}@keyframes scaleUp103{0%{transform:scaleX(1)}to{transform:scale3d(1.03,1.03,1)}}.ms-u-scaleDownOut98{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleDownOut98{animation-name:fadeOut,scaleDown98}html[dir=rtl] .ms-u-scaleDownOut98{animation-name:fadeOut-rtl,scaleDown98-rtl}@keyframes scaleDown98-rtl{0%{transform:scaleX(1)}to{transform:scale3d(.98,.98,1)}}@keyframes scaleDown98{0%{transform:scaleX(1)}to{transform:scale3d(.98,.98,1)}}.ms-u-fadeIn400{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both}html[dir=ltr] .ms-u-fadeIn400{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn400{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn100{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.167s}html[dir=ltr] .ms-u-fadeIn100{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn100{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn200{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.267s}html[dir=ltr] .ms-u-fadeIn200{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn200{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn500{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.467s}html[dir=ltr] .ms-u-fadeIn500{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn500{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}@keyframes fadeIn-rtl{0%{opacity:0;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:1}}@keyframes fadeIn{0%{opacity:0;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:1}}.ms-u-fadeOut400{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both}html[dir=ltr] .ms-u-fadeOut400{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut400{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut100{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.1s}html[dir=ltr] .ms-u-fadeOut100{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut100{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut200{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.167s}html[dir=ltr] .ms-u-fadeOut200{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut200{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut500{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.467s}html[dir=ltr] .ms-u-fadeOut500{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut500{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}@keyframes fadeOut-rtl{0%{opacity:1;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:0}}@keyframes fadeOut{0%{opacity:1;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:0}}.ms-u-rotate90deg{-webkit-animation-duration:.1s;-moz-animation-duration:.1s;-ms-animation-duration:.1s;-o-animation-duration:.1s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-rotate90deg{animation-name:rotate90}html[dir=rtl] .ms-u-rotate90deg{animation-name:rotate90-rtl}@keyframes rotate90-rtl{0%{transform:rotate(0deg)}to{transform:rotate(-90deg)}}@keyframes rotate90{0%{transform:rotate(0deg)}to{transform:rotate(90deg)}}.ms-u-rotateN90deg{-webkit-animation-duration:.1s;-moz-animation-duration:.1s;-ms-animation-duration:.1s;-o-animation-duration:.1s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-rotateN90deg{animation-name:rotateN90}html[dir=rtl] .ms-u-rotateN90deg{animation-name:rotateN90-rtl}@keyframes rotateN90-rtl{0%{transform:rotate(-90deg)}to{transform:rotate(0deg)}}@keyframes rotateN90{0%{transform:rotate(90deg)}to{transform:rotate(0deg)}}html[dir] .ms-u-expandCollapse400{transition:height .367s cubic-bezier(.1,.25,.75,.9)}html[dir] .ms-u-expandCollapse200{transition:height .167s cubic-bezier(.1,.25,.75,.9)}html[dir] .ms-u-expandCollapse100{transition:height .1s cubic-bezier(.1,.25,.75,.9)}.ms-u-delay100{animation-delay:.167s}.ms-u-delay200{animation-delay:.267s}@media (max-width:479px){.ms-u-hiddenLgDown,.ms-u-hiddenMdDown,.ms-u-hiddenSm,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:480px) and (max-width:639px){.ms-u-hiddenLgDown,.ms-u-hiddenMd,.ms-u-hiddenMdDown,.ms-u-hiddenMdUp,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:640px) and (max-width:1023px){.ms-u-hiddenLg,.ms-u-hiddenLgDown,.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:1024px) and (max-width:1365px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXl,.ms-u-hiddenXlDown,.ms-u-hiddenXlUp,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:1366px) and (max-width:1919px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlUp,.ms-u-hiddenXxl,.ms-u-hiddenXxlDown,.ms-u-hiddenXxlUp{display:none!important}}@media (min-width:1920px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlUp,.ms-u-hiddenXxlUp,.ms-u-hiddenXxxl{display:none!important}}.ms-u-sm12{width:100%}.ms-u-sm11{width:91.66666666666666%}.ms-u-sm10{width:83.33333333333334%}.ms-u-sm9{width:75%}.ms-u-sm8{width:66.66666666666666%}.ms-u-sm7{width:58.333333333333336%}.ms-u-sm6{width:50%}.ms-u-sm5{width:41.66666666666667%}.ms-u-sm4{width:33.33333333333333%}.ms-u-sm3{width:25%}.ms-u-sm2{width:16.666666666666664%}.ms-u-sm1{width:8.333333333333332%}html[dir=ltr] .ms-u-smPull12{right:100%}html[dir=rtl] .ms-u-smPull12{left:100%}html[dir=ltr] .ms-u-smPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-smPull11{left:91.66666666666666%}html[dir=ltr] .ms-u-smPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-smPull10{left:83.33333333333334%}html[dir=ltr] .ms-u-smPull9{right:75%}html[dir=rtl] .ms-u-smPull9{left:75%}html[dir=ltr] .ms-u-smPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-smPull8{left:66.66666666666666%}html[dir=ltr] .ms-u-smPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-smPull7{left:58.333333333333336%}html[dir=ltr] .ms-u-smPull6{right:50%}html[dir=rtl] .ms-u-smPull6{left:50%}html[dir=ltr] .ms-u-smPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-smPull5{left:41.66666666666667%}html[dir=ltr] .ms-u-smPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-smPull4{left:33.33333333333333%}html[dir=ltr] .ms-u-smPull3{right:25%}html[dir=rtl] .ms-u-smPull3{left:25%}html[dir=ltr] .ms-u-smPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-smPull2{left:16.666666666666664%}html[dir=ltr] .ms-u-smPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-smPull1{left:8.333333333333332%}html[dir=ltr] .ms-u-smPull0{right:auto}html[dir=rtl] .ms-u-smPull0{left:auto}html[dir=ltr] .ms-u-smPush12{left:100%}html[dir=rtl] .ms-u-smPush12{right:100%}html[dir=ltr] .ms-u-smPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-smPush11{right:91.66666666666666%}html[dir=ltr] .ms-u-smPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-smPush10{right:83.33333333333334%}html[dir=ltr] .ms-u-smPush9{left:75%}html[dir=rtl] .ms-u-smPush9{right:75%}html[dir=ltr] .ms-u-smPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-smPush8{right:66.66666666666666%}html[dir=ltr] .ms-u-smPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-smPush7{right:58.333333333333336%}html[dir=ltr] .ms-u-smPush6{left:50%}html[dir=rtl] .ms-u-smPush6{right:50%}html[dir=ltr] .ms-u-smPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-smPush5{right:41.66666666666667%}html[dir=ltr] .ms-u-smPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-smPush4{right:33.33333333333333%}html[dir=ltr] .ms-u-smPush3{left:25%}html[dir=rtl] .ms-u-smPush3{right:25%}html[dir=ltr] .ms-u-smPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-smPush2{right:16.666666666666664%}html[dir=ltr] .ms-u-smPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-smPush1{right:8.333333333333332%}html[dir=ltr] .ms-u-smPush0{left:auto}html[dir=rtl] .ms-u-smPush0{right:auto}html[dir=ltr] .ms-u-smOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-smOffset11{margin-right:91.66666666666666%}html[dir=ltr] .ms-u-smOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-smOffset10{margin-right:83.33333333333334%}html[dir=ltr] .ms-u-smOffset9{margin-left:75%}html[dir=rtl] .ms-u-smOffset9{margin-right:75%}html[dir=ltr] .ms-u-smOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-smOffset8{margin-right:66.66666666666666%}html[dir=ltr] .ms-u-smOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-smOffset7{margin-right:58.333333333333336%}html[dir=ltr] .ms-u-smOffset6{margin-left:50%}html[dir=rtl] .ms-u-smOffset6{margin-right:50%}html[dir=ltr] .ms-u-smOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-smOffset5{margin-right:41.66666666666667%}html[dir=ltr] .ms-u-smOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-smOffset4{margin-right:33.33333333333333%}html[dir=ltr] .ms-u-smOffset3{margin-left:25%}html[dir=rtl] .ms-u-smOffset3{margin-right:25%}html[dir=ltr] .ms-u-smOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-smOffset2{margin-right:16.666666666666664%}html[dir=ltr] .ms-u-smOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-smOffset1{margin-right:8.333333333333332%}html[dir=ltr] .ms-u-smOffset0{margin-left:0}html[dir=rtl] .ms-u-smOffset0{margin-right:0}@media (min-width:480px){.ms-u-md12{width:100%}}@media (min-width:480px){.ms-u-md11{width:91.66666666666666%}}@media (min-width:480px){.ms-u-md10{width:83.33333333333334%}}@media (min-width:480px){.ms-u-md9{width:75%}}@media (min-width:480px){.ms-u-md8{width:66.66666666666666%}}@media (min-width:480px){.ms-u-md7{width:58.333333333333336%}}@media (min-width:480px){.ms-u-md6{width:50%}}@media (min-width:480px){.ms-u-md5{width:41.66666666666667%}}@media (min-width:480px){.ms-u-md4{width:33.33333333333333%}}@media (min-width:480px){.ms-u-md3{width:25%}}@media (min-width:480px){.ms-u-md2{width:16.666666666666664%}}@media (min-width:480px){.ms-u-md1{width:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull12{right:100%}html[dir=rtl] .ms-u-mdPull12{left:100%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-mdPull11{left:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-mdPull10{left:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull9{right:75%}html[dir=rtl] .ms-u-mdPull9{left:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-mdPull8{left:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-mdPull7{left:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull6{right:50%}html[dir=rtl] .ms-u-mdPull6{left:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-mdPull5{left:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-mdPull4{left:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull3{right:25%}html[dir=rtl] .ms-u-mdPull3{left:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-mdPull2{left:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-mdPull1{left:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull0{right:auto}html[dir=rtl] .ms-u-mdPull0{left:auto}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush12{left:100%}html[dir=rtl] .ms-u-mdPush12{right:100%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-mdPush11{right:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-mdPush10{right:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush9{left:75%}html[dir=rtl] .ms-u-mdPush9{right:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-mdPush8{right:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-mdPush7{right:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush6{left:50%}html[dir=rtl] .ms-u-mdPush6{right:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-mdPush5{right:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-mdPush4{right:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush3{left:25%}html[dir=rtl] .ms-u-mdPush3{right:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-mdPush2{right:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-mdPush1{right:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush0{left:auto}html[dir=rtl] .ms-u-mdPush0{right:auto}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-mdOffset11{margin-right:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-mdOffset10{margin-right:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset9{margin-left:75%}html[dir=rtl] .ms-u-mdOffset9{margin-right:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-mdOffset8{margin-right:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-mdOffset7{margin-right:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset6{margin-left:50%}html[dir=rtl] .ms-u-mdOffset6{margin-right:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-mdOffset5{margin-right:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-mdOffset4{margin-right:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset3{margin-left:25%}html[dir=rtl] .ms-u-mdOffset3{margin-right:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-mdOffset2{margin-right:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-mdOffset1{margin-right:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset0{margin-left:0}html[dir=rtl] .ms-u-mdOffset0{margin-right:0}}@media (min-width:640px){.ms-u-lg12{width:100%}}@media (min-width:640px){.ms-u-lg11{width:91.66666666666666%}}@media (min-width:640px){.ms-u-lg10{width:83.33333333333334%}}@media (min-width:640px){.ms-u-lg9{width:75%}}@media (min-width:640px){.ms-u-lg8{width:66.66666666666666%}}@media (min-width:640px){.ms-u-lg7{width:58.333333333333336%}}@media (min-width:640px){.ms-u-lg6{width:50%}}@media (min-width:640px){.ms-u-lg5{width:41.66666666666667%}}@media (min-width:640px){.ms-u-lg4{width:33.33333333333333%}}@media (min-width:640px){.ms-u-lg3{width:25%}}@media (min-width:640px){.ms-u-lg2{width:16.666666666666664%}}@media (min-width:640px){.ms-u-lg1{width:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull12{right:100%}html[dir=rtl] .ms-u-lgPull12{left:100%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-lgPull11{left:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-lgPull10{left:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull9{right:75%}html[dir=rtl] .ms-u-lgPull9{left:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-lgPull8{left:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-lgPull7{left:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull6{right:50%}html[dir=rtl] .ms-u-lgPull6{left:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-lgPull5{left:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-lgPull4{left:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull3{right:25%}html[dir=rtl] .ms-u-lgPull3{left:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-lgPull2{left:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-lgPull1{left:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull0{right:auto}html[dir=rtl] .ms-u-lgPull0{left:auto}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush12{left:100%}html[dir=rtl] .ms-u-lgPush12{right:100%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-lgPush11{right:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-lgPush10{right:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush9{left:75%}html[dir=rtl] .ms-u-lgPush9{right:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-lgPush8{right:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-lgPush7{right:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush6{left:50%}html[dir=rtl] .ms-u-lgPush6{right:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-lgPush5{right:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-lgPush4{right:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush3{left:25%}html[dir=rtl] .ms-u-lgPush3{right:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-lgPush2{right:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-lgPush1{right:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush0{left:auto}html[dir=rtl] .ms-u-lgPush0{right:auto}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-lgOffset11{margin-right:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-lgOffset10{margin-right:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset9{margin-left:75%}html[dir=rtl] .ms-u-lgOffset9{margin-right:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-lgOffset8{margin-right:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-lgOffset7{margin-right:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset6{margin-left:50%}html[dir=rtl] .ms-u-lgOffset6{margin-right:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-lgOffset5{margin-right:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-lgOffset4{margin-right:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset3{margin-left:25%}html[dir=rtl] .ms-u-lgOffset3{margin-right:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-lgOffset2{margin-right:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-lgOffset1{margin-right:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset0{margin-left:0}html[dir=rtl] .ms-u-lgOffset0{margin-right:0}}@media (min-width:1024px){.ms-u-xl12{width:100%}}@media (min-width:1024px){.ms-u-xl11{width:91.66666666666666%}}@media (min-width:1024px){.ms-u-xl10{width:83.33333333333334%}}@media (min-width:1024px){.ms-u-xl9{width:75%}}@media (min-width:1024px){.ms-u-xl8{width:66.66666666666666%}}@media (min-width:1024px){.ms-u-xl7{width:58.333333333333336%}}@media (min-width:1024px){.ms-u-xl6{width:50%}}@media (min-width:1024px){.ms-u-xl5{width:41.66666666666667%}}@media (min-width:1024px){.ms-u-xl4{width:33.33333333333333%}}@media (min-width:1024px){.ms-u-xl3{width:25%}}@media (min-width:1024px){.ms-u-xl2{width:16.666666666666664%}}@media (min-width:1024px){.ms-u-xl1{width:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull12{right:100%}html[dir=rtl] .ms-u-xlPull12{left:100%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xlPull11{left:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xlPull10{left:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull9{right:75%}html[dir=rtl] .ms-u-xlPull9{left:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xlPull8{left:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xlPull7{left:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull6{right:50%}html[dir=rtl] .ms-u-xlPull6{left:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xlPull5{left:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xlPull4{left:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull3{right:25%}html[dir=rtl] .ms-u-xlPull3{left:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xlPull2{left:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xlPull1{left:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull0{right:auto}html[dir=rtl] .ms-u-xlPull0{left:auto}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush12{left:100%}html[dir=rtl] .ms-u-xlPush12{right:100%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xlPush11{right:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xlPush10{right:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush9{left:75%}html[dir=rtl] .ms-u-xlPush9{right:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xlPush8{right:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xlPush7{right:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush6{left:50%}html[dir=rtl] .ms-u-xlPush6{right:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xlPush5{right:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xlPush4{right:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush3{left:25%}html[dir=rtl] .ms-u-xlPush3{right:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xlPush2{right:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xlPush1{right:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush0{left:auto}html[dir=rtl] .ms-u-xlPush0{right:auto}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xlOffset11{margin-right:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xlOffset10{margin-right:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xlOffset9{margin-right:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xlOffset8{margin-right:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xlOffset7{margin-right:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xlOffset6{margin-right:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xlOffset5{margin-right:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xlOffset4{margin-right:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xlOffset3{margin-right:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xlOffset2{margin-right:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xlOffset1{margin-right:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset0{margin-left:0}html[dir=rtl] .ms-u-xlOffset0{margin-right:0}}@media (min-width:1366px){.ms-u-xxl12{width:100%}}@media (min-width:1366px){.ms-u-xxl11{width:91.66666666666666%}}@media (min-width:1366px){.ms-u-xxl10{width:83.33333333333334%}}@media (min-width:1366px){.ms-u-xxl9{width:75%}}@media (min-width:1366px){.ms-u-xxl8{width:66.66666666666666%}}@media (min-width:1366px){.ms-u-xxl7{width:58.333333333333336%}}@media (min-width:1366px){.ms-u-xxl6{width:50%}}@media (min-width:1366px){.ms-u-xxl5{width:41.66666666666667%}}@media (min-width:1366px){.ms-u-xxl4{width:33.33333333333333%}}@media (min-width:1366px){.ms-u-xxl3{width:25%}}@media (min-width:1366px){.ms-u-xxl2{width:16.666666666666664%}}@media (min-width:1366px){.ms-u-xxl1{width:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull12{right:100%}html[dir=rtl] .ms-u-xxlPull12{left:100%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xxlPull11{left:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xxlPull10{left:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull9{right:75%}html[dir=rtl] .ms-u-xxlPull9{left:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xxlPull8{left:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xxlPull7{left:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull6{right:50%}html[dir=rtl] .ms-u-xxlPull6{left:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xxlPull5{left:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xxlPull4{left:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull3{right:25%}html[dir=rtl] .ms-u-xxlPull3{left:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xxlPull2{left:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xxlPull1{left:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull0{right:auto}html[dir=rtl] .ms-u-xxlPull0{left:auto}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush12{left:100%}html[dir=rtl] .ms-u-xxlPush12{right:100%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xxlPush11{right:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xxlPush10{right:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush9{left:75%}html[dir=rtl] .ms-u-xxlPush9{right:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xxlPush8{right:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xxlPush7{right:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush6{left:50%}html[dir=rtl] .ms-u-xxlPush6{right:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xxlPush5{right:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xxlPush4{right:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush3{left:25%}html[dir=rtl] .ms-u-xxlPush3{right:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xxlPush2{right:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xxlPush1{right:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush0{left:auto}html[dir=rtl] .ms-u-xxlPush0{right:auto}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xxlOffset11{margin-right:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xxlOffset10{margin-right:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xxlOffset9{margin-right:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xxlOffset8{margin-right:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xxlOffset7{margin-right:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xxlOffset6{margin-right:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xxlOffset5{margin-right:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xxlOffset4{margin-right:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xxlOffset3{margin-right:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xxlOffset2{margin-right:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xxlOffset1{margin-right:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset0{margin-left:0}html[dir=rtl] .ms-u-xxlOffset0{margin-right:0}}@media (min-width:1920px){.ms-u-xxxl12{width:100%}}@media (min-width:1920px){.ms-u-xxxl11{width:91.66666666666666%}}@media (min-width:1920px){.ms-u-xxxl10{width:83.33333333333334%}}@media (min-width:1920px){.ms-u-xxxl9{width:75%}}@media (min-width:1920px){.ms-u-xxxl8{width:66.66666666666666%}}@media (min-width:1920px){.ms-u-xxxl7{width:58.333333333333336%}}@media (min-width:1920px){.ms-u-xxxl6{width:50%}}@media (min-width:1920px){.ms-u-xxxl5{width:41.66666666666667%}}@media (min-width:1920px){.ms-u-xxxl4{width:33.33333333333333%}}@media (min-width:1920px){.ms-u-xxxl3{width:25%}}@media (min-width:1920px){.ms-u-xxxl2{width:16.666666666666664%}}@media (min-width:1920px){.ms-u-xxxl1{width:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull12{right:100%}html[dir=rtl] .ms-u-xxxlPull12{left:100%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xxxlPull11{left:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xxxlPull10{left:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull9{right:75%}html[dir=rtl] .ms-u-xxxlPull9{left:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xxxlPull8{left:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xxxlPull7{left:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull6{right:50%}html[dir=rtl] .ms-u-xxxlPull6{left:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xxxlPull5{left:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xxxlPull4{left:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull3{right:25%}html[dir=rtl] .ms-u-xxxlPull3{left:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xxxlPull2{left:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xxxlPull1{left:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull0{right:auto}html[dir=rtl] .ms-u-xxxlPull0{left:auto}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush12{left:100%}html[dir=rtl] .ms-u-xxxlPush12{right:100%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xxxlPush11{right:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xxxlPush10{right:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush9{left:75%}html[dir=rtl] .ms-u-xxxlPush9{right:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xxxlPush8{right:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xxxlPush7{right:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush6{left:50%}html[dir=rtl] .ms-u-xxxlPush6{right:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xxxlPush5{right:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xxxlPush4{right:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush3{left:25%}html[dir=rtl] .ms-u-xxxlPush3{right:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xxxlPush2{right:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xxxlPush1{right:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush0{left:auto}html[dir=rtl] .ms-u-xxxlPush0{right:auto}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xxxlOffset11{margin-right:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xxxlOffset10{margin-right:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xxxlOffset9{margin-right:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xxxlOffset8{margin-right:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xxxlOffset7{margin-right:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xxxlOffset6{margin-right:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xxxlOffset5{margin-right:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xxxlOffset4{margin-right:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xxxlOffset3{margin-right:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xxxlOffset2{margin-right:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xxxlOffset1{margin-right:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset0{margin-left:0}html[dir=rtl] .ms-u-xxxlOffset0{margin-right:0}}.ms-Grid{box-sizing:border-box;*zoom:1}html[dir] .ms-Grid{padding:0 8px}.ms-Grid:after,.ms-Grid:before{display:table;content:"";line-height:0}.ms-Grid:after{clear:both}.ms-Grid-row{box-sizing:border-box;*zoom:1}html[dir] .ms-Grid-row{margin:0 -8px}.ms-Grid-row:after,.ms-Grid-row:before{display:table;content:"";line-height:0}.ms-Grid-row:after{clear:both}.ms-Grid-col{position:relative;min-height:1px;box-sizing:border-box}html[dir=ltr] .ms-Grid-col{padding-left:8px;padding-right:8px;float:left}html[dir=rtl] .ms-Grid-col{padding-right:8px;padding-left:8px;float:right}html[dir] .ms-Grid-col .ms-Grid{padding:0}.ms-Fabric{color:#333}--><!--._2oCGj93haij-ioEI0V2boL{display:none}.v7XN5-sLUO3TS4AKvX4al{max-width:none}--><!--._1niWwYsHCqgirsD8-yhn3x .ms-Callout-main{overflow:hidden}._35P67Bqt2-_9UkBhnkjCED{height:32px;color:inherit}html[dir] ._35P67Bqt2-_9UkBhnkjCED{background-color:transparent;border-bottom-style:solid;border-bottom-width:1px}._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-primaryCommands,._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-sideCommands{line-height:32px;height:32px}html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-primaryCommands,html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-sideCommands{margin:0}._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem{line-height:32px;height:100%}._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem-link{line-height:32px}._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-primaryCommands,._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem-link:hover,._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem:hover,._35P67Bqt2-_9UkBhnkjCED .ms-FocusZone{color:inherit!important}html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-primaryCommands,html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem-link:hover,html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem:hover,html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-FocusZone{background-color:inherit!important}._35P67Bqt2-_9UkBhnkjCED .is-expanded .ms-CommandBarItem-overflow,._35P67Bqt2-_9UkBhnkjCED button[id$=selected]{color:inherit!important}._35P67Bqt2-_9UkBhnkjCED button[id$=overflow]{line-height:0}html[dir] ._1m82QbHRaGJFOXY42dCJPO{padding:8px}html[dir=ltr] ._1m82QbHRaGJFOXY42dCJPO{float:left}html[dir=rtl] ._1m82QbHRaGJFOXY42dCJPO{float:right}._1Qa9aZNTwzhCtGC9Xqr9o4{height:16px;width:0}html[dir] ._1Qa9aZNTwzhCtGC9Xqr9o4{padding:0;margin:8px 0}html[dir=ltr] ._1Qa9aZNTwzhCtGC9Xqr9o4{border-right-width:1px;border-right-style:solid;float:left}html[dir=rtl] ._1Qa9aZNTwzhCtGC9Xqr9o4{border-left-width:1px;border-left-style:solid;float:right}-->

    <!--.swx .tab_id_002_noname_0ad8092f-344e-4db3-b2df-1a027e29d61a{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_0ad8092f-344e-4db3-b2df-1a027e29d61a/views/thumbnail'); } .swx .tab_id_002_noname_2268d166-680f-4143-8b9e-8a235f9f580f{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_2268d166-680f-4143-8b9e-8a235f9f580f/views/thumbnail'); } .swx span.moji.id_d5d28e2b5e074db6a7e046f62b338a55 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d5d28e2b5e074db6a7e046f62b338a55/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d5d28e2b5e074db6a7e046f62b338a55 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d5d28e2b5e074db6a7e046f62b338a55/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ac21a0dc632e4a16a99146d19dbd5f10 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ac21a0dc632e4a16a99146d19dbd5f10/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ac21a0dc632e4a16a99146d19dbd5f10 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ac21a0dc632e4a16a99146d19dbd5f10/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_91370e2cdd514a4da59a3f2d1d18d4d3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/91370e2cdd514a4da59a3f2d1d18d4d3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_91370e2cdd514a4da59a3f2d1d18d4d3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/91370e2cdd514a4da59a3f2d1d18d4d3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b0d2b732bf2d47eca34d4dfe161069d6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b0d2b732bf2d47eca34d4dfe161069d6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b0d2b732bf2d47eca34d4dfe161069d6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b0d2b732bf2d47eca34d4dfe161069d6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_12d0b3d20dd94365b37d3c8e88a53c48 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/12d0b3d20dd94365b37d3c8e88a53c48/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_12d0b3d20dd94365b37d3c8e88a53c48 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/12d0b3d20dd94365b37d3c8e88a53c48/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a7d562054d2540eaa3b4613c2f6165c7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a7d562054d2540eaa3b4613c2f6165c7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a7d562054d2540eaa3b4613c2f6165c7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a7d562054d2540eaa3b4613c2f6165c7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c4df6315084241088f660dbb1a14e893 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c4df6315084241088f660dbb1a14e893/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c4df6315084241088f660dbb1a14e893 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c4df6315084241088f660dbb1a14e893/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_25f557ed5522484fa7d780af7d51737d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/25f557ed5522484fa7d780af7d51737d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_25f557ed5522484fa7d780af7d51737d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/25f557ed5522484fa7d780af7d51737d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a4adecdd9c284db7b248071bc7cd4ce0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a4adecdd9c284db7b248071bc7cd4ce0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a4adecdd9c284db7b248071bc7cd4ce0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a4adecdd9c284db7b248071bc7cd4ce0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_93ef3bf9986a4978b046bbdb2f5a6019 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93ef3bf9986a4978b046bbdb2f5a6019/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_93ef3bf9986a4978b046bbdb2f5a6019 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93ef3bf9986a4978b046bbdb2f5a6019/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d8219495416d40b7babb116f8a384525 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d8219495416d40b7babb116f8a384525/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d8219495416d40b7babb116f8a384525 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d8219495416d40b7babb116f8a384525/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5288231ba9974653891e6e0b5dae5c01 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5288231ba9974653891e6e0b5dae5c01/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5288231ba9974653891e6e0b5dae5c01 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5288231ba9974653891e6e0b5dae5c01/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5fb9940952fb45218aeb7765e489c13b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5fb9940952fb45218aeb7765e489c13b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5fb9940952fb45218aeb7765e489c13b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5fb9940952fb45218aeb7765e489c13b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cbd4b2307b6546fea9a0afe08bf1d45e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cbd4b2307b6546fea9a0afe08bf1d45e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cbd4b2307b6546fea9a0afe08bf1d45e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cbd4b2307b6546fea9a0afe08bf1d45e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_636c5e8fbdd14e04ade630c5b6152275 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/636c5e8fbdd14e04ade630c5b6152275/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_636c5e8fbdd14e04ade630c5b6152275 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/636c5e8fbdd14e04ade630c5b6152275/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_eb7fed2ffeab4d339064e67dfc9a783b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eb7fed2ffeab4d339064e67dfc9a783b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_eb7fed2ffeab4d339064e67dfc9a783b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eb7fed2ffeab4d339064e67dfc9a783b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_dc3acfadbb994d3793cfe905a0dec482 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dc3acfadbb994d3793cfe905a0dec482/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_dc3acfadbb994d3793cfe905a0dec482 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dc3acfadbb994d3793cfe905a0dec482/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bd31f2f059ce41bca5dfb9b969d7e1ea span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd31f2f059ce41bca5dfb9b969d7e1ea/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bd31f2f059ce41bca5dfb9b969d7e1ea span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd31f2f059ce41bca5dfb9b969d7e1ea/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ef8a8e4599ca4591a96a67f23c23abd1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef8a8e4599ca4591a96a67f23c23abd1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ef8a8e4599ca4591a96a67f23c23abd1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef8a8e4599ca4591a96a67f23c23abd1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5d7807e764e14f6ea102ddfdd30acf34 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d7807e764e14f6ea102ddfdd30acf34/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5d7807e764e14f6ea102ddfdd30acf34 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d7807e764e14f6ea102ddfdd30acf34/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_201ca95718f34012b6d76bb7b388c652 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/201ca95718f34012b6d76bb7b388c652/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_201ca95718f34012b6d76bb7b388c652 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/201ca95718f34012b6d76bb7b388c652/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5d3fd81f22b341299881072c627533d5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d3fd81f22b341299881072c627533d5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5d3fd81f22b341299881072c627533d5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d3fd81f22b341299881072c627533d5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f305b50326b34f07a0c2dd0c27325cea span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f305b50326b34f07a0c2dd0c27325cea/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f305b50326b34f07a0c2dd0c27325cea span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f305b50326b34f07a0c2dd0c27325cea/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_83bf44f0d867434fb296d77bf9488828 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/83bf44f0d867434fb296d77bf9488828/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_83bf44f0d867434fb296d77bf9488828 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/83bf44f0d867434fb296d77bf9488828/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb677fa811474474ad19fd9cf34afd8e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb677fa811474474ad19fd9cf34afd8e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb677fa811474474ad19fd9cf34afd8e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb677fa811474474ad19fd9cf34afd8e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d796450ddff1496a9d43eb7d1ee795c6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d796450ddff1496a9d43eb7d1ee795c6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d796450ddff1496a9d43eb7d1ee795c6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d796450ddff1496a9d43eb7d1ee795c6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0ebd46c04fa641df8be24bb42d911c6b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ebd46c04fa641df8be24bb42d911c6b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0ebd46c04fa641df8be24bb42d911c6b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ebd46c04fa641df8be24bb42d911c6b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5db6bfb50b064e739f068d407d207ca0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5db6bfb50b064e739f068d407d207ca0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5db6bfb50b064e739f068d407d207ca0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5db6bfb50b064e739f068d407d207ca0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_df369f9ec4a7475396e5c1deabe21167 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df369f9ec4a7475396e5c1deabe21167/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_df369f9ec4a7475396e5c1deabe21167 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df369f9ec4a7475396e5c1deabe21167/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9401c7f9c12944e49daa82fc1e92ec31 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9401c7f9c12944e49daa82fc1e92ec31/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9401c7f9c12944e49daa82fc1e92ec31 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9401c7f9c12944e49daa82fc1e92ec31/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5e4b15ed51244c5daae58114abeda46c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5e4b15ed51244c5daae58114abeda46c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5e4b15ed51244c5daae58114abeda46c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5e4b15ed51244c5daae58114abeda46c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e0734f17138c46a693b00a2b58babc12 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e0734f17138c46a693b00a2b58babc12/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e0734f17138c46a693b00a2b58babc12 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e0734f17138c46a693b00a2b58babc12/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_80a3b4c737e1461b87f86d385084fc84 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80a3b4c737e1461b87f86d385084fc84/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_80a3b4c737e1461b87f86d385084fc84 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80a3b4c737e1461b87f86d385084fc84/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_eadac0775ce3428197104734ef87a481 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eadac0775ce3428197104734ef87a481/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_eadac0775ce3428197104734ef87a481 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eadac0775ce3428197104734ef87a481/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c8d2e2ae0da64a4d8e3bf4fc854c8d25 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c8d2e2ae0da64a4d8e3bf4fc854c8d25/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c8d2e2ae0da64a4d8e3bf4fc854c8d25 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c8d2e2ae0da64a4d8e3bf4fc854c8d25/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c3b6afa09a544c7a8dfd5ff1eaec0bd5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c3b6afa09a544c7a8dfd5ff1eaec0bd5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c3b6afa09a544c7a8dfd5ff1eaec0bd5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c3b6afa09a544c7a8dfd5ff1eaec0bd5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_03987e97cdbd42ffad88e93a648eb7bb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/03987e97cdbd42ffad88e93a648eb7bb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_03987e97cdbd42ffad88e93a648eb7bb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/03987e97cdbd42ffad88e93a648eb7bb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_026491323f50430aabfc3937e3ca3d83 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/026491323f50430aabfc3937e3ca3d83/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_026491323f50430aabfc3937e3ca3d83 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/026491323f50430aabfc3937e3ca3d83/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_34a59afcf88c487db7069f4f88c93a60 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/34a59afcf88c487db7069f4f88c93a60/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_34a59afcf88c487db7069f4f88c93a60 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/34a59afcf88c487db7069f4f88c93a60/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1f60a428906f49d3b9fbaee16b95a63a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1f60a428906f49d3b9fbaee16b95a63a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1f60a428906f49d3b9fbaee16b95a63a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1f60a428906f49d3b9fbaee16b95a63a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_85f3bcfcffe64a5d8440ec21f13a78a1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/85f3bcfcffe64a5d8440ec21f13a78a1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_85f3bcfcffe64a5d8440ec21f13a78a1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/85f3bcfcffe64a5d8440ec21f13a78a1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7757cab2e26e435194c5269358eadda7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7757cab2e26e435194c5269358eadda7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7757cab2e26e435194c5269358eadda7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7757cab2e26e435194c5269358eadda7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8719fee79e884e3aa923bf3140a99d3b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8719fee79e884e3aa923bf3140a99d3b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8719fee79e884e3aa923bf3140a99d3b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8719fee79e884e3aa923bf3140a99d3b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7676b8cb7afc44529d144f7455f2ef8e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7676b8cb7afc44529d144f7455f2ef8e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7676b8cb7afc44529d144f7455f2ef8e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7676b8cb7afc44529d144f7455f2ef8e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_391e60f5ca004b0aa7956478df92eae8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/391e60f5ca004b0aa7956478df92eae8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_391e60f5ca004b0aa7956478df92eae8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/391e60f5ca004b0aa7956478df92eae8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f96a75da9440429ca22baef01ac76685 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f96a75da9440429ca22baef01ac76685/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f96a75da9440429ca22baef01ac76685 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f96a75da9440429ca22baef01ac76685/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_11a49ac0c55b43028d7b64b1bc80543d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11a49ac0c55b43028d7b64b1bc80543d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_11a49ac0c55b43028d7b64b1bc80543d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11a49ac0c55b43028d7b64b1bc80543d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_47eb153b8113466f9a68eaa1e47d21ef span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/47eb153b8113466f9a68eaa1e47d21ef/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_47eb153b8113466f9a68eaa1e47d21ef span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/47eb153b8113466f9a68eaa1e47d21ef/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e245fced1cba4ae18fa0d449de6a89e4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e245fced1cba4ae18fa0d449de6a89e4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e245fced1cba4ae18fa0d449de6a89e4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e245fced1cba4ae18fa0d449de6a89e4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e5f6bbce978749b4947e30cc9688aa50 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5f6bbce978749b4947e30cc9688aa50/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e5f6bbce978749b4947e30cc9688aa50 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5f6bbce978749b4947e30cc9688aa50/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_18884340c2414c62b00bc318504260ed span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/18884340c2414c62b00bc318504260ed/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_18884340c2414c62b00bc318504260ed span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/18884340c2414c62b00bc318504260ed/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6e7f4035a885437fa3fcfd5fc024f907 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6e7f4035a885437fa3fcfd5fc024f907/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6e7f4035a885437fa3fcfd5fc024f907 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6e7f4035a885437fa3fcfd5fc024f907/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8b5e994fbb6c4524983959023879081a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8b5e994fbb6c4524983959023879081a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8b5e994fbb6c4524983959023879081a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8b5e994fbb6c4524983959023879081a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3ea11083ab4b4590876f509701b7f3f6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ea11083ab4b4590876f509701b7f3f6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3ea11083ab4b4590876f509701b7f3f6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ea11083ab4b4590876f509701b7f3f6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9ab2b5d1ff374cea970c22f08aedbe0e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ab2b5d1ff374cea970c22f08aedbe0e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9ab2b5d1ff374cea970c22f08aedbe0e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ab2b5d1ff374cea970c22f08aedbe0e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b23b5804a04e41af8a77deffba126720 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b23b5804a04e41af8a77deffba126720/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b23b5804a04e41af8a77deffba126720 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b23b5804a04e41af8a77deffba126720/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f87b8f95bf4142c281874a8b0d06feff span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f87b8f95bf4142c281874a8b0d06feff/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f87b8f95bf4142c281874a8b0d06feff span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f87b8f95bf4142c281874a8b0d06feff/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a660dab08a73453f89eaba5531ed8db2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a660dab08a73453f89eaba5531ed8db2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a660dab08a73453f89eaba5531ed8db2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a660dab08a73453f89eaba5531ed8db2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9dc9b765760948378c7d749f229a0cce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9dc9b765760948378c7d749f229a0cce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9dc9b765760948378c7d749f229a0cce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9dc9b765760948378c7d749f229a0cce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5dd08aa8fc4e43529a6e1e303899a73e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5dd08aa8fc4e43529a6e1e303899a73e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5dd08aa8fc4e43529a6e1e303899a73e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5dd08aa8fc4e43529a6e1e303899a73e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d817b63981fb4d0fbf47b3d93e29acb4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d817b63981fb4d0fbf47b3d93e29acb4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d817b63981fb4d0fbf47b3d93e29acb4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d817b63981fb4d0fbf47b3d93e29acb4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2b3bd2ed622e443c8ff98c5df55b4e31 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2b3bd2ed622e443c8ff98c5df55b4e31/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2b3bd2ed622e443c8ff98c5df55b4e31 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2b3bd2ed622e443c8ff98c5df55b4e31/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ad5e3abb979a411399d82f622e542ea6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ad5e3abb979a411399d82f622e542ea6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ad5e3abb979a411399d82f622e542ea6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ad5e3abb979a411399d82f622e542ea6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cb52f32d32eb49f2861c6d575338a4f0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cb52f32d32eb49f2861c6d575338a4f0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cb52f32d32eb49f2861c6d575338a4f0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cb52f32d32eb49f2861c6d575338a4f0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c9001322cacf481680807243df386e39 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9001322cacf481680807243df386e39/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c9001322cacf481680807243df386e39 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9001322cacf481680807243df386e39/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_594b92fd85b34d2d95fc895c5a9a0bb3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/594b92fd85b34d2d95fc895c5a9a0bb3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_594b92fd85b34d2d95fc895c5a9a0bb3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/594b92fd85b34d2d95fc895c5a9a0bb3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_dfeb195419d142029f217bbd6dbb6cc6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dfeb195419d142029f217bbd6dbb6cc6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_dfeb195419d142029f217bbd6dbb6cc6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dfeb195419d142029f217bbd6dbb6cc6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3a732810e2724bd68d904eb44dc2bb29 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3a732810e2724bd68d904eb44dc2bb29/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3a732810e2724bd68d904eb44dc2bb29 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3a732810e2724bd68d904eb44dc2bb29/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_beef2d6ecacd4201807f8671d356649e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/beef2d6ecacd4201807f8671d356649e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_beef2d6ecacd4201807f8671d356649e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/beef2d6ecacd4201807f8671d356649e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb1c2f628c504c4b94065f3c960b5bae span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb1c2f628c504c4b94065f3c960b5bae/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb1c2f628c504c4b94065f3c960b5bae span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb1c2f628c504c4b94065f3c960b5bae/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0e644c87b7f54177b5c9256fed2925d5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0e644c87b7f54177b5c9256fed2925d5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0e644c87b7f54177b5c9256fed2925d5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0e644c87b7f54177b5c9256fed2925d5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c94e49b572144fa79fbb82d918a2c831 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c94e49b572144fa79fbb82d918a2c831/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c94e49b572144fa79fbb82d918a2c831 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c94e49b572144fa79fbb82d918a2c831/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9ebcc3c17e43443989bfdc00ea0c89e7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ebcc3c17e43443989bfdc00ea0c89e7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9ebcc3c17e43443989bfdc00ea0c89e7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ebcc3c17e43443989bfdc00ea0c89e7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_05990448feea47169c832857356868b7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05990448feea47169c832857356868b7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_05990448feea47169c832857356868b7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05990448feea47169c832857356868b7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_70f9799e55d840b58a99dc831ffdc859 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/70f9799e55d840b58a99dc831ffdc859/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_70f9799e55d840b58a99dc831ffdc859 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/70f9799e55d840b58a99dc831ffdc859/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a6f985f1052b486fbd34983a86f2de10 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6f985f1052b486fbd34983a86f2de10/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a6f985f1052b486fbd34983a86f2de10 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6f985f1052b486fbd34983a86f2de10/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4c959df8b4404d759ba3ea250d551b55 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c959df8b4404d759ba3ea250d551b55/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4c959df8b4404d759ba3ea250d551b55 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c959df8b4404d759ba3ea250d551b55/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_64417822e3d64dfb83d68f80766cbad4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64417822e3d64dfb83d68f80766cbad4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_64417822e3d64dfb83d68f80766cbad4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64417822e3d64dfb83d68f80766cbad4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f19cdd4dd3924506841263d11191f8df span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f19cdd4dd3924506841263d11191f8df/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f19cdd4dd3924506841263d11191f8df span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f19cdd4dd3924506841263d11191f8df/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a32cb52b18a84bf69e2d3cca0c312384 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a32cb52b18a84bf69e2d3cca0c312384/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a32cb52b18a84bf69e2d3cca0c312384 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a32cb52b18a84bf69e2d3cca0c312384/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ef67bb6d812747928f86a198bac84d33 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef67bb6d812747928f86a198bac84d33/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ef67bb6d812747928f86a198bac84d33 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef67bb6d812747928f86a198bac84d33/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_05c5681f761d4ecfbd3f31e903463a56 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05c5681f761d4ecfbd3f31e903463a56/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_05c5681f761d4ecfbd3f31e903463a56 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05c5681f761d4ecfbd3f31e903463a56/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_81c62925e8f943a386c6bb959b133281 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81c62925e8f943a386c6bb959b133281/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_81c62925e8f943a386c6bb959b133281 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81c62925e8f943a386c6bb959b133281/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_958d5310-cd1b-41bb-a23e-888fab5491ba{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_958d5310-cd1b-41bb-a23e-888fab5491ba/views/thumbnail'); } .swx span.moji.id_e70058351dfa4c59b66e46e34b1c4cc7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e70058351dfa4c59b66e46e34b1c4cc7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e70058351dfa4c59b66e46e34b1c4cc7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e70058351dfa4c59b66e46e34b1c4cc7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_09b6ddfd09214089b0c0196b8675efce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/09b6ddfd09214089b0c0196b8675efce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_09b6ddfd09214089b0c0196b8675efce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/09b6ddfd09214089b0c0196b8675efce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_14b0b0e3dd8340bc86ee51b67bf07649 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/14b0b0e3dd8340bc86ee51b67bf07649/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_14b0b0e3dd8340bc86ee51b67bf07649 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/14b0b0e3dd8340bc86ee51b67bf07649/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1cb97ee73b8a465cbe93090a427c522d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1cb97ee73b8a465cbe93090a427c522d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1cb97ee73b8a465cbe93090a427c522d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1cb97ee73b8a465cbe93090a427c522d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fbefd5e5569b4b21a268138073efa3f7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fbefd5e5569b4b21a268138073efa3f7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fbefd5e5569b4b21a268138073efa3f7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fbefd5e5569b4b21a268138073efa3f7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_949d0c90966d4ab1bb934833fda2a8c1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/949d0c90966d4ab1bb934833fda2a8c1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_949d0c90966d4ab1bb934833fda2a8c1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/949d0c90966d4ab1bb934833fda2a8c1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_dcb8b97d4fcb4ad48828477e56791670 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dcb8b97d4fcb4ad48828477e56791670/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_dcb8b97d4fcb4ad48828477e56791670 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dcb8b97d4fcb4ad48828477e56791670/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_51a1005cca6e46b09e59bbb8ac760350 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/51a1005cca6e46b09e59bbb8ac760350/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_51a1005cca6e46b09e59bbb8ac760350 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/51a1005cca6e46b09e59bbb8ac760350/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fe866a5f7d3649b08a3af18636d999ce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fe866a5f7d3649b08a3af18636d999ce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fe866a5f7d3649b08a3af18636d999ce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fe866a5f7d3649b08a3af18636d999ce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e239655d37964392aac78778215fbc8b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e239655d37964392aac78778215fbc8b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e239655d37964392aac78778215fbc8b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e239655d37964392aac78778215fbc8b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_efd7748c7df44228b4247ecb993f6a63 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/efd7748c7df44228b4247ecb993f6a63/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_efd7748c7df44228b4247ecb993f6a63 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/efd7748c7df44228b4247ecb993f6a63/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9ae183167d594bcba640cf5d9f167a6d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ae183167d594bcba640cf5d9f167a6d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9ae183167d594bcba640cf5d9f167a6d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ae183167d594bcba640cf5d9f167a6d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8a6827ff43e4489188e8cdc28e09f635 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8a6827ff43e4489188e8cdc28e09f635/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8a6827ff43e4489188e8cdc28e09f635 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8a6827ff43e4489188e8cdc28e09f635/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9f5c23a7922a4e54887eb4489344c164 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9f5c23a7922a4e54887eb4489344c164/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9f5c23a7922a4e54887eb4489344c164 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9f5c23a7922a4e54887eb4489344c164/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cedcd9e099014abe91162991edc1d563 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cedcd9e099014abe91162991edc1d563/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cedcd9e099014abe91162991edc1d563 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cedcd9e099014abe91162991edc1d563/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5b01a75a60864c339416187eb51d2d12 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5b01a75a60864c339416187eb51d2d12/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5b01a75a60864c339416187eb51d2d12 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5b01a75a60864c339416187eb51d2d12/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_17c776c766fc449aa9c7e7e6f5d1ed53 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/17c776c766fc449aa9c7e7e6f5d1ed53/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_17c776c766fc449aa9c7e7e6f5d1ed53 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/17c776c766fc449aa9c7e7e6f5d1ed53/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2822aeddd78447d0be51841e8e850cf2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2822aeddd78447d0be51841e8e850cf2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2822aeddd78447d0be51841e8e850cf2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2822aeddd78447d0be51841e8e850cf2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0b915a9734d14dc0a674e1e0f053f6aa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0b915a9734d14dc0a674e1e0f053f6aa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0b915a9734d14dc0a674e1e0f053f6aa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0b915a9734d14dc0a674e1e0f053f6aa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e5443de4193848a09a4014404ca63de6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5443de4193848a09a4014404ca63de6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e5443de4193848a09a4014404ca63de6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5443de4193848a09a4014404ca63de6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0ca8ffd2e17b408fa66f5bf4d94b199e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ca8ffd2e17b408fa66f5bf4d94b199e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0ca8ffd2e17b408fa66f5bf4d94b199e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ca8ffd2e17b408fa66f5bf4d94b199e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8bd884e2726f4121812bdc7c94bbe870 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8bd884e2726f4121812bdc7c94bbe870/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8bd884e2726f4121812bdc7c94bbe870 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8bd884e2726f4121812bdc7c94bbe870/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7ab4107dac6c4f399867b78bb1387740 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7ab4107dac6c4f399867b78bb1387740/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7ab4107dac6c4f399867b78bb1387740 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7ab4107dac6c4f399867b78bb1387740/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_68713b838afb44f497982b9f7a43aad7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/68713b838afb44f497982b9f7a43aad7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_68713b838afb44f497982b9f7a43aad7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/68713b838afb44f497982b9f7a43aad7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9fcd7c6dc5a44aaea0533151f5dbea3a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9fcd7c6dc5a44aaea0533151f5dbea3a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9fcd7c6dc5a44aaea0533151f5dbea3a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9fcd7c6dc5a44aaea0533151f5dbea3a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_848c7fe5ce5c4affbc58343e0b607065 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/848c7fe5ce5c4affbc58343e0b607065/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_848c7fe5ce5c4affbc58343e0b607065 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/848c7fe5ce5c4affbc58343e0b607065/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f49a981d136745eebd793760930b2026 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f49a981d136745eebd793760930b2026/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f49a981d136745eebd793760930b2026 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f49a981d136745eebd793760930b2026/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_21024d3e6e50455e8ebe5fe842c2a12c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21024d3e6e50455e8ebe5fe842c2a12c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_21024d3e6e50455e8ebe5fe842c2a12c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21024d3e6e50455e8ebe5fe842c2a12c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2fc1fdcbcd30482185157dceaced8014 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2fc1fdcbcd30482185157dceaced8014/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2fc1fdcbcd30482185157dceaced8014 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2fc1fdcbcd30482185157dceaced8014/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_549d9551d9e64ab19e480de462797946 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/549d9551d9e64ab19e480de462797946/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_549d9551d9e64ab19e480de462797946 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/549d9551d9e64ab19e480de462797946/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69d5a839b5a945bba62aeac9382aad91 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69d5a839b5a945bba62aeac9382aad91/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69d5a839b5a945bba62aeac9382aad91 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69d5a839b5a945bba62aeac9382aad91/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9445d780f15f4c838c9385031626e652 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9445d780f15f4c838c9385031626e652/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9445d780f15f4c838c9385031626e652 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9445d780f15f4c838c9385031626e652/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6cc1dc76cb944247b5e358e91645b754 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6cc1dc76cb944247b5e358e91645b754/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6cc1dc76cb944247b5e358e91645b754 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6cc1dc76cb944247b5e358e91645b754/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c145bbcd0d344ee6b61ce9a166dd2459 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c145bbcd0d344ee6b61ce9a166dd2459/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c145bbcd0d344ee6b61ce9a166dd2459 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c145bbcd0d344ee6b61ce9a166dd2459/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5eaab9720bfb4698b976dec5e77f25a6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5eaab9720bfb4698b976dec5e77f25a6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5eaab9720bfb4698b976dec5e77f25a6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5eaab9720bfb4698b976dec5e77f25a6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_88635eebac244c59a4a629b46c5b4fae span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/88635eebac244c59a4a629b46c5b4fae/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_88635eebac244c59a4a629b46c5b4fae span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/88635eebac244c59a4a629b46c5b4fae/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_040add8720a84dccb298bb4fbcde0f20 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/040add8720a84dccb298bb4fbcde0f20/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_040add8720a84dccb298bb4fbcde0f20 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/040add8720a84dccb298bb4fbcde0f20/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9f2a04d6acb04848a1fecca6d5cfc792 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9f2a04d6acb04848a1fecca6d5cfc792/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9f2a04d6acb04848a1fecca6d5cfc792 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9f2a04d6acb04848a1fecca6d5cfc792/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_be1d0aa377614975b16509068dd37804 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/be1d0aa377614975b16509068dd37804/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_be1d0aa377614975b16509068dd37804 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/be1d0aa377614975b16509068dd37804/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3a6f31f2e9264c089142ce6f94989ea6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3a6f31f2e9264c089142ce6f94989ea6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3a6f31f2e9264c089142ce6f94989ea6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3a6f31f2e9264c089142ce6f94989ea6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5f8a8496c2c44e69802c45235184d679 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5f8a8496c2c44e69802c45235184d679/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5f8a8496c2c44e69802c45235184d679 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5f8a8496c2c44e69802c45235184d679/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d8f9062690b74b118c3f313d93c9a4a5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d8f9062690b74b118c3f313d93c9a4a5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d8f9062690b74b118c3f313d93c9a4a5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d8f9062690b74b118c3f313d93c9a4a5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_11070ed6f6df4d1fb22ebe1e425685aa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11070ed6f6df4d1fb22ebe1e425685aa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_11070ed6f6df4d1fb22ebe1e425685aa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11070ed6f6df4d1fb22ebe1e425685aa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a70dd6ee1f41414bab2f8add4a5418ff span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a70dd6ee1f41414bab2f8add4a5418ff/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a70dd6ee1f41414bab2f8add4a5418ff span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a70dd6ee1f41414bab2f8add4a5418ff/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7473cd905bf94b15a8db01e50a240138 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7473cd905bf94b15a8db01e50a240138/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7473cd905bf94b15a8db01e50a240138 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7473cd905bf94b15a8db01e50a240138/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69a0a917cf0f47feb8714d85093484d6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69a0a917cf0f47feb8714d85093484d6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69a0a917cf0f47feb8714d85093484d6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69a0a917cf0f47feb8714d85093484d6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6afc571194704870a44cd8ff58545d2e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6afc571194704870a44cd8ff58545d2e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6afc571194704870a44cd8ff58545d2e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6afc571194704870a44cd8ff58545d2e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_187e1d82ff13425693589e6a50783e5c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/187e1d82ff13425693589e6a50783e5c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_187e1d82ff13425693589e6a50783e5c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/187e1d82ff13425693589e6a50783e5c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_63f7e941be294b7993a3bcf46cdf89cb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/63f7e941be294b7993a3bcf46cdf89cb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_63f7e941be294b7993a3bcf46cdf89cb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/63f7e941be294b7993a3bcf46cdf89cb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ecfcc40d42c948279d1cd037fb6d9fe4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ecfcc40d42c948279d1cd037fb6d9fe4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ecfcc40d42c948279d1cd037fb6d9fe4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ecfcc40d42c948279d1cd037fb6d9fe4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2425c945fdbf4a6ab386304ee74683f0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2425c945fdbf4a6ab386304ee74683f0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2425c945fdbf4a6ab386304ee74683f0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2425c945fdbf4a6ab386304ee74683f0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_725f0b5d99ec40af888527ac42ceb99f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/725f0b5d99ec40af888527ac42ceb99f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_725f0b5d99ec40af888527ac42ceb99f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/725f0b5d99ec40af888527ac42ceb99f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_923e0ceafdcd4d278ad501719b2f5a6b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/923e0ceafdcd4d278ad501719b2f5a6b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_923e0ceafdcd4d278ad501719b2f5a6b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/923e0ceafdcd4d278ad501719b2f5a6b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e417fc5820294105963ea6c71cc94cbb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e417fc5820294105963ea6c71cc94cbb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e417fc5820294105963ea6c71cc94cbb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e417fc5820294105963ea6c71cc94cbb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_98732a8744774c86a324d21d86d2051c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/98732a8744774c86a324d21d86d2051c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_98732a8744774c86a324d21d86d2051c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/98732a8744774c86a324d21d86d2051c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_73c8114935344fa0879e01e0a9821f64 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/73c8114935344fa0879e01e0a9821f64/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_73c8114935344fa0879e01e0a9821f64 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/73c8114935344fa0879e01e0a9821f64/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_30c197b4173c4fc09fffbec84a6b366f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/30c197b4173c4fc09fffbec84a6b366f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_30c197b4173c4fc09fffbec84a6b366f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/30c197b4173c4fc09fffbec84a6b366f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_175fd19cacb74bbba1a53c6be6f06b35 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/175fd19cacb74bbba1a53c6be6f06b35/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_175fd19cacb74bbba1a53c6be6f06b35 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/175fd19cacb74bbba1a53c6be6f06b35/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_64e5bded0052435d92b87bdd070939cb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64e5bded0052435d92b87bdd070939cb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_64e5bded0052435d92b87bdd070939cb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64e5bded0052435d92b87bdd070939cb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e12a86f86adf47769f8e8eb08d680531 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e12a86f86adf47769f8e8eb08d680531/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e12a86f86adf47769f8e8eb08d680531 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e12a86f86adf47769f8e8eb08d680531/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0f29275aab324fe2b8128b0cd1bef28c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0f29275aab324fe2b8128b0cd1bef28c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0f29275aab324fe2b8128b0cd1bef28c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0f29275aab324fe2b8128b0cd1bef28c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_198427d4b6fb41998a36d8553714ac97 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/198427d4b6fb41998a36d8553714ac97/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_198427d4b6fb41998a36d8553714ac97 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/198427d4b6fb41998a36d8553714ac97/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3e28ea82de214ab5ab64f109f9a2a91e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3e28ea82de214ab5ab64f109f9a2a91e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3e28ea82de214ab5ab64f109f9a2a91e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3e28ea82de214ab5ab64f109f9a2a91e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1dba82a7e1f842e994138582eaeff9e2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1dba82a7e1f842e994138582eaeff9e2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1dba82a7e1f842e994138582eaeff9e2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1dba82a7e1f842e994138582eaeff9e2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_796baec988c943569cff3b0e91c7bcf9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/796baec988c943569cff3b0e91c7bcf9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_796baec988c943569cff3b0e91c7bcf9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/796baec988c943569cff3b0e91c7bcf9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cf27ae06fe0f430689df6fccd68b6fad span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cf27ae06fe0f430689df6fccd68b6fad/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cf27ae06fe0f430689df6fccd68b6fad span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cf27ae06fe0f430689df6fccd68b6fad/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4060021b522145a281f5ad7c194e8359 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4060021b522145a281f5ad7c194e8359/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4060021b522145a281f5ad7c194e8359 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4060021b522145a281f5ad7c194e8359/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9b34855ca4264825bacb3374e5cc5ef0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9b34855ca4264825bacb3374e5cc5ef0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9b34855ca4264825bacb3374e5cc5ef0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9b34855ca4264825bacb3374e5cc5ef0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5981f482c86949f286eaaf9c787525fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5981f482c86949f286eaaf9c787525fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5981f482c86949f286eaaf9c787525fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5981f482c86949f286eaaf9c787525fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3b3584c6b7324fd580dc3e38e485d8ce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3b3584c6b7324fd580dc3e38e485d8ce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3b3584c6b7324fd580dc3e38e485d8ce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3b3584c6b7324fd580dc3e38e485d8ce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69e5864bdccc4b4e9be230a9d7a84b01 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69e5864bdccc4b4e9be230a9d7a84b01/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69e5864bdccc4b4e9be230a9d7a84b01 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69e5864bdccc4b4e9be230a9d7a84b01/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb93beb00bae4940a52133b934a66164 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb93beb00bae4940a52133b934a66164/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb93beb00bae4940a52133b934a66164 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb93beb00bae4940a52133b934a66164/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e5a88c46af5f4b4a81f9f53eabdb18e3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5a88c46af5f4b4a81f9f53eabdb18e3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e5a88c46af5f4b4a81f9f53eabdb18e3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5a88c46af5f4b4a81f9f53eabdb18e3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_006732094eb5439c957f6e1b60b6e80d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/006732094eb5439c957f6e1b60b6e80d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_006732094eb5439c957f6e1b60b6e80d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/006732094eb5439c957f6e1b60b6e80d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8ba76350eaff44339fe69ce03d139337 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8ba76350eaff44339fe69ce03d139337/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8ba76350eaff44339fe69ce03d139337 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8ba76350eaff44339fe69ce03d139337/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_17f3d267617b46c7ae735a2b31a332f2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/17f3d267617b46c7ae735a2b31a332f2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_17f3d267617b46c7ae735a2b31a332f2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/17f3d267617b46c7ae735a2b31a332f2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4c7cfb904c7c4902975156bfaf6dee55 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c7cfb904c7c4902975156bfaf6dee55/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4c7cfb904c7c4902975156bfaf6dee55 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c7cfb904c7c4902975156bfaf6dee55/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7c06975dd0cb46ec9e1040ac3fd3921d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7c06975dd0cb46ec9e1040ac3fd3921d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7c06975dd0cb46ec9e1040ac3fd3921d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7c06975dd0cb46ec9e1040ac3fd3921d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_3f0899b2-8969-4887-8a71-d1b1ca3e1345{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_3f0899b2-8969-4887-8a71-d1b1ca3e1345/views/thumbnail'); } .swx span.moji.id_71473939cf2a4a249bfffb0c61d5b52e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/71473939cf2a4a249bfffb0c61d5b52e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_71473939cf2a4a249bfffb0c61d5b52e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/71473939cf2a4a249bfffb0c61d5b52e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_428cb1701e594cfab12b003fb92818ac span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/428cb1701e594cfab12b003fb92818ac/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_428cb1701e594cfab12b003fb92818ac span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/428cb1701e594cfab12b003fb92818ac/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_84a856e7cf024f1e8d288eb35a6e5509 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/84a856e7cf024f1e8d288eb35a6e5509/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_84a856e7cf024f1e8d288eb35a6e5509 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/84a856e7cf024f1e8d288eb35a6e5509/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_85edb35e56cf4ff7acf10803b33b99da span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/85edb35e56cf4ff7acf10803b33b99da/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_85edb35e56cf4ff7acf10803b33b99da span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/85edb35e56cf4ff7acf10803b33b99da/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bba3513bc75549ff9117940f52e547f3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bba3513bc75549ff9117940f52e547f3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bba3513bc75549ff9117940f52e547f3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bba3513bc75549ff9117940f52e547f3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_206b27c757e74fc784d34a276864b48e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/206b27c757e74fc784d34a276864b48e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_206b27c757e74fc784d34a276864b48e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/206b27c757e74fc784d34a276864b48e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e02b3419253e462daafd19d5774b26a7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e02b3419253e462daafd19d5774b26a7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e02b3419253e462daafd19d5774b26a7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e02b3419253e462daafd19d5774b26a7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ab7391c6e7f94b6686c3aee7b3bd59f2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ab7391c6e7f94b6686c3aee7b3bd59f2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ab7391c6e7f94b6686c3aee7b3bd59f2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ab7391c6e7f94b6686c3aee7b3bd59f2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bfbe7722aa8c4c86b0c6f3bff9737670 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bfbe7722aa8c4c86b0c6f3bff9737670/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bfbe7722aa8c4c86b0c6f3bff9737670 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bfbe7722aa8c4c86b0c6f3bff9737670/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c08321b3b07b467f81bd11d912892bfa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c08321b3b07b467f81bd11d912892bfa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c08321b3b07b467f81bd11d912892bfa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c08321b3b07b467f81bd11d912892bfa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2f81038cf33f46b491e7972a01d0f852 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2f81038cf33f46b491e7972a01d0f852/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2f81038cf33f46b491e7972a01d0f852 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2f81038cf33f46b491e7972a01d0f852/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d026be1d8edb48a5aea251d335bfb2cf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d026be1d8edb48a5aea251d335bfb2cf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d026be1d8edb48a5aea251d335bfb2cf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d026be1d8edb48a5aea251d335bfb2cf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cec481bb17544214a4427fac86db4d99 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cec481bb17544214a4427fac86db4d99/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cec481bb17544214a4427fac86db4d99 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cec481bb17544214a4427fac86db4d99/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ddca5fcdb71d4a1ba3076f618638bb2e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ddca5fcdb71d4a1ba3076f618638bb2e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ddca5fcdb71d4a1ba3076f618638bb2e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ddca5fcdb71d4a1ba3076f618638bb2e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_249439bb868e47d7ad274ae821bfee75 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/249439bb868e47d7ad274ae821bfee75/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_249439bb868e47d7ad274ae821bfee75 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/249439bb868e47d7ad274ae821bfee75/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4d68acf9a31f40eb86b415bf9347201e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4d68acf9a31f40eb86b415bf9347201e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4d68acf9a31f40eb86b415bf9347201e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4d68acf9a31f40eb86b415bf9347201e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_29d3dd4cc5704de396cf4ffc984651af span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/29d3dd4cc5704de396cf4ffc984651af/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_29d3dd4cc5704de396cf4ffc984651af span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/29d3dd4cc5704de396cf4ffc984651af/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c4946db4ec39440682ab31e984b8fb81 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c4946db4ec39440682ab31e984b8fb81/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c4946db4ec39440682ab31e984b8fb81 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c4946db4ec39440682ab31e984b8fb81/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b3e318618785404b8177157f089d4c9c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b3e318618785404b8177157f089d4c9c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b3e318618785404b8177157f089d4c9c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b3e318618785404b8177157f089d4c9c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f7cd7a504bad47c894b35a73f25a638d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f7cd7a504bad47c894b35a73f25a638d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f7cd7a504bad47c894b35a73f25a638d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f7cd7a504bad47c894b35a73f25a638d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1fdfc400fc234e9fb09dc3d706b6c3f7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1fdfc400fc234e9fb09dc3d706b6c3f7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1fdfc400fc234e9fb09dc3d706b6c3f7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1fdfc400fc234e9fb09dc3d706b6c3f7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_df0a569902b84e549e3675000441b2ef span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df0a569902b84e549e3675000441b2ef/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_df0a569902b84e549e3675000441b2ef span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df0a569902b84e549e3675000441b2ef/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2a92334f21eb4bc68be6961636102456 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2a92334f21eb4bc68be6961636102456/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2a92334f21eb4bc68be6961636102456 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2a92334f21eb4bc68be6961636102456/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fb6fd15bd3e24d8d9e4feb5c372eb03a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fb6fd15bd3e24d8d9e4feb5c372eb03a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fb6fd15bd3e24d8d9e4feb5c372eb03a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fb6fd15bd3e24d8d9e4feb5c372eb03a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_05990448feea47169c832857356868b7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05990448feea47169c832857356868b7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_05990448feea47169c832857356868b7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05990448feea47169c832857356868b7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_70f9799e55d840b58a99dc831ffdc859 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/70f9799e55d840b58a99dc831ffdc859/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_70f9799e55d840b58a99dc831ffdc859 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/70f9799e55d840b58a99dc831ffdc859/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_64417822e3d64dfb83d68f80766cbad4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64417822e3d64dfb83d68f80766cbad4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_64417822e3d64dfb83d68f80766cbad4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64417822e3d64dfb83d68f80766cbad4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f19cdd4dd3924506841263d11191f8df span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f19cdd4dd3924506841263d11191f8df/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f19cdd4dd3924506841263d11191f8df span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f19cdd4dd3924506841263d11191f8df/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a32cb52b18a84bf69e2d3cca0c312384 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a32cb52b18a84bf69e2d3cca0c312384/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a32cb52b18a84bf69e2d3cca0c312384 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a32cb52b18a84bf69e2d3cca0c312384/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ef67bb6d812747928f86a198bac84d33 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef67bb6d812747928f86a198bac84d33/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ef67bb6d812747928f86a198bac84d33 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef67bb6d812747928f86a198bac84d33/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_05c5681f761d4ecfbd3f31e903463a56 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05c5681f761d4ecfbd3f31e903463a56/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_05c5681f761d4ecfbd3f31e903463a56 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05c5681f761d4ecfbd3f31e903463a56/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_81c62925e8f943a386c6bb959b133281 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81c62925e8f943a386c6bb959b133281/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_81c62925e8f943a386c6bb959b133281 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81c62925e8f943a386c6bb959b133281/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4c959df8b4404d759ba3ea250d551b55 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c959df8b4404d759ba3ea250d551b55/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4c959df8b4404d759ba3ea250d551b55 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c959df8b4404d759ba3ea250d551b55/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a6f985f1052b486fbd34983a86f2de10 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6f985f1052b486fbd34983a86f2de10/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a6f985f1052b486fbd34983a86f2de10 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6f985f1052b486fbd34983a86f2de10/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d6dca45ec9424423964cc8c28958e0b9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d6dca45ec9424423964cc8c28958e0b9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d6dca45ec9424423964cc8c28958e0b9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d6dca45ec9424423964cc8c28958e0b9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_65118840c45e406f834c93118e1f47ab span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/65118840c45e406f834c93118e1f47ab/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_65118840c45e406f834c93118e1f47ab span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/65118840c45e406f834c93118e1f47ab/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d686d6e036534406a1646710717eecf3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d686d6e036534406a1646710717eecf3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d686d6e036534406a1646710717eecf3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d686d6e036534406a1646710717eecf3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_21cd328a8ba440fd833ef01204a38bca span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21cd328a8ba440fd833ef01204a38bca/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_21cd328a8ba440fd833ef01204a38bca span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21cd328a8ba440fd833ef01204a38bca/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f3e0e5efcb47446693a34db91f029f20 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f3e0e5efcb47446693a34db91f029f20/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f3e0e5efcb47446693a34db91f029f20 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f3e0e5efcb47446693a34db91f029f20/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c5f05c3e1b464e4e93bae0219769bcec span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c5f05c3e1b464e4e93bae0219769bcec/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c5f05c3e1b464e4e93bae0219769bcec span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c5f05c3e1b464e4e93bae0219769bcec/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_712b4523e3e44de7950d939b320516d3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/712b4523e3e44de7950d939b320516d3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_712b4523e3e44de7950d939b320516d3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/712b4523e3e44de7950d939b320516d3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fa8f0046afd44fe0bbc263d702501172 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fa8f0046afd44fe0bbc263d702501172/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fa8f0046afd44fe0bbc263d702501172 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fa8f0046afd44fe0bbc263d702501172/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d5e1e45f386a4c28b1813a3528c0b99c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d5e1e45f386a4c28b1813a3528c0b99c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d5e1e45f386a4c28b1813a3528c0b99c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d5e1e45f386a4c28b1813a3528c0b99c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_014b9e432fd442e98bc0f3a07a68e9ad span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/014b9e432fd442e98bc0f3a07a68e9ad/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_014b9e432fd442e98bc0f3a07a68e9ad span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/014b9e432fd442e98bc0f3a07a68e9ad/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_187c5506169542e1b984da2e505e955b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/187c5506169542e1b984da2e505e955b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_187c5506169542e1b984da2e505e955b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/187c5506169542e1b984da2e505e955b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d59e0c965d03465c99febb40c82213ae span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d59e0c965d03465c99febb40c82213ae/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d59e0c965d03465c99febb40c82213ae span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d59e0c965d03465c99febb40c82213ae/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_9140db0c-bc25-4ff2-a9d7-9e9721215cf0{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_9140db0c-bc25-4ff2-a9d7-9e9721215cf0/views/thumbnail'); } .swx span.moji.id_673c4b8b466c4774b4c84808b2670263 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/673c4b8b466c4774b4c84808b2670263/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_673c4b8b466c4774b4c84808b2670263 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/673c4b8b466c4774b4c84808b2670263/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_179f82faf6924d37bdb6a04a9a186078 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/179f82faf6924d37bdb6a04a9a186078/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_179f82faf6924d37bdb6a04a9a186078 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/179f82faf6924d37bdb6a04a9a186078/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_829ad138bc524595a9b7b6a1b95a4d79 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/829ad138bc524595a9b7b6a1b95a4d79/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_829ad138bc524595a9b7b6a1b95a4d79 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/829ad138bc524595a9b7b6a1b95a4d79/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_075bac49af93448aae6a17693b6c06a3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/075bac49af93448aae6a17693b6c06a3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_075bac49af93448aae6a17693b6c06a3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/075bac49af93448aae6a17693b6c06a3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_74bd2c325ae14ef38119146cf1d5e338 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/74bd2c325ae14ef38119146cf1d5e338/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_74bd2c325ae14ef38119146cf1d5e338 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/74bd2c325ae14ef38119146cf1d5e338/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5bbf7a2c060849fc8588a725aa4c4a2f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5bbf7a2c060849fc8588a725aa4c4a2f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5bbf7a2c060849fc8588a725aa4c4a2f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5bbf7a2c060849fc8588a725aa4c4a2f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6e0bf7ee73d047deb12a13fa51b48a5b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6e0bf7ee73d047deb12a13fa51b48a5b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6e0bf7ee73d047deb12a13fa51b48a5b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6e0bf7ee73d047deb12a13fa51b48a5b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d72b5430ea5f4dcfb9c28fed21043fd4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d72b5430ea5f4dcfb9c28fed21043fd4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d72b5430ea5f4dcfb9c28fed21043fd4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d72b5430ea5f4dcfb9c28fed21043fd4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d50ae14ad8394880beebd304e5228fc8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d50ae14ad8394880beebd304e5228fc8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d50ae14ad8394880beebd304e5228fc8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d50ae14ad8394880beebd304e5228fc8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e679b2e74ac14b089a97e70ba58e12cb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e679b2e74ac14b089a97e70ba58e12cb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e679b2e74ac14b089a97e70ba58e12cb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e679b2e74ac14b089a97e70ba58e12cb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6d80b24e9d8b442b81d16349a070d4ff span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6d80b24e9d8b442b81d16349a070d4ff/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6d80b24e9d8b442b81d16349a070d4ff span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6d80b24e9d8b442b81d16349a070d4ff/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c940426316eb42ec8278831cc18486fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c940426316eb42ec8278831cc18486fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c940426316eb42ec8278831cc18486fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c940426316eb42ec8278831cc18486fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_93bc04ed1df04ace986840df7dc97cb1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93bc04ed1df04ace986840df7dc97cb1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_93bc04ed1df04ace986840df7dc97cb1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93bc04ed1df04ace986840df7dc97cb1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6a6ea5af9d2046168749d1d689d3bfd3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6a6ea5af9d2046168749d1d689d3bfd3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6a6ea5af9d2046168749d1d689d3bfd3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6a6ea5af9d2046168749d1d689d3bfd3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5d7807e764e14f6ea102ddfdd30acf34 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d7807e764e14f6ea102ddfdd30acf34/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5d7807e764e14f6ea102ddfdd30acf34 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d7807e764e14f6ea102ddfdd30acf34/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_83bf44f0d867434fb296d77bf9488828 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/83bf44f0d867434fb296d77bf9488828/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_83bf44f0d867434fb296d77bf9488828 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/83bf44f0d867434fb296d77bf9488828/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f305b50326b34f07a0c2dd0c27325cea span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f305b50326b34f07a0c2dd0c27325cea/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f305b50326b34f07a0c2dd0c27325cea span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f305b50326b34f07a0c2dd0c27325cea/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_81918ab3b0f441f5a5c2c497958408cb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81918ab3b0f441f5a5c2c497958408cb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_81918ab3b0f441f5a5c2c497958408cb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81918ab3b0f441f5a5c2c497958408cb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5d3fd81f22b341299881072c627533d5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d3fd81f22b341299881072c627533d5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5d3fd81f22b341299881072c627533d5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d3fd81f22b341299881072c627533d5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_650dddb218fa49e58b37365b70f2f2fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/650dddb218fa49e58b37365b70f2f2fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_650dddb218fa49e58b37365b70f2f2fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/650dddb218fa49e58b37365b70f2f2fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b1040c09b5064088916c769fdec01ae7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b1040c09b5064088916c769fdec01ae7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b1040c09b5064088916c769fdec01ae7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b1040c09b5064088916c769fdec01ae7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_19a9ea11ee2045988b3302668054bf05 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/19a9ea11ee2045988b3302668054bf05/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_19a9ea11ee2045988b3302668054bf05 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/19a9ea11ee2045988b3302668054bf05/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb11876c0c0047a69b9200b6e0efd78a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb11876c0c0047a69b9200b6e0efd78a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb11876c0c0047a69b9200b6e0efd78a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb11876c0c0047a69b9200b6e0efd78a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9cfe64021d374cf5b96421b69643c080 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9cfe64021d374cf5b96421b69643c080/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9cfe64021d374cf5b96421b69643c080 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9cfe64021d374cf5b96421b69643c080/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69dbdd78ac32446b956da89856469e65 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69dbdd78ac32446b956da89856469e65/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69dbdd78ac32446b956da89856469e65 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69dbdd78ac32446b956da89856469e65/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c78954a018954f7ea698df876c6a8b3f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c78954a018954f7ea698df876c6a8b3f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c78954a018954f7ea698df876c6a8b3f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c78954a018954f7ea698df876c6a8b3f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f06cb8bc97b54669a43bbd2149cd61bd span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f06cb8bc97b54669a43bbd2149cd61bd/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f06cb8bc97b54669a43bbd2149cd61bd span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f06cb8bc97b54669a43bbd2149cd61bd/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2cf4c86d50ab4945b6f761b3da41e36c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2cf4c86d50ab4945b6f761b3da41e36c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2cf4c86d50ab4945b6f761b3da41e36c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2cf4c86d50ab4945b6f761b3da41e36c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3f8400211a9945ed89b8d6bb14cb0994 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3f8400211a9945ed89b8d6bb14cb0994/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3f8400211a9945ed89b8d6bb14cb0994 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3f8400211a9945ed89b8d6bb14cb0994/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0f22c385ca22484d9bfbb3cbab48beea span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0f22c385ca22484d9bfbb3cbab48beea/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0f22c385ca22484d9bfbb3cbab48beea span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0f22c385ca22484d9bfbb3cbab48beea/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6b781277ee4b466db2fc8d2465e11e73 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6b781277ee4b466db2fc8d2465e11e73/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6b781277ee4b466db2fc8d2465e11e73 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6b781277ee4b466db2fc8d2465e11e73/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0228740c3c714b48a739e7f23085c6cd span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0228740c3c714b48a739e7f23085c6cd/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0228740c3c714b48a739e7f23085c6cd span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0228740c3c714b48a739e7f23085c6cd/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a03e417766214c759167f2248d4a61d6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a03e417766214c759167f2248d4a61d6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a03e417766214c759167f2248d4a61d6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a03e417766214c759167f2248d4a61d6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f54ad605536242908a5a0d41c9c1b067 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f54ad605536242908a5a0d41c9c1b067/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f54ad605536242908a5a0d41c9c1b067 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f54ad605536242908a5a0d41c9c1b067/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_aff5b84ab7274da687f581c3f1e0df62 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/aff5b84ab7274da687f581c3f1e0df62/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_aff5b84ab7274da687f581c3f1e0df62 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/aff5b84ab7274da687f581c3f1e0df62/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b9191f54eda54cf1bc866906f44f88bc span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b9191f54eda54cf1bc866906f44f88bc/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b9191f54eda54cf1bc866906f44f88bc span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b9191f54eda54cf1bc866906f44f88bc/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7ee81d5c2d674bb5a15dc472cea34855 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7ee81d5c2d674bb5a15dc472cea34855/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7ee81d5c2d674bb5a15dc472cea34855 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7ee81d5c2d674bb5a15dc472cea34855/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3208293a51b649d496870f8aa12a134b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3208293a51b649d496870f8aa12a134b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3208293a51b649d496870f8aa12a134b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3208293a51b649d496870f8aa12a134b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_aeac21728808419db8762f0668726a46 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/aeac21728808419db8762f0668726a46/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_aeac21728808419db8762f0668726a46 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/aeac21728808419db8762f0668726a46/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cdd18ea4871e43d496e160ad4965f27e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cdd18ea4871e43d496e160ad4965f27e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cdd18ea4871e43d496e160ad4965f27e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cdd18ea4871e43d496e160ad4965f27e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_44328e9107284bd48dde0eb680c0cae9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/44328e9107284bd48dde0eb680c0cae9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_44328e9107284bd48dde0eb680c0cae9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/44328e9107284bd48dde0eb680c0cae9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d21ac7501aa749d5b8e7a8aec0ed90f0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d21ac7501aa749d5b8e7a8aec0ed90f0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d21ac7501aa749d5b8e7a8aec0ed90f0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d21ac7501aa749d5b8e7a8aec0ed90f0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e986a374294e4fb0b99b789eaebad67a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e986a374294e4fb0b99b789eaebad67a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e986a374294e4fb0b99b789eaebad67a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e986a374294e4fb0b99b789eaebad67a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fc4e775f2e0d4f0395f09b58827d2605 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fc4e775f2e0d4f0395f09b58827d2605/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fc4e775f2e0d4f0395f09b58827d2605 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fc4e775f2e0d4f0395f09b58827d2605/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ffe8af5342c54a9491bb5c7fe5f787bf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ffe8af5342c54a9491bb5c7fe5f787bf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ffe8af5342c54a9491bb5c7fe5f787bf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ffe8af5342c54a9491bb5c7fe5f787bf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c2aadc9747af4d47ae8e885a9e6f287a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c2aadc9747af4d47ae8e885a9e6f287a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c2aadc9747af4d47ae8e885a9e6f287a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c2aadc9747af4d47ae8e885a9e6f287a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_58505e34009947878396f1423ba55a4b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/58505e34009947878396f1423ba55a4b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_58505e34009947878396f1423ba55a4b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/58505e34009947878396f1423ba55a4b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_34bacd320f1c4a9c88bee38a62898b20 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/34bacd320f1c4a9c88bee38a62898b20/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_34bacd320f1c4a9c88bee38a62898b20 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/34bacd320f1c4a9c88bee38a62898b20/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cc7d0be304be4cf584078df6b70f3e36 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cc7d0be304be4cf584078df6b70f3e36/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cc7d0be304be4cf584078df6b70f3e36 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cc7d0be304be4cf584078df6b70f3e36/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5077996932954f3db31d339c1babbc68 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5077996932954f3db31d339c1babbc68/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5077996932954f3db31d339c1babbc68 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5077996932954f3db31d339c1babbc68/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_762c55d69b184dda8743b07a02fac9f9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/762c55d69b184dda8743b07a02fac9f9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_762c55d69b184dda8743b07a02fac9f9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/762c55d69b184dda8743b07a02fac9f9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b6b857539d1646288934df53a153c141 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b6b857539d1646288934df53a153c141/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b6b857539d1646288934df53a153c141 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b6b857539d1646288934df53a153c141/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_689d5408da2d4da6b77a6af46e1afd88 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/689d5408da2d4da6b77a6af46e1afd88/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_689d5408da2d4da6b77a6af46e1afd88 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/689d5408da2d4da6b77a6af46e1afd88/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2100e28ed09e4775a8f526407c688d1a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2100e28ed09e4775a8f526407c688d1a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2100e28ed09e4775a8f526407c688d1a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2100e28ed09e4775a8f526407c688d1a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_76441168f9104465ae8f7c82a5caee39 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/76441168f9104465ae8f7c82a5caee39/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_76441168f9104465ae8f7c82a5caee39 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/76441168f9104465ae8f7c82a5caee39/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_00317bf44db34abfa94f94ecc7188fa1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/00317bf44db34abfa94f94ecc7188fa1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_00317bf44db34abfa94f94ecc7188fa1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/00317bf44db34abfa94f94ecc7188fa1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_60221d3288e84567a2616c9bb0d3d0e2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/60221d3288e84567a2616c9bb0d3d0e2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_60221d3288e84567a2616c9bb0d3d0e2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/60221d3288e84567a2616c9bb0d3d0e2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a84a3172a87443f7a33a6586a58c1dc5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a84a3172a87443f7a33a6586a58c1dc5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a84a3172a87443f7a33a6586a58c1dc5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a84a3172a87443f7a33a6586a58c1dc5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3468419d02f14bbdb16dc55670357608 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3468419d02f14bbdb16dc55670357608/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3468419d02f14bbdb16dc55670357608 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3468419d02f14bbdb16dc55670357608/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d2f6fe7561ad4af9ae89e6644509614d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d2f6fe7561ad4af9ae89e6644509614d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d2f6fe7561ad4af9ae89e6644509614d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d2f6fe7561ad4af9ae89e6644509614d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_21d60ed7dc4647838a301aa21c328e3c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21d60ed7dc4647838a301aa21c328e3c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_21d60ed7dc4647838a301aa21c328e3c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21d60ed7dc4647838a301aa21c328e3c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0d3f576c6f244ab79ef7b6ad65e7fd64 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0d3f576c6f244ab79ef7b6ad65e7fd64/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0d3f576c6f244ab79ef7b6ad65e7fd64 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0d3f576c6f244ab79ef7b6ad65e7fd64/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_24abb925bd7344ff8e0078f4cdef7c16 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/24abb925bd7344ff8e0078f4cdef7c16/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_24abb925bd7344ff8e0078f4cdef7c16 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/24abb925bd7344ff8e0078f4cdef7c16/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_55ae8db8fc214ece88be5cad13934456 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/55ae8db8fc214ece88be5cad13934456/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_55ae8db8fc214ece88be5cad13934456 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/55ae8db8fc214ece88be5cad13934456/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c8d5659530cb4e029a52ed39c451c81d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c8d5659530cb4e029a52ed39c451c81d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c8d5659530cb4e029a52ed39c451c81d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c8d5659530cb4e029a52ed39c451c81d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bd75ea973fb041f2aa8842b7b883380d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd75ea973fb041f2aa8842b7b883380d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bd75ea973fb041f2aa8842b7b883380d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd75ea973fb041f2aa8842b7b883380d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cec8eeff6e1342e19ebad603d3dd6222 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cec8eeff6e1342e19ebad603d3dd6222/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cec8eeff6e1342e19ebad603d3dd6222 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cec8eeff6e1342e19ebad603d3dd6222/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2e4502d4475d402695c253acf62deff5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2e4502d4475d402695c253acf62deff5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2e4502d4475d402695c253acf62deff5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2e4502d4475d402695c253acf62deff5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_47c9ad2d-6808-452e-9c8a-8edf6cd6d206{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_47c9ad2d-6808-452e-9c8a-8edf6cd6d206/views/thumbnail'); } .swx span.moji.id_d56cc53636294519a89d199cabb901df span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d56cc53636294519a89d199cabb901df/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d56cc53636294519a89d199cabb901df span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d56cc53636294519a89d199cabb901df/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f13557045fc9495bb4622e341a6d8e50 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f13557045fc9495bb4622e341a6d8e50/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f13557045fc9495bb4622e341a6d8e50 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f13557045fc9495bb4622e341a6d8e50/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d318c3ae43ac41c28e494c936b26237f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d318c3ae43ac41c28e494c936b26237f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d318c3ae43ac41c28e494c936b26237f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d318c3ae43ac41c28e494c936b26237f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_dc13520d028a4482bdb6d1d8f345346d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dc13520d028a4482bdb6d1d8f345346d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_dc13520d028a4482bdb6d1d8f345346d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dc13520d028a4482bdb6d1d8f345346d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d45faa770d5c48a78c3b96609aeab752 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d45faa770d5c48a78c3b96609aeab752/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d45faa770d5c48a78c3b96609aeab752 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d45faa770d5c48a78c3b96609aeab752/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_01b90af5efaa4a329ba5fb9fc11a8214 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/01b90af5efaa4a329ba5fb9fc11a8214/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_01b90af5efaa4a329ba5fb9fc11a8214 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/01b90af5efaa4a329ba5fb9fc11a8214/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_afccd49ff27d440e9eb04a7fa0486af0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/afccd49ff27d440e9eb04a7fa0486af0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_afccd49ff27d440e9eb04a7fa0486af0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/afccd49ff27d440e9eb04a7fa0486af0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a40f1059859645098c3b2bf5b60ea6d2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a40f1059859645098c3b2bf5b60ea6d2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a40f1059859645098c3b2bf5b60ea6d2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a40f1059859645098c3b2bf5b60ea6d2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9db38710de1e4baf81d4716c4adf91ae span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9db38710de1e4baf81d4716c4adf91ae/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9db38710de1e4baf81d4716c4adf91ae span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9db38710de1e4baf81d4716c4adf91ae/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c9d5c75397dc4b4e8208d9453e2a3a73 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9d5c75397dc4b4e8208d9453e2a3a73/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c9d5c75397dc4b4e8208d9453e2a3a73 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9d5c75397dc4b4e8208d9453e2a3a73/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fe932a77c25244ccbe18e50782e7a664 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fe932a77c25244ccbe18e50782e7a664/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fe932a77c25244ccbe18e50782e7a664 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fe932a77c25244ccbe18e50782e7a664/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c0c5a61511fd48abb28c0c3f06ba8804 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c0c5a61511fd48abb28c0c3f06ba8804/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c0c5a61511fd48abb28c0c3f06ba8804 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c0c5a61511fd48abb28c0c3f06ba8804/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8027dfb48ed34e2bba262bb3201764c1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8027dfb48ed34e2bba262bb3201764c1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8027dfb48ed34e2bba262bb3201764c1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8027dfb48ed34e2bba262bb3201764c1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3cb8024cb3544ccbb3e15047b15cee5c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3cb8024cb3544ccbb3e15047b15cee5c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3cb8024cb3544ccbb3e15047b15cee5c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3cb8024cb3544ccbb3e15047b15cee5c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b58c1b2e1b8b4783872e827002a6d750 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b58c1b2e1b8b4783872e827002a6d750/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b58c1b2e1b8b4783872e827002a6d750 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b58c1b2e1b8b4783872e827002a6d750/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_314d4a0ddc3a4d4db2fbae0d8600835b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/314d4a0ddc3a4d4db2fbae0d8600835b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_314d4a0ddc3a4d4db2fbae0d8600835b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/314d4a0ddc3a4d4db2fbae0d8600835b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7996182e84444a4dba0d0f0a0d539605 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7996182e84444a4dba0d0f0a0d539605/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7996182e84444a4dba0d0f0a0d539605 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7996182e84444a4dba0d0f0a0d539605/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6a02f7b0e5cd4f96889708ddd0373502 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6a02f7b0e5cd4f96889708ddd0373502/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6a02f7b0e5cd4f96889708ddd0373502 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6a02f7b0e5cd4f96889708ddd0373502/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a39a393f0351424089b2336d90bd31a0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a39a393f0351424089b2336d90bd31a0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a39a393f0351424089b2336d90bd31a0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a39a393f0351424089b2336d90bd31a0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f1147fcaef6d44ff95f79490e33a0bca span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f1147fcaef6d44ff95f79490e33a0bca/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f1147fcaef6d44ff95f79490e33a0bca span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f1147fcaef6d44ff95f79490e33a0bca/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5de66b6d601f49c592e6b05d51800bd3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5de66b6d601f49c592e6b05d51800bd3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5de66b6d601f49c592e6b05d51800bd3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5de66b6d601f49c592e6b05d51800bd3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_29c47595fcd64bf48e9094f043fd910b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/29c47595fcd64bf48e9094f043fd910b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_29c47595fcd64bf48e9094f043fd910b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/29c47595fcd64bf48e9094f043fd910b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_89f6866e23f444ea9d952211fd7556fd span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/89f6866e23f444ea9d952211fd7556fd/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_89f6866e23f444ea9d952211fd7556fd span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/89f6866e23f444ea9d952211fd7556fd/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e87e2280d045412ca423a39518976409 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e87e2280d045412ca423a39518976409/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e87e2280d045412ca423a39518976409 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e87e2280d045412ca423a39518976409/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2cd3d1b5da9a4cbb8c92e4eb0ae63edc span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2cd3d1b5da9a4cbb8c92e4eb0ae63edc/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2cd3d1b5da9a4cbb8c92e4eb0ae63edc span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2cd3d1b5da9a4cbb8c92e4eb0ae63edc/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_10279447f732471d99fb35dd3b5fcbf6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/10279447f732471d99fb35dd3b5fcbf6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_10279447f732471d99fb35dd3b5fcbf6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/10279447f732471d99fb35dd3b5fcbf6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f4432a0e21dd4396b89d80ea6d59c530 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f4432a0e21dd4396b89d80ea6d59c530/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f4432a0e21dd4396b89d80ea6d59c530 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f4432a0e21dd4396b89d80ea6d59c530/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0a7f800771c047a4b7fc70cd5db96f6a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a7f800771c047a4b7fc70cd5db96f6a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0a7f800771c047a4b7fc70cd5db96f6a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a7f800771c047a4b7fc70cd5db96f6a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7c92f2f5f73944b9abdd00f7bebf2f6d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7c92f2f5f73944b9abdd00f7bebf2f6d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7c92f2f5f73944b9abdd00f7bebf2f6d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7c92f2f5f73944b9abdd00f7bebf2f6d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0c51e8b06af641b9be78f21b6423f64f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0c51e8b06af641b9be78f21b6423f64f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0c51e8b06af641b9be78f21b6423f64f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0c51e8b06af641b9be78f21b6423f64f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d128b5f888764c06ab4fa4413d9f782e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d128b5f888764c06ab4fa4413d9f782e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d128b5f888764c06ab4fa4413d9f782e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d128b5f888764c06ab4fa4413d9f782e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5c5234c2364247c886f71f58f395dc4a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5c5234c2364247c886f71f58f395dc4a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5c5234c2364247c886f71f58f395dc4a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5c5234c2364247c886f71f58f395dc4a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a39cca0a78224bc09fa3e1fb1646181a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a39cca0a78224bc09fa3e1fb1646181a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a39cca0a78224bc09fa3e1fb1646181a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a39cca0a78224bc09fa3e1fb1646181a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_599742270f5d4673a8242b83ff4d38be span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/599742270f5d4673a8242b83ff4d38be/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_599742270f5d4673a8242b83ff4d38be span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/599742270f5d4673a8242b83ff4d38be/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8c9c913bd0e9491f9c95b29860b13570 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8c9c913bd0e9491f9c95b29860b13570/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8c9c913bd0e9491f9c95b29860b13570 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8c9c913bd0e9491f9c95b29860b13570/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8bd527b823384392a8ba47e345a386c2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8bd527b823384392a8ba47e345a386c2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8bd527b823384392a8ba47e345a386c2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8bd527b823384392a8ba47e345a386c2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_38939ff08daa4331ac99a4fb58e2ab7b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/38939ff08daa4331ac99a4fb58e2ab7b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_38939ff08daa4331ac99a4fb58e2ab7b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/38939ff08daa4331ac99a4fb58e2ab7b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0a62f2035a5d4000aaca26b1ed3b0491 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a62f2035a5d4000aaca26b1ed3b0491/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0a62f2035a5d4000aaca26b1ed3b0491 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a62f2035a5d4000aaca26b1ed3b0491/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1dd204076b16496393ba936b22e3861f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1dd204076b16496393ba936b22e3861f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1dd204076b16496393ba936b22e3861f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1dd204076b16496393ba936b22e3861f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_14f03002-b78b-4bb3-875a-caf90f336962{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_14f03002-b78b-4bb3-875a-caf90f336962/views/thumbnail'); } .swx span.moji.id_5e4b15ed51244c5daae58114abeda46c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5e4b15ed51244c5daae58114abeda46c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5e4b15ed51244c5daae58114abeda46c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5e4b15ed51244c5daae58114abeda46c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e0734f17138c46a693b00a2b58babc12 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e0734f17138c46a693b00a2b58babc12/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e0734f17138c46a693b00a2b58babc12 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e0734f17138c46a693b00a2b58babc12/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9401c7f9c12944e49daa82fc1e92ec31 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9401c7f9c12944e49daa82fc1e92ec31/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9401c7f9c12944e49daa82fc1e92ec31 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9401c7f9c12944e49daa82fc1e92ec31/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0ebd46c04fa641df8be24bb42d911c6b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ebd46c04fa641df8be24bb42d911c6b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0ebd46c04fa641df8be24bb42d911c6b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ebd46c04fa641df8be24bb42d911c6b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2c954e3931b84b88b23be618aad04d60 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2c954e3931b84b88b23be618aad04d60/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2c954e3931b84b88b23be618aad04d60 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2c954e3931b84b88b23be618aad04d60/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d796450ddff1496a9d43eb7d1ee795c6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d796450ddff1496a9d43eb7d1ee795c6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d796450ddff1496a9d43eb7d1ee795c6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d796450ddff1496a9d43eb7d1ee795c6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_df369f9ec4a7475396e5c1deabe21167 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df369f9ec4a7475396e5c1deabe21167/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_df369f9ec4a7475396e5c1deabe21167 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df369f9ec4a7475396e5c1deabe21167/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bd44b6dc2e784f6eac5db538a15a5d8c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd44b6dc2e784f6eac5db538a15a5d8c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bd44b6dc2e784f6eac5db538a15a5d8c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd44b6dc2e784f6eac5db538a15a5d8c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_80a3b4c737e1461b87f86d385084fc84 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80a3b4c737e1461b87f86d385084fc84/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_80a3b4c737e1461b87f86d385084fc84 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80a3b4c737e1461b87f86d385084fc84/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb677fa811474474ad19fd9cf34afd8e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb677fa811474474ad19fd9cf34afd8e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb677fa811474474ad19fd9cf34afd8e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb677fa811474474ad19fd9cf34afd8e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5db6bfb50b064e739f068d407d207ca0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5db6bfb50b064e739f068d407d207ca0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5db6bfb50b064e739f068d407d207ca0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5db6bfb50b064e739f068d407d207ca0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3bf5fa39f6504adf83135118d40896bc span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3bf5fa39f6504adf83135118d40896bc/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3bf5fa39f6504adf83135118d40896bc span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3bf5fa39f6504adf83135118d40896bc/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3e36be2d9396496ea6e8dc7f6a9acad7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3e36be2d9396496ea6e8dc7f6a9acad7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3e36be2d9396496ea6e8dc7f6a9acad7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3e36be2d9396496ea6e8dc7f6a9acad7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_eadac0775ce3428197104734ef87a481 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eadac0775ce3428197104734ef87a481/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_eadac0775ce3428197104734ef87a481 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eadac0775ce3428197104734ef87a481/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fdff4a0706474dc0a09124a20a4d4df1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fdff4a0706474dc0a09124a20a4d4df1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fdff4a0706474dc0a09124a20a4d4df1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fdff4a0706474dc0a09124a20a4d4df1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7a43b13d029342ef8377421e67467be4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7a43b13d029342ef8377421e67467be4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7a43b13d029342ef8377421e67467be4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7a43b13d029342ef8377421e67467be4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_75063885ecac46e5858d78e952081db8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/75063885ecac46e5858d78e952081db8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_75063885ecac46e5858d78e952081db8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/75063885ecac46e5858d78e952081db8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c9c96f5f116644169c3b7dc18e420427 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9c96f5f116644169c3b7dc18e420427/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c9c96f5f116644169c3b7dc18e420427 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9c96f5f116644169c3b7dc18e420427/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8f5cb164036544bba48aa99934b070bf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8f5cb164036544bba48aa99934b070bf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8f5cb164036544bba48aa99934b070bf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8f5cb164036544bba48aa99934b070bf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fed32aeaa317437ebd2b0a2d7d9036a9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fed32aeaa317437ebd2b0a2d7d9036a9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fed32aeaa317437ebd2b0a2d7d9036a9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fed32aeaa317437ebd2b0a2d7d9036a9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_93ef3bf9986a4978b046bbdb2f5a6019 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93ef3bf9986a4978b046bbdb2f5a6019/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_93ef3bf9986a4978b046bbdb2f5a6019 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93ef3bf9986a4978b046bbdb2f5a6019/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a4adecdd9c284db7b248071bc7cd4ce0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a4adecdd9c284db7b248071bc7cd4ce0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a4adecdd9c284db7b248071bc7cd4ce0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a4adecdd9c284db7b248071bc7cd4ce0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_2fc67e28-34b3-4068-8040-724564b07476{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_2fc67e28-34b3-4068-8040-724564b07476/views/thumbnail'); } .swx span.moji.id_9dc9b765760948378c7d749f229a0cce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9dc9b765760948378c7d749f229a0cce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9dc9b765760948378c7d749f229a0cce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9dc9b765760948378c7d749f229a0cce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2b3bd2ed622e443c8ff98c5df55b4e31 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2b3bd2ed622e443c8ff98c5df55b4e31/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2b3bd2ed622e443c8ff98c5df55b4e31 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2b3bd2ed622e443c8ff98c5df55b4e31/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c73b191c08504b9c933b76f58707b550 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c73b191c08504b9c933b76f58707b550/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c73b191c08504b9c933b76f58707b550 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c73b191c08504b9c933b76f58707b550/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3af445b6d4ac46f5a885c6b3f871801c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3af445b6d4ac46f5a885c6b3f871801c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3af445b6d4ac46f5a885c6b3f871801c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3af445b6d4ac46f5a885c6b3f871801c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5dd08aa8fc4e43529a6e1e303899a73e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5dd08aa8fc4e43529a6e1e303899a73e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5dd08aa8fc4e43529a6e1e303899a73e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5dd08aa8fc4e43529a6e1e303899a73e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d817b63981fb4d0fbf47b3d93e29acb4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d817b63981fb4d0fbf47b3d93e29acb4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d817b63981fb4d0fbf47b3d93e29acb4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d817b63981fb4d0fbf47b3d93e29acb4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e86ec46981574373baeca9af544e1dd8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e86ec46981574373baeca9af544e1dd8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e86ec46981574373baeca9af544e1dd8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e86ec46981574373baeca9af544e1dd8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f35ebf0ddd1d4da8b5de712adb3083ba span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f35ebf0ddd1d4da8b5de712adb3083ba/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f35ebf0ddd1d4da8b5de712adb3083ba span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f35ebf0ddd1d4da8b5de712adb3083ba/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_194a1e4d44b242e58367749dcb90326a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/194a1e4d44b242e58367749dcb90326a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_194a1e4d44b242e58367749dcb90326a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/194a1e4d44b242e58367749dcb90326a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9023ca489ef3473b81f5bb44eb3d8d73 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9023ca489ef3473b81f5bb44eb3d8d73/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9023ca489ef3473b81f5bb44eb3d8d73 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9023ca489ef3473b81f5bb44eb3d8d73/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_68138afc5fda4ef79b91a3ca40b05502 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/68138afc5fda4ef79b91a3ca40b05502/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_68138afc5fda4ef79b91a3ca40b05502 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/68138afc5fda4ef79b91a3ca40b05502/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ad5e3abb979a411399d82f622e542ea6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ad5e3abb979a411399d82f622e542ea6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ad5e3abb979a411399d82f622e542ea6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ad5e3abb979a411399d82f622e542ea6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_2cd836d1-956e-4ca9-afbe-0531dcdca505{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_2cd836d1-956e-4ca9-afbe-0531dcdca505/views/thumbnail'); } .swx span.moji.id_18884340c2414c62b00bc318504260ed span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/18884340c2414c62b00bc318504260ed/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_18884340c2414c62b00bc318504260ed span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/18884340c2414c62b00bc318504260ed/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9ab2b5d1ff374cea970c22f08aedbe0e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ab2b5d1ff374cea970c22f08aedbe0e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9ab2b5d1ff374cea970c22f08aedbe0e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ab2b5d1ff374cea970c22f08aedbe0e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_03a045222ce34b90b58e4bf180c2284a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/03a045222ce34b90b58e4bf180c2284a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_03a045222ce34b90b58e4bf180c2284a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/03a045222ce34b90b58e4bf180c2284a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7cfb161c33234356bcda36b1a3062b39 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7cfb161c33234356bcda36b1a3062b39/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7cfb161c33234356bcda36b1a3062b39 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7cfb161c33234356bcda36b1a3062b39/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e53595ec70754b01a9b0a8c077d2e5ad span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e53595ec70754b01a9b0a8c077d2e5ad/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e53595ec70754b01a9b0a8c077d2e5ad span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e53595ec70754b01a9b0a8c077d2e5ad/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5120b685cdba4f50b91ecce8327c57c2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5120b685cdba4f50b91ecce8327c57c2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5120b685cdba4f50b91ecce8327c57c2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5120b685cdba4f50b91ecce8327c57c2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_391e60f5ca004b0aa7956478df92eae8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/391e60f5ca004b0aa7956478df92eae8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_391e60f5ca004b0aa7956478df92eae8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/391e60f5ca004b0aa7956478df92eae8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a660dab08a73453f89eaba5531ed8db2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a660dab08a73453f89eaba5531ed8db2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a660dab08a73453f89eaba5531ed8db2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a660dab08a73453f89eaba5531ed8db2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7fb1910129484e31a4ae54346c84e206 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7fb1910129484e31a4ae54346c84e206/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7fb1910129484e31a4ae54346c84e206 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7fb1910129484e31a4ae54346c84e206/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_87b5c8f795064f7da0da22a59af95680 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/87b5c8f795064f7da0da22a59af95680/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_87b5c8f795064f7da0da22a59af95680 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/87b5c8f795064f7da0da22a59af95680/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_40e49ed72f3f4c53b898102fdbfc2c03 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/40e49ed72f3f4c53b898102fdbfc2c03/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_40e49ed72f3f4c53b898102fdbfc2c03 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/40e49ed72f3f4c53b898102fdbfc2c03/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9956c4564c8e4fa0a1f0abdecf23d5b2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9956c4564c8e4fa0a1f0abdecf23d5b2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9956c4564c8e4fa0a1f0abdecf23d5b2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9956c4564c8e4fa0a1f0abdecf23d5b2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3bf8b7a4e9c347708d25c5f0069dea3f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3bf8b7a4e9c347708d25c5f0069dea3f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3bf8b7a4e9c347708d25c5f0069dea3f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3bf8b7a4e9c347708d25c5f0069dea3f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c0c8700df236443ab100d1963c22f192 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c0c8700df236443ab100d1963c22f192/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c0c8700df236443ab100d1963c22f192 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c0c8700df236443ab100d1963c22f192/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b23b5804a04e41af8a77deffba126720 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b23b5804a04e41af8a77deffba126720/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b23b5804a04e41af8a77deffba126720 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b23b5804a04e41af8a77deffba126720/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e1d534825cff456eb54edfe06fc673cf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e1d534825cff456eb54edfe06fc673cf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e1d534825cff456eb54edfe06fc673cf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e1d534825cff456eb54edfe06fc673cf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_96aabeaf71b44e6faa3c6f141b5f34f9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/96aabeaf71b44e6faa3c6f141b5f34f9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_96aabeaf71b44e6faa3c6f141b5f34f9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/96aabeaf71b44e6faa3c6f141b5f34f9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7964e7a51ee44e9c8536016e70563fdc span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7964e7a51ee44e9c8536016e70563fdc/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7964e7a51ee44e9c8536016e70563fdc span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7964e7a51ee44e9c8536016e70563fdc/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f96a75da9440429ca22baef01ac76685 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f96a75da9440429ca22baef01ac76685/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f96a75da9440429ca22baef01ac76685 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f96a75da9440429ca22baef01ac76685/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fef63f9addcc47bd8e16e5fef8d4a1fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fef63f9addcc47bd8e16e5fef8d4a1fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fef63f9addcc47bd8e16e5fef8d4a1fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fef63f9addcc47bd8e16e5fef8d4a1fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_11a49ac0c55b43028d7b64b1bc80543d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11a49ac0c55b43028d7b64b1bc80543d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_11a49ac0c55b43028d7b64b1bc80543d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11a49ac0c55b43028d7b64b1bc80543d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0972745a71fd428fb4265e31c3bd1bef span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0972745a71fd428fb4265e31c3bd1bef/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0972745a71fd428fb4265e31c3bd1bef span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0972745a71fd428fb4265e31c3bd1bef/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_80864926eae84cc1b44623185ef2d757 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80864926eae84cc1b44623185ef2d757/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_80864926eae84cc1b44623185ef2d757 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80864926eae84cc1b44623185ef2d757/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a6b6cceccbd34d0498dafd7fd4bc51d7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6b6cceccbd34d0498dafd7fd4bc51d7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a6b6cceccbd34d0498dafd7fd4bc51d7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6b6cceccbd34d0498dafd7fd4bc51d7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1d88bbe54b7247f0b2f303c7dd4da0fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1d88bbe54b7247f0b2f303c7dd4da0fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1d88bbe54b7247f0b2f303c7dd4da0fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1d88bbe54b7247f0b2f303c7dd4da0fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_678da6cda87145f1bc9b96954a3562cf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/678da6cda87145f1bc9b96954a3562cf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_678da6cda87145f1bc9b96954a3562cf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/678da6cda87145f1bc9b96954a3562cf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_33cf47a4af8e436da5efe3e9f2a249a1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/33cf47a4af8e436da5efe3e9f2a249a1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_33cf47a4af8e436da5efe3e9f2a249a1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/33cf47a4af8e436da5efe3e9f2a249a1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_008f01b9135a4441a8249f5d003c14a3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/008f01b9135a4441a8249f5d003c14a3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_008f01b9135a4441a8249f5d003c14a3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/008f01b9135a4441a8249f5d003c14a3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2a7b74e34fe04d9d8b171c61199dbed3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2a7b74e34fe04d9d8b171c61199dbed3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2a7b74e34fe04d9d8b171c61199dbed3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2a7b74e34fe04d9d8b171c61199dbed3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ccbdfa5036ff4d61a51d87acb294aa03 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ccbdfa5036ff4d61a51d87acb294aa03/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ccbdfa5036ff4d61a51d87acb294aa03 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ccbdfa5036ff4d61a51d87acb294aa03/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0a122fcbe9e148fdb3ca527c0fd330fb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a122fcbe9e148fdb3ca527c0fd330fb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0a122fcbe9e148fdb3ca527c0fd330fb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a122fcbe9e148fdb3ca527c0fd330fb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d934e84022054927a10617d9c68b5f15 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d934e84022054927a10617d9c68b5f15/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d934e84022054927a10617d9c68b5f15 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d934e84022054927a10617d9c68b5f15/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3ed454a895f046e3ab8065cfda006729 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ed454a895f046e3ab8065cfda006729/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3ed454a895f046e3ab8065cfda006729 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ed454a895f046e3ab8065cfda006729/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_556d61fc9e414c0c84d6ae38a9c01659 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/556d61fc9e414c0c84d6ae38a9c01659/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_556d61fc9e414c0c84d6ae38a9c01659 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/556d61fc9e414c0c84d6ae38a9c01659/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_45626156ed244e2093f262ef05de7500 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/45626156ed244e2093f262ef05de7500/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_45626156ed244e2093f262ef05de7500 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/45626156ed244e2093f262ef05de7500/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d7e5b0d9f6ad4554b7585863166516bb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d7e5b0d9f6ad4554b7585863166516bb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d7e5b0d9f6ad4554b7585863166516bb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d7e5b0d9f6ad4554b7585863166516bb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_40d32ff12d044343b6576049a9c85188 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/40d32ff12d044343b6576049a9c85188/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_40d32ff12d044343b6576049a9c85188 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/40d32ff12d044343b6576049a9c85188/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c552a516696a48fabc97caf091cc1bd5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c552a516696a48fabc97caf091cc1bd5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c552a516696a48fabc97caf091cc1bd5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c552a516696a48fabc97caf091cc1bd5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6feba691dd4a44398bffb5075ab12923 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6feba691dd4a44398bffb5075ab12923/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6feba691dd4a44398bffb5075ab12923 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6feba691dd4a44398bffb5075ab12923/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_02ea7e8b82f545928b11285544095d6a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/02ea7e8b82f545928b11285544095d6a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_02ea7e8b82f545928b11285544095d6a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/02ea7e8b82f545928b11285544095d6a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69b140433d7b4358923629e259f7c3eb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69b140433d7b4358923629e259f7c3eb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69b140433d7b4358923629e259f7c3eb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69b140433d7b4358923629e259f7c3eb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f6e477f5171548349bd36f72c9d40b9a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f6e477f5171548349bd36f72c9d40b9a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f6e477f5171548349bd36f72c9d40b9a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f6e477f5171548349bd36f72c9d40b9a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e245fced1cba4ae18fa0d449de6a89e4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e245fced1cba4ae18fa0d449de6a89e4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e245fced1cba4ae18fa0d449de6a89e4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e245fced1cba4ae18fa0d449de6a89e4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b55b85cc25e34675ba8ed0c50050951c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b55b85cc25e34675ba8ed0c50050951c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b55b85cc25e34675ba8ed0c50050951c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b55b85cc25e34675ba8ed0c50050951c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f540c8eb9b524b92966ec9367fc9b939 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f540c8eb9b524b92966ec9367fc9b939/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f540c8eb9b524b92966ec9367fc9b939 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f540c8eb9b524b92966ec9367fc9b939/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cf65bd5003004764b30c8c2b7274bb18 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cf65bd5003004764b30c8c2b7274bb18/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cf65bd5003004764b30c8c2b7274bb18 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cf65bd5003004764b30c8c2b7274bb18/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_48049a964c6947d398fbc42005288e89 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/48049a964c6947d398fbc42005288e89/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_48049a964c6947d398fbc42005288e89 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/48049a964c6947d398fbc42005288e89/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fd966c6f0d7247d98441e66e66104a15 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fd966c6f0d7247d98441e66e66104a15/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fd966c6f0d7247d98441e66e66104a15 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fd966c6f0d7247d98441e66e66104a15/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8b5e994fbb6c4524983959023879081a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8b5e994fbb6c4524983959023879081a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8b5e994fbb6c4524983959023879081a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8b5e994fbb6c4524983959023879081a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b2d0489dd19046a585ab3b9fb12eb952 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b2d0489dd19046a585ab3b9fb12eb952/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b2d0489dd19046a585ab3b9fb12eb952 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b2d0489dd19046a585ab3b9fb12eb952/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8ae2ef5b828447c3a6c9832b2c51160b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8ae2ef5b828447c3a6c9832b2c51160b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8ae2ef5b828447c3a6c9832b2c51160b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8ae2ef5b828447c3a6c9832b2c51160b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f87b8f95bf4142c281874a8b0d06feff span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f87b8f95bf4142c281874a8b0d06feff/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f87b8f95bf4142c281874a8b0d06feff span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f87b8f95bf4142c281874a8b0d06feff/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3ea11083ab4b4590876f509701b7f3f6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ea11083ab4b4590876f509701b7f3f6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3ea11083ab4b4590876f509701b7f3f6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ea11083ab4b4590876f509701b7f3f6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }-->

    +
    Representative example: Credit limit: £1,200. Interest: £67 Total payable: £1,267 in 11 monthly instalments of £115. Representative 10.6% APR. Interest rate: 5.6% pa (variable)’
    +

    <!--@font-face { font-family: "wf_segoe-ui_light"; src: local("Segoe UI Light"), local("Segoe WP Light"), url('prem/fonts/segoeui-light.woff') format('woff'), url('prem/fonts/segoeui-light.ttf') format('truetype'); } @font-face { font-family: "wf_segoe-ui_normal"; src: local("Segoe UI"), local("Segoe WP"), url('prem/fonts/segoeui-regular.woff') format('woff'), url('prem/fonts/segoeui-regular.ttf') format('truetype'); } @font-face { font-family: "wf_segoe-ui_semibold"; src: local("Segoe UI Semibold"), local("Segoe WP Semibold"), url('prem/fonts/segoeui-semibold.woff') format('woff'), url('prem/fonts/segoeui-semibold.ttf') format('truetype'); font-weight: bold; } @font-face { font-family: "wf_segoe-ui_semilight"; src: local("Segoe UI Semilight"), local("Segoe WP Semilight"), url('prem/fonts/segoeui-semilight.woff') format('woff'), url('prem/fonts/segoeui-semilight.ttf') format('truetype'); } @font-face { font-family: 'webfontPreload'; src: url('prem/16.1809.14.2333995/resources/styles/fonts/office365icons.eot?#iefix') format('embedded-opentype'), url('prem/16.1809.14.2333995/resources/styles/fonts/office365icons.woff') format('woff'), url('prem/16.1809.14.2333995/resources/styles/fonts/office365icons.ttf') format('truetype'); font-weight: normal; font-style: normal; }-->

    <!--.customScrollBar::-webkit-scrollbar{height:18px;width:18px}.customScrollBar::-webkit-scrollbar:disabled{display:none}.customScrollBar::-webkit-scrollbar-button{background-color:#fff;background-repeat:no-repeat;cursor:pointer}.customScrollBar::-webkit-scrollbar-button:horizontal:increment,.customScrollBar::-webkit-scrollbar-button:horizontal:decrement,.customScrollBar::-webkit-scrollbar-button:horizontal:increment:hover,.customScrollBar::-webkit-scrollbar-button:horizontal:decrement:hover,.customScrollBar::-webkit-scrollbar-button:vertical:increment,.customScrollBar::-webkit-scrollbar-button:vertical:decrement,.customScrollBar::-webkit-scrollbar-button:vertical:increment:hover,.customScrollBar::-webkit-scrollbar-button:vertical:decrement:hover{background-position:center;height:18px;width:18px}.customScrollBarLight::-webkit-scrollbar-button{display:none}.customScrollBar::-webkit-scrollbar-track{background-color:#fff}.customScrollBarLight::-webkit-scrollbar-track{background-color:#0072c6}.customScrollBar::-webkit-scrollbar-thumb{border-radius:9px;border:solid 6px #fff;background-color:#c8c8c8}.customScrollBarLight::-webkit-scrollbar-thumb{border-color:#0072c6;background-color:#95b1c1}.customScrollBar::-webkit-scrollbar-thumb:vertical{min-height:50px}.customScrollBar::-webkit-scrollbar-thumb:horizontal{min-width:50px}.customScrollBar::-webkit-scrollbar-thumb:hover{border-radius:9px;border:solid 6px #fff;background-color:#98a3a6}.customScrollBar::-webkit-scrollbar-corner{background-color:#fff}.nativeScrollInertia{-webkit-overflow-scrolling:touch}.csimg{display:inline-block;overflow:hidden}button::-moz-focus-inner{border-width:0;padding:0}.textbox{border-width:1px;border-style:solid;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;-webkit-appearance:none;height:30px;padding:0 5px}.tnarrow .textbox,.twide .textbox{font-size:12px;background-color:#fff;height:14px;padding:3px 5px}.textbox::-webkit-input-placeholder{color:#a6a6a6}.textbox:-moz-placeholder{color:#a6a6a6}.textbox::-moz-placeholder{color:#a6a6a6}.textbox:-ms-input-placeholder{color:#a6a6a6}.textarea{padding:10px}.textarea:hover{background-color:transparent;border-color:transparent}.o365button{background:transparent;border-width:0;padding:0;cursor:pointer!important;font-size:14px}.o365button:disabled,label.o365button[disabled=true]{cursor:default!important}.o365buttonOutlined{padding-right:11px;padding-left:11px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid}.o365buttonOutlined .o365buttonLabel{display:inline-block}.o365buttonOutlined{height:30px}.twide .o365buttonOutlined,.tnarrow .o365buttonOutlined{height:22px}.o365buttonOutlined .o365buttonLabel{height:22px}.checkbox{border-style:none;cursor:pointer;vertical-align:middle}.popupShadow{box-shadow:0 0 20px rgba(0,0,0,.4);border:1px solid #eaeaea}.contextMenuDropShadow{box-shadow:0 0 7px rgba(0,0,0,.4);border:1px solid #eaeaea}.modalBackground{background-color:#fff;height:100%;width:100%;opacity:.65;filter:Alpha(opacity=65)}.clearModalBackground{background-color:#fff;opacity:0;filter:Alpha(opacity=0);height:100%;width:100%}.contextMenuPopup{background-color:#fff}.removeFocusOutline *:focus{outline:none}.addFocusOutline button:focus{outline:dotted 1px}.addFocusRingOutline button:focus{outline:auto 5px -webkit-focus-ring-color}.border-color-transparent{border-color:transparent}.vResize,.hResize{z-index:1000}.hResize,.hResizeCursor *{cursor:row-resize!important}.vResize,.vResizeCursor *{cursor:col-resize!important}.vResizing,.hResizing{filter:alpha(opacity=60);opacity:.6;-moz-opacity:.6;border:solid 1px #666}.vResizing{border-width:0 1px}.hResizing{border-width:1px 0}--><!--.ms-font-su{color:#333;font-family:"wf_segoe-ui_semilight", "Segoe UI Semilight", "Segoe WP Semilight", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:42px;font-weight:normal}.ms-font-xxl{color:#333;font-family:"wf_segoe-ui_light", "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:28px;font-weight:normal}.touch .ms-font-xxl{font-size:30px}.ms-font-xl{color:#333;font-family:"wf_segoe-ui_light", "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:21px;font-weight:normal}.touch .ms-font-xl{font-size:22px}.ms-font-l{color:#333;font-family:"wf_segoe-ui_semilight", "Segoe UI Semilight", "Segoe WP Semilight", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:17px;font-weight:normal}.touch .ms-font-l{font-size:18px}.ms-font-m{color:#333;font-family:"wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:14px;font-weight:normal}.touch .ms-font-m{font-size:15px}.ms-font-s{color:#333;font-family:"wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:12px;font-weight:normal}.touch .ms-font-s{font-size:13px}.ms-font-xs{color:#333;font-family:"wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:11px;font-weight:normal}.touch .ms-font-xs{font-size:12px}.ms-font-mi{color:#333;font-family:"wf_segoe-ui_semibold", "Segoe UI Semibold", "Segoe WP Semibold", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:10px;font-weight:normal}.touch .ms-font-mi{font-size:11px}.ms-font-weight-light,.ms-fwt-l,.ms-font-weight-light-hover:hover,.ms-font-weight-light-before:before,.ms-fwt-l-h:hover,.ms-fwt-l-b:before{font-family:"wf_segoe-ui_light", "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;}.ms-font-weight-semilight,.ms-fwt-sl,.ms-font-weight-semilight-hover:hover,.ms-font-weight-semilight-before:before,.ms-fwt-sl-h:hover,.ms-fwt-sl-b:before{font-family:"wf_segoe-ui_semilight", "Segoe UI Semilight", "Segoe WP Semilight", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif}.ms-font-weight-regular,.ms-fwt-r,.ms-font-weight-regular-hover:hover,.ms-font-weight-regular-before:before,.ms-fwt-r-h:hover,.ms-fwt-r-b:before{font-family:"wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif}.ms-font-weight-semibold,.ms-fwt-sb,.ms-font-weight-semibold-hover:hover,.ms-font-weight-semibold-before:before,.ms-fwt-sb-h:hover,.ms-fwt-sb-b:before{font-family:"wf_segoe-ui_semibold", "Segoe UI Semibold", "Segoe WP Semibold", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-weight:bold}--><!--.ms-bg-color-themeDark, .ms-bgc-td, .ms-bg-color-themeDark-hover:hover, .ms-bg-color-themeDark-focus:focus, .ms-bg-color-themeDark-before:before, .ms-bgc-td-h:hover, .ms-bgc-td-f:focus, .ms-bgc-td-b:before { background-color: #C2171C; }.ms-bg-color-themeDarkAlt, .ms-bgc-tda, .ms-bg-color-themeDarkAlt-hover:hover, .ms-bg-color-themeDarkAlt-focus:focus, .ms-bg-color-themeDarkAlt-before:before, .ms-bgc-tda-h:hover, .ms-bgc-tda-f:focus, .ms-bgc-tda-b:before { background-color: #C2171C; }.ms-bg-color-themeDarker, .ms-bgc-tdr, .ms-bg-color-themeDarker-hover:hover, .ms-bg-color-themeDarker-focus:focus, .ms-bg-color-themeDarker-before:before, .ms-bgc-tdr-h:hover, .ms-bgc-tdr-f:focus, .ms-bgc-tdr-b:before { background-color: #A01318; }.ms-bg-color-themePrimary, .ms-bgc-tp, .ms-bg-color-themePrimary-hover:hover, .ms-bg-color-themePrimary-focus:focus, .ms-bg-color-themePrimary-before:before, .ms-bgc-tp-h:hover, .ms-bgc-tp-f:focus, .ms-bgc-tp-b:before { background-color: #E31E25; }.ms-bg-color-themeSecondary, .ms-bgc-ts, .ms-bg-color-themeSecondary-hover:hover, .ms-bg-color-themeSecondary-focus:focus, .ms-bg-color-themeSecondary-before:before, .ms-bgc-ts-h:hover, .ms-bgc-ts-f:focus, .ms-bgc-ts-b:before { background-color: #E33942; }.ms-bg-color-themeTertiary, .ms-bgc-tt, .ms-bg-color-themeTertiary-hover:hover, .ms-bg-color-themeTertiary-focus:focus, .ms-bg-color-themeTertiary-before:before, .ms-bgc-tt-h:hover, .ms-bgc-tt-f:focus, .ms-bgc-tt-b:before { background-color: #EC7A81; }.ms-bg-color-themeLight, .ms-bgc-tl, .ms-bg-color-themeLight-hover:hover, .ms-bg-color-themeLight-focus:focus, .ms-bg-color-themeLight-before:before, .ms-bgc-tl-h:hover, .ms-bgc-tl-f:focus, .ms-bgc-tl-b:before { background-color: #F3A7AB; }.ms-bg-color-themeLighter, .ms-bgc-tlr, .ms-bg-color-themeLighter-hover:hover, .ms-bg-color-themeLighter-focus:focus, .ms-bg-color-themeLighter-before:before, .ms-bgc-tlr-h:hover, .ms-bgc-tlr-f:focus, .ms-bgc-tlr-b:before { background-color: #FBE0E1; }.ms-bg-color-themeLighterAlt, .ms-bgc-tlra, .ms-bg-color-themeLighterAlt-hover:hover, .ms-bg-color-themeLighterAlt-focus:focus, .ms-bg-color-themeLighterAlt-before:before, .ms-bgc-tlra-h:hover, .ms-bgc-tlra-f:focus, .ms-bgc-tlra-b:before { background-color: #FDEFF0; }.ms-border-color-themeDark, .ms-bcl-td, .ms-border-color-themeDark-hover:hover, .ms-border-color-themeDark-focus:focus, .ms-border-color-themeDark-before:before, .ms-bcl-td-h:hover, .ms-bcl-td-f:focus, .ms-bcl-td-b:before { border-color: #C2171C; }.ms-border-color-themeDarkAlt, .ms-bcl-tda, .ms-border-color-themeDarkAlt-hover:hover, .ms-border-color-themeDarkAlt-focus:focus, .ms-border-color-themeDarkAlt-before:before, .ms-bcl-tda-h:hover, .ms-bcl-tda-f:focus, .ms-bcl-tda-b:before { border-color: #C2171C; }.ms-border-color-themeDarker, .ms-bcl-tdr, .ms-border-color-themeDarker-hover:hover, .ms-border-color-themeDarker-focus:focus, .ms-border-color-themeDarker-before:before, .ms-bcl-tdr-h:hover, .ms-bcl-tdr-f:focus, .ms-bcl-tdr-b:before { border-color: #A01318; }.ms-border-color-themePrimary, .ms-bcl-tp, .ms-border-color-themePrimary-hover:hover, .ms-border-color-themePrimary-focus:focus, .ms-border-color-themePrimary-before:before, .ms-bcl-tp-h:hover, .ms-bcl-tp-f:focus, .ms-bcl-tp-b:before { border-color: #E31E25; }.ms-border-color-themeSecondary, .ms-bcl-ts, .ms-border-color-themeSecondary-hover:hover, .ms-border-color-themeSecondary-focus:focus, .ms-border-color-themeSecondary-before:before, .ms-bcl-ts-h:hover, .ms-bcl-ts-f:focus, .ms-bcl-ts-b:before { border-color: #E33942; }.ms-border-color-themeTertiary, .ms-bcl-tt, .ms-border-color-themeTertiary-hover:hover, .ms-border-color-themeTertiary-focus:focus, .ms-border-color-themeTertiary-before:before, .ms-bcl-tt-h:hover, .ms-bcl-tt-f:focus, .ms-bcl-tt-b:before { border-color: #EC7A81; }.ms-border-color-themeLight, .ms-bcl-tl, .ms-border-color-themeLight-hover:hover, .ms-border-color-themeLight-focus:focus, .ms-border-color-themeLight-before:before, .ms-bcl-tl-h:hover, .ms-bcl-tl-f:focus, .ms-bcl-tl-b:before { border-color: #F3A7AB; }.ms-border-color-themeLighter, .ms-bcl-tlr, .ms-border-color-themeLighter-hover:hover, .ms-border-color-themeLighter-focus:focus, .ms-border-color-themeLighter-before:before, .ms-bcl-tlr-h:hover, .ms-bcl-tlr-f:focus, .ms-bcl-tlr-b:before { border-color: #FBE0E1; }.ms-border-color-themeLighterAlt, .ms-bcl-tlra, .ms-border-color-themeLighterAlt-hover:hover, .ms-border-color-themeLighterAlt-focus:focus, .ms-border-color-themeLighterAlt-before:before, .ms-bcl-tlra-h:hover, .ms-bcl-tlra-f:focus, .ms-bcl-tlra-b:before { border-color: #FDEFF0; }.ms-border-color-top-themePrimary, .ms-bcl-t-tp, .ms-border-color-top-themePrimary-hover:hover, .ms-border-color-top-themePrimary-focus:focus, .ms-border-color-top-themePrimary-before:before, .ms-bcl-t-tp-h:hover, .ms-bcl-t-tp-f:focus, .ms-bcl-t-tp-b:before { border-top-color: #E31E25; }.ms-font-color-themeDark, .ms-fontColor-themeDark, .ms-fontColor-themeDark, .ms-fcl-td, .ms-font-color-themeDark-hover:hover, .ms-font-color-themeDark-focus:focus, .ms-font-color-themeDark-before:before, .ms-fcl-td-h:hover, .ms-fcl-td-f:focus, .ms-fcl-td-b:before { color: #C2171C; }.ms-font-color-themeDarkAlt, .ms-fontColor-themeDarkAlt, .ms-fontColor-themeDarkAlt, .ms-fcl-tda, .ms-font-color-themeDarkAlt-hover:hover, .ms-font-color-themeDarkAlt-focus:focus, .ms-font-color-themeDarkAlt-before:before, .ms-fcl-tda-h:hover, .ms-fcl-tda-f:focus, .ms-fcl-tda-b:before { color: #C2171C; }.ms-font-color-themeDarker, .ms-fontColor-themeDarker, .ms-fontColor-themeDarker, .ms-fcl-tdr, .ms-font-color-themeDarker-hover:hover, .ms-font-color-themeDarker-focus:focus, .ms-font-color-themeDarker-before:before, .ms-fcl-tdr-h:hover, .ms-fcl-tdr-f:focus, .ms-fcl-tdr-b:before { color: #A01318; }.ms-font-color-themePrimary, .ms-fontColor-themePrimary, .ms-fontColor-themePrimary, .ms-fcl-tp, .ms-font-color-themePrimary-hover:hover, .ms-font-color-themePrimary-focus:focus, .ms-font-color-themePrimary-before:before, .ms-fcl-tp-h:hover, .ms-fcl-tp-f:focus, .ms-fcl-tp-b:before { color: #E31E25; }.ms-font-color-themeSecondary, .ms-fontColor-themeSecondary, .ms-fontColor-themeSecondary, .ms-fcl-ts, .ms-font-color-themeSecondary-hover:hover, .ms-font-color-themeSecondary-focus:focus, .ms-font-color-themeSecondary-before:before, .ms-fcl-ts-h:hover, .ms-fcl-ts-f:focus, .ms-fcl-ts-b:before { color: #E33942; }.ms-font-color-themeTertiary, .ms-fontColor-themeTertiary, .ms-fontColor-themeTertiary, .ms-fcl-tt, .ms-font-color-themeTertiary-hover:hover, .ms-font-color-themeTertiary-focus:focus, .ms-font-color-themeTertiary-before:before, .ms-fcl-tt-h:hover, .ms-fcl-tt-f:focus, .ms-fcl-tt-b:before { color: #EC7A81; }.ms-font-color-themeLight, .ms-fontColor-themeLight, .ms-fontColor-themeLight, .ms-fcl-tl, .ms-font-color-themeLight-hover:hover, .ms-font-color-themeLight-focus:focus, .ms-font-color-themeLight-before:before, .ms-fcl-tl-h:hover, .ms-fcl-tl-f:focus, .ms-fcl-tl-b:before { color: #F3A7AB; }.ms-font-color-themeLighter, .ms-fontColor-themeLighter, .ms-fontColor-themeLighter, .ms-fcl-tlr, .ms-font-color-themeLighter-hover:hover, .ms-font-color-themeLighter-focus:focus, .ms-font-color-themeLighter-before:before, .ms-fcl-tlr-h:hover, .ms-fcl-tlr-f:focus, .ms-fcl-tlr-b:before { color: #FBE0E1; }.ms-font-color-themeLighterAlt, .ms-fontColor-themeLighterAlt, .ms-fontColor-themeLighterAlt, .ms-fcl-tlra, .ms-font-color-themeLighterAlt-hover:hover, .ms-font-color-themeLighterAlt-focus:focus, .ms-font-color-themeLighterAlt-before:before, .ms-fcl-tlra-h:hover, .ms-fcl-tlra-f:focus, .ms-fcl-tlra-b:before { color: #FDEFF0; }.o365cs-base.o365cst .o365cs-topnavLinkBackground-2{background-color:transparent;background-color:rgba(228,30,38,.8);}.o365cs-base.o365cst .o365cs-topnavText,.o365cs-base.o365cst .o365cs-topnavText:hover{color:#ffffff;}.o365cs-base.o365cst .o365cs-navMenuButton{color:#ffffff;}.o365cs-base.o365cst.o365cs-topnavBGColor-2{background-color:transparent;}.o365cs-base.o365cst .o365cs-appLauncherBackground{background-color:#A01318}--><!--.ms-bg-color-black,.ms-bgc-b,.ms-bg-color-black-hover:hover,.ms-bg-color-black-focus:focus,.ms-bg-color-black-before:before,.ms-bgc-b-h:hover,.ms-bgc-b-f:focus,.ms-bgc-b-b:before{background-color:#000}.ms-bg-color-neutralDark,.ms-bgc-nd,.ms-bg-color-neutralDark-hover:hover,.ms-bg-color-neutralDark-focus:focus,.ms-bg-color-neutralDark-before:before,.ms-bgc-nd-h:hover,.ms-bgc-nd-f:focus,.ms-bgc-nd-b:before{background-color:#212121}.ms-bg-color-neutralPrimary,.ms-bgc-np,.ms-bg-color-neutralPrimary-hover:hover,.ms-bg-color-neutralPrimary-focus:focus,.ms-bg-color-neutralPrimary-before:before,.ms-bgc-np-h:hover,.ms-bgc-np-f:focus,.ms-bgc-np-b:before{background-color:#333}.ms-bg-color-neutralSecondary,.ms-bgc-ns,.ms-bg-color-neutralSecondary-hover:hover,.ms-bg-color-neutralSecondary-focus:focus,.ms-bg-color-neutralSecondary-before:before,.ms-bgc-ns-h:hover,.ms-bgc-ns-f:focus,.ms-bgc-ns-b:before{background-color:#666}.ms-bg-color-neutralSecondaryAlt,.ms-bgc-nsa,.ms-bg-color-neutralSecondaryAlt-hover:hover,.ms-bg-color-neutralSecondaryAlt-focus:focus,.ms-bg-color-neutralSecondaryAlt-before:before,.ms-bgc-nsa-h:hover,.ms-bgc-nsa-f:focus,.ms-bgc-nsa-b:before{background-color:#767676}.ms-bg-color-neutralTertiary,.ms-bgc-nt,.ms-bg-color-neutralTertiary-hover:hover,.ms-bg-color-neutralTertiary-focus:focus,.ms-bg-color-neutralTertiary-before:before,.ms-bgc-nt-h:hover,.ms-bgc-nt-f:focus,.ms-bgc-nt-b:before{background-color:#a6a6a6}.ms-bg-color-neutralTertiaryAlt,.ms-bgc-nta,.ms-bg-color-neutralTertiaryAlt-hover:hover,.ms-bg-color-neutralTertiaryAlt-focus:focus,.ms-bg-color-neutralTertiaryAlt-before:before,.ms-bgc-nta-h:hover,.ms-bgc-nta-f:focus,.ms-bgc-nta-b:before{background-color:#c8c8c8}.ms-bg-color-neutralLight,.ms-bgc-nl,.ms-bg-color-neutralLight-hover:hover,.ms-bg-color-neutralLight-focus:focus,.ms-bg-color-neutralLight-before:before,.ms-bgc-nl-h:hover,.ms-bgc-nl-f:focus,.ms-bgc-nl-b:before{background-color:#eaeaea}.ms-bg-color-neutralLighter,.ms-bgc-nlr,.ms-bg-color-neutralLighter-hover:hover,.ms-bg-color-neutralLighter-focus:focus,.ms-bg-color-neutralLighter-before:before,.ms-bgc-nlr-h:hover,.ms-bgc-nlr-f:focus,.ms-bgc-nlr-b:before{background-color:#f4f4f4}.ms-bg-color-neutralLighterAlt,.ms-bgc-nlra,.ms-bg-color-neutralLighterAlt-hover:hover,.ms-bg-color-neutralLighterAlt-focus:focus,.ms-bg-color-neutralLighterAlt-before:before,.ms-bgc-nlra-h:hover,.ms-bgc-nlra-f:focus,.ms-bgc-nlra-b:before{background-color:#f8f8f8}.ms-bg-color-white,.ms-bgc-w,.ms-bg-color-white-hover:hover,.ms-bg-color-white-focus:focus,.ms-bg-color-white-before:before,.ms-bgc-w-h:hover,.ms-bgc-w-b:before{background-color:#fff}.ms-border-color-black,.ms-bcl-b,.ms-border-color-black-hover:hover,.ms-border-color-black-focus:focus,.ms-border-color-black-before:before,.ms-bcl-b-h:hover,.ms-bcl-b-f:focus,.ms-bcl-b-b:before{border-color:#000}.ms-border-color-neutralDark,.ms-bcl-nd,.ms-border-color-neutralDark-hover:hover,.ms-border-color-neutralDark-focus:focus,.ms-border-color-neutralDark-before:before,.ms-bcl-nd-h:hover,.ms-bcl-nd-f:focus,.ms-bcl-nd-b:before{border-color:#212121}.ms-border-color-neutralPrimary,.ms-bcl-np,.ms-border-color-neutralPrimary-hover:hover,.ms-border-color-neutralPrimary-focus:focus,.ms-border-color-neutralPrimary-before:before,.ms-bcl-np-h:hover,.ms-bcl-np-f:focus,.ms-bcl-np-b:before{border-color:#333}.ms-border-color-neutralSecondary,.ms-bcl-ns,.ms-border-color-neutralSecondary-hover:hover,.ms-border-color-neutralSecondary-focus:focus,.ms-border-color-neutralSecondary-before:before,.ms-bcl-ns-h:hover,.ms-bcl-ns-f:focus,.ms-bcl-ns-b:before{border-color:#666}.ms-border-color-neutralSecondaryAlt,.ms-bcl-nsa,.ms-border-color-neutralSecondaryAlt-hover:hover,.ms-border-color-neutralSecondaryAlt-focus:focus,.ms-border-color-neutralSecondaryAlt-before:before,.ms-bcl-nsa-h:hover,.ms-bcl-nsa-f:focus,.ms-bcl-nsa-b:before{border-color:#767676}.ms-border-color-neutralTertiary,.ms-bcl-nt,.ms-border-color-neutralTertiary-hover:hover,.ms-border-color-neutralTertiary-focus:focus,.ms-border-color-neutralTertiary-before:before,.ms-bcl-nt-h:hover,.ms-bcl-nt-f:focus,.ms-bcl-nt-b:before{border-color:#a6a6a6}.ms-border-color-neutralTertiaryAlt,.ms-bcl-nta,.ms-border-color-neutralTertiaryAlt-hover:hover,.ms-border-color-neutralTertiaryAlt-focus:focus,.ms-border-color-neutralTertiaryAlt-before:before,.ms-bcl-nta-h:hover,.ms-bcl-nta-f:focus,.ms-bcl-nta-b:before{border-color:#c8c8c8}.ms-border-color-neutralLight,.ms-bcl-nl,.ms-border-color-neutralLight-hover:hover,.ms-border-color-neutralLight-focus:focus,.ms-border-color-neutralLight-before:before,.ms-bcl-nl-h:hover,.ms-bcl-nl-f:focus,.ms-bcl-nl-b:before{border-color:#eaeaea}.ms-border-color-neutralLighter,.ms-bcl-nlr,.ms-border-color-neutralLighter-hover:hover,.ms-border-color-neutralLighter-focus:focus,.ms-border-color-neutralLighter-before:before,.ms-bcl-nlr-h:hover,.ms-bcl-nlr-f:focus,.ms-bcl-nlr-b:before{border-color:#f4f4f4}.ms-border-color-neutralLighterAlt,.ms-bcl-nlra,.ms-border-color-neutralLighterAlt-hover:hover,.ms-border-color-neutralLighterAlt-focus:focus,.ms-border-color-neutralLighterAlt-before:before,.ms-bcl-nlra-h:hover,.ms-bcl-nlra-f:focus,.ms-bcl-nlra-b:before{border-color:#f8f8f8}.ms-border-color-white,.ms-bcl-w,.ms-border-color-white-hover:hover,.ms-border-color-white-focus:focus,.ms-border-color-white-before:before,.ms-bcl-w-h:hover,.ms-bcl-w-f:focus,.ms-bcl-w-b:before{border-color:#fff}.ms-font-color-black,.ms-fontColor-black,.ms-fcl-b,.ms-font-color-black-hover:hover,.ms-font-color-black-focus:focus,.ms-font-color-black-before:before,.ms-fcl-b-h:hover,.ms-fcl-b-f:focus,.ms-fcl-b-b:before{color:#000}.ms-font-color-neutralDark,.ms-fontColor-neutralDark,.ms-fcl-nd,.ms-font-color-neutralDark-hover:hover,.ms-font-color-neutralDark-focus:focus,.ms-font-color-neutralDark-before:before,.ms-fcl-nd-h:hover,.ms-fcl-nd-f:focus,.ms-fcl-nd-b:before{color:#212121}.ms-font-color-neutralPrimary,.ms-fontColor-neutralPrimary,.ms-fcl-np,.ms-font-color-neutralPrimary-hover:hover,.ms-font-color-neutralPrimary-focus:focus,.ms-font-color-neutralPrimary-before:before,.ms-fcl-np-h:hover,.ms-fcl-np-f:focus,.ms-fcl-np-b:before{color:#333}.ms-font-color-neutralSecondary,.ms-fontColor-neutralSecondary,.ms-fcl-ns,.ms-font-color-neutralSecondary-hover:hover,.ms-font-color-neutralSecondary-focus:focus,.ms-font-color-neutralSecondary-before:before,.ms-fcl-ns-h:hover,.ms-fcl-ns-f:focus,.ms-fcl-ns-b:before{color:#666}.ms-font-color-neutralSecondaryAlt,.ms-fontColor-neutralSecondaryAlt,.ms-fcl-nsa,.ms-font-color-neutralSecondaryAlt-hover:hover,.ms-font-color-neutralSecondaryAlt-focus:focus,.ms-font-color-neutralSecondaryAlt-before:before,.ms-fcl-nsa-h:hover,.ms-fcl-nsa-f:focus,.ms-fcl-nsa-b:before{color:#767676}.ms-font-color-neutralTertiary,.ms-fontColor-neutralTertiary,.ms-fcl-nt,.ms-font-color-neutralTertiary-hover:hover,.ms-font-color-neutralTertiary-focus:focus,.ms-font-color-neutralTertiary-before:before,.ms-fcl-nt-h:hover,.ms-fcl-nt-f:focus,.ms-fcl-nt-b:before{color:#a6a6a6}.ms-font-color-neutralTertiaryAlt,.ms-fontColor-neutralTertiaryAlt,.ms-fcl-nta,.ms-font-color-neutralTertiaryAlt-hover:hover,.ms-font-color-neutralTertiaryAlt-focus:focus,.ms-font-color-neutralTertiaryAlt-before:before,.ms-fcl-nta-h:hover,.ms-fcl-nta-f:focus,.ms-fcl-nta-b:before{color:#c8c8c8}.ms-font-color-neutralLight,.ms-fontColor-neutralLight,.ms-fcl-nl,.ms-font-color-neutralLight-hover:hover,.ms-font-color-neutralLight-focus:focus,.ms-font-color-neutralLight-before:before,.ms-fcl-nl-h:hover,.ms-fcl-nl-f:focus,.ms-fcl-nl-b:before{color:#eaeaea}.ms-font-color-neutralLighter,.ms-fontColor-neutralLighter,.ms-fcl-nlr,.ms-font-color-neutralLighter-hover:hover,.ms-font-color-neutralLighter-focus:focus,.ms-font-color-neutralLighter-before:before,.ms-fcl-nlr-h:hover,.ms-fcl-nlr-f:focus,.ms-fcl-nlr-b:before{color:#f4f4f4}.ms-font-color-neutralLighterAlt,.ms-fontColor-neutralLighterAlt,.ms-fcl-nlra,.ms-font-color-neutralLighterAlt-hover:hover,.ms-font-color-neutralLighterAlt-focus:focus,.ms-font-color-neutralLighterAlt-before:before,.ms-fcl-nlra-h:hover,.ms-fcl-nlra-f:focus,.ms-fcl-nlra-b:before{color:#f8f8f8}.ms-font-color-white,.ms-fontColor-white,.ms-fcl-w,.ms-font-color-white-hover:hover,.ms-font-color-white-focus:focus,.ms-font-color-white-before:before,.ms-fcl-w-h:hover,.ms-fcl-w-f:focus,.ms-fcl-w-b:before{color:#fff}--><!--.ms-bg-color-yellow,.ms-bgc-y,.ms-bg-color-yellow-hover:hover,.ms-bg-color-yellow-before:before,.ms-bgc-y-h:hover,.ms-bgc-y-b:before{background-color:#ffb900}.ms-bg-color-yellowLight,.ms-bgc-yl,.ms-bg-color-yellowLight-hover:hover,.ms-bg-color-yellowLight-before:before,.ms-bgc-yl-h:hover,.ms-bgc-yl-b:before{background-color:#fff100}.ms-bg-color-orange,.ms-bgc-o,.ms-bg-color-orange-hover:hover,.ms-bg-color-orange-before:before,.ms-bgc-o-h:hover,.ms-bgc-o-b:before{background-color:#d83b01}.ms-bg-color-orangeLight,.ms-bgc-ol,.ms-bg-color-orangeLight-hover:hover,.ms-bg-color-orangeLight-before:before,.ms-bgc-ol-h:hover,.ms-bgc-ol-b:before{background-color:#ff8c00}.ms-bg-color-redDark,.ms-bgc-rd,.ms-bg-color-redDark-hover:hover,.ms-bg-color-redDark-before:before,.ms-bgc-rd-h:hover,.ms-bgc-rd-b:before{background-color:#a80000}.ms-bg-color-red,.ms-bgc-r,.ms-bg-color-red-hover:hover,.ms-bg-color-red-before:before,.ms-bgc-r-h:hover,.ms-bgc-r-b:before{background-color:#e81123}.ms-bg-color-magentaDark,.ms-bgc-md,.ms-bg-color-magentaDark-hover:hover,.ms-bg-color-magentaDark-before:before,.ms-bgc-md-h:hover,.ms-bgc-md-b:before{background-color:#5c005c}.ms-bg-color-magenta,.ms-bgc-m,.ms-bg-color-magenta-hover:hover,.ms-bg-color-magenta-before:before,.ms-bgc-m-h:hover,.ms-bgc-m-b:before{background-color:#b4009e}.ms-bg-color-magentaLight,.ms-bgc-ml,.ms-bg-color-magentaLight-hover:hover,.ms-bg-color-magentaLight-before:before,.ms-bgc-ml-h:hover,.ms-bgc-ml-b:before{background-color:#e3008c}.ms-bg-color-purpleDark,.ms-bgc-pd,.ms-bg-color-purpleDark-hover:hover,.ms-bg-color-purpleDark-before:before,.ms-bgc-pd-h:hover,.ms-bgc-pd-b:before{background-color:#32145a}.ms-bg-color-purple,.ms-bgc-p,.ms-bg-color-purple-hover:hover,.ms-bg-color-purple-before:before,.ms-bgc-p-h:hover,.ms-bgc-p-b:before{background-color:#5c2d91}.ms-bg-color-purpleLight,.ms-bgc-pl,.ms-bg-color-purpleLight-hover:hover,.ms-bg-color-purpleLight-before:before,.ms-bgc-pl-h:hover,.ms-bgc-pl-b:before{background-color:#b4a0ff}.ms-bg-color-blueDark,.ms-bgc-bd,.ms-bg-color-blueDark-hover:hover,.ms-bg-color-blueDark-before:before,.ms-bgc-bd-h:hover,.ms-bgc-bd-b:before{background-color:#002050}.ms-bg-color-blueMid,.ms-bgc-bm,.ms-bg-color-blueMid-hover:hover,.ms-bg-color-blueMid-before:before,.ms-bgc-bm-h:hover,.ms-bgc-bm-b:before{background-color:#00188f}.ms-bg-color-blue,.ms-bgc-blu,.ms-bg-color-blue-hover:hover,.ms-bg-color-blue-before:before,.ms-bgc-blu-h:hover,.ms-bgc-blu-b:before{background-color:#0078d7}.ms-bg-color-blueLight,.ms-bgc-bl,.ms-bg-color-blueLight-hover:hover,.ms-bg-color-blueLight-before:before,.ms-bgc-bl-h:hover,.ms-bgc-bl-b:before{background-color:#00bcf2}.ms-bg-color-tealDark,.ms-bgc-ted,.ms-bg-color-tealDark-hover:hover,.ms-bg-color-tealDark-before:before,.ms-bgc-ted-h:hover,.ms-bgc-ted-b:before{background-color:#004b50}.ms-bg-color-teal,.ms-bgc-t,.ms-bg-color-teal-hover:hover,.ms-bg-color-teal-before:before,.ms-bgc-t-h:hover,.ms-bgc-t-b:before{background-color:#008272}.ms-bg-color-tealLight,.ms-bgc-tel,.ms-bg-color-tealLight-hover:hover,.ms-bg-color-tealLight-before:before,.ms-bgc-tel-h:hover,.ms-bgc-tel-b:before{background-color:#00b294}.ms-bg-color-greenDark,.ms-bgc-gd,.ms-bg-color-greenDark-hover:hover,.ms-bg-color-greenDark-before:before,.ms-bgc-gd-h:hover,.ms-bgc-gd-b:before{background-color:#004b1c}.ms-bg-color-green,.ms-bgc-g,.ms-bg-color-green-hover:hover,.ms-bg-color-green-before:before,.ms-bgc-g-h:hover,.ms-bgc-g-b:before{background-color:#107c10}.ms-bg-color-greenLight,.ms-bgc-gl,.ms-bg-color-greenLight-hover:hover,.ms-bg-color-greenLight-before:before,.ms-bgc-gl-h:hover,.ms-bgc-gl-b:before{background-color:#bad80a}.ms-border-color-yellow,.ms-bcl-y,.ms-border-color-yellow-hover:hover,.ms-border-color-yellow-before:before,.ms-bcl-y-h:hover,.ms-bcl-y-b:before{border-color:#ffb900}.ms-border-color-yellowLight,.ms-bcl-yl,.ms-border-color-yellowLight-hover:hover,.ms-border-color-yellowLight-before:before,.ms-bcl-yl-h:hover,.ms-bcl-yl-b:before{border-color:#fff100}.ms-border-color-orange,.ms-bcl-o,.ms-border-color-orange-hover:hover,.ms-border-color-orange-before:before,.ms-bcl-o-h:hover,.ms-bcl-o-b:before{border-color:#d83b01}.ms-border-color-orangeLight,.ms-bcl-ol,.ms-border-color-orangeLight-hover:hover,.ms-border-color-orangeLight-before:before,.ms-bcl-ol-h:hover,.ms-bcl-ol-b:before{border-color:#ff8c00}.ms-border-color-redDark,.ms-bcl-rd,.ms-border-color-redDark-hover:hover,.ms-border-color-redDark-before:before,.ms-bcl-rd-h:hover,.ms-bcl-rd-b:before{border-color:#a80000}.ms-border-color-red,.ms-bcl-r,.ms-border-color-red-hover:hover,.ms-border-color-red-before:before,.ms-bcl-r-h:hover,.ms-bcl-r-b:before{border-color:#e81123}.ms-border-color-magentaDark,.ms-bcl-md,.ms-border-color-magentaDark-hover:hover,.ms-border-color-magentaDark-before:before,.ms-bcl-md-h:hover,.ms-bcl-md-b:before{border-color:#5c005c}.ms-border-color-magenta,.ms-bcl-m,.ms-border-color-magenta-hover:hover,.ms-border-color-magenta-before:before,.ms-bcl-m-h:hover,.ms-bcl-m-b:before{border-color:#b4009e}.ms-border-color-magentaLight,.ms-bcl-ml,.ms-border-color-magentaLight-hover:hover,.ms-border-color-magentaLight-before:before,.ms-bcl-ml-h:hover,.ms-bcl-ml-b:before{border-color:#e3008c}.ms-border-color-purpleDark,.ms-bcl-pd,.ms-border-color-purpleDark-hover:hover,.ms-border-color-purpleDark-before:before,.ms-bcl-pd-h:hover,.ms-bcl-pd-b:before{border-color:#32145a}.ms-border-color-purple,.ms-bcl-p,.ms-border-color-purple-hover:hover,.ms-border-color-purple-before:before,.ms-bcl-p-h:hover,.ms-bcl-p-b:before{border-color:#5c2d91}.ms-border-color-purpleLight,.ms-bcl-pl,.ms-border-color-purpleLight-hover:hover,.ms-border-color-purpleLight-before:before,.ms-bcl-pl-h:hover,.ms-bcl-pl-b:before{border-color:#b4a0ff}.ms-border-color-blueDark,.ms-bcl-bd,.ms-border-color-blueDark-hover:hover,.ms-border-color-blueDark-before:before,.ms-bcl-bd-h:hover,.ms-bcl-bd-b:before{border-color:#002050}.ms-border-color-blueMid,.ms-bcl-bm,.ms-border-color-blueMid-hover:hover,.ms-border-color-blueMid-before:before,.ms-bcl-bm-h:hover,.ms-bcl-bm-b:before{border-color:#00188f}.ms-border-color-blue,.ms-bcl-blu,.ms-border-color-blue-hover:hover,.ms-border-color-blue-before:before,.ms-bcl-blu-h:hover,.ms-bcl-blu-b:before{border-color:#0078d7}.ms-border-color-blueLight,.ms-bcl-bl,.ms-border-color-blueLight-hover:hover,.ms-border-color-blueLight-before:before,.ms-bcl-bl-h:hover,.ms-bcl-bl-b:before{border-color:#00bcf2}.ms-border-color-tealDark,.ms-bcl-ted,.ms-border-color-tealDark-hover:hover,.ms-border-color-tealDark-before:before,.ms-bcl-ted-h:hover,.ms-bcl-ted-b:before{border-color:#004b50}.ms-border-color-teal,.ms-bcl-t,.ms-border-color-teal-hover:hover,.ms-border-color-teal-before:before,.ms-bcl-t-h:hover,.ms-bcl-t-b:before{border-color:#008272}.ms-border-color-tealLight,.ms-bcl-tel,.ms-border-color-tealLight-hover:hover,.ms-border-color-tealLight-before:before,.ms-bcl-tel-h:hover,.ms-bcl-tel-b:before{border-color:#00b294}.ms-border-color-greenDark,.ms-bcl-gd,.ms-border-color-greenDark-hover:hover,.ms-border-color-greenDark-before:before,.ms-bcl-gd-h:hover,.ms-bcl-gd-b:before{border-color:#004b1c}.ms-border-color-green,.ms-bcl-g,.ms-border-color-green-hover:hover,.ms-border-color-green-before:before,.ms-bcl-g-h:hover,.ms-bcl-g-b:before{border-color:#107c10}.ms-border-color-greenLight,.ms-bcl-gl,.ms-border-color-greenLight-hover:hover,.ms-border-color-greenLight-before:before,.ms-bcl-gl-h:hover,.ms-bcl-gl-b:before{border-color:#bad80a}.ms-font-color-yellow,.ms-fcl-y,.ms-font-color-yellow-hover:hover,.ms-font-color-yellow-before:before,.ms-fcl-y-h:hover,.ms-fcl-y-b:before{color:#ffb900}.ms-font-color-yellowLight,.ms-fcl-yl,.ms-font-color-yellowLight-hover:hover,.ms-font-color-yellowLight-before:before,.ms-fcl-yl-h:hover,.ms-fcl-yl-b:before{color:#fff100}.ms-font-color-orange,.ms-fcl-o,.ms-font-color-orange-hover:hover,.ms-font-color-orange-before:before,.ms-fcl-o-h:hover,.ms-fcl-o-b:before{color:#d83b01}.ms-font-color-orangeLight,.ms-fcl-ol,.ms-font-color-orangeLight-hover:hover,.ms-font-color-orangeLight-before:before,.ms-fcl-ol-h:hover,.ms-fcl-ol-b:before{color:#ff8c00}.ms-font-color-redDark,.ms-fcl-rd,.ms-font-color-redDark-hover:hover,.ms-font-color-redDark-before:before,.ms-fcl-rd-h:hover,.ms-fcl-rd-b:before{color:#a80000}.ms-font-color-red,.ms-fcl-r,.ms-font-color-red-hover:hover,.ms-font-color-red-before:before,.ms-fcl-r-h:hover,.ms-fcl-r-b:before{color:#e81123}.ms-font-color-magentaDark,.ms-fcl-md,.ms-font-color-magentaDark-hover:hover,.ms-font-color-magentaDark-before:before,.ms-fcl-md-h:hover,.ms-fcl-md-b:before{color:#5c005c}.ms-font-color-magenta,.ms-fcl-m,.ms-font-color-magenta-hover:hover,.ms-font-color-magenta-before:before,.ms-fcl-m-h:hover,.ms-fcl-m-b:before{color:#b4009e}.ms-font-color-magentaLight,.ms-fcl-ml,.ms-font-color-magentaLight-hover:hover,.ms-font-color-magentaLight-before:before,.ms-fcl-ml-h:hover,.ms-fcl-ml-b:before{color:#e3008c}.ms-font-color-purpleDark,.ms-fcl-pd,.ms-font-color-purpleDark-hover:hover,.ms-font-color-purpleDark-before:before,.ms-fcl-pd-h:hover,.ms-fcl-pd-b:before{color:#32145a}.ms-font-color-purple,.ms-fcl-p,.ms-font-color-purple-hover:hover,.ms-font-color-purple-before:before,.ms-fcl-p-h:hover,.ms-fcl-p-b:before{color:#5c2d91}.ms-font-color-purpleLight,.ms-fcl-pl,.ms-font-color-purpleLight-hover:hover,.ms-font-color-purpleLight-before:before,.ms-fcl-pl-h:hover,.ms-fcl-pl-b:before{color:#b4a0ff}.ms-font-color-blueDark,.ms-fcl-bd,.ms-font-color-blueDark-hover:hover,.ms-font-color-blueDark-before:before,.ms-fcl-bd-h:hover,.ms-fcl-bd-b:before{color:#002050}.ms-font-color-blueMid,.ms-fcl-bm,.ms-font-color-blueMid-hover:hover,.ms-font-color-blueMid-before:before,.ms-fcl-bm-h:hover,.ms-fcl-bm-b:before{color:#00188f}.ms-font-color-blue,.ms-fcl-blu,.ms-font-color-blue-hover:hover,.ms-font-color-blue-before:before,.ms-fcl-blu-h:hover,.ms-fcl-blu-b:before{color:#0078d7}.ms-font-color-blueLight,.ms-fcl-bl,.ms-font-color-blueLight-hover:hover,.ms-font-color-blueLight-before:before,.ms-fcl-bl-h:hover,.ms-fcl-bl-b:before{color:#00bcf2}.ms-font-color-tealDark,.ms-fcl-ted,.ms-font-color-tealDark-hover:hover,.ms-font-color-tealDark-before:before,.ms-fcl-ted-h:hover,.ms-fcl-ted-b:before{color:#004b50}.ms-font-color-teal,.ms-fcl-t,.ms-font-color-teal-hover:hover,.ms-font-color-teal-before:before,.ms-fcl-t-h:hover,.ms-fcl-t-b:before{color:#008272}.ms-font-color-tealLight,.ms-fcl-tel,.ms-font-color-tealLight-hover:hover,.ms-font-color-tealLight-before:before,.ms-fcl-tel-h:hover,.ms-fcl-tel-b:before{color:#00b294}.ms-font-color-greenDark,.ms-fcl-gd,.ms-font-color-greenDark-hover:hover,.ms-font-color-greenDark-before:before,.ms-fcl-gd-h:hover,.ms-fcl-gd-b:before{color:#004b1c}.ms-font-color-green,.ms-fcl-g,.ms-font-color-green-hover:hover,.ms-font-color-green-before:before,.ms-fcl-g-h:hover,.ms-fcl-g-b:before{color:#107c10}.ms-font-color-greenLight,.ms-fcl-gl,.ms-font-color-greenLight-hover:hover,.ms-font-color-greenLight-before:before,.ms-fcl-gl-h:hover,.ms-fcl-gl-b:before{color:#bad80a}--><!--.owa-font-compose{font-family:Calibri,Arial,Helvetica,sans-serif}.owa-bg-color-neutral-orange{background-color:#D82300}.owa-bg-color-neutral-red{background-color:#A80F22}.owa-bg-color-neutral-yellow{background-color:#FFEE94}.owa-bg-color-neutral-green{background-color:#5DD255}.owa-bg-color-cal-green{background-color:#68A490}.owa-bg-color-cal-purple{background-color:#976CBE}.owa-border-color-neutral-orange{border-color:#D82300}.owa-border-color-neutral-red{border-color:#A80F22}.owa-border-color-neutral-yellow{border-color:#FFEE94}.owa-border-color-neutral-green{border-color:#5DD255}.owa-border-color-cal-green{border-color:#68A490}.owa-border-color-cal-purple{border-color:#976CBE}.owa-color-neutral-darkBlue{color:#00008B}.owa-color-neutral-orange{color:#D82300}.owa-color-neutral-red{color:#A80F22}.owa-color-neutral-yellow{color:#FFEE94}.owa-color-neutral-green{color:#5DD255}.owa-color-neutral-green-alt,.owa-color-neutral-green-alt:before{color:#107c10}.owa-color-cal-green{color:#68A490}.owa-color-cal-green-hover{color:#377353}.owa-color-cal-purple{color:#976CBE}.owa-color-cal-purple-hover{color:#67397B}.owa-color-cal-blue{color:#71C2EB}.owa-color-cal-brown{color:#AB9B81}.owa-color-cal-green-alt{color:#A9C47A}.owa-color-cal-grey{color:#999B9C}.owa-color-cal-orange{color:#E6975C}.owa-color-cal-pink{color:#CA6AAB}.owa-color-cal-red{color:#D57272}.owa-color-cal-teal{color:#7BCBC4}.owa-color-cal-yellow{color:#E3B75D}.owa-color-folder-brown{color:#EAC282}.ms-font-color-red{color:#E81123}.ms-font-color-redDark{color:#A80000}-->

    <!--.o365cs-topnavBGImage{background:url('prem/16.1809.14.2333995/resources/themes/paint/images/0/headerbgmaing2.png'),url('prem/16.1809.14.2333995/resources/themes/paint/images/0/headerbgmaing2.gif');width:1px;height:1px}-->

    <!--body { width: 100%; height: 100%; margin: 0; padding: 0; } #owaLoading { background-color: #FFF; width: 100%; height: 100%; position: absolute; z-index: 10001; } #loadingLogo, #loadingSpinner, #statusText { display: block; margin-left: auto; margin-right: auto; text-align: center; } #loadingLogo { padding-top: 174px; padding-bottom: 22px; } .tnarrow #loadingLogo { padding-top: 52px; } #statusText { color: #0072c6; font-family: 'wf_segoe-ui_normal', 'Segoe UI', 'Segoe WP', Tahoma, Arial, sans-serif; font-size: 12px; margin-top: 20px; } #statusText > span { display: none; margin-left: auto; margin-right: auto; line-height: 11px; } #statusText.script > .script { display: inline; } #statusText.scriptDelay > .scriptDelay { display: inline; } #statusText.data > .data { display: inline; } #statusText.dataDelay > .dataDelay { display: inline; } #statusText.render > .render { display: inline; }-->

    +

    <!--.msFabricScrollDisabled_d34f8364{overflow:hidden!important}--><!--.root_5a2b2aae{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-shadow:0 0 5px 0 rgba(0,0,0,.4);position:absolute;border:1px solid #eaeaea;box-sizing:border-box}@media screen and (-ms-high-contrast:active){.root_5a2b2aae{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_5a2b2aae{border:1px solid #000000}}.container_5a2b2aae{position:relative}.main_5a2b2aae{background-color:#ffffff;overflow-x:hidden;overflow-y:auto;position:relative}.beak_5a2b2aae{position:absolute;background-color:#ffffff;box-shadow:inherit;border:inherit;box-sizing:border-box;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.beakCurtain_5a2b2aae{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#ffffff}--><!--.rootIsFixed_c0ebb2d8{position:fixed;z-index:1000000;top:0;left:0;width:100vw;height:100vh;visibility:hidden}.content_c0ebb2d8{visibility:visible}--><!--.imageContainer_440a7ad1{overflow:hidden}--><!--.root_f9df2ee4{overflow:hidden}.rootIsMaximizeFrame_f9df2ee4{height:100%;width:100%}.image_f9df2ee4{display:block;opacity:0}.image_f9df2ee4.imageIsLoaded_f9df2ee4{opacity:1}.imageIsCenter_f9df2ee4,.imageIsContain_f9df2ee4,.imageIsCover_f9df2ee4{position:relative;top:50%}html[dir=ltr] .imageIsCenter_f9df2ee4,html[dir=ltr] .imageIsContain_f9df2ee4,html[dir=ltr] .imageIsCover_f9df2ee4{left:50%}html[dir=rtl] .imageIsCenter_f9df2ee4,html[dir=rtl] .imageIsContain_f9df2ee4,html[dir=rtl] .imageIsCover_f9df2ee4{right:50%}html[dir=ltr] .imageIsCenter_f9df2ee4,html[dir=ltr] .imageIsContain_f9df2ee4,html[dir=ltr] .imageIsCover_f9df2ee4{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}html[dir=rtl] .imageIsCenter_f9df2ee4,html[dir=rtl] .imageIsContain_f9df2ee4,html[dir=rtl] .imageIsCover_f9df2ee4{-webkit-transform:translate(50%,-50%);transform:translate(50%,-50%)}.imageIsContain_f9df2ee4.imageIsLandscape_f9df2ee4{width:100%;height:auto}.imageIsContain_f9df2ee4.imageIsPortrait_f9df2ee4{height:100%;width:auto}.imageIsCover_f9df2ee4.imageIsLandscape_f9df2ee4{height:100%;width:auto}.imageIsCover_f9df2ee4.imageIsPortrait_f9df2ee4{width:100%;height:auto}.imageIsNone_f9df2ee4{height:auto;width:auto}.imageIsScaleWidthHeight_f9df2ee4{height:100%;width:100%}.imageIsScaleWidth_f9df2ee4{height:auto;width:100%}.imageIsScaleHeight_f9df2ee4{height:100%;width:auto}--><!--.root_d6e318d8{background-color:#ffffff;min-width:180px}.list_d6e318d8{list-style-type:none;margin:0;padding:0;line-height:0}.item_d6e318d8{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;position:relative;box-sizing:border-box}.link_d6e318d8{font:inherit;color:inherit;background:0 0;border:none;width:100%;height:36px;line-height:36px;display:block;cursor:pointer;padding:0 6px}.link_d6e318d8::-moz-focus-inner{border:0}.link_d6e318d8{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .link_d6e318d8:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .link_d6e318d8{text-align:left}html[dir=rtl] .link_d6e318d8{text-align:right}.link_d6e318d8:hover:not([disabled]){background:#f4f4f4}.link_d6e318d8.isDisabled_d6e318d8,.link_d6e318d8[disabled]{color:#c8c8c8;cursor:default;pointer-events:none}.link_d6e318d8.isDisabled_d6e318d8 .icon_d6e318d8,.link_d6e318d8[disabled] .icon_d6e318d8{color:#c8c8c8}.is-focusVisible .link_d6e318d8:focus{background:#f4f4f4}.link_d6e318d8.isExpanded_d6e318d8,.link_d6e318d8.isExpanded_d6e318d8:hover{background:#dadada;color:#000000;font-weight:600}.header_d6e318d8{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;font-weight:600;color:#0078d7;background:0 0;border:none;height:36px;line-height:36px;cursor:default;padding:0 6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.header_d6e318d8::-moz-focus-inner{border:0}.header_d6e318d8{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .header_d6e318d8:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .header_d6e318d8{text-align:left}html[dir=rtl] .header_d6e318d8{text-align:right}a.link_d6e318d8{padding:0 6px;text-rendering:auto;color:inherit;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-shadow:none;text-decoration:none;box-sizing:border-box}.linkContent_d6e318d8{white-space:nowrap;height:inherit;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.divider_d6e318d8{display:block;height:1px;background-color:#eaeaea;position:relative}.icon_d6e318d8{display:inline-block;min-height:1px;max-height:36px;width:14px;margin:0 4px;vertical-align:middle;-ms-flex-negative:0;flex-shrink:0}.iconColor_d6e318d8{color:#0078d7}.itemText_d6e318d8{margin:0 4px;vertical-align:middle;display:inline-block;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.submenuIcon_d6e318d8{height:36px;line-height:36px;text-align:center;font-size:10px;display:inline-block;vertical-align:middle;-ms-flex-negative:0;flex-shrink:0}--><!--.root_8b49c145{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;color:#0078d7;margin:0;overflow:inherit;padding:0;text-overflow:inherit}.isEnabled_8b49c145:focus,.isEnabled_8b49c145:hover{color:#004578}.isEnabled_8b49c145:active{color:#0078d7}.isDisabled_8b49c145{color:#a6a6a6;pointer-events:none;cursor:default}button.root_8b49c145{background:0 0;border:none;cursor:pointer;display:inline;font-size:inherit}button.root_8b49c145::-moz-focus-inner{border:0}button.root_8b49c145{outline:transparent;position:relative}.ms-Fabric.is-focusVisible button.root_8b49c145:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] button.root_8b49c145{text-align:left}html[dir=rtl] button.root_8b49c145{text-align:right}a.root_8b49c145{text-decoration:none}.ms-Fabric.is-focusVisible a.root_8b49c145:focus{outline:1px solid #666666}--><!--.root_a46124c0{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;margin:23px 0 1px}.list_a46124c0{white-space:nowrap;padding:0;margin:0}.chevron_a46124c0{font-size:12px;color:#666666;vertical-align:top;margin:11px 0;line-height:1}.listItem_a46124c0{list-style-type:none;vertical-align:top;margin:0;padding:0;display:inline-block;position:relative}.listItem_a46124c0:last-of-type .chevron_a46124c0{display:none}.listItem_a46124c0 .itemLink_a46124c0,.listItem_a46124c0 .item_a46124c0{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;display:inline-block;padding:0 8px;max-width:160px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;vertical-align:top}.overflow_a46124c0{display:inline-block;position:relative}.overflowButton_a46124c0{font-size:16px;display:inline-block;color:#0078d7;padding:9px 8px;cursor:pointer;vertical-align:top;line-height:1}.overflowButton_a46124c0:hover{cursor:pointer;background-color:#f4f4f4}.item_a46124c0:hover{cursor:default}.root_a46124c0 .itemLink_a46124c0:hover{background-color:#f4f4f4;color:initial;cursor:pointer}.root_a46124c0 .itemLink_a46124c0:focus{color:#212121}.root_a46124c0 .itemLink_a46124c0:active{outline:transparent;background-color:#c8c8c8;color:#333333}.itemLink_a46124c0,.overflowButton_a46124c0{text-decoration:none;outline:transparent}@media screen and (max-width:639px){.listItem_a46124c0 .itemLink_a46124c0{font-size:17px}.chevron_a46124c0{font-size:10px;margin:8px 0}.overflowButton_a46124c0{font-size:15px;padding:6px 8px;line-height:1}}@media screen and (max-width:479px){.listItem_a46124c0 .itemLink_a46124c0{font-size:14px;max-width:116px}.chevron_a46124c0{font-size:8px;margin:7px 0}.overflowButton_a46124c0{padding:4px 6px}}--><!--.flexContainer_9db79f3e{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.root_9db79f3e{outline:transparent}.screenReaderOnly_9db79f3e{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}--><!--.root_025f4789{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;background-color:#f4f4f4;color:#333333;min-width:80px;height:32px;font-weight:600;font-size:14px}.root_025f4789::-moz-focus-inner{border:0}.root_025f4789{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_025f4789:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.label_025f4789{margin:0 4px;line-height:100%}.icon_025f4789{margin:0 4px;height:16px;line-height:16px;text-align:center;vertical-align:middle}.isEnabled_025f4789.isToggled_025f4789{background-color:#0078d7;color:#ffffff}.isEnabled_025f4789:hover{background-color:#eaeaea;color:#000000}.isEnabled_025f4789:active{background-color:#0078d7;color:#ffffff}.isDisabled_025f4789{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none}.isDisabled_025f4789:focus,.isDisabled_025f4789:hover{outline:0}--><!--.root_196d516c{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;border-width:0;background-color:transparent;padding:0 4px;height:40px;color:#333333}.root_196d516c::-moz-focus-inner{border:0}.root_196d516c{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_196d516c:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.flexContainer_196d516c{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.label_196d516c{margin:0 4px;line-height:100%}.icon_196d516c{margin:0 4px;height:16px;line-height:16px;text-align:center;vertical-align:middle}.isEnabled_196d516c.isToggled_196d516c{background-color:#c8c8c8}.isEnabled_196d516c.isToggled_196d516c:hover{background-color:#eaeaea;color:#004578}.isEnabled_196d516c:hover{color:#004578}.isEnabled_196d516c:active{color:#0078d7}.isEnabled_196d516c .icon_196d516c{color:#0078d7}.isDisabled_196d516c{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none;background-color:transparent}.isDisabled_196d516c:focus,.isDisabled_196d516c:hover{outline:0}--><!--.root_7db910d8{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;padding:16px 20px;background-color:#f4f4f4;color:#666666;min-width:80px;max-width:280px;min-height:72px}.root_7db910d8::-moz-focus-inner{border:0}.root_7db910d8{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_7db910d8:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.flexContainer_7db910d8{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;-ms-grid-row-align:stretch;align-items:stretch;min-width:100%;height:auto}html[dir=ltr] .flexContainer_7db910d8{text-align:left}html[dir=rtl] .flexContainer_7db910d8{text-align:right}.label_7db910d8{margin:0 4px;line-height:100%;font-weight:600;color:#000000;margin:0 0 5px}.description_7db910d8{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#666666;line-height:100%}.isEnabled_7db910d8.isToggled_7db910d8{background-color:#0078d7;color:#ffffff}.isEnabled_7db910d8.isToggled_7db910d8 .description_7db910d8,.isEnabled_7db910d8.isToggled_7db910d8 .label_7db910d8{color:inherit}.isEnabled_7db910d8.isToggled_7db910d8:hover{background-color:#eaeaea}.isEnabled_7db910d8.isToggled_7db910d8:hover .description_7db910d8,.isEnabled_7db910d8.isToggled_7db910d8:hover .label_7db910d8{color:#212121}.isEnabled_7db910d8:hover{background-color:#eaeaea}.isEnabled_7db910d8:hover .description_7db910d8{color:#212121}.isEnabled_7db910d8:active{background-color:#0078d7;color:#ffffff}.isEnabled_7db910d8:active .description_7db910d8,.isEnabled_7db910d8:active .label_7db910d8{color:inherit}.isDisabled_7db910d8{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none}.isDisabled_7db910d8:focus,.isDisabled_7db910d8:hover{outline:0}.isDisabled_7db910d8 .description_7db910d8,.isDisabled_7db910d8 .label_7db910d8{color:inherit}--><!--.root_bf6ba701{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;border-width:0;background-color:transparent;padding:0 4px;width:32px;height:32px;color:#666666;font-size:16px}.root_bf6ba701::-moz-focus-inner{border:0}.root_bf6ba701{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_bf6ba701:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.icon_bf6ba701{margin:0 4px;height:16px;line-height:16px;text-align:center;vertical-align:middle;color:#000000}.isEnabled_bf6ba701.isToggled_bf6ba701{background-color:#c8c8c8}.isEnabled_bf6ba701.isToggled_bf6ba701.icon_bf6ba701{color:#000000}.isEnabled_bf6ba701.isToggled_bf6ba701:hover{background-color:#eaeaea}.isEnabled_bf6ba701:hover{color:#004578}.isEnabled_bf6ba701:active{color:#0078d7}.isDisabled_bf6ba701{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none;background-color:transparent}.isDisabled_bf6ba701:focus,.isDisabled_bf6ba701:hover{outline:0}--><!--.root_96e4843c{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;background-color:#0078d7;color:#ffffff;min-width:80px;height:32px;font-weight:600;font-size:14px}.root_96e4843c::-moz-focus-inner{border:0}.root_96e4843c{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_96e4843c:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.root_96e4843c::-moz-focus-inner{border:0}.root_96e4843c{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_96e4843c:focus:after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:1px solid #ffffff}.label_96e4843c{margin:0 4px;line-height:100%}.icon_96e4843c{margin:0 4px;height:16px;line-height:16px;text-align:center;vertical-align:middle}.isEnabled_96e4843c.isToggled_96e4843c{background-color:#005a9e;color:#ffffff}.isEnabled_96e4843c.isToggled_96e4843c:hover{background-color:#eaeaea;color:#000000}.isEnabled_96e4843c:hover{background-color:#005a9e}.isEnabled_96e4843c:active{background-color:#0078d7;color:#ffffff}.isDisabled_96e4843c{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none}.isDisabled_96e4843c:focus,.isDisabled_96e4843c:hover{outline:0}--><!--.root_e5c4ec90{box-sizing:border-box;margin:0;padding:0;box-shadow:none;margin-bottom:17px}.picker_e5c4ec90{color:#000000;font-size:14px;position:relative}html[dir=ltr] .picker_e5c4ec90{text-align:left}html[dir=rtl] .picker_e5c4ec90{text-align:right}.holder_e5c4ec90{-webkit-overflow-scrolling:touch;box-sizing:border-box;background:#ffffff;min-width:300px;display:none}.picker_e5c4ec90.pickerIsOpened_e5c4ec90 .holder_e5c4ec90{-webkit-animation-name:fadeIn_e5c4ec90,slideDownIn10_e5c4ec90;animation-name:fadeIn_e5c4ec90,slideDownIn10_e5c4ec90;-webkit-animation-duration:167ms;-moz-animation-duration:167ms;-ms-animation-duration:167ms;-o-animation-duration:167ms;-webkit-animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-timing-function:cubic-bezier(.1,.25,.75,.9);-webkit-animation-fill-mode:both;animation-fill-mode:both;box-sizing:border-box;display:block}.pickerIsOpened_e5c4ec90{position:relative}.frame_e5c4ec90{padding:1px;position:relative}.wrap_e5c4ec90{margin:-1px;padding:9px}.dayPicker_e5c4ec90{display:block;margin-bottom:30px}.header_e5c4ec90{height:40px;line-height:44px}.month_e5c4ec90,.year_e5c4ec90{display:inline-block;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;margin-top:-1px}.month_e5c4ec90:hover,.year_e5c4ec90:hover{color:#005a9e;cursor:pointer}html[dir=ltr] .month_e5c4ec90{margin-left:15px}html[dir=rtl] .month_e5c4ec90{margin-right:15px}html[dir=ltr] .year_e5c4ec90{margin-left:15px}html[dir=rtl] .year_e5c4ec90{margin-right:15px}.table_e5c4ec90{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:inherit}.table_e5c4ec90 td{margin:0;padding:0}.table_e5c4ec90 td:hover{outline:1px solid transparent}.day_e5c4ec90,.weekday_e5c4ec90{width:40px;height:40px;padding:0;line-height:40px;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:15px;font-weight:400;color:#333333}.dayIsToday_e5c4ec90{position:relative;background-color:#c7e0f4}.dayIsDisabled_e5c4ec90:before{border-top-color:#a6a6a6}.dayIsUnfocused_e5c4ec90{color:#a6a6a6;font-weight:400}.dayIsFocused_e5c4ec90:hover,.dayIsUnfocused_e5c4ec90:hover{cursor:pointer;color:#000000;background:#eaeaea}.day_e5c4ec90.dayIsHighlighted_e5c4ec90.dayIsFocused_e5c4ec90::-moz-focus-inner{border:0}.day_e5c4ec90.dayIsHighlighted_e5c4ec90.dayIsFocused_e5c4ec90{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .day_e5c4ec90.dayIsHighlighted_e5c4ec90.dayIsFocused_e5c4ec90:focus:after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:1px solid #ffffff}.dayIsHighlighted_e5c4ec90:hover,.pickerIsFocused_e5c4ec90 .dayIsHighlighted_e5c4ec90{cursor:pointer;color:#ffffff;background:#0078d7}.dayIsHighlighted_e5c4ec90.dayDisabled_e5c4ec90,.dayIsHighlighted_e5c4ec90.dayDisabled_e5c4ec90:hover{background:#a6a6a6}.monthPicker_e5c4ec90,.yearPicker_e5c4ec90{display:none}.monthComponents_e5c4ec90{position:absolute;top:9px}html[dir=ltr] .monthComponents_e5c4ec90{right:9px}html[dir=rtl] .monthComponents_e5c4ec90{left:9px}html[dir=ltr] .monthComponents_e5c4ec90{left:9px}html[dir=rtl] .monthComponents_e5c4ec90{right:9px}.decadeComponents_e5c4ec90,.yearComponents_e5c4ec90{position:absolute;top:-2px}html[dir=ltr] .decadeComponents_e5c4ec90,html[dir=ltr] .yearComponents_e5c4ec90{right:10px}html[dir=rtl] .decadeComponents_e5c4ec90,html[dir=rtl] .yearComponents_e5c4ec90{left:10px}.nextDecade_e5c4ec90,.nextMonth_e5c4ec90,.nextYear_e5c4ec90,.prevDecade_e5c4ec90,.prevMonth_e5c4ec90,.prevYear_e5c4ec90{width:40px;height:40px;display:block;text-align:center;line-height:40px;text-align:center;font-size:16px;color:#666666;position:relative;top:2px}html[dir=ltr] .nextDecade_e5c4ec90,html[dir=ltr] .nextMonth_e5c4ec90,html[dir=ltr] .nextYear_e5c4ec90,html[dir=ltr] .prevDecade_e5c4ec90,html[dir=ltr] .prevMonth_e5c4ec90,html[dir=ltr] .prevYear_e5c4ec90{margin-left:10px}html[dir=rtl] .nextDecade_e5c4ec90,html[dir=rtl] .nextMonth_e5c4ec90,html[dir=rtl] .nextYear_e5c4ec90,html[dir=rtl] .prevDecade_e5c4ec90,html[dir=rtl] .prevMonth_e5c4ec90,html[dir=rtl] .prevYear_e5c4ec90{margin-right:10px}.nextDecade_e5c4ec90:hover,.nextMonth_e5c4ec90:hover,.nextYear_e5c4ec90:hover,.prevDecade_e5c4ec90:hover,.prevMonth_e5c4ec90:hover,.prevYear_e5c4ec90:hover{color:#212121;cursor:pointer;outline:1px solid transparent}.headerToggleView_e5c4ec90{height:40px;position:absolute;top:0;width:140px;cursor:pointer}html[dir=ltr] .headerToggleView_e5c4ec90{left:0}html[dir=rtl] .headerToggleView_e5c4ec90{right:0}.currentDecade_e5c4ec90,.currentYear_e5c4ec90{display:block;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;height:40px;line-height:40px}html[dir=ltr] .currentDecade_e5c4ec90,html[dir=ltr] .currentYear_e5c4ec90{margin-left:15px}html[dir=rtl] .currentDecade_e5c4ec90,html[dir=rtl] .currentYear_e5c4ec90{margin-right:15px}.currentYear_e5c4ec90{color:#0078d7}.currentYear_e5c4ec90:hover{color:#005a9e;cursor:pointer}.optionGrid_e5c4ec90{position:relative;height:210px;width:280px;margin:10px 0 30px 5px}html[dir=rtl] .optionGrid_e5c4ec90{margin:10px 5px 30px 0}.monthOption_e5c4ec90,.yearOption_e5c4ec90{background-color:#f4f4f4;width:60px;height:60px;line-height:60px;cursor:pointer;margin:0 10px 10px 0;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:13px;font-weight:400;color:#333333;text-align:center}html[dir=ltr] .monthOption_e5c4ec90,html[dir=ltr] .yearOption_e5c4ec90{float:left}html[dir=rtl] .monthOption_e5c4ec90,html[dir=rtl] .yearOption_e5c4ec90{float:right}html[dir=rtl] .monthOption_e5c4ec90,html[dir=rtl] .yearOption_e5c4ec90{margin:0 0 10px 10px}.monthOption_e5c4ec90:hover,.yearOption_e5c4ec90:hover{background-color:#c8c8c8;outline:1px solid transparent}.monthOption_e5c4ec90.isHighlighted_e5c4ec90,.yearOption_e5c4ec90.isHighlighted_e5c4ec90{background-color:#333333;color:#ffffff}.goToday_e5c4ec90{bottom:9px;color:#0078d7;cursor:pointer;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:13px;font-weight:400;color:#333333;height:30px;line-height:30px;padding:0 10px;position:absolute!important}html[dir=ltr] .goToday_e5c4ec90{right:3px}html[dir=rtl] .goToday_e5c4ec90{left:3px}.goToday_e5c4ec90:hover{outline:1px solid transparent}.root_e5c4ec90.isPickingYears_e5c4ec90 .dayPicker_e5c4ec90,.root_e5c4ec90.isPickingYears_e5c4ec90 .monthComponents_e5c4ec90{display:none}.root_e5c4ec90.isPickingYears_e5c4ec90 .monthPicker_e5c4ec90{display:none}.root_e5c4ec90.isPickingYears_e5c4ec90 .yearPicker_e5c4ec90{display:block}@media (min-width:460px){.header_e5c4ec90{height:30px;line-height:30px}.day_e5c4ec90,.weekday_e5c4ec90{width:30px;height:30px;line-height:28px;font-weight:600;font-size:12px}.monthComponents_e5c4ec90{width:210px}.nextDecade_e5c4ec90,.nextMonth_e5c4ec90,.nextYear_e5c4ec90,.prevDecade_e5c4ec90,.prevMonth_e5c4ec90,.prevYear_e5c4ec90{font-size:12px;width:24px;height:24px;line-height:24px}.holder_e5c4ec90{min-width:230px}.month_e5c4ec90,.year_e5c4ec90{font-weight:300}.month_e5c4ec90,.year_e5c4ec90{font-size:17px;color:#333333}.month_e5c4ec90:hover,.year_e5c4ec90:hover{color:#333333;cursor:default}.pickerIsMonthPickerVisible_e5c4ec90 .dayPicker_e5c4ec90{margin:-10px 0;padding:10px 0}.pickerIsMonthPickerVisible_e5c4ec90 .dayPicker_e5c4ec90{box-sizing:border-box;width:220px;min-height:230px}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .dayPicker_e5c4ec90{border-right:1px solid #eaeaea}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .dayPicker_e5c4ec90{border-left:1px solid #eaeaea}.pickerIsMonthPickerVisible_e5c4ec90 .holder_e5c4ec90{width:440px}.pickerIsMonthPickerVisible_e5c4ec90 .monthPicker_e5c4ec90{display:block}.pickerIsMonthPickerVisible_e5c4ec90 .monthPicker_e5c4ec90,.pickerIsMonthPickerVisible_e5c4ec90 .yearPicker_e5c4ec90{top:9px;position:absolute}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .monthPicker_e5c4ec90,html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .yearPicker_e5c4ec90{left:238px}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .monthPicker_e5c4ec90,html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .yearPicker_e5c4ec90{right:238px}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .month_e5c4ec90{margin-left:12px}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .month_e5c4ec90{margin-right:12px}.pickerIsMonthPickerVisible_e5c4ec90 .optionGrid_e5c4ec90{width:200px;height:auto;margin:10px 0 0 0}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .optionGrid_e5c4ec90{margin:10px 0 0 0}.pickerIsMonthPickerVisible_e5c4ec90 .toggleMonthView_e5c4ec90{display:none}.pickerIsMonthPickerVisible_e5c4ec90 .currentDecade_e5c4ec90,.pickerIsMonthPickerVisible_e5c4ec90 .currentYear_e5c4ec90{font-size:17px;margin:0;height:30px;line-height:26px;padding:0 10px;display:inline-block}.pickerIsMonthPickerVisible_e5c4ec90 .monthOption_e5c4ec90,.pickerIsMonthPickerVisible_e5c4ec90 .yearOption_e5c4ec90{width:40px;height:40px;line-height:38px;font-size:12px;margin:0 10px 10px 0}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .monthOption_e5c4ec90,html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .yearOption_e5c4ec90{margin:0 0 10px 10px}.pickerIsMonthPickerVisible_e5c4ec90 .monthOption_e5c4ec90:hover,.pickerIsMonthPickerVisible_e5c4ec90 .yearOption_e5c4ec90:hover{outline:1px solid transparent}.pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{box-sizing:border-box;font-size:12px;height:30px;line-height:30px;padding:0 10px;top:199px}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{right:3px}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{left:3px}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{text-align:right}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{text-align:left}.pickerIsMonthPickerVisible_e5c4ec90 .root_e5c4ec90.isPickingYears_e5c4ec90 .dayPicker_e5c4ec90,.pickerIsMonthPickerVisible_e5c4ec90 .root_e5c4ec90.isPickingYears_e5c4ec90 .monthComponents_e5c4ec90{display:block}.pickerIsMonthPickerVisible_e5c4ec90 .root_e5c4ec90.isPickingYears_e5c4ec90 .monthPicker_e5c4ec90{display:none}.pickerIsMonthPickerVisible_e5c4ec90 .root_e5c4ec90.isPickingYears_e5c4ec90 .yearPicker_e5c4ec90{display:block}}@media (max-width:459px){.root_e5c4ec90.isPickingMonths_e5c4ec90 .dayPicker_e5c4ec90,.root_e5c4ec90.isPickingMonths_e5c4ec90 .monthComponents_e5c4ec90{display:none}.root_e5c4ec90.isPickingMonths_e5c4ec90 .monthPicker_e5c4ec90{display:block}}.wrap_e5c4ec90 div:focus::-moz-focus-inner,.wrap_e5c4ec90 span:focus::-moz-focus-inner{border:0}.wrap_e5c4ec90 div:focus,.wrap_e5c4ec90 span:focus{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .wrap_e5c4ec90 div:focus:focus:after,.ms-Fabric.is-focusVisible .wrap_e5c4ec90 span:focus:focus:after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:1px solid #0078d7}.goToday_e5c4ec90{width:auto}.nextMonth_e5c4ec90,.nextYear_e5c4ec90,.prevMonth_e5c4ec90,.prevYear_e5c4ec90{display:inline-block}html[dir=ltr] .navContainer_e5c4ec90{float:right}html[dir=rtl] .navContainer_e5c4ec90{float:left}--><!--.root_632a9a87{box-sizing:border-box;color:#333333;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;font-size:14px;font-weight:400;min-height:36px;position:relative}.textLabel_632a9a87{font-size:14px;padding:0 0 0 26px;display:inline-block;font-size:14px}html[dir=rtl] .textLabel_632a9a87{padding:0 26px 0 0}.input_632a9a87{position:absolute;opacity:0;top:8px}.label_632a9a87::before{content:'';display:inline-block;border:1px solid #a6a6a6;width:20px;height:20px;font-weight:400;position:absolute;box-sizing:border-box;transition-property:background,border,border-color;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.23,1)}.label_632a9a87::after{content:"\E73E";font-family:FabricMDL2Icons;display:none;position:absolute;font-weight:900;background-color:transparent;font-size:13px;top:0;color:#ffffff;line-height:20px;width:20px;text-align:center}.label_632a9a87{display:inline-block;cursor:pointer;margin-top:8px;position:relative;vertical-align:top;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;min-width:20px;min-height:20px;line-height:20px}.label_632a9a87:hover::before{border-color:#767676}.label_632a9a87:hover .textLabel_632a9a87{color:#000000}.label_632a9a87:focus::before{border-color:#767676}.label_632a9a87:focus.labelIsDisabled_632a9a87::before{border-color:#c8c8c8}.label_632a9a87:focus.labelIsChecked_632a9a87::before{border-color:#106ebe}.label_632a9a87:active::before{border-color:#767676}.label_632a9a87:active .textLabel_632a9a87{color:#000000}.label_632a9a87.labelIsChecked_632a9a87::before{border:10px solid #0078d7;background-color:#0078d7}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:black-on-white){.label_632a9a87.labelIsChecked_632a9a87::before{display:none}}.label_632a9a87.labelIsChecked_632a9a87::after{display:block}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:black-on-white){.label_632a9a87.labelIsChecked_632a9a87::after{height:16px;width:16px;line-height:16px}}@media screen and (-ms-high-contrast:active){.label_632a9a87.labelIsChecked_632a9a87::after{border:2px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.label_632a9a87.labelIsChecked_632a9a87::after{border:2px solid #000000}}.label_632a9a87.labelIsChecked_632a9a87:focus::before,.label_632a9a87.labelIsChecked_632a9a87:hover::before{border-color:#106ebe}.label_632a9a87.labelIsDisabled_632a9a87{cursor:default}.label_632a9a87.labelIsDisabled_632a9a87:focus::before,.label_632a9a87.labelIsDisabled_632a9a87:hover::before{border-color:#c8c8c8}.label_632a9a87.labelIsDisabled_632a9a87::before{background-color:#c8c8c8;border-color:#c8c8c8;color:#c8c8c8}@media screen and (-ms-high-contrast:active){.label_632a9a87.labelIsDisabled_632a9a87::after{border:2px solid #0f0}}@media screen and (-ms-high-contrast:black-on-white){.label_632a9a87.labelIsDisabled_632a9a87::after{border:2px solid #600000}}@media screen and (-ms-high-contrast:active){.label_632a9a87.labelIsDisabled_632a9a87::after{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.label_632a9a87.labelIsDisabled_632a9a87::after{color:#600000}}.label_632a9a87.labelIsDisabled_632a9a87 .textLabel_632a9a87{color:#a6a6a6}@media screen and (-ms-high-contrast:active){.label_632a9a87.labelIsDisabled_632a9a87 .textLabel_632a9a87{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.label_632a9a87.labelIsDisabled_632a9a87 .textLabel_632a9a87{color:#600000}}.label_632a9a87.labelIsInFocus_632a9a87::before{border-color:#767676}.label_632a9a87.labelIsInFocus_632a9a87.labelIsDisabled_632a9a87::before{border-color:#c8c8c8}.label_632a9a87.labelIsInFocus_632a9a87.labelIsChecked_632a9a87::before{border-color:#106ebe}.ms-Fabric.is-focusVisible .rootIsInFocus_632a9a87::before{content:'';position:absolute;top:0;bottom:0;left:0;right:0;border:1px solid #666666}@media screen and (-ms-high-contrast:active){.ms-Fabric.is-focusVisible .rootIsInFocus_632a9a87::before{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.ms-Fabric.is-focusVisible .rootIsInFocus_632a9a87::before{border:1px solid #000000}}--><!--.root_b71e4c37{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;box-sizing:border-box;margin:0;padding:0;box-shadow:none;color:#333333;box-sizing:border-box;display:block;padding:5px 0;word-wrap:break-word;overflow-wrap:break-word}.isRequired_b71e4c37::after{content:' *';color:#a80000}.isDisabled_b71e4c37{color:#a6a6a6}--><!--.root_ba8e6d49{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;margin-bottom:4px}.choiceField_ba8e6d49{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;box-sizing:border-box;color:#333333;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;font-size:14px;font-weight:400;min-height:26px;border:none;position:relative;margin-top:8px}html[dir=ltr] .choiceField_ba8e6d49{padding-left:8px}html[dir=rtl] .choiceField_ba8e6d49{padding-right:8px}.choiceField_ba8e6d49 .ms-Label{font-size:14px;padding:0 0 0 26px;display:inline-block}html[dir=rtl] .choiceField_ba8e6d49 .ms-Label{padding:0 26px 0 0}.input_ba8e6d49{position:absolute;opacity:0;top:8px}.field_ba8e6d49::before{content:'';display:inline-block;background-color:#ffffff;border:1px solid #767676;width:20px;height:20px;font-weight:400;position:absolute;top:-1px;box-sizing:border-box;transition-property:border-color;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.23,1);border-radius:50%}.field_ba8e6d49::after{content:'';width:0;height:0;border-radius:50%;position:absolute;transition-property:top,left,right,width,height;transition-duration:150ms;transition-timing-function:cubic-bezier(.4,0,.23,1);box-sizing:border-box}html[dir=ltr] .field_ba8e6d49::after{left:10px}html[dir=rtl] .field_ba8e6d49::after{right:10px}html[dir=ltr] .field_ba8e6d49::after{right:0}html[dir=rtl] .field_ba8e6d49::after{left:0}@media screen and (-ms-high-contrast:active){.field_ba8e6d49::after{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49::after{color:#600000}}.field_ba8e6d49{display:inline-block;cursor:pointer;margin-top:0;position:relative;vertical-align:top;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.field_ba8e6d49:focus::before,.field_ba8e6d49:hover::before{border-color:#000000}.field_ba8e6d49:focus .ms-Label,.field_ba8e6d49:hover .ms-Label{color:#000000}.field_ba8e6d49.fieldIsChecked_ba8e6d49::before{border:2px solid #0078d7}@media screen and (-ms-high-contrast:active){.field_ba8e6d49.fieldIsChecked_ba8e6d49::before{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49.fieldIsChecked_ba8e6d49::before{border-color:#37006e}}.field_ba8e6d49.fieldIsChecked_ba8e6d49::after{background-color:#0078d7;top:4px;width:10px;height:10px}html[dir=ltr] .field_ba8e6d49.fieldIsChecked_ba8e6d49::after{left:5px}html[dir=rtl] .field_ba8e6d49.fieldIsChecked_ba8e6d49::after{right:5px}@media screen and (-ms-high-contrast:active){.field_ba8e6d49.fieldIsChecked_ba8e6d49::after{background-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49.fieldIsChecked_ba8e6d49::after{background-color:#37006e}}.field_ba8e6d49.fieldIsChecked_ba8e6d49:focus::before,.field_ba8e6d49.fieldIsChecked_ba8e6d49:hover::before{border-color:#2b88d8}.field_ba8e6d49.fieldIsDisabled_ba8e6d49{cursor:default}.field_ba8e6d49.fieldIsDisabled_ba8e6d49::before{background-color:#c8c8c8;border-color:#c8c8c8}@media screen and (-ms-high-contrast:active){.field_ba8e6d49.fieldIsDisabled_ba8e6d49::before{border-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49.fieldIsDisabled_ba8e6d49::before{border-color:#600000}}.field_ba8e6d49.fieldIsDisabled_ba8e6d49 .ms-Label{color:#c8c8c8}@media screen and (-ms-high-contrast:active){.field_ba8e6d49.fieldIsDisabled_ba8e6d49 .ms-Label{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49.fieldIsDisabled_ba8e6d49 .ms-Label{color:#600000}}.field_ba8e6d49.fieldIsChecked_ba8e6d49.fieldIsDisabled_ba8e6d49::before{background-color:#ffffff;border-color:#c8c8c8}.field_ba8e6d49.fieldIsChecked_ba8e6d49.fieldIsDisabled_ba8e6d49::after{background-color:#c8c8c8}.choiceFieldIsIcon_ba8e6d49,.choiceFieldIsImage_ba8e6d49{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:0;margin:0 4px 4px 0;background-color:#f4f4f4}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49,html[dir=rtl] .choiceFieldIsImage_ba8e6d49{margin:0 0 4px 4px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49,html[dir=ltr] .choiceFieldIsImage_ba8e6d49{padding-left:0}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49,html[dir=rtl] .choiceFieldIsImage_ba8e6d49{padding-right:0}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49{display:inline-block;box-sizing:border-box;min-width:96px;cursor:pointer;padding:4px;padding-top:22px;margin:0;text-align:center;transition:all .2s ease;border:2px solid transparent}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49.fieldIsDisabled_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49.fieldIsDisabled_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49.fieldIsDisabled_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49.fieldIsDisabled_ba8e6d49{cursor:default}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49.fieldIsDisabled_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49.fieldIsDisabled_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49.fieldIsDisabled_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49.fieldIsDisabled_ba8e6d49 .innerField_ba8e6d49{opacity:.25}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49{position:relative;padding:0 28px}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49{padding-bottom:2px;transition:opacity .2s ease}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49.imageWrapperIsHidden_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49.imageWrapperIsHidden_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49.imageWrapperIsHidden_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49.imageWrapperIsHidden_ba8e6d49{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;opacity:0}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49 .ms-Image,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49 .ms-Image,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49 .ms-Image,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49 .ms-Image{display:inline-block}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .labelWrapper_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .labelWrapper_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .labelWrapper_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .labelWrapper_ba8e6d49{display:inline-block;position:relative;margin:4px 0 0 0;height:32px;line-height:16px;overflow-y:hidden;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .labelWrapper_ba8e6d49 .ms-Label,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .labelWrapper_ba8e6d49 .ms-Label,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .labelWrapper_ba8e6d49 .ms-Label,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .labelWrapper_ba8e6d49 .ms-Label{padding:0}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{top:3px;opacity:0}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{right:3px}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{left:3px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{left:auto}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{right:auto}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{top:13px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{right:13px}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{left:13px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{left:auto}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{right:auto}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover{border-color:#c8c8c8}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover::before{opacity:1}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49{border-color:#0078d7}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::before{opacity:1}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after{top:8px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after{right:8px}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after{left:8px}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover{border-color:#005a9e}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::before{border-color:#005a9e}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::after,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::after,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::after,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::after,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::after{background-color:#005a9e}.choiceFieldIsIcon_ba8e6d49{height:96px;width:96px}.choiceFieldIsIcon_ba8e6d49 .iconWrapper_ba8e6d49{font-size:32px;line-height:32px;height:32px}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:1px solid #333333}@media screen and (-ms-high-contrast:active){.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:2px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:2px solid #000000}}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::-moz-focus-inner,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::after,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #333333}@media screen and (-ms-high-contrast:active){.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::-moz-focus-inner,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::after,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:2px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::-moz-focus-inner,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::after,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:3px solid #000000}}--><!--.root_940e5897{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0;padding:0;box-shadow:none;margin-bottom:8px;position:relative}.screenReaderOnly_940e5897{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.fieldGroup_940e5897{border:1px solid #c8c8c8;background:#ffffff;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;position:relative}.fieldGroup_940e5897:hover{border-color:#767676}.fieldGroup_940e5897.fieldGroupIsFocused_940e5897{border-color:#0078d7}.rootIsDisabled_940e5897>.fieldGroup_940e5897{background-color:#f4f4f4;border-color:#f4f4f4;pointer-events:none;cursor:default}@media screen and (-ms-high-contrast:active){.fieldGroup_940e5897.fieldGroupIsFocused_940e5897,.fieldGroup_940e5897:hover{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.fieldGroup_940e5897.fieldGroupIsFocused_940e5897,.fieldGroup_940e5897:hover{border-color:#37006e}}.fieldGroup_940e5897::-ms-clear{display:none}.root_940e5897.rootIsDisabled_940e5897 .field{background-color:#f4f4f4;border-color:#f4f4f4;pointer-events:none;cursor:default}.fieldAddon_940e5897{background:#f4f4f4;color:#666666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 10px;line-height:1}.field_940e5897{box-sizing:border-box;margin:0;padding:0;box-shadow:none;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;border-radius:0;border:none;color:#333333;padding:0 12px 0 12px;width:100%;text-overflow:ellipsis;outline:0}html[dir=rtl] .field_940e5897{padding:0 12px 0 12px}.field_940e5897:active,.field_940e5897:focus,.field_940e5897:hover{outline:0}html[dir=ltr] .field_940e5897.hasIcon_940e5897{padding-right:24px}html[dir=rtl] .field_940e5897.hasIcon_940e5897{padding-left:24px}.field_940e5897[disabled]{background-color:transparent;border-color:transparent;pointer-events:none;cursor:default}.field_940e5897 .field_940e5897::-webkit-input-placeholder{color:#d0d0d0}.field_940e5897 .field_940e5897::-moz-placeholder{color:#d0d0d0}.field_940e5897 .field_940e5897:-moz-placeholder{color:#d0d0d0}.field_940e5897 .field_940e5897:-ms-input-placeholder{color:#d0d0d0}.root_940e5897.rootIsRequired_940e5897 .ms-Label::after{content:' *';color:#a80000}.root_940e5897.rootIsActive_940e5897{border-color:#0078d7}.errorIcon_940e5897{vertical-align:middle;font-size:14px}html[dir=ltr] .errorIcon_940e5897{margin-right:5px}html[dir=rtl] .errorIcon_940e5897{margin-left:5px}.icon_940e5897{position:absolute;bottom:8px;top:auto}html[dir=ltr] .icon_940e5897{right:8px}html[dir=rtl] .icon_940e5897{left:8px}.description_940e5897{color:#666666;font-size:11px}.rootIsBorderless_940e5897 .fieldGroup_940e5897{border-color:transparent}.root_940e5897.rootIsUnderlined_940e5897{border-bottom:1px solid #c8c8c8;border-width:0;border-bottom-width:1px;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.root_940e5897.rootIsUnderlined_940e5897:hover:not(.rootIsDisabled_940e5897){border-color:#767676}@media screen and (-ms-high-contrast:active){.root_940e5897.rootIsUnderlined_940e5897:hover:not(.rootIsDisabled_940e5897){border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_940e5897.rootIsUnderlined_940e5897:hover:not(.rootIsDisabled_940e5897){border-color:#37006e}}.root_940e5897.rootIsUnderlined_940e5897 .ms-Label{font-size:14px;line-height:22px;height:32px}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{margin-right:8px}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{margin-left:8px}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-left:12px}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-right:12px}.root_940e5897.rootIsUnderlined_940e5897 .fieldGroup_940e5897{-webkit-box-flex:1;-ms-flex:1 1 0;flex:1 1 0;border:0}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .fieldGroup_940e5897{text-align:left}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .fieldGroup_940e5897{text-align:right}.root_940e5897.rootIsUnderlined_940e5897.rootIsDisabled_940e5897{border-bottom-color:#f4f4f4}.root_940e5897.rootIsUnderlined_940e5897.rootIsDisabled_940e5897 .ms-Label{color:#a6a6a6}.root_940e5897.rootIsUnderlined_940e5897.rootIsDisabled_940e5897 .field_940e5897{background-color:transparent;color:#c8c8c8}.root_940e5897.rootIsUnderlined_940e5897.rootIsActive_940e5897{border-color:#0078d7}@media screen and (-ms-high-contrast:active){.root_940e5897.rootIsUnderlined_940e5897.rootIsActive_940e5897{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_940e5897.rootIsUnderlined_940e5897.rootIsActive_940e5897{border-color:#37006e}}.root_940e5897.rootIsMultiline_940e5897 .fieldGroup_940e5897{min-height:60px;height:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.root_940e5897.rootIsMultiline_940e5897 .field_940e5897{line-height:17px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-top:6px;overflow:auto;width:100%}html[dir=ltr] .root_940e5897.rootIsMultiline_940e5897 .field_940e5897.hasIcon_940e5897{padding-right:40px}html[dir=rtl] .root_940e5897.rootIsMultiline_940e5897 .field_940e5897.hasIcon_940e5897{padding-left:40px}.errorMessage_940e5897{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#a80000;margin:0;padding-top:5px}.invalid_940e5897,.invalid_940e5897:focus,.invalid_940e5897:hover{border-color:#a80000}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-left:12px}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-right:12px}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-right:0}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-left:0}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .field_940e5897{text-align:left}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .field_940e5897{text-align:right}.root_940e5897.rootIsMultiline_940e5897 .icon_940e5897{padding-bottom:8px;-webkit-box-align:end;-ms-flex-align:end;-ms-grid-row-align:flex-end;align-items:flex-end}html[dir=ltr] .root_940e5897.rootIsMultiline_940e5897 .icon_940e5897{padding-right:24px}html[dir=rtl] .root_940e5897.rootIsMultiline_940e5897 .icon_940e5897{padding-left:24px}.root_940e5897.rootIsMultiline_940e5897 .field_940e5897.fieldIsUnresizable_940e5897{resize:none}.hidden_940e5897{display:none}--><!--.root_c35efa75{position:relative;max-width:300px}.panel_c35efa75{padding:16px}.colorRect_c35efa75{position:relative;margin-bottom:10px}.rectContainer_c35efa75{position:relative}.capture_c35efa75{position:absolute;left:0;top:0;bottom:0;right:0;background:rgba(255,0,0,.1)}.rectContainer_c35efa75.rectContainerIsAdjusting_c35efa75 .capture_c35efa75{position:fixed}.thumb_c35efa75{position:absolute;width:20px;height:20px;background:#fff;border:1px solid rgba(255,255,255,.8);border-radius:50%;box-shadow:0 0 15px -5px #000;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.thumb_c35efa75.thumbIsSlider_c35efa75{top:50%}.light_c35efa75{position:absolute;left:0;right:0;top:0;bottom:0;background:linear-gradient(to right,#fff 0,transparent 100%)}.dark_c35efa75{position:absolute;left:0;right:0;top:0;bottom:0;background:linear-gradient(to bottom,transparent 0,#000 100%)}.slider_c35efa75{position:relative;height:20px;margin-bottom:5px;border:1px solid #eaeaea;box-sizing:border-box}.slider_c35efa75.colorSliderIsHue_c35efa75{background:linear-gradient(to left,red 0,#f09 10%,#cd00ff 20%,#3200ff 30%,#06f 40%,#00fffd 50%,#0f6 60%,#35ff00 70%,#cdff00 80%,#f90 90%,red 100%)}.slider_c35efa75.colorSliderIsAlpha_c35efa75{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAJUlEQVQYV2N89erVfwY0ICYmxoguxjgUFKI7GsTH5m4M3w1ChQC1/Ca8i2n1WgAAAABJRU5ErkJggg==)}.sliderOverlay_c35efa75{content:'';position:absolute;left:0;right:0;top:0;bottom:0}.input_c35efa75{width:100%;border:none;box-sizing:border-box;height:30px}.input_c35efa75.ms-TextField{padding-right:2px}.input_c35efa75 .input_c35efa75.ms-TextField-field{min-width:auto;padding:5px}--><!--.root_c5968264{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;position:relative;background-color:#f4f4f4;height:40px;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.primaryCommands_c5968264{position:absolute;overflow:hidden;display:inline;vertical-align:top;line-height:40px;max-width:100%;margin:0 20px}.sideCommands_c5968264{position:absolute}html[dir=ltr] .sideCommands_c5968264{right:0}html[dir=rtl] .sideCommands_c5968264{left:0}html[dir=ltr] .sideCommands_c5968264{text-align:right}html[dir=rtl] .sideCommands_c5968264{text-align:left}html[dir=ltr] .sideCommands_c5968264{padding-right:20px}html[dir=rtl] .sideCommands_c5968264{padding-left:20px}.item_c5968264{display:inline-block;color:#0078d7;height:40px;outline:transparent;vertical-align:top;margin:0 4px}.item_c5968264:hover{background-color:#eaeaea;color:#333333}.itemChevronDown_c5968264,.itemCommandText_c5968264{display:inline-block;padding:0 4px;vertical-align:top}.itemText_c5968264{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;position:relative;background:0 0;border:none;line-height:40px;min-width:20px;text-align:center;padding:0 4px;display:block;height:100%}.itemText_c5968264::-moz-focus-inner{border:0}.itemText_c5968264{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .itemText_c5968264:focus:after{content:'';position:absolute;top:2px;right:2px;bottom:2px;left:2px;pointer-events:none;border:1px solid #666666}.itemText_c5968264.itemLinkIsNoName_c5968264{padding:0 8px}.itemLink_c5968264{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;position:relative;background:0 0;border:none;line-height:40px;min-width:20px;text-align:center;padding:0 4px;display:block;height:100%;cursor:pointer}.itemLink_c5968264::-moz-focus-inner{border:0}.itemLink_c5968264{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .itemLink_c5968264:focus:after{content:'';position:absolute;top:2px;right:2px;bottom:2px;left:2px;pointer-events:none;border:1px solid #666666}.itemLink_c5968264.itemLinkIsNoName_c5968264{padding:0 8px}@media screen and (-ms-high-contrast:active){.itemLink_c5968264.itemLinkIsExpanded_c5968264::-moz-focus-inner,.itemLink_c5968264:hover::-moz-focus-inner{border:0}.itemLink_c5968264.itemLinkIsExpanded_c5968264,.itemLink_c5968264:hover{outline:transparent;position:relative}.itemLink_c5968264.itemLinkIsExpanded_c5968264::after,.itemLink_c5968264:hover::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.itemLink_c5968264.itemLinkIsExpanded_c5968264::-moz-focus-inner,.itemLink_c5968264:hover::-moz-focus-inner{border:0}.itemLink_c5968264.itemLinkIsExpanded_c5968264,.itemLink_c5968264:hover{outline:transparent;position:relative}.itemLink_c5968264.itemLinkIsExpanded_c5968264::after,.itemLink_c5968264:hover::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #000000}}.itemLink_c5968264:hover:not([disabled]){color:#212121;background-color:#eaeaea}.itemLink_c5968264:hover:not([disabled]) .itemIcon_c5968264{color:#005a9e}.itemLink_c5968264:hover:not([disabled]) .itemChevronDown_c5968264{color:#3c3c3c}.itemLink_c5968264:hover:not([disabled]) .itemOverflow_c5968264{color:#212121}.itemLink_c5968264.itemLinkIsExpanded_c5968264{background-color:#dadada;color:#000000}.itemLink_c5968264.itemLinkIsExpanded_c5968264 .itemIcon_c5968264{color:#004578}.itemLink_c5968264.itemLinkIsExpanded_c5968264 .itemChevronDown_c5968264{color:#212121}.itemLink_c5968264.itemLinkIsExpanded_c5968264 .itemOverflow_c5968264{color:#000000}.itemLink_c5968264.itemLinkIsExpanded_c5968264:hover{background-color:#d0d0d0}.itemLink_c5968264[disabled]{color:#c8c8c8;cursor:default;pointer-events:none}.itemLink_c5968264[disabled] .itemIcon_c5968264{color:#c8c8c8}.itemIcon_c5968264{font-size:16px;padding:0 4px}.itemIconColor_c5968264{color:#106ebe}.itemChevronDown_c5968264{color:#666666;font-size:12px}.itemOverflow_c5968264{font-size:18px;color:#333333;padding:0 7px}.search_c5968264{width:208px;max-width:208px;background-color:#ffffff;color:#333333;height:40px;position:relative;box-sizing:border-box;border-color:transparent}html[dir=ltr] .search_c5968264{float:left}html[dir=rtl] .search_c5968264{float:right}html[dir=ltr] .search_c5968264{border-right:1px solid #eaeaea}html[dir=rtl] .search_c5968264{border-left:1px solid #eaeaea}@media screen and (-ms-high-contrast:active){.search_c5968264{z-index:10}html[dir=ltr] .search_c5968264{border-right:1px solid #ffffff}html[dir=rtl] .search_c5968264{border-left:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){html[dir=ltr] .search_c5968264{border-right:1px solid #000000}html[dir=rtl] .search_c5968264{border-left:1px solid #000000}}.search_c5968264:before{position:absolute;content:' ';right:0;bottom:0;left:0;margin:0 8px;border-bottom:1px solid #eaeaea}.search_c5968264:hover{color:#0078d7}@media screen and (-ms-high-contrast:active){.search_c5968264:hover::-moz-focus-inner{border:0}.search_c5968264:hover{outline:transparent;position:relative}.search_c5968264:hover::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.search_c5968264:hover::-moz-focus-inner{border:0}.search_c5968264:hover{outline:transparent;position:relative}.search_c5968264:hover::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #000000}}.searchInput_c5968264{height:40px;padding:8px 8px 8px 0;border:none;background-color:transparent;width:100%;box-sizing:border-box;outline:0;cursor:pointer;font-size:14px;-webkit-appearance:none;-webkit-border-radius:0}html[dir=ltr] .searchInput_c5968264{border-left:42px solid transparent}html[dir=rtl] .searchInput_c5968264{border-right:42px solid transparent}@media screen and (-ms-high-contrast:active){html[dir=ltr] .searchInput_c5968264{border-left:40px solid #000000}html[dir=rtl] .searchInput_c5968264{border-right:40px solid #000000}}@media screen and (-ms-high-contrast:black-on-white){html[dir=ltr] .searchInput_c5968264{border-left:40px solid #ffffff}html[dir=rtl] .searchInput_c5968264{border-right:40px solid #ffffff}}.searchInput_c5968264::-ms-clear{display:none}.searchIconSearchWrapper_c5968264{display:block}.searchIconArrowWrapper_c5968264{display:none}.searchIconArrowWrapper_c5968264,.searchIconSearchWrapper_c5968264{top:0}html[dir=ltr] .searchIconArrowWrapper_c5968264,html[dir=ltr] .searchIconSearchWrapper_c5968264{padding-left:17px}html[dir=rtl] .searchIconArrowWrapper_c5968264,html[dir=rtl] .searchIconSearchWrapper_c5968264{padding-right:17px}html[dir=ltr] .searchIconArrowWrapper_c5968264,html[dir=ltr] .searchIconSearchWrapper_c5968264{padding-right:8px}html[dir=rtl] .searchIconArrowWrapper_c5968264,html[dir=rtl] .searchIconSearchWrapper_c5968264{padding-left:8px}.searchIconClearWrapper_c5968264{display:none;top:1px;z-index:10}html[dir=ltr] .searchIconClearWrapper_c5968264{right:0}html[dir=rtl] .searchIconClearWrapper_c5968264{left:0}.searchIconWrapper_c5968264{height:40px;line-height:40px;cursor:pointer;position:absolute;text-align:center}.search_c5968264 .ms-Icon:before{font-size:16px;color:#0078d7}.searchInput_c5968264,.searchInput_c5968264::-webkit-input-placeholder{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px}--><!--.root_80ecb764{box-sizing:border-box;margin:0;padding:0;box-shadow:none;margin-bottom:17px}.textField_80ecb764{position:relative}.textField_80ecb764 input::-ms-clear{display:none}.textField_80ecb764 input[readonly]{cursor:pointer}.eventWithLabel_80ecb764{color:#666666;font-size:20px;line-height:20px;pointer-events:none;position:absolute;bottom:5px}html[dir=ltr] .eventWithLabel_80ecb764{right:9px}html[dir=rtl] .eventWithLabel_80ecb764{left:9px}.eventWithoutLabel_80ecb764{color:#666666;font-size:20px;line-height:20px;pointer-events:none;position:absolute;top:7px}html[dir=ltr] .eventWithoutLabel_80ecb764{right:9px}html[dir=rtl] .eventWithoutLabel_80ecb764{left:9px}--><!--.root_bc6aaf09{line-height:1;width:24px;height:24px;vertical-align:top;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.root_bc6aaf09.rootIsChecked_bc6aaf09 .background_bc6aaf09:before{color:#0078d7}.root_bc6aaf09.rootIsChecked_bc6aaf09 .background_bc6aaf09:after{color:#ffffff}.root_bc6aaf09.rootIsChecked_bc6aaf09 .check_bc6aaf09{opacity:1;color:#ffffff;font-weight:900;font-size:12px}.root_bc6aaf09:hover .check_bc6aaf09{opacity:1}.check_bc6aaf09{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;color:#c8c8c8;opacity:0}.background_bc6aaf09{position:relative;height:24px;width:24px}.background_bc6aaf09:before{content:'\E91F';color:#ffffff}.background_bc6aaf09:after{content:'\EA3A';color:#c8c8c8}.background_bc6aaf09:after,.background_bc6aaf09:before{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-size:24px;height:24px;width:24px;position:absolute}--><!--.root_0e8cb6cd{display:inline-block}--><!--.root_3e5aae20{display:inline-block;min-width:100%;vertical-align:top;height:36px;line-height:36px;white-space:nowrap;padding-bottom:1px;border-bottom:1px solid #eaeaea;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.root_3e5aae20.rootIsSelectAllHidden_3e5aae20 .cell_3e5aae20.cellIsCheck_3e5aae20{visibility:hidden}.cell_3e5aae20.cellIsCheck_3e5aae20 .ms-Check-background{opacity:0}.cell_3e5aae20.cellIsCheck_3e5aae20:hover .ms-Check-background,.root_3e5aae20.rootIsAllSelected_3e5aae20 .ms-Check-background{opacity:1}.cellWrapper_3e5aae20{display:inline-block;position:relative}.cell_3e5aae20{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;background:0 0;color:#c8c8c8;font-weight:400;position:relative;display:inline-block;box-sizing:border-box;padding:0 8px;border:none;line-height:inherit;margin:0;height:36px;vertical-align:top;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cell_3e5aae20::-moz-focus-inner{border:0}.cell_3e5aae20{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .cell_3e5aae20:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .cell_3e5aae20{text-align:left}html[dir=rtl] .cell_3e5aae20{text-align:right}html[dir=ltr] .cell_3e5aae20{text-align:left}html[dir=rtl] .cell_3e5aae20{text-align:right}.cell_3e5aae20.cellIsCheck_3e5aae20{position:relative;padding:6px;margin:0}.cell_3e5aae20.cellIsActionable_3e5aae20{color:#666666}.cell_3e5aae20.cellIsActionable_3e5aae20:hover{color:#333333;background:#f8f8f8}.cell_3e5aae20.cellIsActionable_3e5aae20:active{background:#eaeaea}.cell_3e5aae20.cellIsSizer_3e5aae20{position:absolute;width:16px;cursor:ew-resize;bottom:0;top:0;height:inherit;background:0 0}html[dir=ltr] .cell_3e5aae20.cellIsSizer_3e5aae20{margin-left:-10px}html[dir=rtl] .cell_3e5aae20.cellIsSizer_3e5aae20{margin-right:-10px}.cell_3e5aae20.cellIsEmpty_3e5aae20{text-overflow:clip}.cell_3e5aae20.cellIsSizer_3e5aae20:after{content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:#c8c8c8;opacity:0}.cell_3e5aae20.cellIsSizer_3e5aae20.cellIsResizing_3e5aae20:after,.cell_3e5aae20.cellIsSizer_3e5aae20:hover:after{opacity:1;transition:opacity .3s linear}.collapseButton_3e5aae20{text-align:center;-webkit-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear;width:20px;outline:0}.collapseButton_3e5aae20.collapseButtonIsCollapsed_3e5aae20{-webkit-transform:rotate(0);transform:rotate(0)}.cell_3e5aae20 .nearIcon_3e5aae20{color:#666666;opacity:1}html[dir=ltr] .cell_3e5aae20 .nearIcon_3e5aae20{padding-right:4px}html[dir=rtl] .cell_3e5aae20 .nearIcon_3e5aae20{padding-left:4px}.cell_3e5aae20 .filterChevron_3e5aae20{color:#a6a6a6;vertical-align:middle}html[dir=ltr] .cell_3e5aae20 .filterChevron_3e5aae20{padding-left:4px}html[dir=rtl] .cell_3e5aae20 .filterChevron_3e5aae20{padding-right:4px}.sizingOverlay_3e5aae20{position:absolute;left:0;top:0;right:0;bottom:0;cursor:ew-resize;background:rgba(255,255,255,0)}html[dir=ltr] .cell_3e5aae20 .collapseButton_3e5aae20{padding-right:0}html[dir=rtl] .cell_3e5aae20 .collapseButton_3e5aae20{padding-left:0}--><!--.root_3d8e3150{display:inline-block;min-width:100%;min-height:36px;margin:1px 0;vertical-align:top;white-space:nowrap;padding:0;box-sizing:border-box;background:0 0;border:none;vertical-align:top;line-height:16px}.root_3d8e3150::-moz-focus-inner{border:0}.root_3d8e3150{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_3d8e3150:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .root_3d8e3150{text-align:left}html[dir=rtl] .root_3d8e3150{text-align:right}.root_3d8e3150:hover{background:#f4f4f4}.rootIsSelected_3d8e3150{background:#d0d0d0}.rootIsSelected_3d8e3150:hover{background:#dadada}.rootIsContentUnselectable_3d8e3150{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.cell_3d8e3150{display:inline-block;position:relative;box-sizing:border-box;padding:10px 0;margin:0 8px;min-height:36px;vertical-align:top;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cell_3d8e3150>button{max-width:100%}.isMultiline_3d8e3150{white-space:normal;word-break:break-word;text-overflow:clip}.fields_3d8e3150{display:inline-block}.check_3d8e3150{display:inline-block;cursor:default;padding:6px;box-sizing:border-box;vertical-align:top;background:0 0;border:none;opacity:0}.check_3d8e3150::-moz-focus-inner{border:0}.check_3d8e3150{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .check_3d8e3150:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.checkDisabled_3d8e3150{visibility:hidden}.rootIsCheckVisible_3d8e3150 .check_3d8e3150,.rootIsSelected_3d8e3150 .check_3d8e3150,.root_3d8e3150:hover .check_3d8e3150{opacity:1}.cellMeasurer_3d8e3150 .cell_3d8e3150{overflow:visible;white-space:nowrap}.checkSpacer_3d8e3150{display:inline-block;height:20px;width:20px}--><!--.root_d0adda33{position:relative;padding:10px 84px;cursor:pointer}.root_d0adda33 .ms-Link{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px}--><!--@-webkit-keyframes spinAnimation_5328356c{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinAnimation_5328356c{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.root_5328356c>.circle_5328356c{margin:auto;box-sizing:border-box;border-radius:50%;width:100%;height:100%;border:1.5px solid #c7e0f4;border-top-color:#0078d7;-webkit-animation:spinAnimation_5328356c 1.3s infinite cubic-bezier(.53,.21,.29,.67);animation:spinAnimation_5328356c 1.3s infinite cubic-bezier(.53,.21,.29,.67)}.root_5328356c>.circle_5328356c.circleIsXSmall_5328356c{width:12px;height:12px}.root_5328356c>.circle_5328356c.circleIsSmall_5328356c{width:16px;height:16px}.root_5328356c>.circle_5328356c.circleIsMedium_5328356c,.root_5328356c>.circle_5328356c.circleIsTypeMedium_5328356c{width:20px;height:20px}.root_5328356c>.circle_5328356c.circleIsLarge_5328356c,.root_5328356c>.circle_5328356c.circleIsTypeLarge_5328356c{width:28px;height:28px}.root_5328356c .label_5328356c{color:#0078d7;margin-top:10px;text-align:center}.root_5328356c .screenReaderOnly_5328356c{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media screen and (-ms-high-contrast:active){.root_5328356c>.circle_5328356c{border-top-style:none}}--><!--.root_ad643f53{cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.root_ad643f53::-moz-focus-inner{border:0}.root_ad643f53{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_ad643f53:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.root_ad643f53:hover{background:#eff6fc}.root_ad643f53.rootIsSelected_ad643f53{background:#deecf9}.root_ad643f53.rootIsSelected_ad643f53:hover{background:#c7e0f4}.check_ad643f53,.expand_ad643f53{display:inline-block;cursor:default;padding:6px;-webkit-transform:translateY(50%);transform:translateY(50%);margin-top:-12px;box-sizing:border-box;vertical-align:top;background:0 0;border:none;font-size:12px;top:4px}.check_ad643f53::-moz-focus-inner,.expand_ad643f53::-moz-focus-inner{border:0}.check_ad643f53,.expand_ad643f53{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .check_ad643f53:focus:after,.ms-Fabric.is-focusVisible .expand_ad643f53:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.check_ad643f53{opacity:0;margin-top:-10px}.check_ad643f53:focus{opacity:1}.root_ad643f53.rootIsSelected_ad643f53 .check_ad643f53,.root_ad643f53:hover .check_ad643f53{opacity:1}.title_ad643f53{padding:14px 6px;display:inline-block;cursor:pointer;outline:0}.expand_ad643f53{width:36px;height:40px;color:#666666}.expand_ad643f53 .ms-Icon{-webkit-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}.expand_ad643f53 .ms-Icon.expandIsCollapsed_ad643f53{-webkit-transform:rotate(0);transform:rotate(0)}.loading_ad643f53{display:inline-block;visibility:hidden;opacity:0;padding:0 16px;vertical-align:middle;transition:visibility 367ms,opacity 367ms}.loading_ad643f53.loadingIsVisible_ad643f53{visibility:visible;opacity:1}.dropIcon_ad643f53{display:inline-block;position:relative;top:-16px;font-size:20px;color:#767676;transition:opacity 467ms cubic-bezier(.39,.575,.565,1),-webkit-transform 267ms cubic-bezier(.6,-.28,.735,.045);transition:transform 267ms cubic-bezier(.6,-.28,.735,.045),opacity 467ms cubic-bezier(.39,.575,.565,1);transition:transform 267ms cubic-bezier(.6,-.28,.735,.045),opacity 467ms cubic-bezier(.39,.575,.565,1),-webkit-transform 267ms cubic-bezier(.6,-.28,.735,.045);opacity:0;-webkit-transform:rotate(.2deg) scale(.65);transform:rotate(.2deg) scale(.65);-webkit-transform-origin:10px 10px;transform-origin:10px 10px}html[dir=ltr] .dropIcon_ad643f53{left:-26px}html[dir=rtl] .dropIcon_ad643f53{right:-26px}.dropIcon_ad643f53 .ms-Icon--Tag{position:absolute}.ms-GroupedList-group.is-dropping>.root_ad643f53 .dropIcon_ad643f53{transition:opacity 167ms cubic-bezier(.39,.575,.565,1),-webkit-transform 467ms cubic-bezier(.075,.82,.165,1);transition:transform 467ms cubic-bezier(.075,.82,.165,1),opacity 167ms cubic-bezier(.39,.575,.565,1);transition:transform 467ms cubic-bezier(.075,.82,.165,1),opacity 167ms cubic-bezier(.39,.575,.565,1),-webkit-transform 467ms cubic-bezier(.075,.82,.165,1);transition-delay:367ms;opacity:1;-webkit-transform:rotate(.2deg) scale(1);transform:rotate(.2deg) scale(1)}.ms-GroupedList-group.is-dropping .check_ad643f53{opacity:0}--><!--.root_9b1b313e{position:relative;font-size:12px}.root_9b1b313e BUTTON{font-family:inherit;background-color:transparent}.group_9b1b313e{transition:background-color 267ms cubic-bezier(.445,.05,.55,.95)}.groupIsDropping_9b1b313e{background-color:#eaeaea}.root_9b1b313e .ms-List-cell{min-height:38px}--><!--.root_3e55d798{position:relative;font-size:12px;background:0 0;color:#333333}.focusZone_3e55d798{display:inline-block;vertical-align:top;min-width:100%;min-height:1px}.rootIsHorizontalConstrained_3e55d798{overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch}.root_3e55d798 .ms-List-cell{min-height:38px;word-break:break-word}--><!--.root_f22ef814{background-color:rgba(255,255,255,.4);position:absolute;bottom:0;left:0;right:0;top:0}.root_f22ef814.rootIsNone_f22ef814{visibility:hidden}.root_f22ef814.rootIsDark_f22ef814{background-color:rgba(0,0,0,.4)}--><!--.root_39c95f97{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;background-color:transparent;position:fixed;height:100%;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity 267ms}.root_39c95f97 .ms-Button.ms-Button--compound{display:block}html[dir=ltr] .root_39c95f97 .ms-Button.ms-Button--compound{margin-left:0}html[dir=rtl] .root_39c95f97 .ms-Button.ms-Button--compound{margin-right:0}@media screen and (-ms-high-contrast:active){.root_39c95f97 .ms-Overlay{opacity:0}}.rootIsVisible_39c95f97{opacity:1;pointer-events:auto}.main_39c95f97{box-shadow:0 0 5px 0 rgba(0,0,0,.4);background-color:#ffffff;box-sizing:border-box;position:relative;outline:3px solid transparent;max-height:100%;overflow-y:auto}html[dir=ltr] .main_39c95f97{text-align:left}html[dir=rtl] .main_39c95f97{text-align:right}--><!--.isOpen_49e4f91a{display:-webkit-box;display:-ms-flexbox;display:flex}.main_49e4f91a{width:288px}.button_49e4f91a.isClose_49e4f91a{display:none}.button_49e4f91a.isClose_49e4f91a .ms-Icon.ms-Icon--Cancel{color:#666666;font-size:16px}.inner_49e4f91a{padding:0 28px 20px}.header_49e4f91a{position:relative;width:100%;box-sizing:border-box}.title_49e4f91a{margin:0;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;padding:20px 36px 20px 28px}html[dir=rtl] .title_49e4f91a{padding:20px 28px 20px 36px}.topButton_49e4f91a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;top:0;padding:12px 12px 0 0}html[dir=ltr] .topButton_49e4f91a{right:0}html[dir=rtl] .topButton_49e4f91a{left:0}html[dir=rtl] .topButton_49e4f91a{padding:12px 0 0 12px}.topButton_49e4f91a>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.content_49e4f91a{position:relative;width:100%}.content_49e4f91a .ms-Button.ms-Button--compound{margin-bottom:20px}.content_49e4f91a .ms-Button.ms-Button--compound:last-child{margin-bottom:0}.subText_49e4f91a{margin:0 0 20px 0;padding-top:8px;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#333333;font-weight:300;line-height:1.5}.actions_49e4f91a{position:relative;width:100%;min-height:24px;line-height:24px;margin:20px 0 0;font-size:0}.actions_49e4f91a .ms-Button{line-height:normal}.actionsRight_49e4f91a{font-size:0}html[dir=ltr] .actionsRight_49e4f91a{text-align:right}html[dir=rtl] .actionsRight_49e4f91a{text-align:left}html[dir=ltr] .actionsRight_49e4f91a{margin-right:-4px}html[dir=rtl] .actionsRight_49e4f91a{margin-left:-4px}.actionsRight_49e4f91a .action_49e4f91a{margin:0 4px}.isClose_49e4f91a:not(.isLargeHeader_49e4f91a) .button_49e4f91a.isClose_49e4f91a{display:block}.isMultiline_49e4f91a .title_49e4f91a{font-size:28px}.isMultiline_49e4f91a .inner_49e4f91a{padding:0 20px 20px}.isLargeHeader_49e4f91a .header_49e4f91a{background-color:#0078d7}.isLargeHeader_49e4f91a .title_49e4f91a{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:28px;font-weight:100;color:#ffffff;padding:26px 28px 28px;margin-bottom:8px}.isLargeHeader_49e4f91a .subText_49e4f91a{font-size:14px}@media (min-width:480px){.main_49e4f91a{width:auto;min-width:288px;max-width:340px}}--><!--.root_788939a4{-webkit-font-smoothing:antialiased;background-color:#ffffff;border:1px solid #eaeaea;box-sizing:border-box;max-width:320px;min-width:206px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative}.rootIsActionable_788939a4:hover{cursor:pointer;border-color:#c8c8c8}.rootIsActionable_788939a4:hover:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid #c8c8c8;pointer-events:none}.location_788939a4+.title_788939a4{padding-top:4px}.rootIsCompact_788939a4{border-bottom:2px solid #a6a6a6;display:-webkit-box;display:-ms-flexbox;display:flex;max-width:480px;height:109px}.rootIsCompact_788939a4 .ms-DocumentCard-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.rootIsCompact_788939a4 .preview_788939a4{border-bottom:none;max-height:106px;max-width:144px}.rootIsCompact_788939a4 .preview_788939a4 .icon_788939a4 .ms-Image-image{max-height:32px;max-width:32px}html[dir=ltr] .rootIsCompact_788939a4 .preview_788939a4{border-right:1px solid #eaeaea}html[dir=rtl] .rootIsCompact_788939a4 .preview_788939a4{border-left:1px solid #eaeaea}.rootIsCompact_788939a4 .title_788939a4{padding:12px 16px 8px 16px;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:15px;font-weight:400;line-height:16px}.rootIsCompact_788939a4 .activity_788939a4{padding-bottom:12px}.actions_788939a4{height:34px;padding:4px 12px;position:relative}.action_788939a4{color:#666666;cursor:pointer}html[dir=ltr] .action_788939a4{float:left}html[dir=rtl] .action_788939a4{float:right}html[dir=ltr] .action_788939a4{margin-right:4px}html[dir=rtl] .action_788939a4{margin-left:4px}.action_788939a4 .ms-Button{font-size:16px;height:34px;width:34px}.action_788939a4 .ms-Button:hover .ms-Button-icon{color:#1174c3;cursor:pointer}.views_788939a4{line-height:34px}html[dir=ltr] .views_788939a4{text-align:right}html[dir=rtl] .views_788939a4{text-align:left}.views_788939a4 .ms-Icon{font-size:16px;vertical-align:top}html[dir=ltr] .views_788939a4 .ms-Icon{margin-right:4px}html[dir=rtl] .views_788939a4 .ms-Icon{margin-left:4px}.activity_788939a4{padding:8px 16px;position:relative}html[dir=ltr] .activityIsMultiplePeople_788939a4 .avatar_788939a4:nth-of-type(2){margin-left:-16px}html[dir=rtl] .activityIsMultiplePeople_788939a4 .avatar_788939a4:nth-of-type(2){margin-right:-16px}html[dir=ltr] .activityIsMultiplePeople_788939a4 .activityDetails_788939a4{left:72px}html[dir=rtl] .activityIsMultiplePeople_788939a4 .activityDetails_788939a4{right:72px}.avatars_788939a4{height:32px}html[dir=ltr] .avatars_788939a4{margin-left:-2px}html[dir=rtl] .avatars_788939a4{margin-right:-2px}.avatar_788939a4{display:inline-block;vertical-align:top;position:relative;text-align:center;width:32px;height:32px}.avatar_788939a4:after{content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border:2px solid #fafafa;border-radius:50%}.activityDetails_788939a4{height:32px;position:absolute;top:8px;width:calc(100% - 72px)}html[dir=ltr] .activityDetails_788939a4{left:56px}html[dir=rtl] .activityDetails_788939a4{right:56px}.activityActivity_788939a4,.name_788939a4{display:block;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#767676;line-height:15px;height:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.name_788939a4{color:#333333;font-weight:600}.location_788939a4{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#333333;display:block;padding:8px 16px;position:relative;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.location_788939a4:hover{color:#0078d7;cursor:pointer}.preview_788939a4{border-bottom:2px solid #a6a6a6;position:relative;background-color:#f8f8f8;overflow:hidden}.preview_788939a4.previewIsFileList_788939a4{background-color:#ffffff}.icon_788939a4{bottom:10px;position:absolute}html[dir=ltr] .icon_788939a4{left:10px}html[dir=rtl] .icon_788939a4{right:10px}.fileList_788939a4{padding:16px 16px 0 16px;list-style-type:none;margin:0}html[dir=rtl] .fileList_788939a4{padding:16px 16px 0 16px}.fileList_788939a4 li{height:16px;line-height:16px;margin-bottom:8px;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}html[dir=ltr] .fileList_788939a4 li{padding-left:24px}html[dir=rtl] .fileList_788939a4 li{padding-right:24px}.fileList_788939a4 a{font-size:12px;text-decoration:none;color:#212121}.fileList_788939a4 a:hover{color:#0078d7}.fileListIcon_788939a4{position:absolute;top:0}html[dir=ltr] .fileListIcon_788939a4{left:0}html[dir=rtl] .fileListIcon_788939a4{right:0}.fileListMore_788939a4{padding:0 16px 8px 16px;display:block;font-size:12px}html[dir=rtl] .fileListMore_788939a4{padding:0 16px 8px 16px}.title_788939a4{padding:8px 16px;display:block;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:17px;font-weight:300;color:#333333;height:38px;line-height:21px;overflow:hidden;word-wrap:break-word}--><!--.root_46a0fb85{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0;padding:0;box-shadow:none;color:#333333;font-size:14px;font-weight:400;line-height:1;position:relative;height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.root_46a0fb85 .contextualHost_46a0fb85{display:none}.imageArea_46a0fb85{position:relative;overflow:hidden;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 48px;flex:0 0 48px;height:48px;width:48px;border-radius:50%}@media screen and (-ms-high-contrast:active){.imageArea_46a0fb85{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.imageArea_46a0fb85{border:1px solid #000000}}.imageArea_46a0fb85 .image_46a0fb85{border:0}.placeholder_46a0fb85{color:#ffffff;position:absolute;right:0;left:0;font-size:47px;top:9px;z-index:5}.initials_46a0fb85{color:#ffffff;font-size:17px;font-weight:100;line-height:46px;height:48px}.initials_46a0fb85.initialsIsLightBlue_46a0fb85{background-color:#6ba5e7}.initials_46a0fb85.initialsIsBlue_46a0fb85{background-color:#2d89ef}.initials_46a0fb85.initialsIsDarkBlue_46a0fb85{background-color:#2b5797}.initials_46a0fb85.initialsIsTeal_46a0fb85{background-color:#00aba9}.initials_46a0fb85.initialsIsLightGreen_46a0fb85{background-color:#99b433}.initials_46a0fb85.initialsIsGreen_46a0fb85{background-color:#00a300}.initials_46a0fb85.initialsIsDarkGreen_46a0fb85{background-color:#1e7145}.initials_46a0fb85.initialsIsLightPink_46a0fb85{background-color:#e773bd}.initials_46a0fb85.initialsIsPink_46a0fb85{background-color:#ff0097}.initials_46a0fb85.initialsIsMagenta_46a0fb85{background-color:#7e3878}.initials_46a0fb85.initialsIsPurple_46a0fb85{background-color:#603cba}.initials_46a0fb85.initialsIsBlack_46a0fb85{background-color:#1d1d1d}.initials_46a0fb85.initialsIsOrange_46a0fb85{background-color:#da532c}.initials_46a0fb85.initialsIsRed_46a0fb85{background-color:#e11}.initials_46a0fb85.initialsIsDarkRed_46a0fb85{background-color:#b91d47}.image_46a0fb85{position:absolute;top:0;width:100%;height:100%;border-radius:50%;-webkit-perspective:1px;perspective:1px}html[dir=ltr] .image_46a0fb85{margin-right:10px}html[dir=rtl] .image_46a0fb85{margin-left:10px}html[dir=ltr] .image_46a0fb85{left:0}html[dir=rtl] .image_46a0fb85{right:0}.image_46a0fb85[src=""]{display:none}.presence_46a0fb85{background-color:#7fba00;position:absolute;height:12px;width:12px;border-radius:50%;top:auto;bottom:-1px;border:2px solid #ffffff;text-align:center;box-sizing:content-box;-ms-high-contrast-adjust:none}html[dir=ltr] .presence_46a0fb85{left:34px}html[dir=rtl] .presence_46a0fb85{right:34px}@media screen and (-ms-high-contrast:active){.presence_46a0fb85{border-color:#000000;color:#000000;background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.presence_46a0fb85{border-color:#ffffff;color:#ffffff;background-color:#000000}}.presence_46a0fb85 .presenceIcon_46a0fb85{color:#ffffff;font-size:8px;line-height:12px;vertical-align:top}@media screen and (-ms-high-contrast:active){.presence_46a0fb85 .presenceIcon_46a0fb85{color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.presence_46a0fb85 .presenceIcon_46a0fb85{color:#ffffff}}.details_46a0fb85{padding:0 24px 0 12px;min-width:0;width:100%}html[dir=rtl] .details_46a0fb85{padding:0 12px 0 24px}html[dir=ltr] .details_46a0fb85{text-align:left}html[dir=rtl] .details_46a0fb85{text-align:right}.optionalText_46a0fb85,.primaryText_46a0fb85,.secondaryText_46a0fb85,.tertiaryText_46a0fb85,.textContent_46a0fb85{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.primaryText_46a0fb85{color:#333333;font-weight:400;font-size:17px;margin-top:-3px;line-height:1.4}.optionalText_46a0fb85,.secondaryText_46a0fb85,.tertiaryText_46a0fb85{color:#666666;font-weight:400;font-size:12px;white-space:nowrap;line-height:1.3}.secondaryText_46a0fb85{padding-top:3px}.optionalText_46a0fb85,.tertiaryText_46a0fb85{padding-top:5px;display:none}.root_46a0fb85.rootIsTiny_46a0fb85{height:30px;min-width:30px}.root_46a0fb85.rootIsTiny_46a0fb85 .imageArea_46a0fb85{overflow:visible;background:0 0;height:0;width:0}.root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{top:10px;border:0}html[dir=ltr] .root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{right:auto}html[dir=rtl] .root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{left:auto}html[dir=ltr] .root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{left:0}html[dir=rtl] .root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{right:0}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{top:9px;border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{border:1px solid #000000}}html[dir=ltr] .root_46a0fb85.rootIsTiny_46a0fb85 .details_46a0fb85{padding-left:20px}html[dir=rtl] .root_46a0fb85.rootIsTiny_46a0fb85 .details_46a0fb85{padding-right:20px}.root_46a0fb85.rootIsTiny_46a0fb85 .primaryText_46a0fb85{font-size:14px;padding-top:4px}.root_46a0fb85.rootIsTiny_46a0fb85 .secondaryText_46a0fb85{display:none}.root_46a0fb85.rootIsTiny_46a0fb85.rootIsReadonly_46a0fb85{padding:0;background-color:transparent}.root_46a0fb85.rootIsTiny_46a0fb85.rootIsReadonly_46a0fb85 .primaryText_46a0fb85:after{content:';'}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85{height:24px;line-height:24px;min-width:24px;margin-right:4px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 24px;flex:0 0 24px;height:24px;width:24px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .placeholder_46a0fb85{font-size:18px;top:4px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .initials_46a0fb85{font-size:11px;height:24px;line-height:24px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .presence_46a0fb85{height:8px;width:8px;border:4px solid #fff}html[dir=ltr] .root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .presence_46a0fb85{left:16px}html[dir=rtl] .root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .presence_46a0fb85{right:16px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .presenceIcon_46a0fb85{font-size:6px;line-height:9px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .primaryText_46a0fb85{font-size:14px;padding-top:3px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .secondaryText_46a0fb85{display:none}.root_46a0fb85.rootIs28_46a0fb85{height:28px;line-height:28px;min-width:28px}.root_46a0fb85.rootIs28_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIs28_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 28px;flex:0 0 28px;height:28px;width:28px}.root_46a0fb85.rootIs28_46a0fb85 .placeholder_46a0fb85{font-size:18px;top:4px}.root_46a0fb85.rootIs28_46a0fb85 .initials_46a0fb85{font-size:11px;height:28px;line-height:28px}.root_46a0fb85.rootIs28_46a0fb85 .presence_46a0fb85{height:8px;width:8px;border:4px solid #fff}html[dir=ltr] .root_46a0fb85.rootIs28_46a0fb85 .presence_46a0fb85{left:16px}html[dir=rtl] .root_46a0fb85.rootIs28_46a0fb85 .presence_46a0fb85{right:16px}.root_46a0fb85.rootIs28_46a0fb85 .presenceIcon_46a0fb85{font-size:6px;line-height:9px}.root_46a0fb85.rootIs28_46a0fb85 .primaryText_46a0fb85{font-size:14px;padding-top:3px}.root_46a0fb85.rootIs28_46a0fb85 .secondaryText_46a0fb85{display:none}.root_46a0fb85.rootIsExtraSmall_46a0fb85{height:32px;line-height:32px;min-width:32px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsExtraSmall_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 32px;flex:0 0 32px;height:32px;width:32px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .placeholder_46a0fb85{font-size:28px;top:6px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .initials_46a0fb85{font-size:14px;height:32px;line-height:32px}html[dir=ltr] .root_46a0fb85.rootIsExtraSmall_46a0fb85 .presence_46a0fb85{left:19px}html[dir=rtl] .root_46a0fb85.rootIsExtraSmall_46a0fb85 .presence_46a0fb85{right:19px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .primaryText_46a0fb85{font-size:14px;padding-top:3px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .secondaryText_46a0fb85{display:none}.root_46a0fb85.rootIsSmall_46a0fb85{height:40px;line-height:40px;min-width:40px}.root_46a0fb85.rootIsSmall_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsSmall_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 40px;flex:0 0 40px;height:40px;width:40px}.root_46a0fb85.rootIsSmall_46a0fb85 .placeholder_46a0fb85{font-size:38px;top:5px}.root_46a0fb85.rootIsSmall_46a0fb85 .initials_46a0fb85{font-size:14px;height:40px;line-height:40px}html[dir=ltr] .root_46a0fb85.rootIsSmall_46a0fb85 .presence_46a0fb85{left:27px}html[dir=rtl] .root_46a0fb85.rootIsSmall_46a0fb85 .presence_46a0fb85{right:27px}.root_46a0fb85.rootIsSmall_46a0fb85 .primaryText_46a0fb85{font-size:14px}.root_46a0fb85.rootIsSmall_46a0fb85 .primaryText_46a0fb85,.root_46a0fb85.rootIsSmall_46a0fb85 .secondaryText_46a0fb85{padding-top:1px}.root_46a0fb85.rootIsLarge_46a0fb85{height:72px;line-height:72px;min-width:72px}.root_46a0fb85.rootIsLarge_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsLarge_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 72px;flex:0 0 72px;height:72px;width:72px}.root_46a0fb85.rootIsLarge_46a0fb85 .placeholder_46a0fb85{font-size:67px;top:10px}.root_46a0fb85.rootIsLarge_46a0fb85 .initials_46a0fb85{font-size:28px;height:72px;line-height:70px}.root_46a0fb85.rootIsLarge_46a0fb85 .presence_46a0fb85{height:20px;width:20px;border-width:3px}html[dir=ltr] .root_46a0fb85.rootIsLarge_46a0fb85 .presence_46a0fb85{left:49px}html[dir=rtl] .root_46a0fb85.rootIsLarge_46a0fb85 .presence_46a0fb85{right:49px}.root_46a0fb85.rootIsLarge_46a0fb85 .presenceIcon_46a0fb85{line-height:20px;font-size:14px}.root_46a0fb85.rootIsLarge_46a0fb85 .secondaryText_46a0fb85{padding-top:3px}.root_46a0fb85.rootIsLarge_46a0fb85 .tertiaryText_46a0fb85{padding-top:5px;display:block}.root_46a0fb85.rootIsExtraLarge_46a0fb85{height:100px;line-height:100px;min-width:100px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsExtraLarge_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;height:100px;width:100px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .placeholder_46a0fb85{font-size:95px;top:12px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .initials_46a0fb85{font-size:42px;height:100px;line-height:96px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .presence_46a0fb85{height:28px;width:28px;border-width:4px}html[dir=ltr] .root_46a0fb85.rootIsExtraLarge_46a0fb85 .presence_46a0fb85{left:71px}html[dir=rtl] .root_46a0fb85.rootIsExtraLarge_46a0fb85 .presence_46a0fb85{right:71px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .presenceIcon_46a0fb85{line-height:28px;font-size:21px;position:relative;top:1px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .primaryText_46a0fb85{font-size:21px;font-weight:300;margin-top:0}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .secondaryText_46a0fb85{padding-top:2px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .optionalText_46a0fb85,.root_46a0fb85.rootIsExtraLarge_46a0fb85 .tertiaryText_46a0fb85{padding-top:5px;display:block}.root_46a0fb85.rootIsDarkText_46a0fb85 .primaryText_46a0fb85{color:#212121}.root_46a0fb85.rootIsDarkText_46a0fb85 .optionalText_46a0fb85,.root_46a0fb85.rootIsDarkText_46a0fb85 .secondaryText_46a0fb85,.root_46a0fb85.rootIsDarkText_46a0fb85 .tertiaryText_46a0fb85{color:#333333}.root_46a0fb85.rootIsSelectable_46a0fb85{cursor:pointer;padding:0 10px}.root_46a0fb85.rootIsSelectable_46a0fb85:not(.rootExtraLarge_46a0fb85):focus,.root_46a0fb85.rootIsSelectable_46a0fb85:not(.rootExtraLarge_46a0fb85):hover{background-color:#deecf9;outline:1px solid transparent}.root_46a0fb85.rootIsAvailable_46a0fb85 .presence_46a0fb85{background-color:#7fba00}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsAvailable_46a0fb85 .presence_46a0fb85{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsAvailable_46a0fb85 .presence_46a0fb85{background-color:#600000}}.root_46a0fb85.rootIsAway_46a0fb85 .presence_46a0fb85{background-color:#fcd116}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsAway_46a0fb85 .presence_46a0fb85{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsAway_46a0fb85 .presence_46a0fb85{background-color:#000000}}.root_46a0fb85.rootIsAway_46a0fb85 .presenceIcon_46a0fb85{position:relative}html[dir=ltr] .root_46a0fb85.rootIsAway_46a0fb85 .presenceIcon_46a0fb85{left:1px}html[dir=rtl] .root_46a0fb85.rootIsAway_46a0fb85 .presenceIcon_46a0fb85{right:1px}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85{background-color:#ffffff}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{content:'';width:100%;height:100%;position:absolute;top:0;box-shadow:0 0 0 2px #d93b3b inset;border-radius:50%}html[dir=ltr] .root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{left:0}html[dir=rtl] .root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{right:0}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{content:'';width:100%;height:2px;background-color:#d93b3b;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);position:absolute;top:5px}html[dir=ltr] .root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{left:0}html[dir=rtl] .root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{right:0}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85{color:#0f0;background-color:#000000}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{box-shadow:0 0 0 2px #0f0 inset}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85{color:#600000;background-color:#ffffff}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{box-shadow:0 0 0 2px #600000 inset}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{background-color:#600000}}.root_46a0fb85.rootIsBlocked_46a0fb85.rootIsLarge_46a0fb85 .presence_46a0fb85::after{top:9px}.root_46a0fb85.rootIsBlocked_46a0fb85.rootIsExtraLarge_46a0fb85 .presence_46a0fb85::after{top:13px}.root_46a0fb85.rootIsBusy_46a0fb85 .presence_46a0fb85{background-color:#d93b3b}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsBusy_46a0fb85 .presence_46a0fb85{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsBusy_46a0fb85 .presence_46a0fb85{background-color:#600000}}.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85{background-color:#e81123}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85{color:#000000;background-color:#0f0}.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85::before{background-color:#0f0}.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85::after{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85{background-color:#600000}}.root_46a0fb85.rootIsOffline_46a0fb85 .presence_46a0fb85{background-color:#93abbd}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsOffline_46a0fb85 .presence_46a0fb85{background-color:#0f0;box-shadow:0 0 0 1px #ffffff inset}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsOffline_46a0fb85 .presence_46a0fb85{background-color:#ffffff;box-shadow:0 0 0 1px #000000 inset}}--><!--.root_f4b03d55{display:none;pointer-events:none;position:absolute;top:0;left:0;right:0;bottom:0}.root_f4b03d55 .overlay_f4b03d55{display:none;pointer-events:none;opacity:1;cursor:pointer;transition:opacity 367ms cubic-bezier(.1,.9,.2,1)}.main_f4b03d55{background-color:#ffffff;position:absolute;width:100%;bottom:0;top:0;display:none;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}html[dir=ltr] .main_f4b03d55{right:0}html[dir=rtl] .main_f4b03d55{left:0}@media (min-width:480px){.main_f4b03d55{border-left:1px solid #eaeaea;border-right:1px solid #eaeaea;pointer-events:auto;width:340px;box-shadow:-30px 0 30px -30px rgba(0,0,0,.2)}html[dir=ltr] .main_f4b03d55{left:auto}html[dir=rtl] .main_f4b03d55{right:auto}}.root_f4b03d55.rootIsSmall_f4b03d55 .main_f4b03d55{width:272px}@media (min-width:480px){.root_f4b03d55.rootIsSmall_f4b03d55 .main_f4b03d55{width:340px}}.root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{width:272px;box-shadow:30px 0 30px -30px rgba(0,0,0,.2)}html[dir=ltr] .root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{right:auto}html[dir=rtl] .root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{left:auto}html[dir=ltr] .root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{left:0}html[dir=rtl] .root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{right:0}.root_f4b03d55.rootIsSmallFluid_f4b03d55 .main_f4b03d55{width:100%}@media (min-width:640px){.root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55,.root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55,.root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55,.root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{width:auto}html[dir=ltr] .root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55,html[dir=ltr] .root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55,html[dir=ltr] .root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55,html[dir=ltr] .root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{left:48px}html[dir=rtl] .root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55,html[dir=rtl] .root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55,html[dir=rtl] .root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55,html[dir=rtl] .root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{right:48px}}@media (min-width:1024px){.root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55{width:643px}html[dir=ltr] .root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55{left:auto}html[dir=rtl] .root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55{right:auto}}@media (min-width:1366px){html[dir=ltr] .root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55{left:428px}html[dir=rtl] .root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55{right:428px}}@media (min-width:1366px){.root_f4b03d55.rootIsLarge_f4b03d55.rootIsFixed_f4b03d55 .main_f4b03d55{width:940px}html[dir=ltr] .root_f4b03d55.rootIsLarge_f4b03d55.rootIsFixed_f4b03d55 .main_f4b03d55{left:auto}html[dir=rtl] .root_f4b03d55.rootIsLarge_f4b03d55.rootIsFixed_f4b03d55 .main_f4b03d55{right:auto}}@media (min-width:1366px){html[dir=ltr] .root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{left:176px}html[dir=rtl] .root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{right:176px}}@media (min-width:1024px){html[dir=ltr] .root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55{left:auto}html[dir=rtl] .root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55{right:auto}}.root_f4b03d55.rootIsOpen_f4b03d55{display:block}.root_f4b03d55.rootIsOpen_f4b03d55 .main_f4b03d55{opacity:1;pointer-events:auto;display:block}.root_f4b03d55.rootIsOpen_f4b03d55 .overlay_f4b03d55{cursor:pointer;display:block;pointer-events:auto}@media screen and (-ms-high-contrast:active){.root_f4b03d55.rootIsOpen_f4b03d55 .overlay_f4b03d55{opacity:0}}.closeButton_f4b03d55{background:0 0;border:0;cursor:pointer;position:absolute;top:0;height:44px;width:44px;line-height:44px;padding:0;color:#666666;font-size:20px}html[dir=ltr] .closeButton_f4b03d55{right:4px}html[dir=rtl] .closeButton_f4b03d55{left:4px}.closeButton_f4b03d55:hover{color:#333333}.contentInner_f4b03d55{position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-overflow-scrolling:touch;-webkit-transform:translateZ(0);transform:translateZ(0)}.rootHasCloseButton_f4b03d55 .contentInner_f4b03d55{top:44px}.content_f4b03d55,.footerInner_f4b03d55,.header_f4b03d55{padding-left:16px;padding-right:16px}@media (min-width:640px){.content_f4b03d55,.footerInner_f4b03d55,.header_f4b03d55{padding-left:32px;padding-right:32px}}@media (min-width:1366px){.content_f4b03d55,.footerInner_f4b03d55,.header_f4b03d55{padding-left:40px;padding-right:40px}}.header_f4b03d55{margin:14px 0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}@media (min-width:1024px){.header_f4b03d55{margin-top:30px}}.content_f4b03d55{margin-bottom:0;overflow-y:auto}.footer_f4b03d55{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;border-top:1px solid transparent;transition:border 367ms cubic-bezier(.1,.25,.75,.9)}.footerInner_f4b03d55{padding-bottom:20px;padding-top:20px}.footerIsSticky_f4b03d55{background:#ffffff;border-top-color:#eaeaea}.headerText_f4b03d55{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;line-height:32px;margin:0}--><!--.root_ca4b5a14{box-sizing:border-box;margin:0;padding:0;box-shadow:none;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;margin-bottom:10px;position:relative;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.root_ca4b5a14:active .caretDown_ca4b5a14,.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:focus .caretDown_ca4b5a14,.root_ca4b5a14:focus .title_ca4b5a14,.root_ca4b5a14:hover .caretDown_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{color:#000000}@media screen and (-ms-high-contrast:active){.root_ca4b5a14:active .caretDown_ca4b5a14,.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:focus .caretDown_ca4b5a14,.root_ca4b5a14:focus .title_ca4b5a14,.root_ca4b5a14:hover .caretDown_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14:active .caretDown_ca4b5a14,.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:focus .caretDown_ca4b5a14,.root_ca4b5a14:focus .title_ca4b5a14,.root_ca4b5a14:hover .caretDown_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{color:#37006e}}.root_ca4b5a14:active .titleIsPlaceHolder_ca4b5a14,.root_ca4b5a14:focus .titleIsPlaceHolder_ca4b5a14,.root_ca4b5a14:hover .titleIsPlaceHolder_ca4b5a14{color:#a6a6a6}.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{border-color:#0078d7}@media screen and (-ms-high-contrast:active){.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{border-color:#37006e}}.root_ca4b5a14:focus .title_ca4b5a14{border-color:#0078d7}@media screen and (-ms-high-contrast:active){.root_ca4b5a14:focus .title_ca4b5a14{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14:focus .title_ca4b5a14{border-color:#37006e}}.root_ca4b5a14 .ms-Label{display:inline-block;margin-bottom:8px}.root_ca4b5a14.rootIsDisabled_ca4b5a14 .title_ca4b5a14{background-color:#f4f4f4;border-color:#f4f4f4;color:#a6a6a6;cursor:default}@media screen and (-ms-high-contrast:active){.root_ca4b5a14.rootIsDisabled_ca4b5a14 .title_ca4b5a14{border-color:#0f0;color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14.rootIsDisabled_ca4b5a14 .title_ca4b5a14{border-color:#600000;color:#600000}}.root_ca4b5a14.rootIsDisabled_ca4b5a14 .title_ca4b5a14.titleIsError_ca4b5a14{border-color:#a80000}.root_ca4b5a14.rootIsDisabled_ca4b5a14 .caretDown_ca4b5a14{color:#a6a6a6}@media screen and (-ms-high-contrast:active){.root_ca4b5a14.rootIsDisabled_ca4b5a14 .caretDown_ca4b5a14{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14.rootIsDisabled_ca4b5a14 .caretDown_ca4b5a14{color:#600000}}.caretDown_ca4b5a14{color:#212121;font-size:12px;position:absolute;top:1px;pointer-events:none;height:32px;line-height:30px}html[dir=ltr] .caretDown_ca4b5a14{right:12px}html[dir=rtl] .caretDown_ca4b5a14{left:12px}.title_ca4b5a14{box-sizing:border-box;margin:0;padding:0;box-shadow:none;background:#ffffff;border:1px solid #c8c8c8;cursor:pointer;display:block;height:32px;line-height:30px;padding:0 32px 0 12px;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}html[dir=rtl] .title_ca4b5a14{padding:0 12px 0 32px}.title_ca4b5a14.titleIsError_ca4b5a14{border-color:#a80000}.title_ca4b5a14.titleIsPlaceHolder_ca4b5a14{color:#a6a6a6}.panel_ca4b5a14 .ms-Panel-main{box-shadow:-30px 0 30px -30px rgba(0,0,0,.2)}.panel_ca4b5a14 .ms-Panel-contentInner{padding:0 0 20px}.callout_ca4b5a14{box-shadow:0 0 5px 0 rgba(0,0,0,.4);border:1px solid #eaeaea}.errorMessage_ca4b5a14{color:#a80000}.errorMessage_ca4b5a14::before{content:'* '}.items_ca4b5a14{display:block}.item_ca4b5a14{background:0 0;box-sizing:border-box;cursor:pointer;display:block;width:100%;height:auto;min-height:36px;line-height:20px;padding:5px 16px;position:relative;border:1px solid transparent;word-wrap:break-word;overflow-wrap:break-word;text-align:left}@media screen and (-ms-high-contrast:active){.item_ca4b5a14{border-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14{border-color:#ffffff}}.item_ca4b5a14:hover{background-color:#f4f4f4;color:#000000}@media screen and (-ms-high-contrast:active){.item_ca4b5a14:hover{background-color:#1aebff;border-color:#1aebff;color:#000000}.item_ca4b5a14:hover:focus{border-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14:hover{background-color:#37006e;border-color:#37006e;color:#ffffff}}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14:hover{-ms-high-contrast-adjust:none}}.item_ca4b5a14::-moz-focus-inner{border:0}.item_ca4b5a14{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .item_ca4b5a14:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.item_ca4b5a14:focus{background-color:#f4f4f4}.item_ca4b5a14:active{background-color:#f4f4f4;color:#000000}.item_ca4b5a14.itemIsDisabled_ca4b5a14{background:#ffffff;color:#a6a6a6;cursor:default}.item_ca4b5a14 .ms-Button-flexContainer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.item_ca4b5a14.itemIsSelected_ca4b5a14{background-color:#dadada;color:#000000}.item_ca4b5a14.itemIsSelected_ca4b5a14:hover{background-color:#dadada}.item_ca4b5a14.itemIsSelected_ca4b5a14::-moz-focus-inner{border:0}.item_ca4b5a14.itemIsSelected_ca4b5a14{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .item_ca4b5a14.itemIsSelected_ca4b5a14:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}@media screen and (-ms-high-contrast:active){.item_ca4b5a14.itemIsSelected_ca4b5a14{background-color:#1aebff;border-color:#1aebff;color:#000000}.item_ca4b5a14.itemIsSelected_ca4b5a14:focus{border-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14.itemIsSelected_ca4b5a14{background-color:#37006e;border-color:#37006e;color:#ffffff}}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14.itemIsSelected_ca4b5a14{-ms-high-contrast-adjust:none}}.header_ca4b5a14{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;font-weight:600;color:#0078d7;background:0 0;border:none;height:36px;line-height:36px;cursor:default;padding:0 16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html[dir=ltr] .header_ca4b5a14{text-align:left}html[dir=rtl] .header_ca4b5a14{text-align:right}.divider_ca4b5a14{height:1px;background-color:#eaeaea}.optionText_ca4b5a14{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:100%;word-wrap:break-word;overflow-wrap:break-word;margin:1px}--><!--.root_c70d018d{width:auto}.clear_c70d018d{clear:both}.itemContainer_c70d018d{display:-webkit-box;display:-ms-flexbox;display:flex}.members_c70d018d{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;overflow:hidden;margin:-2px}.members_c70d018d>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:2px}.itemButton_c70d018d{text-align:center;padding:0;border-radius:50%;vertical-align:top}.itemButton_c70d018d::-moz-focus-inner{border:0}.itemButton_c70d018d{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .itemButton_c70d018d:focus:after{content:'';position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;pointer-events:none;border:1px solid #666666}.itemButton_c70d018d .ms-Persona-details{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}button.itemButton_c70d018d{display:inline;background:0 0;padding:0;cursor:pointer;border:none}button.itemButton_c70d018d::-moz-focus-inner{padding:0;border:0}button.addButton_c70d018d{font-size:14px;color:#ffffff;background-color:#0078d7}html[dir=ltr] button.addButton_c70d018d{margin-right:4px}html[dir=rtl] button.addButton_c70d018d{margin-left:4px}button.addButton_c70d018d:focus,button.addButton_c70d018d:hover{background-color:#005a9e}button.addButton_c70d018d:active{background-color:#004578}button.addButton_c70d018d:disabled{background-color:#c8c8c8}button.overflowButton_c70d018d{font-size:14px;color:#666666;background-color:#eaeaea}html[dir=ltr] button.overflowButton_c70d018d{margin-left:4px}html[dir=rtl] button.overflowButton_c70d018d{margin-right:4px}button.descriptiveOverflowButton_c70d018d{font-size:12px;color:#666666;background-color:#eaeaea}html[dir=ltr] button.descriptiveOverflowButton_c70d018d{margin-left:4px}html[dir=rtl] button.descriptiveOverflowButton_c70d018d{margin-right:4px}.screenReaderOnly_c70d018d{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}--><!--.root_1b8277ae{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;background-color:#f4f4f4;color:#333333;width:100%;box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.root_1b8277ae .icon_1b8277ae{color:#767676}html[dir=ltr] .root_1b8277ae .icon_1b8277ae{padding-right:8px}html[dir=rtl] .root_1b8277ae .icon_1b8277ae{padding-left:8px}.root_1b8277ae .ms-Link{font-size:12px;color:#005a9e}html[dir=ltr] .root_1b8277ae .ms-Button{margin-left:6px}html[dir=rtl] .root_1b8277ae .ms-Button{margin-right:6px}.icon_1b8277ae,.text_1b8277ae{display:table-cell;vertical-align:top}.icon_1b8277ae{font-size:16px;min-width:16px;min-height:16px;display:-webkit-box;display:-ms-flexbox;display:flex}.text_1b8277ae{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;min-width:0;display:-webkit-box;display:-ms-flexbox;display:flex}.root_1b8277ae.rootIsWarning_1b8277ae{background-color:#fff4ce;color:#333333}.root_1b8277ae.rootIsSevereWarning_1b8277ae{background-color:#fed9cc;color:#333333}.root_1b8277ae.rootIsSevereWarning_1b8277ae .icon_1b8277ae{color:#d83b01}.root_1b8277ae.rootIsError_1b8277ae{background-color:#fde7e9;color:#333333}.root_1b8277ae.rootIsError_1b8277ae .icon_1b8277ae{color:#a80000}.root_1b8277ae.rootIsBlocked_1b8277ae{background-color:#fde7e9;color:#333333}.root_1b8277ae.rootIsBlocked_1b8277ae .icon_1b8277ae{color:#a80000}.root_1b8277ae.rootIsSuccess_1b8277ae{background-color:#dff6dd;color:#333333}.root_1b8277ae.rootIsSuccess_1b8277ae .icon_1b8277ae{color:#107c10}.content_1b8277ae{padding:16px;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;box-sizing:border-box}.content_1b8277ae:before{pointer-events:none;position:absolute;right:0;bottom:0;left:0;top:0;margin:0}@media screen and (-ms-high-contrast:active){.content_1b8277ae:before{border:1px solid #ffffff;content:' '}}@media screen and (-ms-high-contrast:black-on-white){.content_1b8277ae:before{border:1px solid #000000;content:' '}}.actionables_1b8277ae{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;min-width:0}.actionables_1b8277ae>.dismissal_1b8277ae{right:0;top:0;position:absolute!important}.actionsOneline_1b8277ae,.actions_1b8277ae{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.actionsOneline_1b8277ae{position:relative}.dismissal_1b8277ae{min-width:0}.dismissal_1b8277ae::-moz-focus-inner{border:0}.dismissal_1b8277ae{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .dismissal_1b8277ae:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .dismissalOneline_1b8277ae .dismissal_1b8277ae{margin-right:-8px}html[dir=rtl] .dismissalOneline_1b8277ae .dismissal_1b8277ae{margin-left:-8px}.root_1b8277ae+.root_1b8277ae{margin-top:6px}html[dir=ltr] .innerTextPadding_1b8277ae{padding-right:24px}html[dir=rtl] .innerTextPadding_1b8277ae{padding-left:24px}html[dir=ltr] .innerTextPadding_1b8277ae .innerText_1b8277ae>span,html[dir=ltr] .innerTextPadding_1b8277ae span{padding-right:4px}html[dir=rtl] .innerTextPadding_1b8277ae .innerText_1b8277ae>span,html[dir=rtl] .innerTextPadding_1b8277ae span{padding-left:4px}.multiline_1b8277ae>.content_1b8277ae>.actionables_1b8277ae{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.singleline_1b8277ae .content_1b8277ae .icon_1b8277ae{-webkit-box-align:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center}.singleline_1b8277ae .content_1b8277ae .actionables_1b8277ae>.text_1b8277ae{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center}.singleline_1b8277ae .content_1b8277ae .actionables_1b8277ae>.text_1b8277ae .innerTextPadding_1b8277ae,.singleline_1b8277ae .content_1b8277ae .actionables_1b8277ae>.text_1b8277ae .innerText_1b8277ae{max-height:1.3em;line-height:1.3em;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.singleline_1b8277ae .content_1b8277ae>.actionables_1b8277ae{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.root_1b8277ae .ms-Icon--Cancel{font-size:14px}--><!--.root_1f4f07e8{position:relative;cursor:default}.dragMask_1f4f07e8{position:absolute;background:rgba(255,0,0,0);left:0;top:0;right:0;bottom:0}.box_1f4f07e8{position:absolute;box-sizing:border-box;border:1px solid #0078d7;pointer-events:none}.boxFill_1f4f07e8{position:absolute;box-sizing:border-box;background-color:#0078d7;opacity:.1;left:0;top:0;right:0;bottom:0}--><!--.root_374224b2{overflow-y:auto;-webkit-overflow-scrolling:touch;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.rootIsOnTop_374224b2{position:absolute}.navItems_374224b2{list-style-type:none}.navItems_374224b2,.navItems_374224b2>.navItem_374224b2{padding:0}.groupContent_374224b2{display:none;margin-bottom:40px}.group_374224b2.groupIsExpanded_374224b2 .groupContent_374224b2{display:block}.icon_374224b2{padding:0;color:#333333;background:#f4f4f4;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}html[dir=ltr] .iconLink_374224b2{margin-right:4px}html[dir=rtl] .iconLink_374224b2{margin-left:4px}.chevronButton_374224b2{display:block;font-weight:400;font-size:12px;line-height:36px;margin:5px 0;padding:0 20px 0 28px;background:0 0;border:none;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;cursor:pointer;color:#333333;background:#ffffff}html[dir=ltr] .chevronButton_374224b2{text-align:left}html[dir=rtl] .chevronButton_374224b2{text-align:right}html[dir=rtl] .chevronButton_374224b2{padding:0 28px 0 20px}.chevronButton_374224b2:visited{color:inherit}.chevronButton_374224b2:hover{color:#333333;background:#f8f8f8}.chevronButton_374224b2.chevronButtonIsGroup_374224b2{width:100%;height:36px;border-bottom:1px solid #eaeaea}.chevronIcon_374224b2{position:absolute;height:36px;line-height:36px;font-size:12px;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}html[dir=ltr] .chevronIcon_374224b2{left:8px}html[dir=rtl] .chevronIcon_374224b2{right:8px}.chevronIsExpanded_374224b2{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}.linkText_374224b2{vertical-align:middle}.compositeLink_374224b2{display:block;position:relative;color:#333333;background:#ffffff}.compositeLink_374224b2 .chevronButton_374224b2.chevronButtonLink_374224b2{display:block;width:26px;height:34px;position:absolute;top:1px;z-index:1;padding:0;margin:0}html[dir=ltr] .compositeLink_374224b2 .chevronButton_374224b2.chevronButtonLink_374224b2{left:1px}html[dir=rtl] .compositeLink_374224b2 .chevronButton_374224b2.chevronButtonLink_374224b2{right:1px}.compositeLink_374224b2 .chevronButton_374224b2.chevronButtonLink_374224b2 .chevronIcon_374224b2{position:relative}.compositeLink_374224b2 a{color:#333333}.compositeLink_374224b2:hover .chevronButton_374224b2,.compositeLink_374224b2:hover a{background:#f8f8f8;color:#333333}.compositeLink_374224b2.compositeLinkIsExpanded_374224b2 .chevronIcon_374224b2{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}.compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2,.compositeLink_374224b2.compositeLinkIsSelected_374224b2 a{color:#0078d7;background:#f4f4f4}.compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,.compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{content:'';position:absolute;top:0;bottom:0}html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{border-left:2px solid #0078d7}html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{border-right:2px solid #0078d7}html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{right:0}html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{left:0}html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{left:0}html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{right:0}.link_374224b2{display:block;position:relative;height:36px;line-height:36px;text-decoration:none;padding:0 20px;cursor:pointer;text-overflow:ellipsis;text-decoration:none;white-space:nowrap;overflow:hidden}.groupHeaderFontSize_374224b2{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:17px;font-weight:300}.chevronButtonGroup_374224b2::-moz-focus-inner,.chevronButtonLink_374224b2::-moz-focus-inner,.chevronButton_374224b2::-moz-focus-inner,.link_374224b2::-moz-focus-inner{border:0}.chevronButtonGroup_374224b2,.chevronButtonLink_374224b2,.chevronButton_374224b2,.link_374224b2{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .chevronButtonGroup_374224b2:focus:after,.ms-Fabric.is-focusVisible .chevronButtonLink_374224b2:focus:after,.ms-Fabric.is-focusVisible .chevronButton_374224b2:focus:after,.ms-Fabric.is-focusVisible .link_374224b2:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .root_374224b2 .link_374224b2{padding-left:20px}html[dir=rtl] .root_374224b2 .link_374224b2{padding-right:20px}.root_374224b2 .link_374224b2 .ms-Button-label{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#0078d7}html[dir=ltr] .root_374224b2 .link_374224b2.linkIsOnExpanded_374224b2{padding-left:28px}html[dir=rtl] .root_374224b2 .link_374224b2.linkIsOnExpanded_374224b2{padding-right:28px}--><!--.root_bf0c5865{min-width:180px}.suggestionsItem_bf0c5865{width:100%;height:auto;padding:4px 20px 6px;display:block;border:none;background:#ffffff}html[dir=ltr] .suggestionsItem_bf0c5865{text-align:left}html[dir=rtl] .suggestionsItem_bf0c5865{text-align:right}.suggestionsItem_bf0c5865:hover{background:#eaeaea}.suggestionsItem_bf0c5865.suggestionsItemIsSuggested_bf0c5865{background:#d0d0d0}.suggestionsItem_bf0c5865.suggestionsItemIsSuggested_bf0c5865:hover{background:#dadada}.searchMoreButton_bf0c5865{background:0 0;border:0;cursor:pointer;height:auto;text-align:center;margin:0;width:100%}.searchMoreButton_bf0c5865:hover{background-color:#eaeaea;cursor:pointer}.searchMoreButton_bf0c5865:active,.searchMoreButton_bf0c5865:focus{background-color:#c7e0f4}.suggestionsTitle_bf0c5865{color:#0078d7;font-size:12px;text-align:center;text-transform:uppercase;line-height:40px;border-bottom:1px solid #eaeaea}.suggestionsContainer_bf0c5865{overflow-y:auto;overflow-x:hidden;max-height:300px;border-bottom:1px solid #eaeaea}.suggestionsNone_bf0c5865{text-align:center;color:#767676;font-size:12px;line-height:30px}.suggestionsSpinner_bf0c5865{margin:5px;text-align:center;white-space:nowrap;line-height:20px}.suggestionsSpinner_bf0c5865 .ms-Spinner-circle{display:inline-block;vertical-align:middle}.suggestionsSpinner_bf0c5865 .ms-Spinner-label{display:inline-block;margin:0 10px;vertical-align:middle}--><!--.pickerText_02ee47ef{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;box-sizing:border-box;border:1px solid #eaeaea;min-width:180px;padding:1px;min-height:32px}.pickerText_02ee47ef:hover{border-color:#c7e0f4}.pickerText_02ee47ef.inputFocused_02ee47ef{border-color:#0078d7}.pickerInput_02ee47ef{height:26px;border:none;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;outline:0;padding:0 6px 0;margin:1px}--><!--.personaContainer_4ebdd9aa{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#f4f4f4;margin:1px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;max-width:100%}.personaContainer_4ebdd9aa::-moz-focus-inner{border:0}.personaContainer_4ebdd9aa{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .personaContainer_4ebdd9aa:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.personaContainer_4ebdd9aa:hover{background:#eaeaea}.personaContainer_4ebdd9aa.personaContainerIsSelected_4ebdd9aa{background:#d0d0d0}.personaContainer_4ebdd9aa.personaContainerIsSelected_4ebdd9aa:hover{background:#dadada}.personaContainer_4ebdd9aa .itemContent_4ebdd9aa{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0;max-width:100%;overflow-x:hidden}.personaContainer_4ebdd9aa .removeButton_4ebdd9aa{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-preferred-size:32px;flex-basis:32px;height:100%}.personaContainer_4ebdd9aa .personaDetails_4ebdd9aa{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.itemContainer_4ebdd9aa{display:inline-block;vertical-align:top}--><!--.resultContent_f9d9df29{display:table-row}.resultContent_f9d9df29 .resultItem_f9d9df29{display:table-cell;vertical-align:bottom}.peoplePickerPersona_f9d9df29{width:180px}.peoplePickerPersona_f9d9df29 .ms-Persona-details{width:100%}.peoplePicker_f9d9df29 .ms-BasePicker-text{min-height:40px}--><!--.root_c90a8776{-ms-flex-negative:1;flex-shrink:1;background:#f4f4f4;margin:1px;height:26px;line-height:26px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;min-width:100px;max-width:100%}.root_c90a8776::-moz-focus-inner{border:0}.root_c90a8776{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_c90a8776:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.root_c90a8776:hover{background:#eaeaea}.root_c90a8776.isSelected_c90a8776{background:#d0d0d0}.root_c90a8776.isSelected_c90a8776:hover{background:#dadada}.tagItemText_c90a8776{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:100px;margin:0 8px}.tagItemClose_c90a8776{cursor:pointer;color:#666666;font-size:12px;display:inline-block;text-align:center;vertical-align:top;width:30px;height:100%;-ms-flex-negative:0;flex-shrink:0}.tagItemTextOverflow_c90a8776{overflow:hidden;text-overflow:ellipsis;max-width:60vw}--><!--.root_57c1f354{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0;padding:0;box-shadow:none;font-size:14px;font-weight:400;position:relative;color:#0078d7;white-space:nowrap}.links_57c1f354{font-size:0;height:40px;list-style-type:none;padding:0;white-space:nowrap}.root_57c1f354 .link_57c1f354{color:#333333;display:inline-block;font-size:14px;font-weight:400;line-height:40px;padding:0 8px;text-align:center;position:relative;background-color:transparent;border:0}html[dir=ltr] .root_57c1f354 .link_57c1f354{margin-right:8px}html[dir=rtl] .root_57c1f354 .link_57c1f354{margin-left:8px}.root_57c1f354 .link_57c1f354:hover{cursor:pointer}.root_57c1f354 .link_57c1f354:focus{outline:0}.root_57c1f354 .link_57c1f354::before{background-color:transparent;bottom:0;content:'';height:2px;left:8px;position:absolute;right:8px;transition:background-color 267ms cubic-bezier(.1,.25,.75,.9)}.root_57c1f354 .link_57c1f354::after{color:transparent;content:attr(title);display:block;font-weight:700;height:1px;overflow:hidden;visibility:hidden}.root_57c1f354 .link_57c1f354 .count_57c1f354,.root_57c1f354 .link_57c1f354 .text_57c1f354{display:inline-block;vertical-align:top}html[dir=ltr] .root_57c1f354 .link_57c1f354 .icon_57c1f354+.text_57c1f354{margin-left:4px}html[dir=rtl] .root_57c1f354 .link_57c1f354 .icon_57c1f354+.text_57c1f354{margin-right:4px}html[dir=ltr] .root_57c1f354 .link_57c1f354 .count_57c1f354{margin-left:4px}html[dir=rtl] .root_57c1f354 .link_57c1f354 .count_57c1f354{margin-right:4px}.root_57c1f354 .link_57c1f354.linkIsSelected_57c1f354{font-weight:600}.root_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{background-color:#0078d7}@media screen and (-ms-high-contrast:active){.root_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{background-color:transparent;border-bottom:2px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{background-color:transparent;border-bottom:2px solid #000000}}.root_57c1f354 .link_57c1f354.linkIsDisabled_57c1f354{color:#a6a6a6}.ms-Fabric.is-focusVisible .link_57c1f354:focus{outline:1px solid #767676}.link_57c1f354.linkIsOverflow_57c1f354{color:#666666}.link_57c1f354.linkIsOverflow_57c1f354.linkIsSelected_57c1f354{color:#0078d7}.link_57c1f354.linkIsOverflow_57c1f354:focus:not(.linkIsSelected_57c1f354),.link_57c1f354.linkIsOverflow_57c1f354:hover:not(.linkIsSelected_57c1f354){color:#212121}.link_57c1f354.linkIsOverflow_57c1f354:active{color:#0078d7}.ellipsis_57c1f354{font-size:15px;position:relative;top:0}.root_57c1f354.rootIsLarge_57c1f354 .link_57c1f354{font-size:17px}.root_57c1f354.rootIsLarge_57c1f354 .link_57c1f354.linkIsOverflow_57c1f354::after{font-size:17px}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354{height:40px;line-height:40px;background-color:#f4f4f4;padding:0 10px;vertical-align:top}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354::-moz-focus-inner{border:0}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354{margin-right:0}html[dir=rtl] .root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354{margin-left:0}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:focus:not(.linkIsSelected_57c1f354):not(.linkIsOverflow_57c1f354),.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:hover:not(.linkIsSelected_57c1f354):not(.linkIsOverflow_57c1f354){color:#000000}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:active{color:#ffffff;background-color:#0078d7}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354{background-color:#0078d7;color:#ffffff;font-weight:300}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{background-color:transparent;transition:none;position:absolute;top:0;left:0;right:0;bottom:0;content:'';height:auto}@media screen and (-ms-high-contrast:active){.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{border:1px solid #000000}}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsOverflow_57c1f354:focus:not(.linkIsSelected_57c1f354),.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsOverflow_57c1f354:hover:not(.linkIsSelected_57c1f354){background-color:#ffffff}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsOverflow_57c1f354:active{background-color:#0078d7}.ms-Fabric.is-focusVisible .root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:focus:before{height:auto;background:0 0;transition:none}@media screen and (-ms-high-contrast:active){.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354{font-weight:600}}--><!--.root_57da241f{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-weight:400}.itemName_57da241f{color:#333333;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding-top:4px;line-height:20px}.itemDescription_57da241f{color:#767676;font-size:11px;line-height:18px}.itemProgress_57da241f{position:relative;height:2px;padding:8px 0}.progressTrack_57da241f{position:absolute;width:100%;height:2px;background-color:#eaeaea;outline:1px solid transparent}.progressBar_57da241f{background-color:#0078d7;height:2px;position:absolute;transition:width .3s ease;width:0}@media screen and (-ms-high-contrast:active){.progressBar_57da241f{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.progressBar_57da241f{background-color:#000000}}.smoothTransition_57da241f{transition-property:width;transition-timing-function:linear;transition-duration:150ms}--><!--.input_ef7d3b07{position:absolute;opacity:0;top:0}.container_ef7d3b07{position:relative;display:inline-block}.container_ef7d3b07:hover .star_ef7d3b07:not(.starIsDisabled_ef7d3b07){color:#000000}.container_ef7d3b07:hover .star_ef7d3b07:not(.starIsDisabled_ef7d3b07).star_ef7d3b07:hover{color:#106ebe}.container_ef7d3b07:hover .star_ef7d3b07:not(.starIsDisabled_ef7d3b07).star_ef7d3b07:hover~.star_ef7d3b07{color:#a6a6a6}.container_ef7d3b07 .star_ef7d3b07{display:inline-block;text-align:center;color:#a6a6a6}.container_ef7d3b07 .star_ef7d3b07.starIsSelected_ef7d3b07{color:#000000}.container_ef7d3b07 .star_ef7d3b07.starIsDisabled_ef7d3b07{color:#c8c8c8}.container_ef7d3b07 .star_ef7d3b07.starIsDisabled_ef7d3b07 .label_ef7d3b07{cursor:default}.container_ef7d3b07 .star_ef7d3b07 .label_ef7d3b07{display:inline-block;cursor:pointer;font-size:16px;padding:12px 0;border:1px solid transparent}.rootIsLarge_ef7d3b07 .container_ef7d3b07 .label_ef7d3b07{font-size:20px;padding:6px 2px 9px 2px}.labelText_ef7d3b07{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.ms-Fabric.is-focusVisible .starIsInFocus_ef7d3b07 .label_ef7d3b07{border:1px solid #666666}--><!--.root_2f85df04{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;box-sizing:border-box;margin:0;padding:0;box-shadow:none;color:#333333;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin-bottom:10px;padding:0 0 0 8px;border:1px solid #71afe5;height:32px}html[dir=rtl] .root_2f85df04{padding:0 8px 0 0}@media screen and (-ms-high-contrast:active){.root_2f85df04{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_2f85df04{border:1px solid #000000}}.iconContainer_2f85df04{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;color:#767676;font-size:16px;width:32px;text-align:center;transition:width 167ms;color:#0078d7}.icon_2f85df04{opacity:1;transition:opacity 167ms 0s}.field_2f85df04{box-sizing:border-box;margin:0;padding:0;box-shadow:none;border:none;outline:0;font-weight:inherit;font-family:inherit;font-size:inherit;color:#000000;background-color:transparent;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px;overflow:hidden;text-overflow:ellipsis;padding-bottom:.5px}.field_2f85df04::-ms-clear{display:none}.clearButton_2f85df04{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:none;cursor:pointer;text-align:center;font-size:12px;-ms-flex-preferred-size:32px;flex-basis:32px;-ms-flex-negative:0;flex-shrink:0;color:#0078d7}.root_2f85df04:hover{border-color:#004578}.root_2f85df04:hover .label_2f85df04{color:#000000}.root_2f85df04:hover .label_2f85df04 .iconContainer_2f85df04{color:#004578}.rootIsActive_2f85df04{border-color:#004578}.rootIsActive_2f85df04 .iconContainer_2f85df04{width:4px;transition:width 167ms}.rootIsActive_2f85df04 .icon_2f85df04{opacity:0;opacity:0 0s 167ms}.rootIsDisabled_2f85df04{border-color:#f4f4f4}.rootIsDisabled_2f85df04 .iconContainer_2f85df04{color:#c8c8c8}.rootIsDisabled_2f85df04 .field_2f85df04{background-color:#f4f4f4;pointer-events:none;cursor:default}.rootCanClear_2f85df04 .clearButton_2f85df04{display:-webkit-box;display:-ms-flexbox;display:flex}--><!--.root_4cb163ab{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:8px}.titleLabel_4cb163ab{padding:0}.line_4cb163ab{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;width:100%}.line_4cb163ab span{height:4px;border-radius:4px;box-sizing:border-box}.activeSection_4cb163ab{background:#666666}@media screen and (-ms-high-contrast:active){.activeSection_4cb163ab{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.activeSection_4cb163ab{background-color:#000000}}.inactiveSection_4cb163ab{background:#c8c8c8}@media screen and (-ms-high-contrast:active){.inactiveSection_4cb163ab{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.inactiveSection_4cb163ab{border:1px solid #000000}}.showTransitions_4cb163ab .thumb_4cb163ab{transition:left 367ms cubic-bezier(.1,.9,.2,1)}.showTransitions_4cb163ab .activeSection_4cb163ab,.showTransitions_4cb163ab .inactiveSection_4cb163ab{transition:width 367ms cubic-bezier(.1,.9,.2,1)}.slideBox_4cb163ab{background:0 0;border:none;padding:0;margin:0}.slideBox_4cb163ab .thumb_4cb163ab{border:2px solid #666666;box-sizing:border-box;background:#ffffff;display:block;width:16px;height:16px;position:absolute;top:-6px;border-radius:10px}html[dir=ltr] .slideBox_4cb163ab .thumb_4cb163ab{-webkit-transform:translateX(-50%);transform:translateX(-50%)}html[dir=rtl] .slideBox_4cb163ab .thumb_4cb163ab{-webkit-transform:translateX(50%);transform:translateX(50%)}.container_4cb163ab{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.slideBox_4cb163ab{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;height:28px;line-height:28px;padding:0 8px}.slideBox_4cb163ab::-moz-focus-inner{border:0}.slideBox_4cb163ab{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .slideBox_4cb163ab:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.valueLabel_4cb163ab{-ms-flex-negative:1;flex-shrink:1;width:30px;margin:0 8px;line-height:1}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .thumb_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .thumb_4cb163ab{border:2px solid #0078d7}@media screen and (-ms-high-contrast:active){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .thumb_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .thumb_4cb163ab{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .thumb_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .thumb_4cb163ab{border-color:#37006e}}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .activeSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .activeSection_4cb163ab{background-color:#0078d7}@media screen and (-ms-high-contrast:active){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .activeSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .activeSection_4cb163ab{background-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .activeSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .activeSection_4cb163ab{background-color:#37006e}}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .inactiveSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .inactiveSection_4cb163ab{background-color:#c7e0f4}@media screen and (-ms-high-contrast:active){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .inactiveSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .inactiveSection_4cb163ab{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .inactiveSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .inactiveSection_4cb163ab{border-color:#37006e}}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .thumb_4cb163ab{border:2px solid #106ebe}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .activeSection_4cb163ab{background-color:#106ebe}.rootIsDisabled_4cb163ab .thumb_4cb163ab{border-color:#c8c8c8}@media screen and (-ms-high-contrast:active){.rootIsDisabled_4cb163ab .thumb_4cb163ab{border-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.rootIsDisabled_4cb163ab .thumb_4cb163ab{border-color:#600000}}@media screen and (-ms-high-contrast:active){.rootIsDisabled_4cb163ab .activeSection_4cb163ab,.rootIsDisabled_4cb163ab .inactiveSection_4cb163ab{background-color:#0f0;border-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.rootIsDisabled_4cb163ab .activeSection_4cb163ab,.rootIsDisabled_4cb163ab .inactiveSection_4cb163ab{background-color:#600000;border-color:#600000}}.rootIsDisabled_4cb163ab .activeSection_4cb163ab{background:#c8c8c8}.rootIsDisabled_4cb163ab .inactiveSection_4cb163ab{background:#eaeaea}--><!--.root_2ee7cd8d{display:block;max-width:364px}.bodyContent_2ee7cd8d{padding:20px}.headerIsLarge_2ee7cd8d:not(:last-child){margin-bottom:14px}.headline_2ee7cd8d{margin:0;color:#ffffff}.headerIsLarge_2ee7cd8d .headline_2ee7cd8d{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:28px;font-weight:100;font-weight:100}.headerIsSmall_2ee7cd8d .headline_2ee7cd8d{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;font-weight:600}html[dir=ltr] .headerIsSmall_2ee7cd8d .headline_2ee7cd8d{margin-right:10px}html[dir=rtl] .headerIsSmall_2ee7cd8d .headline_2ee7cd8d{margin-left:10px}.body_2ee7cd8d:not(:last-child){margin-bottom:20px}.subText_2ee7cd8d{margin:0;font-size:14px;color:#ffffff;font-weight:300}.root_2ee7cd8d .closeButton_2ee7cd8d{position:absolute;top:0;color:#ffffff;font-size:12px}html[dir=ltr] .root_2ee7cd8d .closeButton_2ee7cd8d{right:0}html[dir=rtl] .root_2ee7cd8d .closeButton_2ee7cd8d{left:0}html[dir=ltr] .footer_2ee7cd8d .ms-Button:not(:first-child){margin-left:20px}html[dir=rtl] .footer_2ee7cd8d .ms-Button:not(:first-child){margin-right:20px}.root_2ee7cd8d .ms-Callout-beak,.root_2ee7cd8d .ms-Callout-main,.root_2ee7cd8d .ms-Callout-smallbeak{background:#0078d7}.root_2ee7cd8d .primaryButton_2ee7cd8d{background-color:#ffffff;border-color:#ffffff}.root_2ee7cd8d .primaryButton_2ee7cd8d .ms-Button-label{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#0078d7}.root_2ee7cd8d .primaryButton_2ee7cd8d:hover{background-color:#deecf9;border-color:#deecf9}.root_2ee7cd8d .primaryButton_2ee7cd8d:focus{background-color:#deecf9;border-color:#ffffff}.root_2ee7cd8d .primaryButton_2ee7cd8d:active{background-color:#ffffff;border-color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d{background-color:#0078d7;border-color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d .ms-Button-label{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d:hover{background-color:#106ebe;border-color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d:focus{background-color:#106ebe;border-color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d:active{background-color:#0078d7;border-color:#ffffff}--><!--.root_f151e544{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0;padding:0;box-shadow:none;position:relative;display:block;margin-bottom:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.isEnabled_f151e544 .invisibleToggle_f151e544{cursor:pointer}.isEnabled_f151e544 .background_f151e544{background:#ffffff;border:1px solid #767676}.isEnabled_f151e544 .thumb_f151e544{background:#767676}@media screen and (-ms-high-contrast:active){.isEnabled_f151e544 .thumb_f151e544{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.isEnabled_f151e544 .thumb_f151e544{background-color:#000000}}.isEnabled_f151e544 .slider_f151e544:hover .background_f151e544{border:1px solid #000000}.isEnabled_f151e544 .slider_f151e544:hover .thumb_f151e544{background:#000000}.isEnabled_f151e544.isChecked_f151e544 .background_f151e544{background:#0078d7;border:1px solid transparent}@media screen and (-ms-high-contrast:active){.isEnabled_f151e544.isChecked_f151e544 .background_f151e544{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.isEnabled_f151e544.isChecked_f151e544 .background_f151e544{background-color:#000000}}.isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{background:#ffffff}html[dir=ltr] .isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{left:28px}html[dir=rtl] .isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{right:28px}@media screen and (-ms-high-contrast:active){.isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{background-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{background-color:#ffffff}}.isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .background_f151e544{border:1px solid #0078d7;background:#2b88d8}.isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{background:#ffffff}html[dir=ltr] .isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{left:28px}html[dir=rtl] .isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{right:28px}@media screen and (-ms-high-contrast:active){.isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{background-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{background-color:#ffffff}}.isDisabled_f151e544 .thumb_f151e544{background:#c8c8c8}@media screen and (-ms-high-contrast:active){.isDisabled_f151e544 .thumb_f151e544{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.isDisabled_f151e544 .thumb_f151e544{background-color:#600000}}.isDisabled_f151e544 .background_f151e544{background:#ffffff;border:1px solid #c8c8c8}@media screen and (-ms-high-contrast:active){.isDisabled_f151e544 .background_f151e544{border-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.isDisabled_f151e544 .background_f151e544{border-color:#600000}}.isDisabled_f151e544.isChecked_f151e544 .background_f151e544{background:#c8c8c8;border:1px solid transparent}@media screen and (-ms-high-contrast:active){.isDisabled_f151e544.isChecked_f151e544 .background_f151e544{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.isDisabled_f151e544.isChecked_f151e544 .background_f151e544{background-color:#600000}}.isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{background:#f4f4f4}html[dir=ltr] .isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{left:28px}html[dir=rtl] .isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{right:28px}@media screen and (-ms-high-contrast:active){.isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{background-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{background-color:#ffffff}}.innerContainer_f151e544{display:inline-block;min-width:45px}.ms-Fabric.is-focusVisible .root_f151e544.isEnabled_f151e544 .invisibleToggle_f151e544:focus+.background_f151e544 .focus_f151e544{border:1px solid #000000}.invisibleToggle_f151e544{position:absolute;opacity:0;left:0;top:0;width:100%;height:100%;margin:0;padding:0}.slider_f151e544{position:relative;min-height:20px}.background_f151e544{display:inline-block;position:absolute;width:44px;height:20px;box-sizing:border-box;vertical-align:middle;border-radius:20px;cursor:pointer;transition:all .1s ease;pointer-events:none}.thumb_f151e544{position:absolute;width:10px;height:10px;border-radius:10px;top:4px;transition:all .1s ease}html[dir=ltr] .thumb_f151e544{left:4px}html[dir=rtl] .thumb_f151e544{right:4px}.stateText_f151e544{display:inline-block;vertical-align:top;line-height:20px;padding:0}html[dir=ltr] .stateText_f151e544{margin-left:54px}html[dir=rtl] .stateText_f151e544{margin-right:54px}.focus_f151e544{position:absolute;left:-3px;top:-3px;right:-3px;bottom:-3px;box-sizing:border-box;outline:transparent}--><!--.root_d110f881{max-width:364px;background:#ffffff;padding:8px;pointer-events:none}.root_d110f881.hasMediumDelay_d110f881{-webkit-animation-delay:.3s;animation-delay:.3s}.content_d110f881{font-size:12px;color:#333333;word-wrap:break-word;overflow-wrap:break-word}.subText_d110f881{margin:0}--><!--.host_df8e5554{display:inline}--><!--.qjbZdNS-BeDNFcx5IWgt{display:inline-block}.qjbZdNS-BeDNFcx5IWgt button,.qjbZdNS-BeDNFcx5IWgt button:focus{color:#767676;width:70px;height:30px;font-size:12px;font-weight:300}html[dir] .qjbZdNS-BeDNFcx5IWgt button,html[dir] .qjbZdNS-BeDNFcx5IWgt button:focus{padding:4px 10px 6px;border:none;background-color:#fff}html[dir=ltr] .qjbZdNS-BeDNFcx5IWgt button,html[dir=ltr] .qjbZdNS-BeDNFcx5IWgt button:focus{text-align:left}html[dir=rtl] .qjbZdNS-BeDNFcx5IWgt button,html[dir=rtl] .qjbZdNS-BeDNFcx5IWgt button:focus{text-align:right}.qjbZdNS-BeDNFcx5IWgt button:active,.qjbZdNS-BeDNFcx5IWgt button:hover{color:#212121}html[dir] .qjbZdNS-BeDNFcx5IWgt button:hover{background-color:#fff}.qjbZdNS-BeDNFcx5IWgt button:disabled{color:#a6a6a6}html[dir] .qjbZdNS-BeDNFcx5IWgt button:disabled{border-color:#fff;background-color:#fff}.qjbZdNS-BeDNFcx5IWgt button span{font-weight:400;font-size:16px}html[dir] .qjbZdNS-BeDNFcx5IWgt button span{padding:0 7px}.qjbZdNS-BeDNFcx5IWgt button:disabled .ms-Icon--chevronDown{color:#a6a6a6}.qjbZdNS-BeDNFcx5IWgt button .ms-Button-label{font-size:12px}._1uSKA9DzFXl4J0_Tjc1MXP{z-index:1901}html[dir] ._1uSKA9DzFXl4J0_Tjc1MXP{box-shadow:0 0 7px rgba(0,0,0,.4)}._1uSKA9DzFXl4J0_Tjc1MXP>div{overflow:inherit}._3MbVb_n8GM-qhdnP2oQ9w-{height:auto;width:280px;font-size:12px}._35oA_09s2dnUde7IiZc9d8{max-height:180px;overflow-y:auto;overflow-x:hidden;display:block}html[dir] ._2AFChQXDDqm0FXiq_h5yKf{padding-bottom:9px}._1ooEZoznLqTL7gYkkUG3WT{width:100%}html[dir] ._1ooEZoznLqTL7gYkkUG3WT{border-collapse:collapse}.pGOsO7qTTcjUalYemhBH_{line-height:30px;font-size:14px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}html[dir] .pGOsO7qTTcjUalYemhBH_{background-color:#f4f4f4;padding:6px 26px 8px;margin-bottom:9px}html[dir=ltr] .pGOsO7qTTcjUalYemhBH_{margin-left:10px}html[dir=rtl] .pGOsO7qTTcjUalYemhBH_{margin-right:10px}html[dir=ltr] ._103wA56dWR_VMTQGiGvwvX{margin-left:22px}html[dir=rtl] ._103wA56dWR_VMTQGiGvwvX{margin-right:22px}html[dir] .pGOsO7qTTcjUalYemhBH_:hover{background-color:#eaeaea}._3W6WuHPSz5FLMJWALHuJHz{font-family:Segoe UI Semibold,Segoe UI,Tahoma,Geneva,Verdana,sans-serif}._3fboll9VxYlXRyDK4ZO0JA{position:relative}html[dir=ltr] ._3fboll9VxYlXRyDK4ZO0JA{margin-left:10px}html[dir=rtl] ._3fboll9VxYlXRyDK4ZO0JA{margin-right:10px}._3FfmQ5tDQaeZYYKw-InuWM{position:absolute;top:36px;width:263px;z-index:1901}html[dir] ._3FfmQ5tDQaeZYYKw-InuWM{background:#fff;border:1px solid #eaeaea}html[dir=ltr] ._3FfmQ5tDQaeZYYKw-InuWM{box-shadow:1px 1px 7px rgba(0,0,0,.4)}html[dir=rtl] ._3FfmQ5tDQaeZYYKw-InuWM{box-shadow:-1px 1px 7px rgba(0,0,0,.4)}._3FfmQ5tDQaeZYYKw-InuWM ._2wCM7vY0mKNq8HvZYZww3R{width:193px}html[dir=ltr] ._3FfmQ5tDQaeZYYKw-InuWM ._2wCM7vY0mKNq8HvZYZww3R{padding-left:9px}html[dir=rtl] ._3FfmQ5tDQaeZYYKw-InuWM ._2wCM7vY0mKNq8HvZYZww3R{padding-right:9px}.DZNhSfi-rz9iyw0MNy_hG{height:28px}html[dir] .DZNhSfi-rz9iyw0MNy_hG{padding:0 3px}._10r6V_QECrej5MH2y537Fw{font-weight:700}._2wCM7vY0mKNq8HvZYZww3R{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px}html[dir] ._3qCJFJVQBxvO1EWWAPdCWn{padding:0 10px}html[dir=ltr] ._3qCJFJVQBxvO1EWWAPdCWn{text-align:right}html[dir=rtl] ._3qCJFJVQBxvO1EWWAPdCWn{text-align:left}html[dir=ltr] ._3GuidKSk6lFFWcrn9s_Dek{margin:10px 6px 15px 0}html[dir=rtl] ._3GuidKSk6lFFWcrn9s_Dek{margin:10px 0 15px 6px}.kjuxTS2OLJactWVWThvS3{font-size:11px}html[dir] .kjuxTS2OLJactWVWThvS3{padding:0 3px}._2AFChQXDDqm0FXiq_h5yKf hr{color:#eaeaea}html[dir] ._2AFChQXDDqm0FXiq_h5yKf hr{background-color:#eaeaea;border-color:#eaeaea;border-bottom-width:0;border-style:solid;margin-bottom:5px}._3MbVb_n8GM-qhdnP2oQ9w-{cursor:default}html[dir=ltr] ._3MbVb_n8GM-qhdnP2oQ9w-{text-align:left}html[dir=rtl] ._3MbVb_n8GM-qhdnP2oQ9w-{text-align:right}html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button,html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button:active,html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button:focus,html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button:hover,html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button:visited,html[dir] .qjbZdNS-BeDNFcx5IWgt,html[dir] .qjbZdNS-BeDNFcx5IWgt.ms-Button:disabled{background-color:transparent;border-color:transparent}._3MbVb_n8GM-qhdnP2oQ9w-:active>.ms-Button-label,._3MbVb_n8GM-qhdnP2oQ9w->.ms-Button-label{font-family:Segoe UI Semilight,Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-weight:400;color:#000}.ms-SearchBox-closebutton{color:#fff}--><!--.RaaSll0e3hOeJTHMQLySs{position:relative;width:230px;height:280px;overflow:hidden}html[dir] .RaaSll0e3hOeJTHMQLySs{margin:20px;border:1px solid #eaeaea}._3GHjI_hOL8hL6kUeNl4og8{position:absolute!important;top:0;z-index:2002;width:50px;height:20px}html[dir=ltr] ._3GHjI_hOL8hL6kUeNl4og8{right:0}html[dir=rtl] ._3GHjI_hOL8hL6kUeNl4og8{left:0}._1M8uGZLuwOOhHtEaKE5brI{min-width:10px;color:#666}html[dir] ._1M8uGZLuwOOhHtEaKE5brI{background-color:transparent;padding:10px}html[dir] ._2iZiJ52p5Ibp1tcMXn-Zto{padding-top:15px;padding-bottom:15px;border-bottom-style:solid;border-width:1px;border-color:#eaeaea}html[dir=ltr] ._2iZiJ52p5Ibp1tcMXn-Zto{padding-left:20px}html[dir=rtl] ._2iZiJ52p5Ibp1tcMXn-Zto{padding-right:20px}._7_xBLMLcwKO1qUMSEeAjO{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400}html[dir] ._7_xBLMLcwKO1qUMSEeAjO{border-bottom-style:solid;border-width:1px;padding:15px 20px;margin-bottom:15px;border-color:#eaeaea}html[dir=ltr] ._7_xBLMLcwKO1qUMSEeAjO{text-align:left}html[dir=rtl] ._7_xBLMLcwKO1qUMSEeAjO{text-align:right}._3R_akt1uzq0BBGENj8ZYSp{height:60px;width:100%;color:#0078d7;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400}html[dir] ._3R_akt1uzq0BBGENj8ZYSp{margin-top:10px;margin-bottom:15px}html[dir] .GmaGb-7fO-IiegLSxw4g_{padding-top:10px}._2eR3ihGy4eNTaeC9BvL7tN{width:60px;height:25px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;font-weight:600;color:#0078d7}html[dir] ._2eR3ihGy4eNTaeC9BvL7tN{background-color:#fff;border-radius:3px;border:1px solid;margin-top:15px}._18vUGRlxQiO38TP5BpVXQ7{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#a6a6a6}html[dir] ._18vUGRlxQiO38TP5BpVXQ7{margin:12px}._32fZkTb40RHcjM7Tyv-469{height:45px}html[dir] ._32fZkTb40RHcjM7Tyv-469{border-bottom-style:solid;border-width:1px;margin-top:12px;border-color:#eaeaea}.YzChVSQnspHQ4EtzHpEZP{overflow:hidden;height:30px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400}html[dir] .YzChVSQnspHQ4EtzHpEZP{margin:0 20px}html[dir=ltr] .YzChVSQnspHQ4EtzHpEZP{text-align:left}html[dir=rtl] .YzChVSQnspHQ4EtzHpEZP{text-align:right}._3rDCTWOrNEIO9kgau9D2cU{text-overflow:ellipsis;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:11px;font-weight:400;color:#a6a6a6}html[dir] ._3rDCTWOrNEIO9kgau9D2cU{padding:5px 20px}html[dir=ltr] ._3rDCTWOrNEIO9kgau9D2cU{text-align:left}html[dir=rtl] ._3rDCTWOrNEIO9kgau9D2cU{text-align:right}._2a_HGDwOzuGq8FnXAaBCZH{text-overflow:ellipsis;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400}html[dir] ._2a_HGDwOzuGq8FnXAaBCZH{padding:5px 20px}html[dir=ltr] ._2a_HGDwOzuGq8FnXAaBCZH{text-align:left}html[dir=rtl] ._2a_HGDwOzuGq8FnXAaBCZH{text-align:right}--><!--.W3Gro7btK0K_9bZvMv84a{-webkit-overflow-scrolling:touch;overflow-x:hidden;width:100%}html[dir] .W3Gro7btK0K_9bZvMv84a{padding:20px 0;background-color:#fff}.zH5sUqTasM8eTJ-iaKvwR{overflow-y:hidden}.GlZYfgS9Ysv-hF4iWLmSc{overflow-y:auto}.QdYlTiUbLVk_dHvixK3oM{min-width:200px}html[dir] .QdYlTiUbLVk_dHvixK3oM{background-color:#fff}html[dir=ltr] .QdYlTiUbLVk_dHvixK3oM{float:right}html[dir=rtl] .QdYlTiUbLVk_dHvixK3oM{float:left}._3XMWGsbV7jx2tpFHZpy7Jk{cursor:pointer;min-width:200px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}html[dir] ._3XMWGsbV7jx2tpFHZpy7Jk{border:none;background-color:#fff}html[dir=ltr] ._3XMWGsbV7jx2tpFHZpy7Jk{float:right}html[dir=rtl] ._3XMWGsbV7jx2tpFHZpy7Jk{float:left}._2PMRU_Au00dO_7tHXEveG6{min-height:200px}._31xsuGWhNOZ7Pp10XgZP6y{width:100%;height:50px}html[dir] ._31xsuGWhNOZ7Pp10XgZP6y{margin-top:20px}._2VlOBiCHIlYRRQAsESYOKu{display:inline;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100}.OLdwCXIpAJqNhNuJ4uBNl{outline:0;position:relative}html[dir] .OLdwCXIpAJqNhNuJ4uBNl{text-align:center}html[dir=ltr] .OLdwCXIpAJqNhNuJ4uBNl{float:left}html[dir=rtl] .OLdwCXIpAJqNhNuJ4uBNl{float:right}._3OTYAocki1mEQVDeQQRY1p{position:absolute;top:2px;bottom:2px}html[dir=ltr] ._3OTYAocki1mEQVDeQQRY1p,html[dir=rtl] ._3OTYAocki1mEQVDeQQRY1p{left:2px;right:2px}._2sG2jXov6lUoWvSbPtecBH{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}html[dir] ._2sG2jXov6lUoWvSbPtecBH{text-align:center;margin-top:80px}._2VO5zUV9DLu7cL8SYVA1nb{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}.J5cKa2vglCmxsd03ZkLc2 ._1HnH_mcUPRL6S1ME-zEp-B{position:relative}._3PoHNweRptVJZ4TajQou8a{width:100%;height:30px}.uRi831CfzTLN2cIrXlM3S{cursor:pointer;min-width:200px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}html[dir] .uRi831CfzTLN2cIrXlM3S{border:none;background-color:#fff}html[dir=ltr] .uRi831CfzTLN2cIrXlM3S{float:right}html[dir=rtl] .uRi831CfzTLN2cIrXlM3S{float:left}._2NsHR0ypfZd7_tGNJJwwPM{width:100px;height:30px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#69afe5;font-weight:600}html[dir] ._2NsHR0ypfZd7_tGNJJwwPM{margin:10px;background-color:#fff;border-radius:4px;border:1px solid;border-color:#69afe5}--><!--._2YY-l3IQnlpjOujWG8-7mm{width:90%;min-height:200px}html[dir] ._2YY-l3IQnlpjOujWG8-7mm{margin:auto;padding-top:40px}._3R7bBEgB4fVxmrsEsI3oIq{max-width:200px}html[dir] ._3R7bBEgB4fVxmrsEsI3oIq{margin-top:20px}._2mGF-a2EePyWNwgs_jDlbY{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}html[dir] ._2mGF-a2EePyWNwgs_jDlbY{margin-top:50px}--><!--html[dir] ._241o7hpuGyRa6Pkrc8dy3w{margin-bottom:10px}._3dH-qFs992B7oRQncGYfo5{width:100%;height:66px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:42px;font-weight:100;color:#0078d7}html[dir] ._3dH-qFs992B7oRQncGYfo5{text-align:center}._3tE7GqX-k4AblGzqGqfh72{width:100%}._39GZsvibnu6oE3djDseEDW{position:relative;overflow-y:auto;width:100%}._3tE7GqX-k4AblGzqGqfh72 ul{height:45px}html[dir] ._3tE7GqX-k4AblGzqGqfh72 ul{text-align:center}._3tE7GqX-k4AblGzqGqfh72 ul button{width:100px}._3tE7GqX-k4AblGzqGqfh72 ul button span{width:100%}--><!--._1ADkIfYVZS2bQUXWpjyCfY{bottom:0;height:40px;position:relative;top:0;width:340px;z-index:1;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] ._1ADkIfYVZS2bQUXWpjyCfY{background-position:50% 50%;background:#eaeaea none no-repeat scroll 50% 50%/cover padding-box border-box}html[dir=ltr] ._1ADkIfYVZS2bQUXWpjyCfY{left:0;right:0;text-align:left}html[dir=rtl] ._1ADkIfYVZS2bQUXWpjyCfY{right:0;left:0;text-align:right}._2QoS7z2xsdxUJKQ4EilidV{bottom:-33.5px;display:block;height:73.5px;position:absolute;top:0;width:340px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir=ltr] ._2QoS7z2xsdxUJKQ4EilidV{left:0;right:0;text-align:left}html[dir=rtl] ._2QoS7z2xsdxUJKQ4EilidV{right:0;left:0;text-align:right}._2I74SlNmAGvrr-0PW3VcC_{bottom:450px;height:100px;position:absolute;top:12px;width:100px;z-index:4;perspective-origin:56px 56px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir] ._2I74SlNmAGvrr-0PW3VcC_{transform:matrix(.5,0,0,.5,0,0);transform-origin:112px 0;border:6px solid #fff;border-radius:50% 50% 50% 50%}html[dir=ltr] ._2I74SlNmAGvrr-0PW3VcC_{left:212px;right:16px;text-align:left;background:#eaeaea none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._2I74SlNmAGvrr-0PW3VcC_{right:212px;left:16px;text-align:right;background:#eaeaea none repeat scroll 100% 0/auto padding-box border-box}.ebfvOHpTX0LUiW1glKMh6{bottom:0;height:82px;position:relative;top:0;width:300px;z-index:0;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] .ebfvOHpTX0LUiW1glKMh6{border-bottom:1px solid rgba(0,0,0,.14902)}html[dir=ltr] .ebfvOHpTX0LUiW1glKMh6{left:0;right:0;text-align:left;background:#fff none repeat scroll 0 0/auto padding-box border-box;padding:8px 16px 16px 24px}html[dir=rtl] .ebfvOHpTX0LUiW1glKMh6{right:0;left:0;text-align:right;background:#fff none repeat scroll 100% 0/auto padding-box border-box;padding:8px 24px 16px 16px}._3EpjI431BnmL0PGNx07-5j{color:#333;height:31px;max-width:250px;text-overflow:ellipsis;white-space:nowrap;width:250px;column-rule-color:#333;font:normal normal normal normal 21px/31.5px Segoe UI Semilight WestEuropean,Segoe UI Semilight,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333;overflow:hidden}html[dir] ._3EpjI431BnmL0PGNx07-5j{border:0 none #333}html[dir=ltr] ._3EpjI431BnmL0PGNx07-5j{text-align:left}html[dir=rtl] ._3EpjI431BnmL0PGNx07-5j{text-align:right}._2Vug3fO3sVVI_SOgqzRMmF{color:#767676;height:19px;text-overflow:ellipsis;white-space:nowrap;width:300px;column-rule-color:#767676;font:normal normal normal normal 12px/18px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #767676;overflow:hidden}html[dir] ._2Vug3fO3sVVI_SOgqzRMmF{border:0 none #767676}html[dir=ltr] ._2Vug3fO3sVVI_SOgqzRMmF{text-align:left}html[dir=rtl] ._2Vug3fO3sVVI_SOgqzRMmF{text-align:right}._1o4xwaNRRgeAw0PArEX4VI{color:#eaeaea;white-space:nowrap;column-rule-color:#eaeaea;font:normal normal normal normal 15.6px/18px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #eaeaea}html[dir] ._1o4xwaNRRgeAw0PArEX4VI{border:0 none #eaeaea;margin:0 7.8px}html[dir=ltr] ._1o4xwaNRRgeAw0PArEX4VI{text-align:left}html[dir=rtl] ._1o4xwaNRRgeAw0PArEX4VI{text-align:right}._2_0U5WX-EicjeIWfV5k0Mg{color:#094ab2;cursor:pointer;display:block;height:22px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;width:300px;column-rule-color:#094ab2;font:normal normal normal normal 12px/20px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #094ab2;overflow:hidden}html[dir] ._2_0U5WX-EicjeIWfV5k0Mg{border:0 none #094ab2;margin:10px 0 0}html[dir=ltr] ._2_0U5WX-EicjeIWfV5k0Mg{text-align:left}html[dir=rtl] ._2_0U5WX-EicjeIWfV5k0Mg{text-align:right}._1OlJn15Vbm07pmj1S-Nz8a{color:#333;cursor:pointer;vertical-align:middle;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/20px Segoe UI Semibold WestEuropean,Segoe UI Semibold,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._1OlJn15Vbm07pmj1S-Nz8a{border:0 none #333}html[dir=ltr] ._1OlJn15Vbm07pmj1S-Nz8a{text-align:left}html[dir=rtl] ._1OlJn15Vbm07pmj1S-Nz8a{text-align:right}--><!--._3x0MXdpHCF2RZzwTQLUpGE{bottom:0;height:190px;min-height:105px;position:relative;top:0;width:290px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;list-style:none outside none;overflow:hidden}html[dir] ._3x0MXdpHCF2RZzwTQLUpGE{border:1px solid rgba(0,0,0,.14902);margin:0 0 8px;padding:16px}html[dir=ltr] ._3x0MXdpHCF2RZzwTQLUpGE{left:0;right:0;background:#fff none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._3x0MXdpHCF2RZzwTQLUpGE{right:0;left:0;background:#fff none repeat scroll 100% 0/auto padding-box border-box}.OCypFjOIydJqrlLtPYzwR{color:#767676;cursor:pointer;height:20px;width:242px;column-rule-color:#767676;font:normal normal normal normal 15px/normal Segoe UI Light WestEuropean,Segoe UI Light,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #767676}html[dir] .OCypFjOIydJqrlLtPYzwR{text-align:center;border:0 none #767676;margin:0 0 10px;padding:0 24px}._1UNo29gcSFlcXCZ5lO_DK7{color:#333;height:125px;width:290px;column-rule-color:#333;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;list-style:none outside none;outline:0 none #333}html[dir] ._1UNo29gcSFlcXCZ5lO_DK7{border:0 none #333;margin:0;padding:0}html[dir=ltr] ._1UNo29gcSFlcXCZ5lO_DK7{text-align:left}html[dir=rtl] ._1UNo29gcSFlcXCZ5lO_DK7{text-align:right}._3sADx2StTgZjvznJzqYc-k{color:#333;height:25px;width:290px;column-rule-color:#333;font:normal normal normal normal 12px/25px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._3sADx2StTgZjvznJzqYc-k{border:0 none #333}.JC-o1R-Imuyno7Qd3yJHn{color:#333;height:25px;width:290px;column-rule-color:#333;font:normal normal normal normal 12px/25px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] .JC-o1R-Imuyno7Qd3yJHn{border:0 none #333}._10wU23ML08U6AkusphMFpD{bottom:2px;color:#333;cursor:pointer;display:inline-block;height:16px;position:relative;top:-2px;white-space:nowrap;width:16px;column-rule-color:#333;font:normal normal normal normal 12px/25px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._10wU23ML08U6AkusphMFpD{border:0 none #333}html[dir=ltr] ._10wU23ML08U6AkusphMFpD{left:0;right:0;text-align:left;margin:0 4px 0 0}html[dir=rtl] ._10wU23ML08U6AkusphMFpD{right:0;left:0;text-align:right;margin:0 0 0 4px}._2SABWZU5KXNWVC_f8fXxUU{color:#333;cursor:pointer;display:inline-block;height:16px;vertical-align:middle;white-space:nowrap;width:16px;column-rule-color:#333;font:normal normal normal normal 16px/25px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._2SABWZU5KXNWVC_f8fXxUU{border:0 none #333}html[dir=ltr] ._2SABWZU5KXNWVC_f8fXxUU{text-align:left}html[dir=rtl] ._2SABWZU5KXNWVC_f8fXxUU{text-align:right}._2FsnZoHitAsCOUiNzidNjQ{color:#333;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/25px Segoe UI Semibold WestEuropean,Segoe UI Semibold,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333;overflow:hidden}html[dir] ._2FsnZoHitAsCOUiNzidNjQ{border:0 none #333}html[dir=ltr] ._2FsnZoHitAsCOUiNzidNjQ{text-align:left}html[dir=rtl] ._2FsnZoHitAsCOUiNzidNjQ{text-align:right}._11cEuwHkRH9RcM6F7RksJi{color:#333;content:'"\E038"';cursor:pointer;speak:none;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/12px Office365Icons;outline:0 none #333}html[dir] ._11cEuwHkRH9RcM6F7RksJi{border:0 none #333}html[dir=ltr] ._11cEuwHkRH9RcM6F7RksJi{text-align:left}html[dir=rtl] ._11cEuwHkRH9RcM6F7RksJi{text-align:right}html[dir=ltr] ._37fIUonJ8aCq3EpXqfTFJP{float:right}html[dir=rtl] ._37fIUonJ8aCq3EpXqfTFJP{float:left}._1ZIlIn4JBbMFR8Ln22Jken{height:40px;width:290px;font:normal normal normal normal 12px/38px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir] ._1ZIlIn4JBbMFR8Ln22Jken{border-top:1px solid #f4f4f4;margin:10px -10px -16px;padding:0 10px}html[dir=ltr] ._1ZIlIn4JBbMFR8Ln22Jken{text-align:left}html[dir=rtl] ._1ZIlIn4JBbMFR8Ln22Jken{text-align:right}._3uA1VyQztfx2UiHw_q3ypB{color:#0078d7;cursor:pointer;text-decoration:none;column-rule-color:#0078d7;font:normal normal normal normal 12px/38px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #0078d7}html[dir] ._3uA1VyQztfx2UiHw_q3ypB{border:0 none #0078d7}html[dir=ltr] ._3uA1VyQztfx2UiHw_q3ypB{text-align:left}html[dir=rtl] ._3uA1VyQztfx2UiHw_q3ypB{text-align:right}--><!--._1HMiHNN5DTAijMYyQF04qi{bottom:0;color:#fff;cursor:pointer;display:block;height:32px;object-fit:cover;position:absolute;speak:none;top:0;width:32px;column-rule-color:#fff;font:normal normal normal normal 21px/40px Office365Icons;outline:0 none #fff}html[dir] ._1HMiHNN5DTAijMYyQF04qi{text-align:center;border:0 none #fff}html[dir=ltr] ._1HMiHNN5DTAijMYyQF04qi,html[dir=rtl] ._1HMiHNN5DTAijMYyQF04qi{left:0;right:0}._1R76bIsjLumorvhvLBj0R-{color:#767676;cursor:pointer;height:20px;width:242px;column-rule-color:#767676;font:normal normal normal normal 15px/normal Segoe UI Light WestEuropean,Segoe UI Light,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #767676}html[dir] ._1R76bIsjLumorvhvLBj0R-{text-align:center;border:0 none #767676;margin:0 0 10px;padding:0 24px;transition:color .1s ease 0s}._1WZbpgeRh0HpoBNXLaDtKi{bottom:0;color:#fff;cursor:pointer;display:inline-block;height:32px;position:relative;speak:none;top:0;vertical-align:middle;width:32px;z-index:0;column-rule-color:#fff;font:normal normal normal normal 21px/40px Office365Icons;outline:0 none #fff;overflow:hidden}html[dir] ._1WZbpgeRh0HpoBNXLaDtKi{text-align:center;border:0 none #fff;border-radius:50% 50% 50% 50%}html[dir=ltr] ._1WZbpgeRh0HpoBNXLaDtKi{left:0;right:0;background:#a6a6a6 none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._1WZbpgeRh0HpoBNXLaDtKi{right:0;left:0;background:#a6a6a6 none repeat scroll 100% 0/auto padding-box border-box}._3em9swG76rKZHUXQsyA83z{color:#094ab2;cursor:pointer;display:block;height:16px;min-height:auto;min-width:auto;text-overflow:ellipsis;white-space:nowrap;width:250px;column-rule-color:#094ab2;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #094ab2;overflow:hidden}html[dir] ._3em9swG76rKZHUXQsyA83z{border:0 none #094ab2}html[dir=ltr] ._3em9swG76rKZHUXQsyA83z{text-align:left}html[dir=rtl] ._3em9swG76rKZHUXQsyA83z{text-align:right}.GwikMziIUttMpn-5F7xEU{color:#333;cursor:pointer;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/normal Segoe UI Semibold WestEuropean,Segoe UI Semibold,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] .GwikMziIUttMpn-5F7xEU{border:0 none #333}html[dir=ltr] .GwikMziIUttMpn-5F7xEU{text-align:left}html[dir=rtl] .GwikMziIUttMpn-5F7xEU{text-align:right}._2SPeiql8P-7reGfnrmId6u{color:#333;cursor:pointer;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/normal Segoe UI Semilight WestEuropean,Segoe UI Semilight,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._2SPeiql8P-7reGfnrmId6u{border-top:0 none #333;border-bottom:0 none #333}html[dir=ltr] ._2SPeiql8P-7reGfnrmId6u{text-align:left;border-right:0 none #333;border-left:1px solid rgba(0,0,0,.0980392);margin:0 0 0 7.2px;padding:0 0 0 9.6px}html[dir=rtl] ._2SPeiql8P-7reGfnrmId6u{text-align:right;border-left:0 none #333;border-right:1px solid rgba(0,0,0,.0980392);margin:0 7.2px 0 0;padding:0 9.6px 0 0}._8o2L_9vlCq2qxLunoAIrZ{bottom:0;height:105px;min-height:105px;position:relative;top:0;width:290px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] ._8o2L_9vlCq2qxLunoAIrZ{border:1px solid rgba(0,0,0,.14902);margin:0 0 8px;padding:16px;transition:border-color .167s ease 0s,box-shadow .167s ease 0s}html[dir=ltr] ._8o2L_9vlCq2qxLunoAIrZ{left:0;right:0;background:#fff none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._8o2L_9vlCq2qxLunoAIrZ{right:0;left:0;background:#fff none repeat scroll 100% 0/auto padding-box border-box}._28gxcFJHoDWSC0FEUaRp1p{height:40px;width:290px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir=ltr] ._28gxcFJHoDWSC0FEUaRp1p{text-align:left}html[dir=rtl] ._28gxcFJHoDWSC0FEUaRp1p{text-align:right}.mPY1BoQ1p2VIT-ma8xr-C{height:40px;width:290px;font:normal normal normal normal 12px/38px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir] .mPY1BoQ1p2VIT-ma8xr-C{border-top:1px solid #f4f4f4;margin:10px -10px -16px;padding:0 10px}html[dir=ltr] .mPY1BoQ1p2VIT-ma8xr-C{text-align:left}html[dir=rtl] .mPY1BoQ1p2VIT-ma8xr-C{text-align:right}.DV5ah-0pRw3rHzOf_w331{color:#0078d7;cursor:pointer;text-decoration:none;column-rule-color:#0078d7;font:normal normal normal normal 12px/38px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #0078d7}html[dir] .DV5ah-0pRw3rHzOf_w331{border:0 none #0078d7}html[dir=ltr] .DV5ah-0pRw3rHzOf_w331{text-align:left}html[dir=rtl] .DV5ah-0pRw3rHzOf_w331{text-align:right}--><!--._37PF7054bD8dBPcGZ-AVEs{height:32px;width:324px;perspective-origin:162px 16px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;list-style:none outside none}html[dir] ._37PF7054bD8dBPcGZ-AVEs{text-align:center;transform-origin:162px 16px}._2EoKloCGPngo_e92-lQt1y{color:#0078d7;display:inline-block;height:32px;text-decoration:none;column-rule-color:#0078d7;perspective-origin:67.9531px 16px;font:normal normal normal normal 12px/32px Segoe UI Semibold WestEuropean,Segoe UI Semibold,Segoe UI,Tahoma,Arial,sans-serif;list-style:none outside none;outline:0 none #0078d7}html[dir] ._2EoKloCGPngo_e92-lQt1y{text-align:center;transform-origin:67.9531px 16px;border:0 none #0078d7;padding:0 8px}--><!--.y8KhungVYDPkSBu02LDAt{height:411px;max-height:420px;width:324px;perspective-origin:170px 213.5px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:auto}html[dir] .y8KhungVYDPkSBu02LDAt{transform-origin:170px 213.5px;padding:8px;transition:opacity .467s cubic-bezier(.175,.885,.32,1.275) 0s,max-height .467s cubic-bezier(.175,.885,.32,1.275) 0s}html[dir=ltr] .y8KhungVYDPkSBu02LDAt{text-align:left}html[dir=rtl] .y8KhungVYDPkSBu02LDAt{text-align:right}--><!--.K3uDTJJ9jObolmgnP_OT7{bottom:0;height:40px;position:relative;top:0;width:340px;z-index:1;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] .K3uDTJJ9jObolmgnP_OT7{background-position:50% 50%;background:#eaeaea none no-repeat scroll 50% 50%/cover padding-box border-box}html[dir=ltr] .K3uDTJJ9jObolmgnP_OT7{left:0;right:0;text-align:left}html[dir=rtl] .K3uDTJJ9jObolmgnP_OT7{right:0;left:0;text-align:right}._230zlaYLrpB6dI8s6c9hnq{bottom:-33.5px;display:block;height:73.5px;position:absolute;top:0;width:340px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir=ltr] ._230zlaYLrpB6dI8s6c9hnq{left:0;right:0;text-align:left}html[dir=rtl] ._230zlaYLrpB6dI8s6c9hnq{right:0;left:0;text-align:right}.rok3bnVvO3OD4Z062PMcS{bottom:0;position:absolute;top:0;height:40px;width:40px;z-index:4;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden;opacity:.75}html[dir] .rok3bnVvO3OD4Z062PMcS{background-position:50% 50%;border:0;background:#868686 none no-repeat scroll 50% 50%/cover padding-box border-box}html[dir=ltr] .rok3bnVvO3OD4Z062PMcS{left:0;right:0;text-align:left}html[dir=rtl] .rok3bnVvO3OD4Z062PMcS{right:0;left:0;text-align:right}._27v09l_gTuHkrDOP5XUbZq{bottom:0;position:absolute;top:0;height:40px;z-index:4;font:normal normal 700 normal 16px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] ._27v09l_gTuHkrDOP5XUbZq{border:0}html[dir=ltr] ._27v09l_gTuHkrDOP5XUbZq{left:45px;right:0;text-align:left}html[dir=rtl] ._27v09l_gTuHkrDOP5XUbZq{right:45px;left:0;text-align:right}._2oOhTaZq6VHZSnoAoOPwfy{bottom:450px;height:100px;position:absolute;top:12px;width:100px;z-index:4;perspective-origin:56px 56px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir] ._2oOhTaZq6VHZSnoAoOPwfy{transform:matrix(.5,0,0,.5,0,0);transform-origin:112px 0;border:6px solid #fff;border-radius:50% 50% 50% 50%}html[dir=ltr] ._2oOhTaZq6VHZSnoAoOPwfy{left:212px;right:16px;text-align:left;background:#eaeaea none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._2oOhTaZq6VHZSnoAoOPwfy{right:212px;left:16px;text-align:right;background:#eaeaea none repeat scroll 100% 0/auto padding-box border-box}--><!--._3oibwpF4wGzWAsrkNKkkFA{bottom:0;height:574px;position:relative;top:0;width:340px;z-index:2;perspective-origin:171px 288px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] ._3oibwpF4wGzWAsrkNKkkFA{box-shadow:0 0 20px 0 rgba(0,0,0,.2);transform-origin:171px 288px;border:1px solid rgba(0,0,0,.14902);transition:opacity .267s ease-out 0s}html[dir=ltr] ._3oibwpF4wGzWAsrkNKkkFA{left:180px;right:-160px;text-align:left;background:#eaeaea none repeat scroll 0 0/auto padding-box border-box;margin:-20px 0 0 -180px}html[dir=rtl] ._3oibwpF4wGzWAsrkNKkkFA{right:180px;left:-160px;text-align:right;background:#eaeaea none repeat scroll 100% 0/auto padding-box border-box;margin:-20px -180px 0 0}.SW2_Ez_huokK8vbvLV0ak{position:absolute;top:510px}html[dir=ltr] .SW2_Ez_huokK8vbvLV0ak{float:left}html[dir=rtl] .SW2_Ez_huokK8vbvLV0ak{float:right}--><!--.ms-u-borderBox,.ms-u-borderBox:after,.ms-u-borderBox:before{box-sizing:border-box}html[dir] .ms-u-borderBase{border:1px solid}.ms-u-clearfix{*zoom:1}.ms-u-clearfix:after,.ms-u-clearfix:before{display:table;content:"";line-height:0}.ms-u-clearfix:after{clear:both}.ms-u-normalize{box-sizing:border-box}html[dir] .ms-u-normalize{margin:0;padding:0;box-shadow:none}html[dir=ltr] .ms-u-textAlignLeft{text-align:left}html[dir=rtl] .ms-u-textAlignLeft{text-align:right}html[dir] .ms-u-textAlignCenter{text-align:center}html[dir=ltr] .ms-u-textAlignRight{text-align:right}html[dir=rtl] .ms-u-textAlignRight{text-align:left}.ms-u-screenReaderOnly{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}html[dir] .ms-u-screenReaderOnly{padding:0;margin:-1px;border:0}.ms-u-textTruncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.ms-u-noWrap{white-space:nowrap}html[dir] .ms-bgColor-themeDark,html[dir] .ms-bgColor-themeDark--hover:hover{background-color:#005a9e}html[dir] .ms-bgColor-themeDarkAlt,html[dir] .ms-bgColor-themeDarkAlt--hover:hover{background-color:#106ebe}html[dir] .ms-bgColor-themeDarker,html[dir] .ms-bgColor-themeDarker--hover:hover{background-color:#004578}html[dir] .ms-bgColor-themePrimary,html[dir] .ms-bgColor-themePrimary--hover:hover{background-color:#0078d7}html[dir] .ms-bgColor-themeSecondary,html[dir] .ms-bgColor-themeSecondary--hover:hover{background-color:#2488d8}html[dir] .ms-bgColor-themeTertiary,html[dir] .ms-bgColor-themeTertiary--hover:hover{background-color:#69afe5}html[dir] .ms-bgColor-themeLight,html[dir] .ms-bgColor-themeLight--hover:hover{background-color:#b3d6f2}html[dir] .ms-bgColor-themeLighter,html[dir] .ms-bgColor-themeLighter--hover:hover{background-color:#deecf9}html[dir] .ms-bgColor-themeLighterAlt,html[dir] .ms-bgColor-themeLighterAlt--hover:hover{background-color:#eff6fc}html[dir] .ms-bgColor-black,html[dir] .ms-bgColor-black--hover:hover{background-color:#000}html[dir] .ms-bgColor-neutralDark,html[dir] .ms-bgColor-neutralDark--hover:hover{background-color:#212121}html[dir] .ms-bgColor-neutralPrimary,html[dir] .ms-bgColor-neutralPrimary--hover:hover{background-color:#333}html[dir] .ms-bgColor-neutralPrimaryAlt,html[dir] .ms-bgColor-neutralPrimaryAlt--hover:hover{background-color:#3c3c3c}html[dir] .ms-bgColor-neutralSecondary,html[dir] .ms-bgColor-neutralSecondary--hover:hover{background-color:#666}html[dir] .ms-bgColor-neutralSecondaryAlt,html[dir] .ms-bgColor-neutralSecondaryAlt--hover:hover{background-color:#767676}html[dir] .ms-bgColor-neutralTertiary,html[dir] .ms-bgColor-neutralTertiary--hover:hover{background-color:#a6a6a6}html[dir] .ms-bgColor-neutralTertiaryAlt,html[dir] .ms-bgColor-neutralTertiaryAlt--hover:hover{background-color:#c8c8c8}html[dir] .ms-bgColor-neutralLight,html[dir] .ms-bgColor-neutralLight--hover:hover{background-color:#eaeaea}html[dir] .ms-bgColor-neutralLighter,html[dir] .ms-bgColor-neutralLighter--hover:hover{background-color:#f4f4f4}html[dir] .ms-bgColor-neutralLighterAlt,html[dir] .ms-bgColor-neutralLighterAlt--hover:hover{background-color:#f8f8f8}html[dir] .ms-bgColor-white,html[dir] .ms-bgColor-white--hover:hover{background-color:#fff}html[dir] .ms-bgColor-yellow{background-color:#ffb900}html[dir] .ms-bgColor-yellowLight{background-color:#fff100}html[dir] .ms-bgColor-orange{background-color:#d83b01}html[dir] .ms-bgColor-orangeLight{background-color:#ea4300}html[dir] .ms-bgColor-orangeLighter{background-color:#ff8c00}html[dir] .ms-bgColor-redDark{background-color:#a80000}html[dir] .ms-bgColor-red{background-color:#e81123}html[dir] .ms-bgColor-magentaDark{background-color:#5c005c}html[dir] .ms-bgColor-magenta{background-color:#b4009e}html[dir] .ms-bgColor-magentaLight{background-color:#e3008c}html[dir] .ms-bgColor-purpleDark{background-color:#32145a}html[dir] .ms-bgColor-purple{background-color:#5c2d91}html[dir] .ms-bgColor-purpleLight{background-color:#b4a0ff}html[dir] .ms-bgColor-blueDark{background-color:#002050}html[dir] .ms-bgColor-blueMid{background-color:#00188f}html[dir] .ms-bgColor-blue{background-color:#0078d7}html[dir] .ms-bgColor-blueLight{background-color:#00bcf2}html[dir] .ms-bgColor-tealDark{background-color:#004b50}html[dir] .ms-bgColor-teal{background-color:#008272}html[dir] .ms-bgColor-tealLight{background-color:#00b294}html[dir] .ms-bgColor-greenDark{background-color:#004b1c}html[dir] .ms-bgColor-green{background-color:#107c10}html[dir] .ms-bgColor-greenLight{background-color:#bad80a}html[dir] .ms-bgColor-info{background-color:#f4f4f4}html[dir] .ms-bgColor-success{background-color:#dff6dd}html[dir] .ms-bgColor-severeWarning{background-color:#fed9cc}html[dir] .ms-bgColor-warning{background-color:#fff4ce}html[dir] .ms-bgColor-error{background-color:#fde7e9}html[dir] .ms-borderColor-themeDark,html[dir] .ms-borderColor-themeDark--hover:hover{border-color:#005a9e}html[dir] .ms-borderColor-themeDarkAlt,html[dir] .ms-borderColor-themeDarkAlt--hover:hover{border-color:#106ebe}html[dir] .ms-borderColor-themeDarker,html[dir] .ms-borderColor-themeDarker--hover:hover{border-color:#004578}html[dir] .ms-borderColor-themePrimary,html[dir] .ms-borderColor-themePrimary--hover:hover{border-color:#0078d7}html[dir] .ms-borderColor-themeSecondary,html[dir] .ms-borderColor-themeSecondary--hover:hover{border-color:#2488d8}html[dir] .ms-borderColor-themeTertiary,html[dir] .ms-borderColor-themeTertiary--hover:hover{border-color:#69afe5}html[dir] .ms-borderColor-themeLight,html[dir] .ms-borderColor-themeLight--hover:hover{border-color:#b3d6f2}html[dir] .ms-borderColor-themeLighter,html[dir] .ms-borderColor-themeLighter--hover:hover{border-color:#deecf9}html[dir] .ms-borderColor-themeLighterAlt,html[dir] .ms-borderColor-themeLighterAlt--hover:hover{border-color:#eff6fc}html[dir] .ms-borderColor-black,html[dir] .ms-borderColor-black--hover:hover{border-color:#000}html[dir] .ms-borderColor-neutralDark,html[dir] .ms-borderColor-neutralDark--hover:hover{border-color:#212121}html[dir] .ms-borderColor-neutralPrimary,html[dir] .ms-borderColor-neutralPrimary--hover:hover{border-color:#333}html[dir] .ms-borderColor-neutralPrimaryAlt,html[dir] .ms-borderColor-neutralPrimaryAlt--hover:hover{border-color:#3c3c3c}html[dir] .ms-borderColor-neutralSecondary,html[dir] .ms-borderColor-neutralSecondary--hover:hover{border-color:#666}html[dir] .ms-borderColor-neutralSecondaryAlt,html[dir] .ms-borderColor-neutralSecondaryAlt--hover:hover{border-color:#767676}html[dir] .ms-borderColor-neutralTertiary,html[dir] .ms-borderColor-neutralTertiary--hover:hover{border-color:#a6a6a6}html[dir] .ms-borderColor-neutralTertiaryAlt,html[dir] .ms-borderColor-neutralTertiaryAlt--hover:hover{border-color:#c8c8c8}html[dir] .ms-borderColor-neutralLight,html[dir] .ms-borderColor-neutralLight--hover:hover{border-color:#eaeaea}html[dir] .ms-borderColor-neutralLighter,html[dir] .ms-borderColor-neutralLighter--hover:hover{border-color:#f4f4f4}html[dir] .ms-borderColor-neutralLighterAlt,html[dir] .ms-borderColor-neutralLighterAlt--hover:hover{border-color:#f8f8f8}html[dir] .ms-borderColor-white,html[dir] .ms-borderColor-white--hover:hover{border-color:#fff}html[dir] .ms-borderColor-yellow{border-color:#ffb900}html[dir] .ms-borderColor-yellowLight{border-color:#fff100}html[dir] .ms-borderColor-orange{border-color:#d83b01}html[dir] .ms-borderColor-orangeLight{border-color:#ea4300}html[dir] .ms-borderColor-orangeLighter{border-color:#ff8c00}html[dir] .ms-borderColor-redDark{border-color:#a80000}html[dir] .ms-borderColor-red{border-color:#e81123}html[dir] .ms-borderColor-magentaDark{border-color:#5c005c}html[dir] .ms-borderColor-magenta{border-color:#b4009e}html[dir] .ms-borderColor-magentaLight{border-color:#e3008c}html[dir] .ms-borderColor-purpleDark{border-color:#32145a}html[dir] .ms-borderColor-purple{border-color:#5c2d91}html[dir] .ms-borderColor-purpleLight{border-color:#b4a0ff}html[dir] .ms-borderColor-blueDark{border-color:#002050}html[dir] .ms-borderColor-blueMid{border-color:#00188f}html[dir] .ms-borderColor-blue{border-color:#0078d7}html[dir] .ms-borderColor-blueLight{border-color:#00bcf2}html[dir] .ms-borderColor-tealDark{border-color:#004b50}html[dir] .ms-borderColor-teal{border-color:#008272}html[dir] .ms-borderColor-tealLight{border-color:#00b294}html[dir] .ms-borderColor-greenDark{border-color:#004b1c}html[dir] .ms-borderColor-green{border-color:#107c10}html[dir] .ms-borderColor-greenLight{border-color:#bad80a}html[dir] .ms-borderColorTop-themePrimary,html[dir] .ms-borderColorTop-themePrimary--hover:hover{border-top-color:#0078d7}.ms-fontWeight-light,.ms-fontWeight-light--hover:hover{font-weight:100}.ms-fontWeight-semilight,.ms-fontWeight-semilight--hover:hover{font-weight:300}.ms-fontWeight-regular,.ms-fontWeight-regular--hover:hover{font-weight:400}.ms-fontWeight-semibold,.ms-fontWeight-semibold--hover:hover{font-weight:600}.ms-fontSize-su{font-size:42px}.ms-fontSize-xxl{font-size:28px}.ms-fontSize-xl{font-size:21px}.ms-fontSize-l{font-size:17px}.ms-fontSize-mPlus{font-size:15px}.ms-fontSize-m{font-size:14px}.ms-fontSize-sPlus{font-size:13px}.ms-fontSize-s{font-size:12px}.ms-fontSize-xs{font-size:11px}.ms-fontSize-mi{font-size:10px}.ms-fontColor-themeDarker,.ms-fontColor-themeDarker--hover:hover{color:#004578}.ms-fontColor-themeDark,.ms-fontColor-themeDark--hover:hover{color:#005a9e}.ms-fontColor-themeDarkAlt,.ms-fontColor-themeDarkAlt--hover:hover{color:#106ebe}.ms-fontColor-themePrimary,.ms-fontColor-themePrimary--hover:hover{color:#0078d7}.ms-fontColor-themeSecondary,.ms-fontColor-themeSecondary--hover:hover{color:#2488d8}.ms-fontColor-themeTertiary,.ms-fontColor-themeTertiary--hover:hover{color:#69afe5}.ms-fontColor-themeLight,.ms-fontColor-themeLight--hover:hover{color:#b3d6f2}.ms-fontColor-themeLighter,.ms-fontColor-themeLighter--hover:hover{color:#deecf9}.ms-fontColor-themeLighterAlt,.ms-fontColor-themeLighterAlt--hover:hover{color:#eff6fc}.ms-fontColor-black,.ms-fontColor-black--hover:hover{color:#000}.ms-fontColor-neutralDark,.ms-fontColor-neutralDark--hover:hover{color:#212121}.ms-fontColor-neutralPrimary,.ms-fontColor-neutralPrimary--hover:hover{color:#333}.ms-fontColor-neutralPrimaryAlt,.ms-fontColor-neutralPrimaryAlt--hover:hover{color:#3c3c3c}.ms-fontColor-neutralSecondary,.ms-fontColor-neutralSecondary--hover:hover{color:#666}.ms-fontColor-neutralSecondaryAlt,.ms-fontColor-neutralSecondaryAlt--hover:hover{color:#767676}.ms-fontColor-neutralTertiary,.ms-fontColor-neutralTertiary--hover:hover{color:#a6a6a6}.ms-fontColor-neutralTertiaryAlt,.ms-fontColor-neutralTertiaryAlt--hover:hover{color:#c8c8c8}.ms-fontColor-neutralLight,.ms-fontColor-neutralLight--hover:hover{color:#eaeaea}.ms-fontColor-neutralLighter,.ms-fontColor-neutralLighter--hover:hover{color:#f4f4f4}.ms-fontColor-neutralLighterAlt,.ms-fontColor-neutralLighterAlt--hover:hover{color:#f8f8f8}.ms-fontColor-white,.ms-fontColor-white--hover:hover{color:#fff}.ms-fontColor-yellow,.ms-fontColor-yellow--hover:hover{color:#ffb900}.ms-fontColor-yellowLight,.ms-fontColor-yellowLight--hover:hover{color:#fff100}.ms-fontColor-orange,.ms-fontColor-orange--hover:hover{color:#d83b01}.ms-fontColor-orangeLight,.ms-fontColor-orangeLight--hover:hover{color:#ea4300}.ms-fontColor-orangeLighter,.ms-fontColor-orangeLighter--hover:hover{color:#ff8c00}.ms-fontColor-redDark,.ms-fontColor-redDark--hover:hover{color:#a80000}.ms-fontColor-red,.ms-fontColor-red--hover:hover{color:#e81123}.ms-fontColor-magentaDark,.ms-fontColor-magentaDark--hover:hover{color:#5c005c}.ms-fontColor-magenta,.ms-fontColor-magenta--hover:hover{color:#b4009e}.ms-fontColor-magentaLight,.ms-fontColor-magentaLight--hover:hover{color:#e3008c}.ms-fontColor-purpleDark,.ms-fontColor-purpleDark--hover:hover{color:#32145a}.ms-fontColor-purple,.ms-fontColor-purple--hover:hover{color:#5c2d91}.ms-fontColor-purpleLight,.ms-fontColor-purpleLight--hover:hover{color:#b4a0ff}.ms-fontColor-blueDark,.ms-fontColor-blueDark--hover:hover{color:#002050}.ms-fontColor-blueMid,.ms-fontColor-blueMid--hover:hover{color:#00188f}.ms-fontColor-blue,.ms-fontColor-blue--hover:hover{color:#0078d7}.ms-fontColor-blueLight,.ms-fontColor-blueLight--hover:hover{color:#00bcf2}.ms-fontColor-tealDark,.ms-fontColor-tealDark--hover:hover{color:#004b50}.ms-fontColor-teal,.ms-fontColor-teal--hover:hover{color:#008272}.ms-fontColor-tealLight,.ms-fontColor-tealLight--hover:hover{color:#00b294}.ms-fontColor-greenDark,.ms-fontColor-greenDark--hover:hover{color:#004b1c}.ms-fontColor-green,.ms-fontColor-green--hover:hover{color:#107c10}.ms-fontColor-greenLight,.ms-fontColor-greenLight--hover:hover{color:#bad80a}.ms-fontColor-info,.ms-fontColor-info--hover:hover{color:#767676}.ms-fontColor-success,.ms-fontColor-success--hover:hover{color:#107c10}.ms-fontColor-alert,.ms-fontColor-alert--hover:hover{color:#d83b01}.ms-fontColor-warning,.ms-fontColor-warning--hover:hover{color:#767676}.ms-fontColor-severeWarning,.ms-fontColor-severeWarning--hover:hover{color:#d83b01}.ms-fontColor-error,.ms-fontColor-error--hover:hover{color:#a80000}.ms-Icon,.ms-Icon:before{-moz-osx-font-smoothing:grayscale;font-family:FabricMDL2Icons;font-style:normal;font-weight:400;speak:none}.ms-Icon,.ms-Icon--circle,.ms-Icon:before{-webkit-font-smoothing:antialiased;display:inline-block}.ms-Icon--circle{position:relative;font-size:1rem;width:1em;height:1em}html[dir] .ms-Icon--circle{padding:0}html[dir=ltr] .ms-Icon--circle{margin:0 .5em 0 0;text-align:left}html[dir=rtl] .ms-Icon--circle{margin:0 0 0 .5em;text-align:right}.ms-Icon--circle:after,.ms-Icon--circle:before{line-height:1;font-size:inherit}.ms-Icon--circle:before{display:block;width:100%;height:100%;vertical-align:top;position:absolute}html[dir] .ms-Icon--circle:before{margin:0;padding:0}.ms-Icon--circle:after{content:"\E000";position:absolute;top:0;z-index:0}html[dir] .ms-Icon--circle:after{transform:scale(2);transform-origin:50% 50%}html[dir=ltr] .ms-Icon--circle:after{left:0}html[dir=rtl] .ms-Icon--circle:after{right:0}.ms-Icon--xs{font-size:10px}.ms-Icon--s{font-size:12px}.ms-Icon--m{font-size:16px}.ms-Icon--l{font-size:20px}.ms-Icon--CarotRightSolid8:before{content:"\EDDA"}.ms-Icon--DynamicsCRMLogo:before{content:"\EDCC"}.ms-Icon--DecreaseIndentLegacy:before{content:"\E290"}.ms-Icon--IncreaseIndentLegacy:before{content:"\E291"}.ms-Icon--GlobalNavButton:before{content:"\E700"}.ms-Icon--InternetSharing:before{content:"\E704"}.ms-Icon--Brightness:before{content:"\E706"}.ms-Icon--MapPin:before{content:"\E707"}.ms-Icon--Airplane:before{content:"\E709"}.ms-Icon--Tablet:before{content:"\E70A"}.ms-Icon--QuickNote:before{content:"\E70B"}.ms-Icon--ChevronDown:before{content:"\E70D"}.ms-Icon--ChevronUp:before{content:"\E70E"}.ms-Icon--Edit:before{content:"\E70F"}.ms-Icon--Add:before{content:"\E710"}.ms-Icon--Cancel:before{content:"\E711"}.ms-Icon--More:before{content:"\E712"}.ms-Icon--Settings:before{content:"\E713"}.ms-Icon--Video:before{content:"\E714"}.ms-Icon--Mail:before{content:"\E715"}.ms-Icon--People:before{content:"\E716"}.ms-Icon--Phone:before{content:"\E717"}.ms-Icon--Pin:before{content:"\E718"}.ms-Icon--Shop:before{content:"\E719"}.ms-Icon--Link:before{content:"\E71B"}.ms-Icon--Filter:before{content:"\E71C"}.ms-Icon--Zoom:before{content:"\E71E"}.ms-Icon--ZoomOut:before{content:"\E71F"}.ms-Icon--Microphone:before{content:"\E720"}.ms-Icon--Search:before{content:"\E721"}.ms-Icon--Camera:before{content:"\E722"}.ms-Icon--Attach:before{content:"\E723"}.ms-Icon--Send:before{content:"\E724"}.ms-Icon--FavoriteList:before{content:"\E728"}.ms-Icon--PageSolid:before{content:"\E729"}.ms-Icon--Forward:before{content:"\E72A"}.ms-Icon--Back:before{content:"\E72B"}.ms-Icon--Refresh:before{content:"\E72C"}.ms-Icon--Share:before{content:"\E72D"}.ms-Icon--Lock:before{content:"\E72E"}.ms-Icon--EMI:before{content:"\E731"}.ms-Icon--MiniLink:before{content:"\E732"}.ms-Icon--Blocked:before{content:"\E733"}.ms-Icon--FavoriteStar:before{content:"\E734"}.ms-Icon--FavoriteStarFill:before{content:"\E735"}.ms-Icon--ReadingMode:before{content:"\E736"}.ms-Icon--Remove:before{content:"\E738"}.ms-Icon--Checkbox:before{content:"\E739"}.ms-Icon--CheckboxComposite:before{content:"\E73A"}.ms-Icon--CheckboxIndeterminate:before{content:"\E73C"}.ms-Icon--CheckMark:before{content:"\E73E"}.ms-Icon--BackToWindow:before{content:"\E73F"}.ms-Icon--FullScreen:before{content:"\E740"}.ms-Icon--Print:before{content:"\E749"}.ms-Icon--Up:before{content:"\E74A"}.ms-Icon--Down:before{content:"\E74B"}.ms-Icon--Delete:before{content:"\E74D"}.ms-Icon--Save:before{content:"\E74E"}.ms-Icon--Sad:before{content:"\E757"}.ms-Icon--SIPMove:before{content:"\E759"}.ms-Icon--EraseTool:before{content:"\E75C"}.ms-Icon--GripperTool:before{content:"\E75E"}.ms-Icon--Dialpad:before{content:"\E75F"}.ms-Icon--PageLeft:before{content:"\E760"}.ms-Icon--PageRight:before{content:"\E761"}.ms-Icon--MultiSelect:before{content:"\E762"}.ms-Icon--Play:before{content:"\E768"}.ms-Icon--Pause:before{content:"\E769"}.ms-Icon--ChevronLeft:before{content:"\E76B"}.ms-Icon--ChevronRight:before{content:"\E76C"}.ms-Icon--Emoji2:before{content:"\E76E"}.ms-Icon--System:before{content:"\E770"}.ms-Icon--Globe:before{content:"\E774"}.ms-Icon--ContactInfo:before{content:"\E779"}.ms-Icon--Unpin:before{content:"\E77A"}.ms-Icon--Contact:before{content:"\E77B"}.ms-Icon--Memo:before{content:"\E77C"}.ms-Icon--WindowsLogo:before{content:"\E782"}.ms-Icon--Error:before{content:"\E783"}.ms-Icon--Unlock:before{content:"\E785"}.ms-Icon--Calendar:before{content:"\E787"}.ms-Icon--Megaphone:before{content:"\E789"}.ms-Icon--AutoEnhanceOn:before{content:"\E78D"}.ms-Icon--AutoEnhanceOff:before{content:"\E78E"}.ms-Icon--Color:before{content:"\E790"}.ms-Icon--SaveAs:before{content:"\E792"}.ms-Icon--Light:before{content:"\E793"}.ms-Icon--Filters:before{content:"\E795"}.ms-Icon--Contrast:before{content:"\E7A1"}.ms-Icon--Redo:before{content:"\E7A6"}.ms-Icon--Undo:before{content:"\E7A7"}.ms-Icon--PhotoCollection:before{content:"\E7AA"}.ms-Icon--Album:before{content:"\E7AB"}.ms-Icon--Rotate:before{content:"\E7AD"}.ms-Icon--PanoIndicator:before{content:"\E7B0"}.ms-Icon--RedEye:before{content:"\E7B3"}.ms-Icon--ThumbnailView:before{content:"\E7B6"}.ms-Icon--Package:before{content:"\E7B8"}.ms-Icon--Warning:before{content:"\E7BA"}.ms-Icon--Financial:before{content:"\E7BB"}.ms-Icon--ShoppingCart:before{content:"\E7BF"}.ms-Icon--Train:before{content:"\E7C0"}.ms-Icon--Flag:before{content:"\E7C1"}.ms-Icon--Move:before{content:"\E7C2"}.ms-Icon--Page:before{content:"\E7C3"}.ms-Icon--TouchPointer:before{content:"\E7C9"}.ms-Icon--Merge:before{content:"\E7D5"}.ms-Icon--TurnRight:before{content:"\E7DB"}.ms-Icon--Ferry:before{content:"\E7E3"}.ms-Icon--Tab:before{content:"\E7E9"}.ms-Icon--Admin:before{content:"\E7EF"}.ms-Icon--TVMonitor:before{content:"\E7F4"}.ms-Icon--Speakers:before{content:"\E7F5"}.ms-Icon--Nav2DMapView:before{content:"\E800"}.ms-Icon--Car:before{content:"\E804"}.ms-Icon--EatDrink:before{content:"\E807"}.ms-Icon--LocationCircle:before{content:"\E80E"}.ms-Icon--Home:before{content:"\E80F"}.ms-Icon--SwitcherStartEnd:before{content:"\E810"}.ms-Icon--IncidentTriangle:before{content:"\E814"}.ms-Icon--Touch:before{content:"\E815"}.ms-Icon--MapDirections:before{content:"\E816"}.ms-Icon--History:before{content:"\E81C"}.ms-Icon--Location:before{content:"\E81D"}.ms-Icon--Work:before{content:"\E821"}.ms-Icon--Recent:before{content:"\E823"}.ms-Icon--Hotel:before{content:"\E824"}.ms-Icon--LocationDot:before{content:"\E827"}.ms-Icon--News:before{content:"\E900"}.ms-Icon--Chat:before{content:"\E901"}.ms-Icon--Group:before{content:"\E902"}.ms-Icon--View:before{content:"\E890"}.ms-Icon--Clear:before{content:"\E894"}.ms-Icon--Sync:before{content:"\E895"}.ms-Icon--Download:before{content:"\E896"}.ms-Icon--Help:before{content:"\E897"}.ms-Icon--Upload:before{content:"\E898"}.ms-Icon--Emoji:before{content:"\E899"}.ms-Icon--MailForward:before{content:"\E89C"}.ms-Icon--ClosePane:before{content:"\E89F"}.ms-Icon--OpenPane:before{content:"\E8A0"}.ms-Icon--PreviewLink:before{content:"\E8A1"}.ms-Icon--ZoomIn:before{content:"\E8A3"}.ms-Icon--Bookmarks:before{content:"\E8A4"}.ms-Icon--Document:before{content:"\E8A5"}.ms-Icon--ProtectedDocument:before{content:"\E8A6"}.ms-Icon--OpenInNewWindow:before{content:"\E8A7"}.ms-Icon--MailFill:before{content:"\E8A8"}.ms-Icon--ViewAll:before{content:"\E8A9"}.ms-Icon--Switch:before{content:"\E8AB"}.ms-Icon--Rename:before{content:"\E8AC"}.ms-Icon--Folder:before{content:"\E8B7"}.ms-Icon--Picture:before{content:"\E8B9"}.ms-Icon--ShowResults:before{content:"\E8BC"}.ms-Icon--Message:before{content:"\E8BD"}.ms-Icon--CalendarDay:before{content:"\E8BF"}.ms-Icon--CalendarWeek:before{content:"\E8C0"}.ms-Icon--MailReplyAll:before{content:"\E8C2"}.ms-Icon--Read:before{content:"\E8C3"}.ms-Icon--PaymentCard:before{content:"\E8C7"}.ms-Icon--Copy:before{content:"\E8C8"}.ms-Icon--Important:before{content:"\E8C9"}.ms-Icon--MailReply:before{content:"\E8CA"}.ms-Icon--Sort:before{content:"\E8CB"}.ms-Icon--GotoToday:before{content:"\E8D1"}.ms-Icon--Font:before{content:"\E8D2"}.ms-Icon--FontColor:before{content:"\E8D3"}.ms-Icon--FolderFill:before{content:"\E8D5"}.ms-Icon--Permissions:before{content:"\E8D7"}.ms-Icon--DisableUpdates:before{content:"\E8D8"}.ms-Icon--Unfavorite:before{content:"\E8D9"}.ms-Icon--Italic:before{content:"\E8DB"}.ms-Icon--Underline:before{content:"\E8DC"}.ms-Icon--Bold:before{content:"\E8DD"}.ms-Icon--MoveToFolder:before{content:"\E8DE"}.ms-Icon--Dislike:before{content:"\E8E0"}.ms-Icon--Like:before{content:"\E8E1"}.ms-Icon--AlignRight:before{content:"\E8E2"}.ms-Icon--AlignCenter:before{content:"\E8E3"}.ms-Icon--AlignLeft:before{content:"\E8E4"}.ms-Icon--OpenFile:before{content:"\E8E5"}.ms-Icon--FontDecrease:before{content:"\E8E7"}.ms-Icon--FontIncrease:before{content:"\E8E8"}.ms-Icon--FontSize:before{content:"\E8E9"}.ms-Icon--CellPhone:before{content:"\E8EA"}.ms-Icon--Tag:before{content:"\E8EC"}.ms-Icon--Library:before{content:"\E8F1"}.ms-Icon--PostUpdate:before{content:"\E8F3"}.ms-Icon--NewFolder:before{content:"\E8F4"}.ms-Icon--CalendarReply:before{content:"\E8F5"}.ms-Icon--UnsyncFolder:before{content:"\E8F6"}.ms-Icon--SyncFolder:before{content:"\E8F7"}.ms-Icon--BlockContact:before{content:"\E8F8"}.ms-Icon--AddFriend:before{content:"\E8FA"}.ms-Icon--BulletedList:before{content:"\E8FD"}.ms-Icon--Preview:before{content:"\E8FF"}.ms-Icon--DockLeft:before{content:"\E90C"}.ms-Icon--DockRight:before{content:"\E90D"}.ms-Icon--Repair:before{content:"\E90F"}.ms-Icon--Accounts:before{content:"\E910"}.ms-Icon--RadioBullet:before{content:"\E915"}.ms-Icon--Stopwatch:before{content:"\E916"}.ms-Icon--Clock:before{content:"\E917"}.ms-Icon--WorldClock:before{content:"\E918"}.ms-Icon--AlarmClock:before{content:"\E919"}.ms-Icon--Hospital:before{content:"\E91D"}.ms-Icon--Timer:before{content:"\E91E"}.ms-Icon--FullCircleMask:before{content:"\E91F"}.ms-Icon--LocationFill:before{content:"\E920"}.ms-Icon--ChromeMinimize:before{content:"\E921"}.ms-Icon--Annotation:before{content:"\E924"}.ms-Icon--ChromeClose:before{content:"\E8BB"}.ms-Icon--Accept:before{content:"\E8FB"}.ms-Icon--Fingerprint:before{content:"\E928"}.ms-Icon--Handwriting:before{content:"\E929"}.ms-Icon--StackIndicator:before{content:"\E7FF"}.ms-Icon--Completed:before{content:"\E930"}.ms-Icon--Label:before{content:"\E932"}.ms-Icon--FlickDown:before{content:"\E935"}.ms-Icon--FlickUp:before{content:"\E936"}.ms-Icon--FlickLeft:before{content:"\E937"}.ms-Icon--FlickRight:before{content:"\E938"}.ms-Icon--MusicInCollection:before{content:"\E940"}.ms-Icon--OneDrive:before{content:"\E941"}.ms-Icon--CompassNW:before{content:"\E942"}.ms-Icon--Code:before{content:"\E943"}.ms-Icon--LightningBolt:before{content:"\E945"}.ms-Icon--Info:before{content:"\E946"}.ms-Icon--CalculatorAddition:before{content:"\E948"}.ms-Icon--CalculatorSubtract:before{content:"\E949"}.ms-Icon--PrintfaxPrinterFile:before{content:"\E956"}.ms-Icon--Headset:before{content:"\E95B"}.ms-Icon--Health:before{content:"\E95E"}.ms-Icon--ChevronUpSmall:before{content:"\E96D"}.ms-Icon--ChevronDownSmall:before{content:"\E96E"}.ms-Icon--ChevronLeftSmall:before{content:"\E96F"}.ms-Icon--ChevronRightSmall:before{content:"\E970"}.ms-Icon--ChevronUpMed:before{content:"\E971"}.ms-Icon--ChevronDownMed:before{content:"\E972"}.ms-Icon--ChevronLeftMed:before{content:"\E973"}.ms-Icon--ChevronRightMed:before{content:"\E974"}.ms-Icon--Dictionary:before{content:"\E82D"}.ms-Icon--ChromeBack:before{content:"\E830"}.ms-Icon--PC1:before{content:"\E977"}.ms-Icon--PresenceChickletVideo:before{content:"\E979"}.ms-Icon--Reply:before{content:"\E97A"}.ms-Icon--DoubleChevronLeftMed:before{content:"\E991"}.ms-Icon--Volume0:before{content:"\E992"}.ms-Icon--Volume1:before{content:"\E993"}.ms-Icon--Volume2:before{content:"\E994"}.ms-Icon--Volume3:before{content:"\E995"}.ms-Icon--CaretHollow:before{content:"\E817"}.ms-Icon--CaretSolid:before{content:"\E818"}.ms-Icon--FolderOpen:before{content:"\E838"}.ms-Icon--Pinned:before{content:"\E840"}.ms-Icon--PinnedFill:before{content:"\E842"}.ms-Icon--Chart:before{content:"\E999"}.ms-Icon--BidiLtr:before{content:"\E9AA"}.ms-Icon--BidiRtl:before{content:"\E9AB"}.ms-Icon--RevToggleKey:before{content:"\E845"}.ms-Icon--RightDoubleQuote:before{content:"\E9B1"}.ms-Icon--Sunny:before{content:"\E9BD"}.ms-Icon--CloudWeather:before{content:"\E9BE"}.ms-Icon--Cloudy:before{content:"\E9BF"}.ms-Icon--PartlyCloudyDay:before{content:"\E9C0"}.ms-Icon--PartlyCloudyNight:before{content:"\E9C1"}.ms-Icon--ClearNight:before{content:"\E9C2"}.ms-Icon--RainShowersDay:before{content:"\E9C3"}.ms-Icon--Rain:before{content:"\E9C4"}.ms-Icon--Thunderstorms:before{content:"\E9C6"}.ms-Icon--RainSnow:before{content:"\E9C7"}.ms-Icon--BlowingSnow:before{content:"\E9C9"}.ms-Icon--Frigid:before{content:"\E9CA"}.ms-Icon--Fog:before{content:"\E9CB"}.ms-Icon--Squalls:before{content:"\E9CC"}.ms-Icon--Duststorm:before{content:"\E9CD"}.ms-Icon--Precipitation:before{content:"\E9CF"}.ms-Icon--Ringer:before{content:"\EA8F"}.ms-Icon--PDF:before{content:"\EA90"}.ms-Icon--SortLines:before{content:"\E9D0"}.ms-Icon--Ribbon:before{content:"\E9D1"}.ms-Icon--CheckList:before{content:"\E9D5"}.ms-Icon--Generate:before{content:"\E9DA"}.ms-Icon--Equalizer:before{content:"\E9E9"}.ms-Icon--BarChartHorizontal:before{content:"\E9EB"}.ms-Icon--Freezing:before{content:"\E9EF"}.ms-Icon--SnowShowerDay:before{content:"\E9FD"}.ms-Icon--HailDay:before{content:"\EA00"}.ms-Icon--WorkFlow:before{content:"\EA01"}.ms-Icon--StoreLogoMed:before{content:"\EA04"}.ms-Icon--RainShowersNight:before{content:"\EA0F"}.ms-Icon--SnowShowerNight:before{content:"\EA11"}.ms-Icon--HailNight:before{content:"\EA13"}.ms-Icon--Info2:before{content:"\EA1F"}.ms-Icon--StoreLogo:before{content:"\EA96"}.ms-Icon--MultiSelectMirrored:before{content:"\EA98"}.ms-Icon--Broom:before{content:"\EA99"}.ms-Icon--MusicInCollectionFill:before{content:"\EA36"}.ms-Icon--List:before{content:"\EA37"}.ms-Icon--Asterisk:before{content:"\EA38"}.ms-Icon--ErrorBadge:before{content:"\EA39"}.ms-Icon--CircleRing:before{content:"\EA3A"}.ms-Icon--CircleFill:before{content:"\EA3B"}.ms-Icon--BookmarksMirrored:before{content:"\EA41"}.ms-Icon--BulletedListMirrored:before{content:"\EA42"}.ms-Icon--CaretHollowMirrored:before{content:"\EA45"}.ms-Icon--CaretSolidMirrored:before{content:"\EA46"}.ms-Icon--ChromeBackMirrored:before{content:"\EA47"}.ms-Icon--ClosePaneMirrored:before{content:"\EA49"}.ms-Icon--DockLeftMirrored:before{content:"\EA4C"}.ms-Icon--DoubleChevronLeftMedMirrored:before{content:"\EA4D"}.ms-Icon--HelpMirrored:before{content:"\EA51"}.ms-Icon--ListMirrored:before{content:"\EA55"}.ms-Icon--MailForwardMirrored:before{content:"\EA56"}.ms-Icon--MailReplyMirrored:before{content:"\EA57"}.ms-Icon--MailReplyAllMirrored:before{content:"\EA58"}.ms-Icon--OpenPaneMirrored:before{content:"\EA5B"}.ms-Icon--SendMirrored:before{content:"\EA63"}.ms-Icon--ShowResultsMirrored:before{content:"\EA65"}.ms-Icon--ThumbnailViewMirrored:before{content:"\EA67"}.ms-Icon--Devices3:before{content:"\EA6C"}.ms-Icon--Lightbulb:before{content:"\EA80"}.ms-Icon--StatusTriangle:before{content:"\EA82"}.ms-Icon--VolumeDisabled:before{content:"\EA85"}.ms-Icon--Puzzle:before{content:"\EA86"}.ms-Icon--EmojiNeutral:before{content:"\EA87"}.ms-Icon--EmojiDisappointed:before{content:"\EA88"}.ms-Icon--HomeSolid:before{content:"\EA8A"}.ms-Icon--Cocktails:before{content:"\EA9D"}.ms-Icon--Articles:before{content:"\EAC1"}.ms-Icon--Cycling:before{content:"\EAC7"}.ms-Icon--DietPlanNotebook:before{content:"\EAC8"}.ms-Icon--Pill:before{content:"\EACB"}.ms-Icon--Running:before{content:"\EADA"}.ms-Icon--Weights:before{content:"\EADB"}.ms-Icon--BarChart4:before{content:"\EAE7"}.ms-Icon--CirclePlus:before{content:"\EAEE"}.ms-Icon--Coffee:before{content:"\EAEF"}.ms-Icon--Cotton:before{content:"\EAF3"}.ms-Icon--Market:before{content:"\EAFC"}.ms-Icon--Money:before{content:"\EAFD"}.ms-Icon--PieDouble:before{content:"\EB04"}.ms-Icon--RemoveFilter:before{content:"\EB08"}.ms-Icon--StockDown:before{content:"\EB0F"}.ms-Icon--StockUp:before{content:"\EB11"}.ms-Icon--Cricket:before{content:"\EB1E"}.ms-Icon--Golf:before{content:"\EB1F"}.ms-Icon--Baseball:before{content:"\EB20"}.ms-Icon--Soccer:before{content:"\EB21"}.ms-Icon--MoreSports:before{content:"\EB22"}.ms-Icon--AutoRacing:before{content:"\EB24"}.ms-Icon--CollegeHoops:before{content:"\EB25"}.ms-Icon--CollegeFootball:before{content:"\EB26"}.ms-Icon--ProFootball:before{content:"\EB27"}.ms-Icon--ProHockey:before{content:"\EB28"}.ms-Icon--Rugby:before{content:"\EB2D"}.ms-Icon--Tennis:before{content:"\EB33"}.ms-Icon--Arrivals:before{content:"\EB34"}.ms-Icon--Design:before{content:"\EB3C"}.ms-Icon--Website:before{content:"\EB41"}.ms-Icon--Drop:before{content:"\EB42"}.ms-Icon--Snow:before{content:"\EB46"}.ms-Icon--BusSolid:before{content:"\EB47"}.ms-Icon--FerrySolid:before{content:"\EB48"}.ms-Icon--TrainSolid:before{content:"\EB4D"}.ms-Icon--Heart:before{content:"\EB51"}.ms-Icon--HeartFill:before{content:"\EB52"}.ms-Icon--Ticket:before{content:"\EB54"}.ms-Icon--Devices4:before{content:"\EB66"}.ms-Icon--AzureLogo:before{content:"\EB6A"}.ms-Icon--BingLogo:before{content:"\EB6B"}.ms-Icon--MSNLogo:before{content:"\EB6C"}.ms-Icon--OutlookLogo:before{content:"\EB6D"}.ms-Icon--OfficeLogo:before{content:"\EB6E"}.ms-Icon--SkypeLogo:before{content:"\EB6F"}.ms-Icon--Door:before{content:"\EB75"}.ms-Icon--EditMirrored:before{content:"\EB7E"}.ms-Icon--GiftCard:before{content:"\EB8E"}.ms-Icon--DoubleBookmark:before{content:"\EB8F"}.ms-Icon--StatusErrorFull:before{content:"\EB90"}.ms-Icon--Certificate:before{content:"\EB95"}.ms-Icon--Photo2:before{content:"\EB9F"}.ms-Icon--CloudDownload:before{content:"\EBD3"}.ms-Icon--WindDirection:before{content:"\EBE6"}.ms-Icon--Family:before{content:"\EBDA"}.ms-Icon--CSS:before{content:"\EBEF"}.ms-Icon--JS:before{content:"\EBF0"}.ms-Icon--ReminderGroup:before{content:"\EBF8"}.ms-Icon--Section:before{content:"\EC0C"}.ms-Icon--OneNoteLogo:before{content:"\EC0D"}.ms-Icon--ToggleFilled:before{content:"\EC11"}.ms-Icon--ToggleBorder:before{content:"\EC12"}.ms-Icon--SliderThumb:before{content:"\EC13"}.ms-Icon--ToggleThumb:before{content:"\EC14"}.ms-Icon--Documentation:before{content:"\EC17"}.ms-Icon--Badge:before{content:"\EC1B"}.ms-Icon--Giftbox:before{content:"\EC1F"}.ms-Icon--ExcelLogo:before{content:"\EC28"}.ms-Icon--WordLogo:before{content:"\EC29"}.ms-Icon--PowerPointLogo:before{content:"\EC2A"}.ms-Icon--Cafe:before{content:"\EC32"}.ms-Icon--SpeedHigh:before{content:"\EC4A"}.ms-Icon--MusicNote:before{content:"\EC4F"}.ms-Icon--EdgeLogo:before{content:"\EC60"}.ms-Icon--CompletedSolid:before{content:"\EC61"}.ms-Icon--AlbumRemove:before{content:"\EC62"}.ms-Icon--MessageFill:before{content:"\EC70"}.ms-Icon--TabletSelected:before{content:"\EC74"}.ms-Icon--MobileSelected:before{content:"\EC75"}.ms-Icon--LaptopSelected:before{content:"\EC76"}.ms-Icon--TVMonitorSelected:before{content:"\EC77"}.ms-Icon--DeveloperTools:before{content:"\EC7A"}.ms-Icon--InsertTextBox:before{content:"\EC7D"}.ms-Icon--LowerBrightness:before{content:"\EC8A"}.ms-Icon--CloudUpload:before{content:"\EC8E"}.ms-Icon--DateTime:before{content:"\EC92"}.ms-Icon--Event:before{content:"\ECA3"}.ms-Icon--Cake:before{content:"\ECA4"}.ms-Icon--Tiles:before{content:"\ECA5"}.ms-Icon--Org:before{content:"\ECA6"}.ms-Icon--PartyLeader:before{content:"\ECA7"}.ms-Icon--DRM:before{content:"\ECA8"}.ms-Icon--CloudAdd:before{content:"\ECA9"}.ms-Icon--AppIconDefault:before{content:"\ECAA"}.ms-Icon--Photo2Add:before{content:"\ECAB"}.ms-Icon--Photo2Remove:before{content:"\ECAC"}.ms-Icon--POI:before{content:"\ECAF"}.ms-Icon--FacebookLogo:before{content:"\ECB3"}.ms-Icon--AddTo:before{content:"\ECC8"}.ms-Icon--RadioBtnOn:before{content:"\ECCB"}.ms-Icon--Embed:before{content:"\ECCE"}.ms-Icon--VideoSolid:before{content:"\EA0C"}.ms-Icon--Teamwork:before{content:"\EA12"}.ms-Icon--PeopleAdd:before{content:"\EA15"}.ms-Icon--Glasses:before{content:"\EA16"}.ms-Icon--DateTime2:before{content:"\EA17"}.ms-Icon--Shield:before{content:"\EA18"}.ms-Icon--Header1:before{content:"\EA19"}.ms-Icon--PageAdd:before{content:"\EA1A"}.ms-Icon--NumberedList:before{content:"\EA1C"}.ms-Icon--PowerBILogo:before{content:"\EA1E"}.ms-Icon--Product:before{content:"\ECDC"}.ms-Icon--Blocked2:before{content:"\ECE4"}.ms-Icon--FangBody:before{content:"\ECEB"}.ms-Icon--Glimmer:before{content:"\ECF4"}.ms-Icon--ChatInviteFriend:before{content:"\ECFE"}.ms-Icon--SharepointLogo:before{content:"\ED18"}.ms-Icon--YammerLogo:before{content:"\ED19"}.ms-Icon--Hide:before{content:"\ED1A"}.ms-Icon--ReturnToSession:before{content:"\ED24"}.ms-Icon--OpenFolderHorizontal:before{content:"\ED25"}.ms-Icon--CalendarMirrored:before{content:"\ED28"}.ms-Icon--SwayLogo:before{content:"\ED29"}.ms-Icon--OutOfOffice:before{content:"\ED34"}.ms-Icon--Trophy:before{content:"\ED3F"}.ms-Icon--ReopenPages:before{content:"\ED50"}.ms-Icon--AADLogo:before{content:"\ED68"}.ms-Icon--AccessLogo:before{content:"\ED69"}.ms-Icon--AdminALogo:before{content:"\ED6A"}.ms-Icon--AdminCLogo:before{content:"\ED6B"}.ms-Icon--AdminDLogo:before{content:"\ED6C"}.ms-Icon--AdminELogo:before{content:"\ED6D"}.ms-Icon--AdminLLogo:before{content:"\ED6E"}.ms-Icon--AdminMLogo:before{content:"\ED6F"}.ms-Icon--AdminOLogo:before{content:"\ED70"}.ms-Icon--AdminPLogo:before{content:"\ED71"}.ms-Icon--AdminSLogo:before{content:"\ED72"}.ms-Icon--AdminYLogo:before{content:"\ED73"}.ms-Icon--AlchemyLogo:before{content:"\ED74"}.ms-Icon--BoxLogo:before{content:"\ED75"}.ms-Icon--DelveLogo:before{content:"\ED76"}.ms-Icon--DropboxLogo:before{content:"\ED77"}.ms-Icon--ExchangeLogo:before{content:"\ED78"}.ms-Icon--LyncLogo:before{content:"\ED79"}.ms-Icon--OfficeVideoLogo:before{content:"\ED7A"}.ms-Icon--ParatureLogo:before{content:"\ED7B"}.ms-Icon--SocialListeningLogo:before{content:"\ED7C"}.ms-Icon--VisioLogo:before{content:"\ED7D"}.ms-Icon--Balloons:before{content:"\ED7E"}.ms-Icon--Cat:before{content:"\ED7F"}.ms-Icon--MailAlert:before{content:"\ED80"}.ms-Icon--MailCheck:before{content:"\ED81"}.ms-Icon--MailLowImportance:before{content:"\ED82"}.ms-Icon--MailPause:before{content:"\ED83"}.ms-Icon--MailRepeat:before{content:"\ED84"}.ms-Icon--SecurityGroup:before{content:"\ED85"}.ms-Icon--Table:before{content:"\ED86"}.ms-Icon--VoicemailForward:before{content:"\ED87"}.ms-Icon--VoicemailReply:before{content:"\ED88"}.ms-Icon--Waffle:before{content:"\ED89"}.ms-Icon--RemoveEvent:before{content:"\ED8A"}.ms-Icon--EventInfo:before{content:"\ED8B"}.ms-Icon--ForwardEvent:before{content:"\ED8C"}.ms-Icon--WipePhone:before{content:"\ED8D"}.ms-Icon--AddOnlineMeeting:before{content:"\ED8E"}.ms-Icon--JoinOnlineMeeting:before{content:"\ED8F"}.ms-Icon--RemoveLink:before{content:"\ED90"}.ms-Icon--PeopleBlock:before{content:"\ED91"}.ms-Icon--PeopleRepeat:before{content:"\ED92"}.ms-Icon--PeopleAlert:before{content:"\ED93"}.ms-Icon--PeoplePause:before{content:"\ED94"}.ms-Icon--TransferCall:before{content:"\ED95"}.ms-Icon--AddPhone:before{content:"\ED96"}.ms-Icon--UnknownCall:before{content:"\ED97"}.ms-Icon--NoteReply:before{content:"\ED98"}.ms-Icon--NoteForward:before{content:"\ED99"}.ms-Icon--NotePinned:before{content:"\ED9A"}.ms-Icon--RemoveOccurrence:before{content:"\ED9B"}.ms-Icon--Timeline:before{content:"\ED9C"}.ms-Icon--EditNote:before{content:"\ED9D"}.ms-Icon--CircleHalfFull:before{content:"\ED9E"}.ms-Icon--Room:before{content:"\ED9F"}.ms-Icon--Unsubscribe:before{content:"\EDA0"}.ms-Icon--Subscribe:before{content:"\EDA1"}.ms-Icon--RecurringTask:before{content:"\EDB2"}.ms-Icon--TaskManager:before{content:"\EDB7"}.ms-Icon--TaskManagerMirrored:before{content:"\EDB8"}.ms-Icon--Combine:before{content:"\EDBB"}.ms-Icon--Split:before{content:"\EDBC"}.ms-Icon--DoubleChevronUp:before{content:"\EDBD"}.ms-Icon--DoubleChevronLeft:before{content:"\EDBE"}.ms-Icon--DoubleChevronRight:before{content:"\EDBF"}.ms-Icon--Ascending:before{content:"\EDC0"}.ms-Icon--Descending:before{content:"\EDC1"}.ms-Icon--TextBox:before{content:"\EDC2"}.ms-Icon--TextField:before{content:"\EDC3"}.ms-Icon--NumberField:before{content:"\EDC4"}.ms-Icon--Dropdown:before{content:"\EDC5"}.ms-Icon--BookingsLogo:before{content:"\EDC7"}.ms-Icon--ClassNotebookLogo:before{content:"\EDC8"}.ms-Icon--CollabsDBLogo:before{content:"\EDC9"}.ms-Icon--DelveAnalyticsLogo:before{content:"\EDCA"}.ms-Icon--DocsLogo:before{content:"\EDCB"}.ms-Icon--Dynamics365Logo:before{content:"\EDCC"}.ms-Icon--DynamicSMBLogo:before{content:"\EDCD"}.ms-Icon--OfficeAssistantLogo:before{content:"\EDCE"}.ms-Icon--OfficeStoreLogo:before{content:"\EDCF"}.ms-Icon--OneNoteEduLogo:before{content:"\EDD0"}.ms-Icon--Planner:before{content:"\EDD1"}.ms-Icon--PowerApps:before{content:"\EDD2"}.ms-Icon--Suitcase:before{content:"\EDD3"}.ms-Icon--ProjectLogo:before{content:"\EDD4"}.ms-Icon--CaretLeft8:before{content:"\EDD5"}.ms-Icon--CaretRight8:before{content:"\EDD6"}.ms-Icon--CaretUp8:before{content:"\EDD7"}.ms-Icon--CaretDown8:before{content:"\EDD8"}.ms-Icon--CaretLeftSolid8:before{content:"\EDD9"}.ms-Icon--CaretRightSolid8:before{content:"\EDDA"}.ms-Icon--CaretUpSolid8:before{content:"\EDDB"}.ms-Icon--CaretDownSolid8:before{content:"\EDDC"}.ms-Icon--ClearFormatting:before{content:"\EDDD"}.ms-Icon--Superscript:before{content:"\EDDE"}.ms-Icon--Subscript:before{content:"\EDDF"}.ms-Icon--Strikethrough:before{content:"\EDE0"}.ms-Icon--SingleBookmark:before{content:"\EDFF"}.ms-Icon--DoubleChevronDown:before{content:"\EE04"}.ms-Icon--ReplyAll:before{content:"\EE0A"}.ms-Icon--GoogleDriveLogo:before{content:"\EE0B"}.ms-Icon--Questionnaire:before{content:"\EE19"}.ms-Icon--ReplyMirrored:before{content:"\EE35"}.ms-Icon--ReplyAllMirrored:before{content:"\EE36"}.ms-Icon--AddGroup:before{content:"\EE3D"}.ms-Icon--QuestionnaireMirrored:before{content:"\EE4B"}.ms-Icon--TemporaryUser:before{content:"\EE58"}.ms-Icon--GroupedDescending:before{content:"\EE66"}.ms-Icon--GroupedAscending:before{content:"\EE67"}.ms-Icon--SortUp:before{content:"\EE68"}.ms-Icon--SortDown:before{content:"\EE69"}.ms-Icon--AwayStatus:before{content:"\EE6A"}.ms-Icon--SyncToPC:before{content:"\EE6E"}.ms-Icon--AustralianRules:before{content:"\EE70"}.ms-Icon--DateTimeMirrored:before{content:"\EE93"}.ms-Icon--DoubleChevronUp12:before{content:"\EE96"}.ms-Icon--DoubleChevronDown12:before{content:"\EE97"}.ms-Icon--DoubleChevronLeft12:before{content:"\EE98"}.ms-Icon--DoubleChevronRight12:before{content:"\EE99"}.ms-Icon--CalendarAgenda:before{content:"\EE9A"}.ms-Icon--AddEvent:before{content:"\EEB5"}.ms-Icon--AssetLibrary:before{content:"\EEB6"}.ms-Icon--DataConnectionLibrary:before{content:"\EEB7"}.ms-Icon--DocLibrary:before{content:"\EEB8"}.ms-Icon--FormLibrary:before{content:"\EEB9"}.ms-Icon--FormLibraryMirrored:before{content:"\EEBA"}.ms-Icon--ReportLibrary:before{content:"\EEBB"}.ms-Icon--ReportLibraryMirrored:before{content:"\EEBC"}.ms-Icon--ContactCard:before{content:"\EEBD"}.ms-Icon--CustomList:before{content:"\EEBE"}.ms-Icon--CustomListMirrored:before{content:"\EEBF"}.ms-Icon--IssueTracking:before{content:"\EEC0"}.ms-Icon--IssueTrackingMirrored:before{content:"\EEC1"}.ms-Icon--PictureLibrary:before{content:"\EEC2"}.ms-Icon--AppForOfficeLogo:before{content:"\EEC7"}.ms-Icon--OfflineOneDriveParachute:before{content:"\EEC8"}.ms-Icon--OfflineOneDriveParachuteDisabled:before{content:"\EEC9"}.ms-Icon--LargeGrid:before{content:"\EECB"}.ms-Icon--TriangleSolidUp12:before{content:"\EECC"}.ms-Icon--TriangleSolidDown12:before{content:"\EECD"}.ms-Icon--TriangleSolidLeft12:before{content:"\EECE"}.ms-Icon--TriangleSolidRight12:before{content:"\EECF"}.ms-Icon--TriangleUp12:before{content:"\EED0"}.ms-Icon--TriangleDown12:before{content:"\EED1"}.ms-Icon--TriangleLeft12:before{content:"\EED2"}.ms-Icon--TriangleRight12:before{content:"\EED3"}.ms-Icon--ArrowUpRight8:before{content:"\EED4"}.ms-Icon--ArrowDownRight8:before{content:"\EED5"}.ms-Icon--DocumentSet:before{content:"\EED6"}.ms-Icon--DelveAnalytics:before{content:"\EEEE"}.ms-Icon--ArrowUpRightMirrored8:before{content:"\EEEF"}.ms-Icon--ArrowDownRightMirrored8:before{content:"\EEF0"}.ms-Icon--OneDriveAdd:before{content:"\EF32"}.ms-Icon--Header2:before{content:"\EF36"}.ms-Icon--Header3:before{content:"\EF37"}.ms-Icon--Header4:before{content:"\EF38"}.ms-Icon--MarketDown:before{content:"\EF42"}.ms-Icon--CalendarWorkWeek:before{content:"\EF51"}.ms-Icon--SidePanel:before{content:"\EF52"}.ms-Icon--GlobeFavorite:before{content:"\EF53"}.ms-Icon--CaretTopLeftSolid8:before{content:"\EF54"}.ms-Icon--CaretTopRightSolid8:before{content:"\EF55"}.ms-Icon--ViewAll2:before{content:"\EF56"}.ms-Icon--DocumentReply:before{content:"\EF57"}.ms-Icon--PlayerSettings:before{content:"\EF58"}.ms-Icon--ReceiptForward:before{content:"\EF59"}.ms-Icon--ReceiptReply:before{content:"\EF5A"}.ms-Icon--ReceiptCheck:before{content:"\EF5B"}.ms-Icon--Fax:before{content:"\EF5C"}.ms-Icon--RecurringEvent:before{content:"\EF5D"}.ms-Icon--ReplyAlt:before{content:"\EF5E"}.ms-Icon--ReplyAllAlt:before{content:"\EF5F"}.ms-Icon--EditStyle:before{content:"\EF60"}.ms-Icon--EditMail:before{content:"\EF61"}.ms-Icon--Lifesaver:before{content:"\EF62"}.ms-Icon--LifesaverLock:before{content:"\EF63"}.ms-Icon--InboxCheck:before{content:"\EF64"}.ms-Icon--FolderSearch:before{content:"\EF65"}.ms-Icon--CollapseMenu:before{content:"\EF66"}.ms-Icon--ExpandMenu:before{content:"\EF67"}.ms-Icon--Boards:before{content:"\EF68"}.ms-Icon--SunAdd:before{content:"\EF69"}.ms-Icon--SunQuestionMark:before{content:"\EF6A"}.ms-Icon--LandscapeOrientation:before{content:"\EF6B"}.ms-Icon--DocumentSearch:before{content:"\EF6C"}.ms-Icon--PublicCalendar:before{content:"\EF6D"}.ms-Icon--PublicContactCard:before{content:"\EF6E"}.ms-Icon--PublicEmail:before{content:"\EF6F"}.ms-Icon--PublicFolder:before{content:"\EF70"}.ms-Icon--WordDocument:before{content:"\EF71"}.ms-Icon--PowerPointDocument:before{content:"\EF72"}.ms-Icon--ExcelDocument:before{content:"\EF73"}.ms-Icon--GroupedList:before{content:"\EF74"}.ms-Icon--ClassroomLogo:before{content:"\EF75"}.ms-Icon--Sections:before{content:"\EF76"}.ms-Icon--EditPhoto:before{content:"\EF77"}.ms-Icon--Starburst:before{content:"\EF78"}.ms-Icon--ShareiOS:before{content:"\EF79"}.ms-Icon--AirTickets:before{content:"\EF7A"}.ms-Icon--PencilReply:before{content:"\EF7B"}.ms-Icon--Tiles2:before{content:"\EF7C"}.ms-Icon--SkypeCircleCheck:before{content:"\EF7D"}.ms-Icon--SkypeCircleClock:before{content:"\EF7E"}.ms-Icon--SkypeCircleMinus:before{content:"\EF7F"}.ms-Icon--SkypeCheck:before{content:"\EF80"}.ms-Icon--SkypeClock:before{content:"\EF81"}.ms-Icon--SkypeMinus:before{content:"\EF82"}.ms-Icon--SkypeMessage:before{content:"\EF83"}.ms-Icon--ClosedCaption:before{content:"\EF84"}.ms-Icon--ATPLogo:before{content:"\EF85"}.ms-Icon--OfficeFormLogo:before{content:"\EF86"}.ms-Icon--RecycleBin:before{content:"\EF87"}.ms-Icon--EmptyRecycleBin:before{content:"\EF88"}.ms-Icon--Hide2:before{content:"\EF89"}.ms-Icon--iOSAppStoreLogo:before{content:"\EF8A"}.ms-Icon--AndroidLogo:before{content:"\EF8B"}.ms-Icon--Breadcrumb:before{content:"\EF8C"}.ms-Icon--ClearFilter:before{content:"\EF8F"}.ms-Icon--Flow:before{content:"\EF90"}.ms-Icon--PageCheckedOut:before{content:"\F02C"}.ms-Icon--SetAction:before{content:"\F071"}.ms-Icon--PowerAppsLogo:before{content:"\F091"}.ms-Icon--PowerApps2Logo:before{content:"\F092"}.ms-Icon--FabricAssetLibrary:before{content:"\F09C"}.ms-Icon--FabricDataConnectionLibrary:before{content:"\F09D"}.ms-Icon--FabricDocLibrary:before{content:"\F09E"}.ms-Icon--FabricFormLibrary:before{content:"\F09F"}.ms-Icon--FabricFormLibraryMirrored:before{content:"\F0A0"}.ms-Icon--FabricReportLibrary:before{content:"\F0A1"}.ms-Icon--FabricReportLibraryMirrored:before{content:"\F0A2"}.ms-Icon--FabricPublicFolder:before{content:"\F0A3"}.ms-Icon--FabricFolderSearch:before{content:"\F0A4"}.ms-Icon--FabricMovetoFolder:before{content:"\F0A5"}.ms-Icon--FabricUnsyncFolder:before{content:"\F0A6"}.ms-Icon--FabricSyncFolder:before{content:"\F0A7"}.ms-Icon--FabricOpenFolderHorizontal:before{content:"\F0A8"}.ms-Icon--FabricFolder:before{content:"\F0A9"}.ms-Icon--FabricFolderFill:before{content:"\F0AA"}.ms-Icon--FabricNewFolder:before{content:"\F0AB"}.ms-Icon--FabricPictureLibrary:before{content:"\F0AC"}.ms-Icon--AddFavorite:before{content:"\F0C8"}.ms-Icon--AddFavoriteFill:before{content:"\F0C9"}.ms-Icon--BufferTimeBefore:before{content:"\F0CF"}.ms-Icon--BufferTimeAfter:before{content:"\F0D0"}.ms-Icon--BufferTimeBoth:before{content:"\F0D1"}.ms-Icon--PageCheckedin:before{content:"\F104"}.ms-Icon--CaretBottomLeftSolid8:before{content:"\F121"}.ms-Icon--CaretBottomRightSolid8:before{content:"\F122"}.ms-Icon--FolderHorizontal:before{content:"\F12B"}.ms-Icon--MicrosoftStaffhubLogo:before{content:"\F130"}.ms-Icon--CaloriesAdd:before{content:"\F172"}.ms-Icon--BranchFork:before{content:"\F173"}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x1.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x1.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x1.png)}.ms-BrandIcon--Icon16{width:16px;height:16px}html[dir] .ms-BrandIcon--Icon16{background-size:100% 100%}.ms-BrandIcon--Icon48{width:48px;height:48px}html[dir] .ms-BrandIcon--Icon48{background-size:100% 100%}.ms-BrandIcon--Icon96{width:96px;height:96px}html[dir] .ms-BrandIcon--Icon96{background-size:100% 100%}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x1_5.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x1_5.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x1_5.png)}}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:192dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x2.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x2.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x2.png)}}@media only screen and (-webkit-min-device-pixel-ratio:3),only screen and (min-resolution:288dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x3.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x3.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x3.png)}}.ms-u-slideRightIn10{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn10{animation-name:fadeIn,slideRightIn10}html[dir=rtl] .ms-u-slideRightIn10{animation-name:fadeIn-rtl,slideRightIn10-rtl}@keyframes slideRightIn10-rtl{0%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn10{0%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn20{animation-name:fadeIn,slideRightIn20}html[dir=rtl] .ms-u-slideRightIn20{animation-name:fadeIn-rtl,slideRightIn20-rtl}@keyframes slideRightIn20-rtl{0%{transform:translate3d(20px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn20{0%{transform:translate3d(-20px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn40{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn40{animation-name:fadeIn,slideRightIn40}html[dir=rtl] .ms-u-slideRightIn40{animation-name:fadeIn-rtl,slideRightIn40-rtl}@keyframes slideRightIn40-rtl{0%{transform:translate3d(40px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn40{0%{transform:translate3d(-40px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn10{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn10{animation-name:fadeIn,slideLeftIn10}html[dir=rtl] .ms-u-slideLeftIn10{animation-name:fadeIn-rtl,slideLeftIn10-rtl}@keyframes slideLeftIn10-rtl{0%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn10{0%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn20{animation-name:fadeIn,slideLeftIn20}html[dir=rtl] .ms-u-slideLeftIn20{animation-name:fadeIn-rtl,slideLeftIn20-rtl}@keyframes slideLeftIn20-rtl{0%{transform:translate3d(-20px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn20{0%{transform:translate3d(20px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn40{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn40{animation-name:fadeIn,slideLeftIn40}html[dir=rtl] .ms-u-slideLeftIn40{animation-name:fadeIn-rtl,slideLeftIn40-rtl}@keyframes slideLeftIn40-rtl{0%{transform:translate3d(-40px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn40{0%{transform:translate3d(40px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn400{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn400{animation-name:fadeIn,slideRightIn400}html[dir=rtl] .ms-u-slideRightIn400{animation-name:fadeIn-rtl,slideRightIn400-rtl}@keyframes slideRightIn400-rtl{0%{transform:translate3d(400px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn400{0%{transform:translate3d(-400px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn400{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn400{animation-name:fadeIn,slideLeft400}html[dir=rtl] .ms-u-slideLeftIn400{animation-name:fadeIn-rtl,slideLeft400-rtl}@keyframes slideLeft400-rtl{0%{transform:translate3d(-400px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeft400{0%{transform:translate3d(400px,0,0)}to{transform:translateZ(0)}}.ms-u-slideUpIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpIn20{animation-name:fadeIn,slideUpIn20}html[dir=rtl] .ms-u-slideUpIn20{animation-name:fadeIn-rtl,slideUpIn20-rtl}@keyframes slideUpIn20-rtl{0%{transform:translate3d(0,20px,0)}to{transform:translateZ(0)}}@keyframes slideUpIn20{0%{transform:translate3d(0,20px,0)}to{transform:translateZ(0)}}.ms-u-slideUpIn10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpIn10{animation-name:fadeIn,slideUpIn10}html[dir=rtl] .ms-u-slideUpIn10{animation-name:fadeIn-rtl,slideUpIn10-rtl}@keyframes slideUpIn10-rtl{0%{transform:translate3d(0,10px,0)}to{transform:translateZ(0)}}@keyframes slideUpIn10{0%{transform:translate3d(0,10px,0)}to{transform:translateZ(0)}}.ms-u-slideDownIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownIn20{animation-name:fadeIn,slideDownIn20}html[dir=rtl] .ms-u-slideDownIn20{animation-name:fadeIn-rtl,slideDownIn20-rtl}@keyframes slideDownIn20-rtl{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}@keyframes slideDownIn20{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}.ms-u-slideDownIn10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownIn10{animation-name:fadeIn,slideDownIn10}html[dir=rtl] .ms-u-slideDownIn10{animation-name:fadeIn-rtl,slideDownIn10-rtl}@keyframes slideDownIn10-rtl{0%{transform:translate3d(0,-10px,0)}to{transform:translateZ(0)}}@keyframes slideDownIn10{0%{transform:translate3d(0,-10px,0)}to{transform:translateZ(0)}}.ms-u-slideRightOut40{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightOut40{animation-name:fadeOut,slideRightOut40}html[dir=rtl] .ms-u-slideRightOut40{animation-name:fadeOut-rtl,slideRightOut40-rtl}@keyframes slideRightOut40-rtl{0%{transform:translateZ(0)}to{transform:translate3d(-40px,0,0)}}@keyframes slideRightOut40{0%{transform:translateZ(0)}to{transform:translate3d(40px,0,0)}}.ms-u-slideLeftOut40{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftOut40{animation-name:fadeOut,slideLeftOut40}html[dir=rtl] .ms-u-slideLeftOut40{animation-name:fadeOut-rtl,slideLeftOut40-rtl}@keyframes slideLeftOut40-rtl{0%{transform:translateZ(0)}to{transform:translate3d(40px,0,0)}}@keyframes slideLeftOut40{0%{transform:translateZ(0)}to{transform:translate3d(-40px,0,0)}}.ms-u-slideRightOut400{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightOut400{animation-name:fadeOut,slideRightOut400}html[dir=rtl] .ms-u-slideRightOut400{animation-name:fadeOut-rtl,slideRightOut400-rtl}@keyframes slideRightOut400-rtl{0%{transform:translateZ(0)}to{transform:translate3d(-400px,0,0)}}@keyframes slideRightOut400{0%{transform:translateZ(0)}to{transform:translate3d(400px,0,0)}}.ms-u-slideLeftOut400{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftOut400{animation-name:fadeOut,slideLeftOut400}html[dir=rtl] .ms-u-slideLeftOut400{animation-name:fadeOut-rtl,slideLeftOut400-rtl}@keyframes slideLeftOut400-rtl{0%{transform:translateZ(0)}to{transform:translate3d(400px,0,0)}}@keyframes slideLeftOut400{0%{transform:translateZ(0)}to{transform:translate3d(-400px,0,0)}}.ms-u-slideUpOut20{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpOut20{animation-name:fadeOut,slideUpOut20}html[dir=rtl] .ms-u-slideUpOut20{animation-name:fadeOut-rtl,slideUpOut20-rtl}@keyframes slideUpOut20-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}@keyframes slideUpOut20{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}.ms-u-slideUpOut10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpOut10{animation-name:fadeOut,slideUpOut10}html[dir=rtl] .ms-u-slideUpOut10{animation-name:fadeOut-rtl,slideUpOut10-rtl}@keyframes slideUpOut10-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,-10px,0)}}@keyframes slideUpOut10{0%{transform:translateZ(0)}to{transform:translate3d(0,-10px,0)}}.ms-u-slideDownOut20{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownOut20{animation-name:fadeOut,slideDownOut20}html[dir=rtl] .ms-u-slideDownOut20{animation-name:fadeOut-rtl,slideDownOut20-rtl}@keyframes slideDownOut20-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,20px,0)}}@keyframes slideDownOut20{0%{transform:translateZ(0)}to{transform:translate3d(0,20px,0)}}.ms-u-slideDownOut10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownOut10{animation-name:fadeOut,slideDownOut10}html[dir=rtl] .ms-u-slideDownOut10{animation-name:fadeOut-rtl,slideDownOut10-rtl}@keyframes slideDownOut10-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,10px,0)}}@keyframes slideDownOut10{0%{transform:translateZ(0)}to{transform:translate3d(0,10px,0)}}.ms-u-scaleUpIn100{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleUpIn100{animation-name:fadeIn,scaleUp100}html[dir=rtl] .ms-u-scaleUpIn100{animation-name:fadeIn-rtl,scaleUp100-rtl}@keyframes scaleUp100-rtl{0%{transform:scale3d(.98,.98,1)}to{transform:scaleX(1)}}@keyframes scaleUp100{0%{transform:scale3d(.98,.98,1)}to{transform:scaleX(1)}}.ms-u-scaleDownIn100{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleDownIn100{animation-name:fadeIn,scaleDown100}html[dir=rtl] .ms-u-scaleDownIn100{animation-name:fadeIn-rtl,scaleDown100-rtl}@keyframes scaleDown100-rtl{0%{transform:scale3d(1.03,1.03,1)}to{transform:scaleX(1)}}@keyframes scaleDown100{0%{transform:scale3d(1.03,1.03,1)}to{transform:scaleX(1)}}.ms-u-scaleUpOut103{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleUpOut103{animation-name:fadeOut,scaleUp103}html[dir=rtl] .ms-u-scaleUpOut103{animation-name:fadeOut-rtl,scaleUp103-rtl}@keyframes scaleUp103-rtl{0%{transform:scaleX(1)}to{transform:scale3d(1.03,1.03,1)}}@keyframes scaleUp103{0%{transform:scaleX(1)}to{transform:scale3d(1.03,1.03,1)}}.ms-u-scaleDownOut98{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleDownOut98{animation-name:fadeOut,scaleDown98}html[dir=rtl] .ms-u-scaleDownOut98{animation-name:fadeOut-rtl,scaleDown98-rtl}@keyframes scaleDown98-rtl{0%{transform:scaleX(1)}to{transform:scale3d(.98,.98,1)}}@keyframes scaleDown98{0%{transform:scaleX(1)}to{transform:scale3d(.98,.98,1)}}.ms-u-fadeIn100,.ms-u-fadeIn400{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both}html[dir=ltr] .ms-u-fadeIn100,html[dir=ltr] .ms-u-fadeIn400{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn100,html[dir=rtl] .ms-u-fadeIn400{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn100{animation-duration:.167s}.ms-u-fadeIn200{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.267s}html[dir=ltr] .ms-u-fadeIn200{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn200{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn500{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.467s}html[dir=ltr] .ms-u-fadeIn500{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn500{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}@keyframes fadeIn-rtl{0%{opacity:0;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:1}}@keyframes fadeIn{0%{opacity:0;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:1}}.ms-u-fadeOut100,.ms-u-fadeOut400{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both}html[dir=ltr] .ms-u-fadeOut100,html[dir=ltr] .ms-u-fadeOut400{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut100,html[dir=rtl] .ms-u-fadeOut400{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut100{animation-duration:.1s}.ms-u-fadeOut200{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.167s}html[dir=ltr] .ms-u-fadeOut200{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut200{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut500{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.467s}html[dir=ltr] .ms-u-fadeOut500{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut500{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}@keyframes fadeOut-rtl{0%{opacity:1;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:0}}@keyframes fadeOut{0%{opacity:1;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:0}}.ms-u-rotate90deg{-webkit-animation-duration:.1s;-moz-animation-duration:.1s;-ms-animation-duration:.1s;-o-animation-duration:.1s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-rotate90deg{animation-name:rotate90}html[dir=rtl] .ms-u-rotate90deg{animation-name:rotate90-rtl}@keyframes rotate90-rtl{0%{transform:rotate(0deg)}to{transform:rotate(-90deg)}}@keyframes rotate90{0%{transform:rotate(0deg)}to{transform:rotate(90deg)}}.ms-u-rotateN90deg{-webkit-animation-duration:.1s;-moz-animation-duration:.1s;-ms-animation-duration:.1s;-o-animation-duration:.1s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-rotateN90deg{animation-name:rotateN90}html[dir=rtl] .ms-u-rotateN90deg{animation-name:rotateN90-rtl}@keyframes rotateN90-rtl{0%{transform:rotate(-90deg)}to{transform:rotate(0deg)}}@keyframes rotateN90{0%{transform:rotate(90deg)}to{transform:rotate(0deg)}}html[dir] .ms-u-expandCollapse400{transition:height .367s cubic-bezier(.1,.25,.75,.9)}html[dir] .ms-u-expandCollapse200{transition:height .167s cubic-bezier(.1,.25,.75,.9)}html[dir] .ms-u-expandCollapse100{transition:height .1s cubic-bezier(.1,.25,.75,.9)}.ms-u-delay100{animation-delay:.167s}.ms-u-delay200{animation-delay:.267s}@media (max-width:479px){.ms-u-hiddenLgDown,.ms-u-hiddenMdDown,.ms-u-hiddenSm,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:480px) and (max-width:639px){.ms-u-hiddenLgDown,.ms-u-hiddenMd,.ms-u-hiddenMdDown,.ms-u-hiddenMdUp,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:640px) and (max-width:1023px){.ms-u-hiddenLg,.ms-u-hiddenLgDown,.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:1024px) and (max-width:1365px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXl,.ms-u-hiddenXlDown,.ms-u-hiddenXlUp,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:1366px) and (max-width:1919px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlUp,.ms-u-hiddenXxl,.ms-u-hiddenXxlDown,.ms-u-hiddenXxlUp{display:none!important}}@media (min-width:1920px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlUp,.ms-u-hiddenXxlUp,.ms-u-hiddenXxxl{display:none!important}}.ms-u-sm12{width:100%}.ms-u-sm11{width:91.66666666666666%}.ms-u-sm10{width:83.33333333333334%}.ms-u-sm9{width:75%}.ms-u-sm8{width:66.66666666666666%}.ms-u-sm7{width:58.333333333333336%}.ms-u-sm6{width:50%}.ms-u-sm5{width:41.66666666666667%}.ms-u-sm4{width:33.33333333333333%}.ms-u-sm3{width:25%}.ms-u-sm2{width:16.666666666666664%}.ms-u-sm1{width:8.333333333333332%}html[dir=ltr] .ms-u-smPull12{right:100%}html[dir=rtl] .ms-u-smPull12{left:100%}html[dir=ltr] .ms-u-smPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-smPull11{left:91.66666666666666%}html[dir=ltr] .ms-u-smPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-smPull10{left:83.33333333333334%}html[dir=ltr] .ms-u-smPull9{right:75%}html[dir=rtl] .ms-u-smPull9{left:75%}html[dir=ltr] .ms-u-smPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-smPull8{left:66.66666666666666%}html[dir=ltr] .ms-u-smPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-smPull7{left:58.333333333333336%}html[dir=ltr] .ms-u-smPull6{right:50%}html[dir=rtl] .ms-u-smPull6{left:50%}html[dir=ltr] .ms-u-smPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-smPull5{left:41.66666666666667%}html[dir=ltr] .ms-u-smPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-smPull4{left:33.33333333333333%}html[dir=ltr] .ms-u-smPull3{right:25%}html[dir=rtl] .ms-u-smPull3{left:25%}html[dir=ltr] .ms-u-smPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-smPull2{left:16.666666666666664%}html[dir=ltr] .ms-u-smPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-smPull1{left:8.333333333333332%}html[dir=ltr] .ms-u-smPull0{right:auto}html[dir=rtl] .ms-u-smPull0{left:auto}html[dir=ltr] .ms-u-smPush12{left:100%}html[dir=rtl] .ms-u-smPush12{right:100%}html[dir=ltr] .ms-u-smPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-smPush11{right:91.66666666666666%}html[dir=ltr] .ms-u-smPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-smPush10{right:83.33333333333334%}html[dir=ltr] .ms-u-smPush9{left:75%}html[dir=rtl] .ms-u-smPush9{right:75%}html[dir=ltr] .ms-u-smPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-smPush8{right:66.66666666666666%}html[dir=ltr] .ms-u-smPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-smPush7{right:58.333333333333336%}html[dir=ltr] .ms-u-smPush6{left:50%}html[dir=rtl] .ms-u-smPush6{right:50%}html[dir=ltr] .ms-u-smPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-smPush5{right:41.66666666666667%}html[dir=ltr] .ms-u-smPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-smPush4{right:33.33333333333333%}html[dir=ltr] .ms-u-smPush3{left:25%}html[dir=rtl] .ms-u-smPush3{right:25%}html[dir=ltr] .ms-u-smPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-smPush2{right:16.666666666666664%}html[dir=ltr] .ms-u-smPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-smPush1{right:8.333333333333332%}html[dir=ltr] .ms-u-smPush0{left:auto}html[dir=rtl] .ms-u-smPush0{right:auto}html[dir=ltr] .ms-u-smOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-smOffset11{margin-right:91.66666666666666%}html[dir=ltr] .ms-u-smOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-smOffset10{margin-right:83.33333333333334%}html[dir=ltr] .ms-u-smOffset9{margin-left:75%}html[dir=rtl] .ms-u-smOffset9{margin-right:75%}html[dir=ltr] .ms-u-smOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-smOffset8{margin-right:66.66666666666666%}html[dir=ltr] .ms-u-smOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-smOffset7{margin-right:58.333333333333336%}html[dir=ltr] .ms-u-smOffset6{margin-left:50%}html[dir=rtl] .ms-u-smOffset6{margin-right:50%}html[dir=ltr] .ms-u-smOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-smOffset5{margin-right:41.66666666666667%}html[dir=ltr] .ms-u-smOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-smOffset4{margin-right:33.33333333333333%}html[dir=ltr] .ms-u-smOffset3{margin-left:25%}html[dir=rtl] .ms-u-smOffset3{margin-right:25%}html[dir=ltr] .ms-u-smOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-smOffset2{margin-right:16.666666666666664%}html[dir=ltr] .ms-u-smOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-smOffset1{margin-right:8.333333333333332%}html[dir=ltr] .ms-u-smOffset0{margin-left:0}html[dir=rtl] .ms-u-smOffset0{margin-right:0}@media (min-width:480px){.ms-u-md12{width:100%}}@media (min-width:480px){.ms-u-md11{width:91.66666666666666%}}@media (min-width:480px){.ms-u-md10{width:83.33333333333334%}}@media (min-width:480px){.ms-u-md9{width:75%}}@media (min-width:480px){.ms-u-md8{width:66.66666666666666%}}@media (min-width:480px){.ms-u-md7{width:58.333333333333336%}}@media (min-width:480px){.ms-u-md6{width:50%}}@media (min-width:480px){.ms-u-md5{width:41.66666666666667%}}@media (min-width:480px){.ms-u-md4{width:33.33333333333333%}}@media (min-width:480px){.ms-u-md3{width:25%}}@media (min-width:480px){.ms-u-md2{width:16.666666666666664%}}@media (min-width:480px){.ms-u-md1{width:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull12{right:100%}html[dir=rtl] .ms-u-mdPull12{left:100%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-mdPull11{left:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-mdPull10{left:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull9{right:75%}html[dir=rtl] .ms-u-mdPull9{left:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-mdPull8{left:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-mdPull7{left:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull6{right:50%}html[dir=rtl] .ms-u-mdPull6{left:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-mdPull5{left:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-mdPull4{left:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull3{right:25%}html[dir=rtl] .ms-u-mdPull3{left:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-mdPull2{left:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-mdPull1{left:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull0{right:auto}html[dir=rtl] .ms-u-mdPull0{left:auto}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush12{left:100%}html[dir=rtl] .ms-u-mdPush12{right:100%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-mdPush11{right:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-mdPush10{right:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush9{left:75%}html[dir=rtl] .ms-u-mdPush9{right:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-mdPush8{right:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-mdPush7{right:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush6{left:50%}html[dir=rtl] .ms-u-mdPush6{right:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-mdPush5{right:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-mdPush4{right:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush3{left:25%}html[dir=rtl] .ms-u-mdPush3{right:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-mdPush2{right:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-mdPush1{right:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush0{left:auto}html[dir=rtl] .ms-u-mdPush0{right:auto}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-mdOffset11{margin-right:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-mdOffset10{margin-right:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset9{margin-left:75%}html[dir=rtl] .ms-u-mdOffset9{margin-right:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-mdOffset8{margin-right:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-mdOffset7{margin-right:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset6{margin-left:50%}html[dir=rtl] .ms-u-mdOffset6{margin-right:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-mdOffset5{margin-right:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-mdOffset4{margin-right:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset3{margin-left:25%}html[dir=rtl] .ms-u-mdOffset3{margin-right:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-mdOffset2{margin-right:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-mdOffset1{margin-right:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset0{margin-left:0}html[dir=rtl] .ms-u-mdOffset0{margin-right:0}}@media (min-width:640px){.ms-u-lg12{width:100%}}@media (min-width:640px){.ms-u-lg11{width:91.66666666666666%}}@media (min-width:640px){.ms-u-lg10{width:83.33333333333334%}}@media (min-width:640px){.ms-u-lg9{width:75%}}@media (min-width:640px){.ms-u-lg8{width:66.66666666666666%}}@media (min-width:640px){.ms-u-lg7{width:58.333333333333336%}}@media (min-width:640px){.ms-u-lg6{width:50%}}@media (min-width:640px){.ms-u-lg5{width:41.66666666666667%}}@media (min-width:640px){.ms-u-lg4{width:33.33333333333333%}}@media (min-width:640px){.ms-u-lg3{width:25%}}@media (min-width:640px){.ms-u-lg2{width:16.666666666666664%}}@media (min-width:640px){.ms-u-lg1{width:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull12{right:100%}html[dir=rtl] .ms-u-lgPull12{left:100%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-lgPull11{left:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-lgPull10{left:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull9{right:75%}html[dir=rtl] .ms-u-lgPull9{left:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-lgPull8{left:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-lgPull7{left:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull6{right:50%}html[dir=rtl] .ms-u-lgPull6{left:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-lgPull5{left:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-lgPull4{left:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull3{right:25%}html[dir=rtl] .ms-u-lgPull3{left:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-lgPull2{left:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-lgPull1{left:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull0{right:auto}html[dir=rtl] .ms-u-lgPull0{left:auto}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush12{left:100%}html[dir=rtl] .ms-u-lgPush12{right:100%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-lgPush11{right:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-lgPush10{right:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush9{left:75%}html[dir=rtl] .ms-u-lgPush9{right:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-lgPush8{right:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-lgPush7{right:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush6{left:50%}html[dir=rtl] .ms-u-lgPush6{right:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-lgPush5{right:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-lgPush4{right:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush3{left:25%}html[dir=rtl] .ms-u-lgPush3{right:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-lgPush2{right:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-lgPush1{right:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush0{left:auto}html[dir=rtl] .ms-u-lgPush0{right:auto}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-lgOffset11{margin-right:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-lgOffset10{margin-right:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset9{margin-left:75%}html[dir=rtl] .ms-u-lgOffset9{margin-right:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-lgOffset8{margin-right:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-lgOffset7{margin-right:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset6{margin-left:50%}html[dir=rtl] .ms-u-lgOffset6{margin-right:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-lgOffset5{margin-right:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-lgOffset4{margin-right:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset3{margin-left:25%}html[dir=rtl] .ms-u-lgOffset3{margin-right:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-lgOffset2{margin-right:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-lgOffset1{margin-right:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset0{margin-left:0}html[dir=rtl] .ms-u-lgOffset0{margin-right:0}}@media (min-width:1024px){.ms-u-xl12{width:100%}}@media (min-width:1024px){.ms-u-xl11{width:91.66666666666666%}}@media (min-width:1024px){.ms-u-xl10{width:83.33333333333334%}}@media (min-width:1024px){.ms-u-xl9{width:75%}}@media (min-width:1024px){.ms-u-xl8{width:66.66666666666666%}}@media (min-width:1024px){.ms-u-xl7{width:58.333333333333336%}}@media (min-width:1024px){.ms-u-xl6{width:50%}}@media (min-width:1024px){.ms-u-xl5{width:41.66666666666667%}}@media (min-width:1024px){.ms-u-xl4{width:33.33333333333333%}}@media (min-width:1024px){.ms-u-xl3{width:25%}}@media (min-width:1024px){.ms-u-xl2{width:16.666666666666664%}}@media (min-width:1024px){.ms-u-xl1{width:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull12{right:100%}html[dir=rtl] .ms-u-xlPull12{left:100%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xlPull11{left:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xlPull10{left:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull9{right:75%}html[dir=rtl] .ms-u-xlPull9{left:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xlPull8{left:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xlPull7{left:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull6{right:50%}html[dir=rtl] .ms-u-xlPull6{left:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xlPull5{left:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xlPull4{left:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull3{right:25%}html[dir=rtl] .ms-u-xlPull3{left:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xlPull2{left:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xlPull1{left:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull0{right:auto}html[dir=rtl] .ms-u-xlPull0{left:auto}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush12{left:100%}html[dir=rtl] .ms-u-xlPush12{right:100%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xlPush11{right:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xlPush10{right:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush9{left:75%}html[dir=rtl] .ms-u-xlPush9{right:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xlPush8{right:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xlPush7{right:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush6{left:50%}html[dir=rtl] .ms-u-xlPush6{right:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xlPush5{right:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xlPush4{right:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush3{left:25%}html[dir=rtl] .ms-u-xlPush3{right:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xlPush2{right:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xlPush1{right:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush0{left:auto}html[dir=rtl] .ms-u-xlPush0{right:auto}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xlOffset11{margin-right:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xlOffset10{margin-right:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xlOffset9{margin-right:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xlOffset8{margin-right:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xlOffset7{margin-right:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xlOffset6{margin-right:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xlOffset5{margin-right:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xlOffset4{margin-right:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xlOffset3{margin-right:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xlOffset2{margin-right:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xlOffset1{margin-right:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset0{margin-left:0}html[dir=rtl] .ms-u-xlOffset0{margin-right:0}}@media (min-width:1366px){.ms-u-xxl12{width:100%}}@media (min-width:1366px){.ms-u-xxl11{width:91.66666666666666%}}@media (min-width:1366px){.ms-u-xxl10{width:83.33333333333334%}}@media (min-width:1366px){.ms-u-xxl9{width:75%}}@media (min-width:1366px){.ms-u-xxl8{width:66.66666666666666%}}@media (min-width:1366px){.ms-u-xxl7{width:58.333333333333336%}}@media (min-width:1366px){.ms-u-xxl6{width:50%}}@media (min-width:1366px){.ms-u-xxl5{width:41.66666666666667%}}@media (min-width:1366px){.ms-u-xxl4{width:33.33333333333333%}}@media (min-width:1366px){.ms-u-xxl3{width:25%}}@media (min-width:1366px){.ms-u-xxl2{width:16.666666666666664%}}@media (min-width:1366px){.ms-u-xxl1{width:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull12{right:100%}html[dir=rtl] .ms-u-xxlPull12{left:100%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xxlPull11{left:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xxlPull10{left:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull9{right:75%}html[dir=rtl] .ms-u-xxlPull9{left:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xxlPull8{left:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xxlPull7{left:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull6{right:50%}html[dir=rtl] .ms-u-xxlPull6{left:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xxlPull5{left:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xxlPull4{left:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull3{right:25%}html[dir=rtl] .ms-u-xxlPull3{left:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xxlPull2{left:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xxlPull1{left:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull0{right:auto}html[dir=rtl] .ms-u-xxlPull0{left:auto}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush12{left:100%}html[dir=rtl] .ms-u-xxlPush12{right:100%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xxlPush11{right:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xxlPush10{right:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush9{left:75%}html[dir=rtl] .ms-u-xxlPush9{right:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xxlPush8{right:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xxlPush7{right:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush6{left:50%}html[dir=rtl] .ms-u-xxlPush6{right:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xxlPush5{right:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xxlPush4{right:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush3{left:25%}html[dir=rtl] .ms-u-xxlPush3{right:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xxlPush2{right:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xxlPush1{right:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush0{left:auto}html[dir=rtl] .ms-u-xxlPush0{right:auto}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xxlOffset11{margin-right:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xxlOffset10{margin-right:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xxlOffset9{margin-right:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xxlOffset8{margin-right:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xxlOffset7{margin-right:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xxlOffset6{margin-right:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xxlOffset5{margin-right:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xxlOffset4{margin-right:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xxlOffset3{margin-right:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xxlOffset2{margin-right:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xxlOffset1{margin-right:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset0{margin-left:0}html[dir=rtl] .ms-u-xxlOffset0{margin-right:0}}@media (min-width:1920px){.ms-u-xxxl12{width:100%}}@media (min-width:1920px){.ms-u-xxxl11{width:91.66666666666666%}}@media (min-width:1920px){.ms-u-xxxl10{width:83.33333333333334%}}@media (min-width:1920px){.ms-u-xxxl9{width:75%}}@media (min-width:1920px){.ms-u-xxxl8{width:66.66666666666666%}}@media (min-width:1920px){.ms-u-xxxl7{width:58.333333333333336%}}@media (min-width:1920px){.ms-u-xxxl6{width:50%}}@media (min-width:1920px){.ms-u-xxxl5{width:41.66666666666667%}}@media (min-width:1920px){.ms-u-xxxl4{width:33.33333333333333%}}@media (min-width:1920px){.ms-u-xxxl3{width:25%}}@media (min-width:1920px){.ms-u-xxxl2{width:16.666666666666664%}}@media (min-width:1920px){.ms-u-xxxl1{width:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull12{right:100%}html[dir=rtl] .ms-u-xxxlPull12{left:100%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xxxlPull11{left:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xxxlPull10{left:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull9{right:75%}html[dir=rtl] .ms-u-xxxlPull9{left:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xxxlPull8{left:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xxxlPull7{left:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull6{right:50%}html[dir=rtl] .ms-u-xxxlPull6{left:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xxxlPull5{left:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xxxlPull4{left:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull3{right:25%}html[dir=rtl] .ms-u-xxxlPull3{left:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xxxlPull2{left:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xxxlPull1{left:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull0{right:auto}html[dir=rtl] .ms-u-xxxlPull0{left:auto}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush12{left:100%}html[dir=rtl] .ms-u-xxxlPush12{right:100%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xxxlPush11{right:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xxxlPush10{right:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush9{left:75%}html[dir=rtl] .ms-u-xxxlPush9{right:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xxxlPush8{right:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xxxlPush7{right:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush6{left:50%}html[dir=rtl] .ms-u-xxxlPush6{right:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xxxlPush5{right:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xxxlPush4{right:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush3{left:25%}html[dir=rtl] .ms-u-xxxlPush3{right:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xxxlPush2{right:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xxxlPush1{right:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush0{left:auto}html[dir=rtl] .ms-u-xxxlPush0{right:auto}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xxxlOffset11{margin-right:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xxxlOffset10{margin-right:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xxxlOffset9{margin-right:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xxxlOffset8{margin-right:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xxxlOffset7{margin-right:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xxxlOffset6{margin-right:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xxxlOffset5{margin-right:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xxxlOffset4{margin-right:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xxxlOffset3{margin-right:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xxxlOffset2{margin-right:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xxxlOffset1{margin-right:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset0{margin-left:0}html[dir=rtl] .ms-u-xxxlOffset0{margin-right:0}}.ms-Grid{box-sizing:border-box;*zoom:1}html[dir] .ms-Grid{padding:0 8px}.ms-Grid:after,.ms-Grid:before{display:table;content:"";line-height:0}.ms-Grid:after{clear:both}.ms-Grid-row{box-sizing:border-box;*zoom:1}html[dir] .ms-Grid-row{margin:0 -8px}.ms-Grid-row:after,.ms-Grid-row:before{display:table;content:"";line-height:0}.ms-Grid-row:after{clear:both}.ms-Grid-col{position:relative;min-height:1px;box-sizing:border-box}html[dir=ltr] .ms-Grid-col{padding-left:8px;padding-right:8px;float:left}html[dir=rtl] .ms-Grid-col{padding-right:8px;padding-left:8px;float:right}html[dir] .ms-Grid-col .ms-Grid{padding:0}.ms-Fabric{color:#333}-->

    <!--.fkDATHPs67KecPZTWjyC5{display:block;box-sizing:border-box;line-height:30px;width:100%}html[dir] .fkDATHPs67KecPZTWjyC5{border:none;margin:0}html[dir=ltr] .fkDATHPs67KecPZTWjyC5{text-align:left}html[dir=rtl] .fkDATHPs67KecPZTWjyC5{text-align:right}.fkDATHPs67KecPZTWjyC5 :first-child{line-height:30px;height:30px}.fkDATHPs67KecPZTWjyC5 span{font-size:11px}._3WqwqkAHXbeawL_HRTV850 :first-child{color:#0078d7;cursor:default}html[dir] ._3WqwqkAHXbeawL_HRTV850 :first-child{background-color:inherit}html[dir=ltr] ._3WqwqkAHXbeawL_HRTV850 :first-child{background:0 0}html[dir=rtl] ._3WqwqkAHXbeawL_HRTV850 :first-child{background:100% 0}html[dir] ._2Z0C7fbHGKQAz3VrYnCM2p{border:none}._2Z0C7fbHGKQAz3VrYnCM2p ul{overflow:hidden}._2cdS7ynh8ypFb3vCm5ruAj :first-child{line-height:30px;height:30px}._2cdS7ynh8ypFb3vCm5ruAj :first-child span{font-size:12px}._2cdS7ynh8ypFb3vCm5ruAj :first-child i{line-height:30px;height:30px}html[dir] ._2cdS7ynh8ypFb3vCm5ruAj button{background-color:inherit}.ms-LayerHost-overlay div{z-index:2000!important}.ms-Dialog-button.ms-Dialog-button--close{z-index:2001!important}.ms-Dialog{z-index:2000!important}--><!--._1ZK5qz71rnRbVDWBQXxSbL{display:block}html[dir] ._1ZK5qz71rnRbVDWBQXxSbL{background:transparent;border:none}html[dir=ltr] ._1ZK5qz71rnRbVDWBQXxSbL{margin-right:5px}html[dir=rtl] ._1ZK5qz71rnRbVDWBQXxSbL{margin-left:5px}.iUrQ8xvQuVGBkYlnuJW8i{height:16px;width:0}html[dir] .iUrQ8xvQuVGBkYlnuJW8i{padding:0;margin:7px 0}html[dir=ltr] .iUrQ8xvQuVGBkYlnuJW8i{border-right-width:1px;border-right-style:solid;float:left}html[dir=rtl] .iUrQ8xvQuVGBkYlnuJW8i{border-left-width:1px;border-left-style:solid;float:right}._1pNkfPiuQJ-FIKn0Vb8roY{display:inline-block;width:30px;height:30px}._1NUpqxTtvfjqe2cXAJrJl_{width:16px;height:16px}--><!--._3InrqsNczfVzST1g2rD0jq{display:block;cursor:pointer}html[dir=ltr] ._3InrqsNczfVzST1g2rD0jq{margin:0 5px 0 0}html[dir=rtl] ._3InrqsNczfVzST1g2rD0jq{margin:0 0 0 5px}._1lcq5WOFQSOc3pAP9-QSU-{width:16px;height:16px}html[dir] ._1lcq5WOFQSOc3pAP9-QSU-{padding:7px}._2eBUN7HrrPwqc-9visTxwO{width:30px;height:30px}--><!--._1sXebP9dhDeSRDu_ykstQ{display:-ms-flexbox;display:flex;display:-webkit-flex;height:30px}--><!--.Nr_OEkeERSs4g3KmXglLs{display:-ms-flexbox;display:flex;display:-webkit-flex}--><!--._3OH24vPORLvOxW6VNaj7tk{width:100%;height:100%}--><!--._37cHtDIuxCJ6YLGmDZry9u{max-width:none}._1fdP-gn4bP3Klri8dd8u47{height:190px}._2e73G9uLYEJxo3Xn4EHeLs{width:550px;height:400px}._1aWP3GHQ3wdn65AEBmYgPD{display:none!important}--><!--.ms-u-borderBox,.ms-u-borderBox:after,.ms-u-borderBox:before{box-sizing:border-box}html[dir] .ms-u-borderBase{border:1px solid}.ms-u-clearfix{*zoom:1}.ms-u-clearfix:after,.ms-u-clearfix:before{display:table;content:"";line-height:0}.ms-u-clearfix:after{clear:both}.ms-u-normalize{box-sizing:border-box}html[dir] .ms-u-normalize{margin:0;padding:0;box-shadow:none}html[dir=ltr] .ms-u-textAlignLeft{text-align:left}html[dir=rtl] .ms-u-textAlignLeft{text-align:right}html[dir] .ms-u-textAlignCenter{text-align:center}html[dir=ltr] .ms-u-textAlignRight{text-align:right}html[dir=rtl] .ms-u-textAlignRight{text-align:left}.ms-u-screenReaderOnly{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}html[dir] .ms-u-screenReaderOnly{padding:0;margin:-1px;border:0}.ms-u-textTruncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.ms-u-noWrap{white-space:nowrap}html[dir] .ms-bgColor-themeDark,html[dir] .ms-bgColor-themeDark--hover:hover{background-color:#005a9e}html[dir] .ms-bgColor-themeDarkAlt,html[dir] .ms-bgColor-themeDarkAlt--hover:hover{background-color:#106ebe}html[dir] .ms-bgColor-themeDarker,html[dir] .ms-bgColor-themeDarker--hover:hover{background-color:#004578}html[dir] .ms-bgColor-themePrimary,html[dir] .ms-bgColor-themePrimary--hover:hover{background-color:#0078d7}html[dir] .ms-bgColor-themeSecondary,html[dir] .ms-bgColor-themeSecondary--hover:hover{background-color:#2488d8}html[dir] .ms-bgColor-themeTertiary,html[dir] .ms-bgColor-themeTertiary--hover:hover{background-color:#69afe5}html[dir] .ms-bgColor-themeLight,html[dir] .ms-bgColor-themeLight--hover:hover{background-color:#b3d6f2}html[dir] .ms-bgColor-themeLighter,html[dir] .ms-bgColor-themeLighter--hover:hover{background-color:#deecf9}html[dir] .ms-bgColor-themeLighterAlt,html[dir] .ms-bgColor-themeLighterAlt--hover:hover{background-color:#eff6fc}html[dir] .ms-bgColor-black,html[dir] .ms-bgColor-black--hover:hover{background-color:#000}html[dir] .ms-bgColor-neutralDark,html[dir] .ms-bgColor-neutralDark--hover:hover{background-color:#212121}html[dir] .ms-bgColor-neutralPrimary,html[dir] .ms-bgColor-neutralPrimary--hover:hover{background-color:#333}html[dir] .ms-bgColor-neutralPrimaryAlt,html[dir] .ms-bgColor-neutralPrimaryAlt--hover:hover{background-color:#3c3c3c}html[dir] .ms-bgColor-neutralSecondary,html[dir] .ms-bgColor-neutralSecondary--hover:hover{background-color:#666}html[dir] .ms-bgColor-neutralSecondaryAlt,html[dir] .ms-bgColor-neutralSecondaryAlt--hover:hover{background-color:#767676}html[dir] .ms-bgColor-neutralTertiary,html[dir] .ms-bgColor-neutralTertiary--hover:hover{background-color:#a6a6a6}html[dir] .ms-bgColor-neutralTertiaryAlt,html[dir] .ms-bgColor-neutralTertiaryAlt--hover:hover{background-color:#c8c8c8}html[dir] .ms-bgColor-neutralLight,html[dir] .ms-bgColor-neutralLight--hover:hover{background-color:#eaeaea}html[dir] .ms-bgColor-neutralLighter,html[dir] .ms-bgColor-neutralLighter--hover:hover{background-color:#f4f4f4}html[dir] .ms-bgColor-neutralLighterAlt,html[dir] .ms-bgColor-neutralLighterAlt--hover:hover{background-color:#f8f8f8}html[dir] .ms-bgColor-white,html[dir] .ms-bgColor-white--hover:hover{background-color:#fff}html[dir] .ms-bgColor-yellow{background-color:#ffb900}html[dir] .ms-bgColor-yellowLight{background-color:#fff100}html[dir] .ms-bgColor-orange{background-color:#d83b01}html[dir] .ms-bgColor-orangeLight{background-color:#ea4300}html[dir] .ms-bgColor-orangeLighter{background-color:#ff8c00}html[dir] .ms-bgColor-redDark{background-color:#a80000}html[dir] .ms-bgColor-red{background-color:#e81123}html[dir] .ms-bgColor-magentaDark{background-color:#5c005c}html[dir] .ms-bgColor-magenta{background-color:#b4009e}html[dir] .ms-bgColor-magentaLight{background-color:#e3008c}html[dir] .ms-bgColor-purpleDark{background-color:#32145a}html[dir] .ms-bgColor-purple{background-color:#5c2d91}html[dir] .ms-bgColor-purpleLight{background-color:#b4a0ff}html[dir] .ms-bgColor-blueDark{background-color:#002050}html[dir] .ms-bgColor-blueMid{background-color:#00188f}html[dir] .ms-bgColor-blue{background-color:#0078d7}html[dir] .ms-bgColor-blueLight{background-color:#00bcf2}html[dir] .ms-bgColor-tealDark{background-color:#004b50}html[dir] .ms-bgColor-teal{background-color:#008272}html[dir] .ms-bgColor-tealLight{background-color:#00b294}html[dir] .ms-bgColor-greenDark{background-color:#004b1c}html[dir] .ms-bgColor-green{background-color:#107c10}html[dir] .ms-bgColor-greenLight{background-color:#bad80a}html[dir] .ms-bgColor-info{background-color:#f4f4f4}html[dir] .ms-bgColor-success{background-color:#dff6dd}html[dir] .ms-bgColor-severeWarning{background-color:#fed9cc}html[dir] .ms-bgColor-warning{background-color:#fff4ce}html[dir] .ms-bgColor-error{background-color:#fde7e9}html[dir] .ms-borderColor-themeDark,html[dir] .ms-borderColor-themeDark--hover:hover{border-color:#005a9e}html[dir] .ms-borderColor-themeDarkAlt,html[dir] .ms-borderColor-themeDarkAlt--hover:hover{border-color:#106ebe}html[dir] .ms-borderColor-themeDarker,html[dir] .ms-borderColor-themeDarker--hover:hover{border-color:#004578}html[dir] .ms-borderColor-themePrimary,html[dir] .ms-borderColor-themePrimary--hover:hover{border-color:#0078d7}html[dir] .ms-borderColor-themeSecondary,html[dir] .ms-borderColor-themeSecondary--hover:hover{border-color:#2488d8}html[dir] .ms-borderColor-themeTertiary,html[dir] .ms-borderColor-themeTertiary--hover:hover{border-color:#69afe5}html[dir] .ms-borderColor-themeLight,html[dir] .ms-borderColor-themeLight--hover:hover{border-color:#b3d6f2}html[dir] .ms-borderColor-themeLighter,html[dir] .ms-borderColor-themeLighter--hover:hover{border-color:#deecf9}html[dir] .ms-borderColor-themeLighterAlt,html[dir] .ms-borderColor-themeLighterAlt--hover:hover{border-color:#eff6fc}html[dir] .ms-borderColor-black,html[dir] .ms-borderColor-black--hover:hover{border-color:#000}html[dir] .ms-borderColor-neutralDark,html[dir] .ms-borderColor-neutralDark--hover:hover{border-color:#212121}html[dir] .ms-borderColor-neutralPrimary,html[dir] .ms-borderColor-neutralPrimary--hover:hover{border-color:#333}html[dir] .ms-borderColor-neutralPrimaryAlt,html[dir] .ms-borderColor-neutralPrimaryAlt--hover:hover{border-color:#3c3c3c}html[dir] .ms-borderColor-neutralSecondary,html[dir] .ms-borderColor-neutralSecondary--hover:hover{border-color:#666}html[dir] .ms-borderColor-neutralSecondaryAlt,html[dir] .ms-borderColor-neutralSecondaryAlt--hover:hover{border-color:#767676}html[dir] .ms-borderColor-neutralTertiary,html[dir] .ms-borderColor-neutralTertiary--hover:hover{border-color:#a6a6a6}html[dir] .ms-borderColor-neutralTertiaryAlt,html[dir] .ms-borderColor-neutralTertiaryAlt--hover:hover{border-color:#c8c8c8}html[dir] .ms-borderColor-neutralLight,html[dir] .ms-borderColor-neutralLight--hover:hover{border-color:#eaeaea}html[dir] .ms-borderColor-neutralLighter,html[dir] .ms-borderColor-neutralLighter--hover:hover{border-color:#f4f4f4}html[dir] .ms-borderColor-neutralLighterAlt,html[dir] .ms-borderColor-neutralLighterAlt--hover:hover{border-color:#f8f8f8}html[dir] .ms-borderColor-white,html[dir] .ms-borderColor-white--hover:hover{border-color:#fff}html[dir] .ms-borderColor-yellow{border-color:#ffb900}html[dir] .ms-borderColor-yellowLight{border-color:#fff100}html[dir] .ms-borderColor-orange{border-color:#d83b01}html[dir] .ms-borderColor-orangeLight{border-color:#ea4300}html[dir] .ms-borderColor-orangeLighter{border-color:#ff8c00}html[dir] .ms-borderColor-redDark{border-color:#a80000}html[dir] .ms-borderColor-red{border-color:#e81123}html[dir] .ms-borderColor-magentaDark{border-color:#5c005c}html[dir] .ms-borderColor-magenta{border-color:#b4009e}html[dir] .ms-borderColor-magentaLight{border-color:#e3008c}html[dir] .ms-borderColor-purpleDark{border-color:#32145a}html[dir] .ms-borderColor-purple{border-color:#5c2d91}html[dir] .ms-borderColor-purpleLight{border-color:#b4a0ff}html[dir] .ms-borderColor-blueDark{border-color:#002050}html[dir] .ms-borderColor-blueMid{border-color:#00188f}html[dir] .ms-borderColor-blue{border-color:#0078d7}html[dir] .ms-borderColor-blueLight{border-color:#00bcf2}html[dir] .ms-borderColor-tealDark{border-color:#004b50}html[dir] .ms-borderColor-teal{border-color:#008272}html[dir] .ms-borderColor-tealLight{border-color:#00b294}html[dir] .ms-borderColor-greenDark{border-color:#004b1c}html[dir] .ms-borderColor-green{border-color:#107c10}html[dir] .ms-borderColor-greenLight{border-color:#bad80a}html[dir] .ms-borderColorTop-themePrimary,html[dir] .ms-borderColorTop-themePrimary--hover:hover{border-top-color:#0078d7}.ms-fontWeight-light,.ms-fontWeight-light--hover:hover{font-weight:100}.ms-fontWeight-semilight,.ms-fontWeight-semilight--hover:hover{font-weight:300}.ms-fontWeight-regular,.ms-fontWeight-regular--hover:hover{font-weight:400}.ms-fontWeight-semibold,.ms-fontWeight-semibold--hover:hover{font-weight:600}.ms-fontSize-su{font-size:42px}.ms-fontSize-xxl{font-size:28px}.ms-fontSize-xl{font-size:21px}.ms-fontSize-l{font-size:17px}.ms-fontSize-mPlus{font-size:15px}.ms-fontSize-m{font-size:14px}.ms-fontSize-sPlus{font-size:13px}.ms-fontSize-s{font-size:12px}.ms-fontSize-xs{font-size:11px}.ms-fontSize-mi{font-size:10px}.ms-fontColor-themeDarker,.ms-fontColor-themeDarker--hover:hover{color:#004578}.ms-fontColor-themeDark,.ms-fontColor-themeDark--hover:hover{color:#005a9e}.ms-fontColor-themeDarkAlt,.ms-fontColor-themeDarkAlt--hover:hover{color:#106ebe}.ms-fontColor-themePrimary,.ms-fontColor-themePrimary--hover:hover{color:#0078d7}.ms-fontColor-themeSecondary,.ms-fontColor-themeSecondary--hover:hover{color:#2488d8}.ms-fontColor-themeTertiary,.ms-fontColor-themeTertiary--hover:hover{color:#69afe5}.ms-fontColor-themeLight,.ms-fontColor-themeLight--hover:hover{color:#b3d6f2}.ms-fontColor-themeLighter,.ms-fontColor-themeLighter--hover:hover{color:#deecf9}.ms-fontColor-themeLighterAlt,.ms-fontColor-themeLighterAlt--hover:hover{color:#eff6fc}.ms-fontColor-black,.ms-fontColor-black--hover:hover{color:#000}.ms-fontColor-neutralDark,.ms-fontColor-neutralDark--hover:hover{color:#212121}.ms-fontColor-neutralPrimary,.ms-fontColor-neutralPrimary--hover:hover{color:#333}.ms-fontColor-neutralPrimaryAlt,.ms-fontColor-neutralPrimaryAlt--hover:hover{color:#3c3c3c}.ms-fontColor-neutralSecondary,.ms-fontColor-neutralSecondary--hover:hover{color:#666}.ms-fontColor-neutralSecondaryAlt,.ms-fontColor-neutralSecondaryAlt--hover:hover{color:#767676}.ms-fontColor-neutralTertiary,.ms-fontColor-neutralTertiary--hover:hover{color:#a6a6a6}.ms-fontColor-neutralTertiaryAlt,.ms-fontColor-neutralTertiaryAlt--hover:hover{color:#c8c8c8}.ms-fontColor-neutralLight,.ms-fontColor-neutralLight--hover:hover{color:#eaeaea}.ms-fontColor-neutralLighter,.ms-fontColor-neutralLighter--hover:hover{color:#f4f4f4}.ms-fontColor-neutralLighterAlt,.ms-fontColor-neutralLighterAlt--hover:hover{color:#f8f8f8}.ms-fontColor-white,.ms-fontColor-white--hover:hover{color:#fff}.ms-fontColor-yellow,.ms-fontColor-yellow--hover:hover{color:#ffb900}.ms-fontColor-yellowLight,.ms-fontColor-yellowLight--hover:hover{color:#fff100}.ms-fontColor-orange,.ms-fontColor-orange--hover:hover{color:#d83b01}.ms-fontColor-orangeLight,.ms-fontColor-orangeLight--hover:hover{color:#ea4300}.ms-fontColor-orangeLighter,.ms-fontColor-orangeLighter--hover:hover{color:#ff8c00}.ms-fontColor-redDark,.ms-fontColor-redDark--hover:hover{color:#a80000}.ms-fontColor-red,.ms-fontColor-red--hover:hover{color:#e81123}.ms-fontColor-magentaDark,.ms-fontColor-magentaDark--hover:hover{color:#5c005c}.ms-fontColor-magenta,.ms-fontColor-magenta--hover:hover{color:#b4009e}.ms-fontColor-magentaLight,.ms-fontColor-magentaLight--hover:hover{color:#e3008c}.ms-fontColor-purpleDark,.ms-fontColor-purpleDark--hover:hover{color:#32145a}.ms-fontColor-purple,.ms-fontColor-purple--hover:hover{color:#5c2d91}.ms-fontColor-purpleLight,.ms-fontColor-purpleLight--hover:hover{color:#b4a0ff}.ms-fontColor-blueDark,.ms-fontColor-blueDark--hover:hover{color:#002050}.ms-fontColor-blueMid,.ms-fontColor-blueMid--hover:hover{color:#00188f}.ms-fontColor-blue,.ms-fontColor-blue--hover:hover{color:#0078d7}.ms-fontColor-blueLight,.ms-fontColor-blueLight--hover:hover{color:#00bcf2}.ms-fontColor-tealDark,.ms-fontColor-tealDark--hover:hover{color:#004b50}.ms-fontColor-teal,.ms-fontColor-teal--hover:hover{color:#008272}.ms-fontColor-tealLight,.ms-fontColor-tealLight--hover:hover{color:#00b294}.ms-fontColor-greenDark,.ms-fontColor-greenDark--hover:hover{color:#004b1c}.ms-fontColor-green,.ms-fontColor-green--hover:hover{color:#107c10}.ms-fontColor-greenLight,.ms-fontColor-greenLight--hover:hover{color:#bad80a}.ms-fontColor-info,.ms-fontColor-info--hover:hover{color:#767676}.ms-fontColor-success,.ms-fontColor-success--hover:hover{color:#107c10}.ms-fontColor-alert,.ms-fontColor-alert--hover:hover{color:#d83b01}.ms-fontColor-warning,.ms-fontColor-warning--hover:hover{color:#767676}.ms-fontColor-severeWarning,.ms-fontColor-severeWarning--hover:hover{color:#d83b01}.ms-fontColor-error,.ms-fontColor-error--hover:hover{color:#a80000}@font-face{font-family:FabricMDL2Icons;src:url("https://static2.sharepointonline.com/files/fabric/assets/icons/fabricmdl2icons.woff2") format("woff2"),url("https://static2.sharepointonline.com/files/fabric/assets/icons/fabricmdl2icons.woff") format("woff"),url("https://static2.sharepointonline.com/files/fabric/assets/icons/fabricmdl2icons.ttf") format("truetype");font-weight:400;font-style:normal}.ms-Icon,.ms-Icon:before{-moz-osx-font-smoothing:grayscale;font-family:FabricMDL2Icons;font-style:normal;font-weight:400;speak:none}.ms-Icon,.ms-Icon--circle,.ms-Icon:before{-webkit-font-smoothing:antialiased;display:inline-block}.ms-Icon--circle{position:relative;font-size:1rem;width:1em;height:1em}html[dir] .ms-Icon--circle{padding:0}html[dir=ltr] .ms-Icon--circle{margin:0 .5em 0 0;text-align:left}html[dir=rtl] .ms-Icon--circle{margin:0 0 0 .5em;text-align:right}.ms-Icon--circle:after,.ms-Icon--circle:before{line-height:1;font-size:inherit}.ms-Icon--circle:before{display:block;width:100%;height:100%;vertical-align:top;position:absolute}html[dir] .ms-Icon--circle:before{margin:0;padding:0}.ms-Icon--circle:after{content:"\E000";position:absolute;top:0;z-index:0}html[dir] .ms-Icon--circle:after{transform:scale(2);transform-origin:50% 50%}html[dir=ltr] .ms-Icon--circle:after{left:0}html[dir=rtl] .ms-Icon--circle:after{right:0}.ms-Icon--xs{font-size:10px}.ms-Icon--s{font-size:12px}.ms-Icon--m{font-size:16px}.ms-Icon--l{font-size:20px}.ms-Icon--CarotRightSolid8:before{content:"\EDDA"}.ms-Icon--DynamicsCRMLogo:before{content:"\EDCC"}.ms-Icon--DecreaseIndentLegacy:before{content:"\E290"}.ms-Icon--IncreaseIndentLegacy:before{content:"\E291"}.ms-Icon--GlobalNavButton:before{content:"\E700"}.ms-Icon--InternetSharing:before{content:"\E704"}.ms-Icon--Brightness:before{content:"\E706"}.ms-Icon--MapPin:before{content:"\E707"}.ms-Icon--Airplane:before{content:"\E709"}.ms-Icon--Tablet:before{content:"\E70A"}.ms-Icon--QuickNote:before{content:"\E70B"}.ms-Icon--ChevronDown:before{content:"\E70D"}.ms-Icon--ChevronUp:before{content:"\E70E"}.ms-Icon--Edit:before{content:"\E70F"}.ms-Icon--Add:before{content:"\E710"}.ms-Icon--Cancel:before{content:"\E711"}.ms-Icon--More:before{content:"\E712"}.ms-Icon--Settings:before{content:"\E713"}.ms-Icon--Video:before{content:"\E714"}.ms-Icon--Mail:before{content:"\E715"}.ms-Icon--People:before{content:"\E716"}.ms-Icon--Phone:before{content:"\E717"}.ms-Icon--Pin:before{content:"\E718"}.ms-Icon--Shop:before{content:"\E719"}.ms-Icon--Link:before{content:"\E71B"}.ms-Icon--Filter:before{content:"\E71C"}.ms-Icon--Zoom:before{content:"\E71E"}.ms-Icon--ZoomOut:before{content:"\E71F"}.ms-Icon--Microphone:before{content:"\E720"}.ms-Icon--Search:before{content:"\E721"}.ms-Icon--Camera:before{content:"\E722"}.ms-Icon--Attach:before{content:"\E723"}.ms-Icon--Send:before{content:"\E724"}.ms-Icon--FavoriteList:before{content:"\E728"}.ms-Icon--PageSolid:before{content:"\E729"}.ms-Icon--Forward:before{content:"\E72A"}.ms-Icon--Back:before{content:"\E72B"}.ms-Icon--Refresh:before{content:"\E72C"}.ms-Icon--Share:before{content:"\E72D"}.ms-Icon--Lock:before{content:"\E72E"}.ms-Icon--EMI:before{content:"\E731"}.ms-Icon--MiniLink:before{content:"\E732"}.ms-Icon--Blocked:before{content:"\E733"}.ms-Icon--FavoriteStar:before{content:"\E734"}.ms-Icon--FavoriteStarFill:before{content:"\E735"}.ms-Icon--ReadingMode:before{content:"\E736"}.ms-Icon--Remove:before{content:"\E738"}.ms-Icon--Checkbox:before{content:"\E739"}.ms-Icon--CheckboxComposite:before{content:"\E73A"}.ms-Icon--CheckboxIndeterminate:before{content:"\E73C"}.ms-Icon--CheckMark:before{content:"\E73E"}.ms-Icon--BackToWindow:before{content:"\E73F"}.ms-Icon--FullScreen:before{content:"\E740"}.ms-Icon--Print:before{content:"\E749"}.ms-Icon--Up:before{content:"\E74A"}.ms-Icon--Down:before{content:"\E74B"}.ms-Icon--Delete:before{content:"\E74D"}.ms-Icon--Save:before{content:"\E74E"}.ms-Icon--Sad:before{content:"\E757"}.ms-Icon--SIPMove:before{content:"\E759"}.ms-Icon--EraseTool:before{content:"\E75C"}.ms-Icon--GripperTool:before{content:"\E75E"}.ms-Icon--Dialpad:before{content:"\E75F"}.ms-Icon--PageLeft:before{content:"\E760"}.ms-Icon--PageRight:before{content:"\E761"}.ms-Icon--MultiSelect:before{content:"\E762"}.ms-Icon--Play:before{content:"\E768"}.ms-Icon--Pause:before{content:"\E769"}.ms-Icon--ChevronLeft:before{content:"\E76B"}.ms-Icon--ChevronRight:before{content:"\E76C"}.ms-Icon--Emoji2:before{content:"\E76E"}.ms-Icon--System:before{content:"\E770"}.ms-Icon--Globe:before{content:"\E774"}.ms-Icon--ContactInfo:before{content:"\E779"}.ms-Icon--Unpin:before{content:"\E77A"}.ms-Icon--Contact:before{content:"\E77B"}.ms-Icon--Memo:before{content:"\E77C"}.ms-Icon--WindowsLogo:before{content:"\E782"}.ms-Icon--Error:before{content:"\E783"}.ms-Icon--Unlock:before{content:"\E785"}.ms-Icon--Calendar:before{content:"\E787"}.ms-Icon--Megaphone:before{content:"\E789"}.ms-Icon--AutoEnhanceOn:before{content:"\E78D"}.ms-Icon--AutoEnhanceOff:before{content:"\E78E"}.ms-Icon--Color:before{content:"\E790"}.ms-Icon--SaveAs:before{content:"\E792"}.ms-Icon--Light:before{content:"\E793"}.ms-Icon--Filters:before{content:"\E795"}.ms-Icon--Contrast:before{content:"\E7A1"}.ms-Icon--Redo:before{content:"\E7A6"}.ms-Icon--Undo:before{content:"\E7A7"}.ms-Icon--PhotoCollection:before{content:"\E7AA"}.ms-Icon--Album:before{content:"\E7AB"}.ms-Icon--Rotate:before{content:"\E7AD"}.ms-Icon--PanoIndicator:before{content:"\E7B0"}.ms-Icon--RedEye:before{content:"\E7B3"}.ms-Icon--ThumbnailView:before{content:"\E7B6"}.ms-Icon--Package:before{content:"\E7B8"}.ms-Icon--Warning:before{content:"\E7BA"}.ms-Icon--Financial:before{content:"\E7BB"}.ms-Icon--ShoppingCart:before{content:"\E7BF"}.ms-Icon--Train:before{content:"\E7C0"}.ms-Icon--Flag:before{content:"\E7C1"}.ms-Icon--Move:before{content:"\E7C2"}.ms-Icon--Page:before{content:"\E7C3"}.ms-Icon--TouchPointer:before{content:"\E7C9"}.ms-Icon--Merge:before{content:"\E7D5"}.ms-Icon--TurnRight:before{content:"\E7DB"}.ms-Icon--Ferry:before{content:"\E7E3"}.ms-Icon--Tab:before{content:"\E7E9"}.ms-Icon--Admin:before{content:"\E7EF"}.ms-Icon--TVMonitor:before{content:"\E7F4"}.ms-Icon--Speakers:before{content:"\E7F5"}.ms-Icon--Nav2DMapView:before{content:"\E800"}.ms-Icon--Car:before{content:"\E804"}.ms-Icon--EatDrink:before{content:"\E807"}.ms-Icon--LocationCircle:before{content:"\E80E"}.ms-Icon--Home:before{content:"\E80F"}.ms-Icon--SwitcherStartEnd:before{content:"\E810"}.ms-Icon--IncidentTriangle:before{content:"\E814"}.ms-Icon--Touch:before{content:"\E815"}.ms-Icon--MapDirections:before{content:"\E816"}.ms-Icon--History:before{content:"\E81C"}.ms-Icon--Location:before{content:"\E81D"}.ms-Icon--Work:before{content:"\E821"}.ms-Icon--Recent:before{content:"\E823"}.ms-Icon--Hotel:before{content:"\E824"}.ms-Icon--LocationDot:before{content:"\E827"}.ms-Icon--News:before{content:"\E900"}.ms-Icon--Chat:before{content:"\E901"}.ms-Icon--Group:before{content:"\E902"}.ms-Icon--View:before{content:"\E890"}.ms-Icon--Clear:before{content:"\E894"}.ms-Icon--Sync:before{content:"\E895"}.ms-Icon--Download:before{content:"\E896"}.ms-Icon--Help:before{content:"\E897"}.ms-Icon--Upload:before{content:"\E898"}.ms-Icon--Emoji:before{content:"\E899"}.ms-Icon--MailForward:before{content:"\E89C"}.ms-Icon--ClosePane:before{content:"\E89F"}.ms-Icon--OpenPane:before{content:"\E8A0"}.ms-Icon--PreviewLink:before{content:"\E8A1"}.ms-Icon--ZoomIn:before{content:"\E8A3"}.ms-Icon--Bookmarks:before{content:"\E8A4"}.ms-Icon--Document:before{content:"\E8A5"}.ms-Icon--ProtectedDocument:before{content:"\E8A6"}.ms-Icon--OpenInNewWindow:before{content:"\E8A7"}.ms-Icon--MailFill:before{content:"\E8A8"}.ms-Icon--ViewAll:before{content:"\E8A9"}.ms-Icon--Switch:before{content:"\E8AB"}.ms-Icon--Rename:before{content:"\E8AC"}.ms-Icon--Folder:before{content:"\E8B7"}.ms-Icon--Picture:before{content:"\E8B9"}.ms-Icon--ShowResults:before{content:"\E8BC"}.ms-Icon--Message:before{content:"\E8BD"}.ms-Icon--CalendarDay:before{content:"\E8BF"}.ms-Icon--CalendarWeek:before{content:"\E8C0"}.ms-Icon--MailReplyAll:before{content:"\E8C2"}.ms-Icon--Read:before{content:"\E8C3"}.ms-Icon--PaymentCard:before{content:"\E8C7"}.ms-Icon--Copy:before{content:"\E8C8"}.ms-Icon--Important:before{content:"\E8C9"}.ms-Icon--MailReply:before{content:"\E8CA"}.ms-Icon--Sort:before{content:"\E8CB"}.ms-Icon--GotoToday:before{content:"\E8D1"}.ms-Icon--Font:before{content:"\E8D2"}.ms-Icon--FontColor:before{content:"\E8D3"}.ms-Icon--FolderFill:before{content:"\E8D5"}.ms-Icon--Permissions:before{content:"\E8D7"}.ms-Icon--DisableUpdates:before{content:"\E8D8"}.ms-Icon--Unfavorite:before{content:"\E8D9"}.ms-Icon--Italic:before{content:"\E8DB"}.ms-Icon--Underline:before{content:"\E8DC"}.ms-Icon--Bold:before{content:"\E8DD"}.ms-Icon--MoveToFolder:before{content:"\E8DE"}.ms-Icon--Dislike:before{content:"\E8E0"}.ms-Icon--Like:before{content:"\E8E1"}.ms-Icon--AlignRight:before{content:"\E8E2"}.ms-Icon--AlignCenter:before{content:"\E8E3"}.ms-Icon--AlignLeft:before{content:"\E8E4"}.ms-Icon--OpenFile:before{content:"\E8E5"}.ms-Icon--FontDecrease:before{content:"\E8E7"}.ms-Icon--FontIncrease:before{content:"\E8E8"}.ms-Icon--FontSize:before{content:"\E8E9"}.ms-Icon--CellPhone:before{content:"\E8EA"}.ms-Icon--Tag:before{content:"\E8EC"}.ms-Icon--Library:before{content:"\E8F1"}.ms-Icon--PostUpdate:before{content:"\E8F3"}.ms-Icon--NewFolder:before{content:"\E8F4"}.ms-Icon--CalendarReply:before{content:"\E8F5"}.ms-Icon--UnsyncFolder:before{content:"\E8F6"}.ms-Icon--SyncFolder:before{content:"\E8F7"}.ms-Icon--BlockContact:before{content:"\E8F8"}.ms-Icon--AddFriend:before{content:"\E8FA"}.ms-Icon--BulletedList:before{content:"\E8FD"}.ms-Icon--Preview:before{content:"\E8FF"}.ms-Icon--DockLeft:before{content:"\E90C"}.ms-Icon--DockRight:before{content:"\E90D"}.ms-Icon--Repair:before{content:"\E90F"}.ms-Icon--Accounts:before{content:"\E910"}.ms-Icon--RadioBullet:before{content:"\E915"}.ms-Icon--Stopwatch:before{content:"\E916"}.ms-Icon--Clock:before{content:"\E917"}.ms-Icon--WorldClock:before{content:"\E918"}.ms-Icon--AlarmClock:before{content:"\E919"}.ms-Icon--Hospital:before{content:"\E91D"}.ms-Icon--Timer:before{content:"\E91E"}.ms-Icon--FullCircleMask:before{content:"\E91F"}.ms-Icon--LocationFill:before{content:"\E920"}.ms-Icon--ChromeMinimize:before{content:"\E921"}.ms-Icon--Annotation:before{content:"\E924"}.ms-Icon--ChromeClose:before{content:"\E8BB"}.ms-Icon--Accept:before{content:"\E8FB"}.ms-Icon--Fingerprint:before{content:"\E928"}.ms-Icon--Handwriting:before{content:"\E929"}.ms-Icon--StackIndicator:before{content:"\E7FF"}.ms-Icon--Completed:before{content:"\E930"}.ms-Icon--Label:before{content:"\E932"}.ms-Icon--FlickDown:before{content:"\E935"}.ms-Icon--FlickUp:before{content:"\E936"}.ms-Icon--FlickLeft:before{content:"\E937"}.ms-Icon--FlickRight:before{content:"\E938"}.ms-Icon--MusicInCollection:before{content:"\E940"}.ms-Icon--OneDrive:before{content:"\E941"}.ms-Icon--CompassNW:before{content:"\E942"}.ms-Icon--Code:before{content:"\E943"}.ms-Icon--LightningBolt:before{content:"\E945"}.ms-Icon--Info:before{content:"\E946"}.ms-Icon--CalculatorAddition:before{content:"\E948"}.ms-Icon--CalculatorSubtract:before{content:"\E949"}.ms-Icon--PrintfaxPrinterFile:before{content:"\E956"}.ms-Icon--Headset:before{content:"\E95B"}.ms-Icon--Health:before{content:"\E95E"}.ms-Icon--ChevronUpSmall:before{content:"\E96D"}.ms-Icon--ChevronDownSmall:before{content:"\E96E"}.ms-Icon--ChevronLeftSmall:before{content:"\E96F"}.ms-Icon--ChevronRightSmall:before{content:"\E970"}.ms-Icon--ChevronUpMed:before{content:"\E971"}.ms-Icon--ChevronDownMed:before{content:"\E972"}.ms-Icon--ChevronLeftMed:before{content:"\E973"}.ms-Icon--ChevronRightMed:before{content:"\E974"}.ms-Icon--Dictionary:before{content:"\E82D"}.ms-Icon--ChromeBack:before{content:"\E830"}.ms-Icon--PC1:before{content:"\E977"}.ms-Icon--PresenceChickletVideo:before{content:"\E979"}.ms-Icon--Reply:before{content:"\E97A"}.ms-Icon--DoubleChevronLeftMed:before{content:"\E991"}.ms-Icon--Volume0:before{content:"\E992"}.ms-Icon--Volume1:before{content:"\E993"}.ms-Icon--Volume2:before{content:"\E994"}.ms-Icon--Volume3:before{content:"\E995"}.ms-Icon--CaretHollow:before{content:"\E817"}.ms-Icon--CaretSolid:before{content:"\E818"}.ms-Icon--FolderOpen:before{content:"\E838"}.ms-Icon--Pinned:before{content:"\E840"}.ms-Icon--PinnedFill:before{content:"\E842"}.ms-Icon--Chart:before{content:"\E999"}.ms-Icon--BidiLtr:before{content:"\E9AA"}.ms-Icon--BidiRtl:before{content:"\E9AB"}.ms-Icon--RevToggleKey:before{content:"\E845"}.ms-Icon--RightDoubleQuote:before{content:"\E9B1"}.ms-Icon--Sunny:before{content:"\E9BD"}.ms-Icon--CloudWeather:before{content:"\E9BE"}.ms-Icon--Cloudy:before{content:"\E9BF"}.ms-Icon--PartlyCloudyDay:before{content:"\E9C0"}.ms-Icon--PartlyCloudyNight:before{content:"\E9C1"}.ms-Icon--ClearNight:before{content:"\E9C2"}.ms-Icon--RainShowersDay:before{content:"\E9C3"}.ms-Icon--Rain:before{content:"\E9C4"}.ms-Icon--Thunderstorms:before{content:"\E9C6"}.ms-Icon--RainSnow:before{content:"\E9C7"}.ms-Icon--BlowingSnow:before{content:"\E9C9"}.ms-Icon--Frigid:before{content:"\E9CA"}.ms-Icon--Fog:before{content:"\E9CB"}.ms-Icon--Squalls:before{content:"\E9CC"}.ms-Icon--Duststorm:before{content:"\E9CD"}.ms-Icon--Precipitation:before{content:"\E9CF"}.ms-Icon--Ringer:before{content:"\EA8F"}.ms-Icon--PDF:before{content:"\EA90"}.ms-Icon--SortLines:before{content:"\E9D0"}.ms-Icon--Ribbon:before{content:"\E9D1"}.ms-Icon--CheckList:before{content:"\E9D5"}.ms-Icon--Generate:before{content:"\E9DA"}.ms-Icon--Equalizer:before{content:"\E9E9"}.ms-Icon--BarChartHorizontal:before{content:"\E9EB"}.ms-Icon--Freezing:before{content:"\E9EF"}.ms-Icon--SnowShowerDay:before{content:"\E9FD"}.ms-Icon--HailDay:before{content:"\EA00"}.ms-Icon--WorkFlow:before{content:"\EA01"}.ms-Icon--StoreLogoMed:before{content:"\EA04"}.ms-Icon--RainShowersNight:before{content:"\EA0F"}.ms-Icon--SnowShowerNight:before{content:"\EA11"}.ms-Icon--HailNight:before{content:"\EA13"}.ms-Icon--Info2:before{content:"\EA1F"}.ms-Icon--StoreLogo:before{content:"\EA96"}.ms-Icon--MultiSelectMirrored:before{content:"\EA98"}.ms-Icon--Broom:before{content:"\EA99"}.ms-Icon--MusicInCollectionFill:before{content:"\EA36"}.ms-Icon--List:before{content:"\EA37"}.ms-Icon--Asterisk:before{content:"\EA38"}.ms-Icon--ErrorBadge:before{content:"\EA39"}.ms-Icon--CircleRing:before{content:"\EA3A"}.ms-Icon--CircleFill:before{content:"\EA3B"}.ms-Icon--BookmarksMirrored:before{content:"\EA41"}.ms-Icon--BulletedListMirrored:before{content:"\EA42"}.ms-Icon--CaretHollowMirrored:before{content:"\EA45"}.ms-Icon--CaretSolidMirrored:before{content:"\EA46"}.ms-Icon--ChromeBackMirrored:before{content:"\EA47"}.ms-Icon--ClosePaneMirrored:before{content:"\EA49"}.ms-Icon--DockLeftMirrored:before{content:"\EA4C"}.ms-Icon--DoubleChevronLeftMedMirrored:before{content:"\EA4D"}.ms-Icon--HelpMirrored:before{content:"\EA51"}.ms-Icon--ListMirrored:before{content:"\EA55"}.ms-Icon--MailForwardMirrored:before{content:"\EA56"}.ms-Icon--MailReplyMirrored:before{content:"\EA57"}.ms-Icon--MailReplyAllMirrored:before{content:"\EA58"}.ms-Icon--OpenPaneMirrored:before{content:"\EA5B"}.ms-Icon--SendMirrored:before{content:"\EA63"}.ms-Icon--ShowResultsMirrored:before{content:"\EA65"}.ms-Icon--ThumbnailViewMirrored:before{content:"\EA67"}.ms-Icon--Devices3:before{content:"\EA6C"}.ms-Icon--Lightbulb:before{content:"\EA80"}.ms-Icon--StatusTriangle:before{content:"\EA82"}.ms-Icon--VolumeDisabled:before{content:"\EA85"}.ms-Icon--Puzzle:before{content:"\EA86"}.ms-Icon--EmojiNeutral:before{content:"\EA87"}.ms-Icon--EmojiDisappointed:before{content:"\EA88"}.ms-Icon--HomeSolid:before{content:"\EA8A"}.ms-Icon--Cocktails:before{content:"\EA9D"}.ms-Icon--Articles:before{content:"\EAC1"}.ms-Icon--Cycling:before{content:"\EAC7"}.ms-Icon--DietPlanNotebook:before{content:"\EAC8"}.ms-Icon--Pill:before{content:"\EACB"}.ms-Icon--Running:before{content:"\EADA"}.ms-Icon--Weights:before{content:"\EADB"}.ms-Icon--BarChart4:before{content:"\EAE7"}.ms-Icon--CirclePlus:before{content:"\EAEE"}.ms-Icon--Coffee:before{content:"\EAEF"}.ms-Icon--Cotton:before{content:"\EAF3"}.ms-Icon--Market:before{content:"\EAFC"}.ms-Icon--Money:before{content:"\EAFD"}.ms-Icon--PieDouble:before{content:"\EB04"}.ms-Icon--RemoveFilter:before{content:"\EB08"}.ms-Icon--StockDown:before{content:"\EB0F"}.ms-Icon--StockUp:before{content:"\EB11"}.ms-Icon--Cricket:before{content:"\EB1E"}.ms-Icon--Golf:before{content:"\EB1F"}.ms-Icon--Baseball:before{content:"\EB20"}.ms-Icon--Soccer:before{content:"\EB21"}.ms-Icon--MoreSports:before{content:"\EB22"}.ms-Icon--AutoRacing:before{content:"\EB24"}.ms-Icon--CollegeHoops:before{content:"\EB25"}.ms-Icon--CollegeFootball:before{content:"\EB26"}.ms-Icon--ProFootball:before{content:"\EB27"}.ms-Icon--ProHockey:before{content:"\EB28"}.ms-Icon--Rugby:before{content:"\EB2D"}.ms-Icon--Tennis:before{content:"\EB33"}.ms-Icon--Arrivals:before{content:"\EB34"}.ms-Icon--Design:before{content:"\EB3C"}.ms-Icon--Website:before{content:"\EB41"}.ms-Icon--Drop:before{content:"\EB42"}.ms-Icon--Snow:before{content:"\EB46"}.ms-Icon--BusSolid:before{content:"\EB47"}.ms-Icon--FerrySolid:before{content:"\EB48"}.ms-Icon--TrainSolid:before{content:"\EB4D"}.ms-Icon--Heart:before{content:"\EB51"}.ms-Icon--HeartFill:before{content:"\EB52"}.ms-Icon--Ticket:before{content:"\EB54"}.ms-Icon--Devices4:before{content:"\EB66"}.ms-Icon--AzureLogo:before{content:"\EB6A"}.ms-Icon--BingLogo:before{content:"\EB6B"}.ms-Icon--MSNLogo:before{content:"\EB6C"}.ms-Icon--OutlookLogo:before{content:"\EB6D"}.ms-Icon--OfficeLogo:before{content:"\EB6E"}.ms-Icon--SkypeLogo:before{content:"\EB6F"}.ms-Icon--Door:before{content:"\EB75"}.ms-Icon--EditMirrored:before{content:"\EB7E"}.ms-Icon--GiftCard:before{content:"\EB8E"}.ms-Icon--DoubleBookmark:before{content:"\EB8F"}.ms-Icon--StatusErrorFull:before{content:"\EB90"}.ms-Icon--Certificate:before{content:"\EB95"}.ms-Icon--Photo2:before{content:"\EB9F"}.ms-Icon--CloudDownload:before{content:"\EBD3"}.ms-Icon--WindDirection:before{content:"\EBE6"}.ms-Icon--Family:before{content:"\EBDA"}.ms-Icon--CSS:before{content:"\EBEF"}.ms-Icon--JS:before{content:"\EBF0"}.ms-Icon--ReminderGroup:before{content:"\EBF8"}.ms-Icon--Section:before{content:"\EC0C"}.ms-Icon--OneNoteLogo:before{content:"\EC0D"}.ms-Icon--ToggleFilled:before{content:"\EC11"}.ms-Icon--ToggleBorder:before{content:"\EC12"}.ms-Icon--SliderThumb:before{content:"\EC13"}.ms-Icon--ToggleThumb:before{content:"\EC14"}.ms-Icon--Documentation:before{content:"\EC17"}.ms-Icon--Badge:before{content:"\EC1B"}.ms-Icon--Giftbox:before{content:"\EC1F"}.ms-Icon--ExcelLogo:before{content:"\EC28"}.ms-Icon--WordLogo:before{content:"\EC29"}.ms-Icon--PowerPointLogo:before{content:"\EC2A"}.ms-Icon--Cafe:before{content:"\EC32"}.ms-Icon--SpeedHigh:before{content:"\EC4A"}.ms-Icon--MusicNote:before{content:"\EC4F"}.ms-Icon--EdgeLogo:before{content:"\EC60"}.ms-Icon--CompletedSolid:before{content:"\EC61"}.ms-Icon--AlbumRemove:before{content:"\EC62"}.ms-Icon--MessageFill:before{content:"\EC70"}.ms-Icon--TabletSelected:before{content:"\EC74"}.ms-Icon--MobileSelected:before{content:"\EC75"}.ms-Icon--LaptopSelected:before{content:"\EC76"}.ms-Icon--TVMonitorSelected:before{content:"\EC77"}.ms-Icon--DeveloperTools:before{content:"\EC7A"}.ms-Icon--InsertTextBox:before{content:"\EC7D"}.ms-Icon--LowerBrightness:before{content:"\EC8A"}.ms-Icon--CloudUpload:before{content:"\EC8E"}.ms-Icon--DateTime:before{content:"\EC92"}.ms-Icon--Event:before{content:"\ECA3"}.ms-Icon--Cake:before{content:"\ECA4"}.ms-Icon--Tiles:before{content:"\ECA5"}.ms-Icon--Org:before{content:"\ECA6"}.ms-Icon--PartyLeader:before{content:"\ECA7"}.ms-Icon--DRM:before{content:"\ECA8"}.ms-Icon--CloudAdd:before{content:"\ECA9"}.ms-Icon--AppIconDefault:before{content:"\ECAA"}.ms-Icon--Photo2Add:before{content:"\ECAB"}.ms-Icon--Photo2Remove:before{content:"\ECAC"}.ms-Icon--POI:before{content:"\ECAF"}.ms-Icon--FacebookLogo:before{content:"\ECB3"}.ms-Icon--AddTo:before{content:"\ECC8"}.ms-Icon--RadioBtnOn:before{content:"\ECCB"}.ms-Icon--Embed:before{content:"\ECCE"}.ms-Icon--VideoSolid:before{content:"\EA0C"}.ms-Icon--Teamwork:before{content:"\EA12"}.ms-Icon--PeopleAdd:before{content:"\EA15"}.ms-Icon--Glasses:before{content:"\EA16"}.ms-Icon--DateTime2:before{content:"\EA17"}.ms-Icon--Shield:before{content:"\EA18"}.ms-Icon--Header1:before{content:"\EA19"}.ms-Icon--PageAdd:before{content:"\EA1A"}.ms-Icon--NumberedList:before{content:"\EA1C"}.ms-Icon--PowerBILogo:before{content:"\EA1E"}.ms-Icon--Product:before{content:"\ECDC"}.ms-Icon--Blocked2:before{content:"\ECE4"}.ms-Icon--FangBody:before{content:"\ECEB"}.ms-Icon--Glimmer:before{content:"\ECF4"}.ms-Icon--ChatInviteFriend:before{content:"\ECFE"}.ms-Icon--SharepointLogo:before{content:"\ED18"}.ms-Icon--YammerLogo:before{content:"\ED19"}.ms-Icon--Hide:before{content:"\ED1A"}.ms-Icon--ReturnToSession:before{content:"\ED24"}.ms-Icon--OpenFolderHorizontal:before{content:"\ED25"}.ms-Icon--CalendarMirrored:before{content:"\ED28"}.ms-Icon--SwayLogo:before{content:"\ED29"}.ms-Icon--OutOfOffice:before{content:"\ED34"}.ms-Icon--Trophy:before{content:"\ED3F"}.ms-Icon--ReopenPages:before{content:"\ED50"}.ms-Icon--AADLogo:before{content:"\ED68"}.ms-Icon--AccessLogo:before{content:"\ED69"}.ms-Icon--AdminALogo:before{content:"\ED6A"}.ms-Icon--AdminCLogo:before{content:"\ED6B"}.ms-Icon--AdminDLogo:before{content:"\ED6C"}.ms-Icon--AdminELogo:before{content:"\ED6D"}.ms-Icon--AdminLLogo:before{content:"\ED6E"}.ms-Icon--AdminMLogo:before{content:"\ED6F"}.ms-Icon--AdminOLogo:before{content:"\ED70"}.ms-Icon--AdminPLogo:before{content:"\ED71"}.ms-Icon--AdminSLogo:before{content:"\ED72"}.ms-Icon--AdminYLogo:before{content:"\ED73"}.ms-Icon--AlchemyLogo:before{content:"\ED74"}.ms-Icon--BoxLogo:before{content:"\ED75"}.ms-Icon--DelveLogo:before{content:"\ED76"}.ms-Icon--DropboxLogo:before{content:"\ED77"}.ms-Icon--ExchangeLogo:before{content:"\ED78"}.ms-Icon--LyncLogo:before{content:"\ED79"}.ms-Icon--OfficeVideoLogo:before{content:"\ED7A"}.ms-Icon--ParatureLogo:before{content:"\ED7B"}.ms-Icon--SocialListeningLogo:before{content:"\ED7C"}.ms-Icon--VisioLogo:before{content:"\ED7D"}.ms-Icon--Balloons:before{content:"\ED7E"}.ms-Icon--Cat:before{content:"\ED7F"}.ms-Icon--MailAlert:before{content:"\ED80"}.ms-Icon--MailCheck:before{content:"\ED81"}.ms-Icon--MailLowImportance:before{content:"\ED82"}.ms-Icon--MailPause:before{content:"\ED83"}.ms-Icon--MailRepeat:before{content:"\ED84"}.ms-Icon--SecurityGroup:before{content:"\ED85"}.ms-Icon--Table:before{content:"\ED86"}.ms-Icon--VoicemailForward:before{content:"\ED87"}.ms-Icon--VoicemailReply:before{content:"\ED88"}.ms-Icon--Waffle:before{content:"\ED89"}.ms-Icon--RemoveEvent:before{content:"\ED8A"}.ms-Icon--EventInfo:before{content:"\ED8B"}.ms-Icon--ForwardEvent:before{content:"\ED8C"}.ms-Icon--WipePhone:before{content:"\ED8D"}.ms-Icon--AddOnlineMeeting:before{content:"\ED8E"}.ms-Icon--JoinOnlineMeeting:before{content:"\ED8F"}.ms-Icon--RemoveLink:before{content:"\ED90"}.ms-Icon--PeopleBlock:before{content:"\ED91"}.ms-Icon--PeopleRepeat:before{content:"\ED92"}.ms-Icon--PeopleAlert:before{content:"\ED93"}.ms-Icon--PeoplePause:before{content:"\ED94"}.ms-Icon--TransferCall:before{content:"\ED95"}.ms-Icon--AddPhone:before{content:"\ED96"}.ms-Icon--UnknownCall:before{content:"\ED97"}.ms-Icon--NoteReply:before{content:"\ED98"}.ms-Icon--NoteForward:before{content:"\ED99"}.ms-Icon--NotePinned:before{content:"\ED9A"}.ms-Icon--RemoveOccurrence:before{content:"\ED9B"}.ms-Icon--Timeline:before{content:"\ED9C"}.ms-Icon--EditNote:before{content:"\ED9D"}.ms-Icon--CircleHalfFull:before{content:"\ED9E"}.ms-Icon--Room:before{content:"\ED9F"}.ms-Icon--Unsubscribe:before{content:"\EDA0"}.ms-Icon--Subscribe:before{content:"\EDA1"}.ms-Icon--RecurringTask:before{content:"\EDB2"}.ms-Icon--TaskManager:before{content:"\EDB7"}.ms-Icon--TaskManagerMirrored:before{content:"\EDB8"}.ms-Icon--Combine:before{content:"\EDBB"}.ms-Icon--Split:before{content:"\EDBC"}.ms-Icon--DoubleChevronUp:before{content:"\EDBD"}.ms-Icon--DoubleChevronLeft:before{content:"\EDBE"}.ms-Icon--DoubleChevronRight:before{content:"\EDBF"}.ms-Icon--Ascending:before{content:"\EDC0"}.ms-Icon--Descending:before{content:"\EDC1"}.ms-Icon--TextBox:before{content:"\EDC2"}.ms-Icon--TextField:before{content:"\EDC3"}.ms-Icon--NumberField:before{content:"\EDC4"}.ms-Icon--Dropdown:before{content:"\EDC5"}.ms-Icon--BookingsLogo:before{content:"\EDC7"}.ms-Icon--ClassNotebookLogo:before{content:"\EDC8"}.ms-Icon--CollabsDBLogo:before{content:"\EDC9"}.ms-Icon--DelveAnalyticsLogo:before{content:"\EDCA"}.ms-Icon--DocsLogo:before{content:"\EDCB"}.ms-Icon--Dynamics365Logo:before{content:"\EDCC"}.ms-Icon--DynamicSMBLogo:before{content:"\EDCD"}.ms-Icon--OfficeAssistantLogo:before{content:"\EDCE"}.ms-Icon--OfficeStoreLogo:before{content:"\EDCF"}.ms-Icon--OneNoteEduLogo:before{content:"\EDD0"}.ms-Icon--Planner:before{content:"\EDD1"}.ms-Icon--PowerApps:before{content:"\EDD2"}.ms-Icon--Suitcase:before{content:"\EDD3"}.ms-Icon--ProjectLogo:before{content:"\EDD4"}.ms-Icon--CaretLeft8:before{content:"\EDD5"}.ms-Icon--CaretRight8:before{content:"\EDD6"}.ms-Icon--CaretUp8:before{content:"\EDD7"}.ms-Icon--CaretDown8:before{content:"\EDD8"}.ms-Icon--CaretLeftSolid8:before{content:"\EDD9"}.ms-Icon--CaretRightSolid8:before{content:"\EDDA"}.ms-Icon--CaretUpSolid8:before{content:"\EDDB"}.ms-Icon--CaretDownSolid8:before{content:"\EDDC"}.ms-Icon--ClearFormatting:before{content:"\EDDD"}.ms-Icon--Superscript:before{content:"\EDDE"}.ms-Icon--Subscript:before{content:"\EDDF"}.ms-Icon--Strikethrough:before{content:"\EDE0"}.ms-Icon--SingleBookmark:before{content:"\EDFF"}.ms-Icon--DoubleChevronDown:before{content:"\EE04"}.ms-Icon--ReplyAll:before{content:"\EE0A"}.ms-Icon--GoogleDriveLogo:before{content:"\EE0B"}.ms-Icon--Questionnaire:before{content:"\EE19"}.ms-Icon--ReplyMirrored:before{content:"\EE35"}.ms-Icon--ReplyAllMirrored:before{content:"\EE36"}.ms-Icon--AddGroup:before{content:"\EE3D"}.ms-Icon--QuestionnaireMirrored:before{content:"\EE4B"}.ms-Icon--TemporaryUser:before{content:"\EE58"}.ms-Icon--GroupedDescending:before{content:"\EE66"}.ms-Icon--GroupedAscending:before{content:"\EE67"}.ms-Icon--SortUp:before{content:"\EE68"}.ms-Icon--SortDown:before{content:"\EE69"}.ms-Icon--AwayStatus:before{content:"\EE6A"}.ms-Icon--SyncToPC:before{content:"\EE6E"}.ms-Icon--AustralianRules:before{content:"\EE70"}.ms-Icon--DateTimeMirrored:before{content:"\EE93"}.ms-Icon--DoubleChevronUp12:before{content:"\EE96"}.ms-Icon--DoubleChevronDown12:before{content:"\EE97"}.ms-Icon--DoubleChevronLeft12:before{content:"\EE98"}.ms-Icon--DoubleChevronRight12:before{content:"\EE99"}.ms-Icon--CalendarAgenda:before{content:"\EE9A"}.ms-Icon--AddEvent:before{content:"\EEB5"}.ms-Icon--AssetLibrary:before{content:"\EEB6"}.ms-Icon--DataConnectionLibrary:before{content:"\EEB7"}.ms-Icon--DocLibrary:before{content:"\EEB8"}.ms-Icon--FormLibrary:before{content:"\EEB9"}.ms-Icon--FormLibraryMirrored:before{content:"\EEBA"}.ms-Icon--ReportLibrary:before{content:"\EEBB"}.ms-Icon--ReportLibraryMirrored:before{content:"\EEBC"}.ms-Icon--ContactCard:before{content:"\EEBD"}.ms-Icon--CustomList:before{content:"\EEBE"}.ms-Icon--CustomListMirrored:before{content:"\EEBF"}.ms-Icon--IssueTracking:before{content:"\EEC0"}.ms-Icon--IssueTrackingMirrored:before{content:"\EEC1"}.ms-Icon--PictureLibrary:before{content:"\EEC2"}.ms-Icon--AppForOfficeLogo:before{content:"\EEC7"}.ms-Icon--OfflineOneDriveParachute:before{content:"\EEC8"}.ms-Icon--OfflineOneDriveParachuteDisabled:before{content:"\EEC9"}.ms-Icon--LargeGrid:before{content:"\EECB"}.ms-Icon--TriangleSolidUp12:before{content:"\EECC"}.ms-Icon--TriangleSolidDown12:before{content:"\EECD"}.ms-Icon--TriangleSolidLeft12:before{content:"\EECE"}.ms-Icon--TriangleSolidRight12:before{content:"\EECF"}.ms-Icon--TriangleUp12:before{content:"\EED0"}.ms-Icon--TriangleDown12:before{content:"\EED1"}.ms-Icon--TriangleLeft12:before{content:"\EED2"}.ms-Icon--TriangleRight12:before{content:"\EED3"}.ms-Icon--ArrowUpRight8:before{content:"\EED4"}.ms-Icon--ArrowDownRight8:before{content:"\EED5"}.ms-Icon--DocumentSet:before{content:"\EED6"}.ms-Icon--DelveAnalytics:before{content:"\EEEE"}.ms-Icon--ArrowUpRightMirrored8:before{content:"\EEEF"}.ms-Icon--ArrowDownRightMirrored8:before{content:"\EEF0"}.ms-Icon--OneDriveAdd:before{content:"\EF32"}.ms-Icon--Header2:before{content:"\EF36"}.ms-Icon--Header3:before{content:"\EF37"}.ms-Icon--Header4:before{content:"\EF38"}.ms-Icon--MarketDown:before{content:"\EF42"}.ms-Icon--CalendarWorkWeek:before{content:"\EF51"}.ms-Icon--SidePanel:before{content:"\EF52"}.ms-Icon--GlobeFavorite:before{content:"\EF53"}.ms-Icon--CaretTopLeftSolid8:before{content:"\EF54"}.ms-Icon--CaretTopRightSolid8:before{content:"\EF55"}.ms-Icon--ViewAll2:before{content:"\EF56"}.ms-Icon--DocumentReply:before{content:"\EF57"}.ms-Icon--PlayerSettings:before{content:"\EF58"}.ms-Icon--ReceiptForward:before{content:"\EF59"}.ms-Icon--ReceiptReply:before{content:"\EF5A"}.ms-Icon--ReceiptCheck:before{content:"\EF5B"}.ms-Icon--Fax:before{content:"\EF5C"}.ms-Icon--RecurringEvent:before{content:"\EF5D"}.ms-Icon--ReplyAlt:before{content:"\EF5E"}.ms-Icon--ReplyAllAlt:before{content:"\EF5F"}.ms-Icon--EditStyle:before{content:"\EF60"}.ms-Icon--EditMail:before{content:"\EF61"}.ms-Icon--Lifesaver:before{content:"\EF62"}.ms-Icon--LifesaverLock:before{content:"\EF63"}.ms-Icon--InboxCheck:before{content:"\EF64"}.ms-Icon--FolderSearch:before{content:"\EF65"}.ms-Icon--CollapseMenu:before{content:"\EF66"}.ms-Icon--ExpandMenu:before{content:"\EF67"}.ms-Icon--Boards:before{content:"\EF68"}.ms-Icon--SunAdd:before{content:"\EF69"}.ms-Icon--SunQuestionMark:before{content:"\EF6A"}.ms-Icon--LandscapeOrientation:before{content:"\EF6B"}.ms-Icon--DocumentSearch:before{content:"\EF6C"}.ms-Icon--PublicCalendar:before{content:"\EF6D"}.ms-Icon--PublicContactCard:before{content:"\EF6E"}.ms-Icon--PublicEmail:before{content:"\EF6F"}.ms-Icon--PublicFolder:before{content:"\EF70"}.ms-Icon--WordDocument:before{content:"\EF71"}.ms-Icon--PowerPointDocument:before{content:"\EF72"}.ms-Icon--ExcelDocument:before{content:"\EF73"}.ms-Icon--GroupedList:before{content:"\EF74"}.ms-Icon--ClassroomLogo:before{content:"\EF75"}.ms-Icon--Sections:before{content:"\EF76"}.ms-Icon--EditPhoto:before{content:"\EF77"}.ms-Icon--Starburst:before{content:"\EF78"}.ms-Icon--ShareiOS:before{content:"\EF79"}.ms-Icon--AirTickets:before{content:"\EF7A"}.ms-Icon--PencilReply:before{content:"\EF7B"}.ms-Icon--Tiles2:before{content:"\EF7C"}.ms-Icon--SkypeCircleCheck:before{content:"\EF7D"}.ms-Icon--SkypeCircleClock:before{content:"\EF7E"}.ms-Icon--SkypeCircleMinus:before{content:"\EF7F"}.ms-Icon--SkypeCheck:before{content:"\EF80"}.ms-Icon--SkypeClock:before{content:"\EF81"}.ms-Icon--SkypeMinus:before{content:"\EF82"}.ms-Icon--SkypeMessage:before{content:"\EF83"}.ms-Icon--ClosedCaption:before{content:"\EF84"}.ms-Icon--ATPLogo:before{content:"\EF85"}.ms-Icon--OfficeFormLogo:before{content:"\EF86"}.ms-Icon--RecycleBin:before{content:"\EF87"}.ms-Icon--EmptyRecycleBin:before{content:"\EF88"}.ms-Icon--Hide2:before{content:"\EF89"}.ms-Icon--iOSAppStoreLogo:before{content:"\EF8A"}.ms-Icon--AndroidLogo:before{content:"\EF8B"}.ms-Icon--Breadcrumb:before{content:"\EF8C"}.ms-Icon--ClearFilter:before{content:"\EF8F"}.ms-Icon--Flow:before{content:"\EF90"}.ms-Icon--PageCheckedOut:before{content:"\F02C"}.ms-Icon--SetAction:before{content:"\F071"}.ms-Icon--PowerAppsLogo:before{content:"\F091"}.ms-Icon--PowerApps2Logo:before{content:"\F092"}.ms-Icon--FabricAssetLibrary:before{content:"\F09C"}.ms-Icon--FabricDataConnectionLibrary:before{content:"\F09D"}.ms-Icon--FabricDocLibrary:before{content:"\F09E"}.ms-Icon--FabricFormLibrary:before{content:"\F09F"}.ms-Icon--FabricFormLibraryMirrored:before{content:"\F0A0"}.ms-Icon--FabricReportLibrary:before{content:"\F0A1"}.ms-Icon--FabricReportLibraryMirrored:before{content:"\F0A2"}.ms-Icon--FabricPublicFolder:before{content:"\F0A3"}.ms-Icon--FabricFolderSearch:before{content:"\F0A4"}.ms-Icon--FabricMovetoFolder:before{content:"\F0A5"}.ms-Icon--FabricUnsyncFolder:before{content:"\F0A6"}.ms-Icon--FabricSyncFolder:before{content:"\F0A7"}.ms-Icon--FabricOpenFolderHorizontal:before{content:"\F0A8"}.ms-Icon--FabricFolder:before{content:"\F0A9"}.ms-Icon--FabricFolderFill:before{content:"\F0AA"}.ms-Icon--FabricNewFolder:before{content:"\F0AB"}.ms-Icon--FabricPictureLibrary:before{content:"\F0AC"}.ms-Icon--AddFavorite:before{content:"\F0C8"}.ms-Icon--AddFavoriteFill:before{content:"\F0C9"}.ms-Icon--BufferTimeBefore:before{content:"\F0CF"}.ms-Icon--BufferTimeAfter:before{content:"\F0D0"}.ms-Icon--BufferTimeBoth:before{content:"\F0D1"}.ms-Icon--PageCheckedin:before{content:"\F104"}.ms-Icon--CaretBottomLeftSolid8:before{content:"\F121"}.ms-Icon--CaretBottomRightSolid8:before{content:"\F122"}.ms-Icon--FolderHorizontal:before{content:"\F12B"}.ms-Icon--MicrosoftStaffhubLogo:before{content:"\F130"}.ms-Icon--CaloriesAdd:before{content:"\F172"}.ms-Icon--BranchFork:before{content:"\F173"}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x1.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x1.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x1.png)}.ms-BrandIcon--Icon16{width:16px;height:16px}html[dir] .ms-BrandIcon--Icon16{background-size:100% 100%}.ms-BrandIcon--Icon48{width:48px;height:48px}html[dir] .ms-BrandIcon--Icon48{background-size:100% 100%}.ms-BrandIcon--Icon96{width:96px;height:96px}html[dir] .ms-BrandIcon--Icon96{background-size:100% 100%}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x1_5.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x1_5.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x1_5.png)}}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:192dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x2.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x2.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x2.png)}}@media only screen and (-webkit-min-device-pixel-ratio:3),only screen and (min-resolution:288dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x3.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x3.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x3.png)}}.ms-u-slideRightIn10{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn10{animation-name:fadeIn,slideRightIn10}html[dir=rtl] .ms-u-slideRightIn10{animation-name:fadeIn-rtl,slideRightIn10-rtl}@keyframes slideRightIn10-rtl{0%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn10{0%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn20{animation-name:fadeIn,slideRightIn20}html[dir=rtl] .ms-u-slideRightIn20{animation-name:fadeIn-rtl,slideRightIn20-rtl}@keyframes slideRightIn20-rtl{0%{transform:translate3d(20px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn20{0%{transform:translate3d(-20px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn40{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn40{animation-name:fadeIn,slideRightIn40}html[dir=rtl] .ms-u-slideRightIn40{animation-name:fadeIn-rtl,slideRightIn40-rtl}@keyframes slideRightIn40-rtl{0%{transform:translate3d(40px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn40{0%{transform:translate3d(-40px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn10{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn10{animation-name:fadeIn,slideLeftIn10}html[dir=rtl] .ms-u-slideLeftIn10{animation-name:fadeIn-rtl,slideLeftIn10-rtl}@keyframes slideLeftIn10-rtl{0%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn10{0%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn20{animation-name:fadeIn,slideLeftIn20}html[dir=rtl] .ms-u-slideLeftIn20{animation-name:fadeIn-rtl,slideLeftIn20-rtl}@keyframes slideLeftIn20-rtl{0%{transform:translate3d(-20px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn20{0%{transform:translate3d(20px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn40{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn40{animation-name:fadeIn,slideLeftIn40}html[dir=rtl] .ms-u-slideLeftIn40{animation-name:fadeIn-rtl,slideLeftIn40-rtl}@keyframes slideLeftIn40-rtl{0%{transform:translate3d(-40px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn40{0%{transform:translate3d(40px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn400{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn400{animation-name:fadeIn,slideRightIn400}html[dir=rtl] .ms-u-slideRightIn400{animation-name:fadeIn-rtl,slideRightIn400-rtl}@keyframes slideRightIn400-rtl{0%{transform:translate3d(400px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn400{0%{transform:translate3d(-400px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn400{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn400{animation-name:fadeIn,slideLeft400}html[dir=rtl] .ms-u-slideLeftIn400{animation-name:fadeIn-rtl,slideLeft400-rtl}@keyframes slideLeft400-rtl{0%{transform:translate3d(-400px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeft400{0%{transform:translate3d(400px,0,0)}to{transform:translateZ(0)}}.ms-u-slideUpIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpIn20{animation-name:fadeIn,slideUpIn20}html[dir=rtl] .ms-u-slideUpIn20{animation-name:fadeIn-rtl,slideUpIn20-rtl}@keyframes slideUpIn20-rtl{0%{transform:translate3d(0,20px,0)}to{transform:translateZ(0)}}@keyframes slideUpIn20{0%{transform:translate3d(0,20px,0)}to{transform:translateZ(0)}}.ms-u-slideUpIn10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpIn10{animation-name:fadeIn,slideUpIn10}html[dir=rtl] .ms-u-slideUpIn10{animation-name:fadeIn-rtl,slideUpIn10-rtl}@keyframes slideUpIn10-rtl{0%{transform:translate3d(0,10px,0)}to{transform:translateZ(0)}}@keyframes slideUpIn10{0%{transform:translate3d(0,10px,0)}to{transform:translateZ(0)}}.ms-u-slideDownIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownIn20{animation-name:fadeIn,slideDownIn20}html[dir=rtl] .ms-u-slideDownIn20{animation-name:fadeIn-rtl,slideDownIn20-rtl}@keyframes slideDownIn20-rtl{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}@keyframes slideDownIn20{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}.ms-u-slideDownIn10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownIn10{animation-name:fadeIn,slideDownIn10}html[dir=rtl] .ms-u-slideDownIn10{animation-name:fadeIn-rtl,slideDownIn10-rtl}@keyframes slideDownIn10-rtl{0%{transform:translate3d(0,-10px,0)}to{transform:translateZ(0)}}@keyframes slideDownIn10{0%{transform:translate3d(0,-10px,0)}to{transform:translateZ(0)}}.ms-u-slideRightOut40{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightOut40{animation-name:fadeOut,slideRightOut40}html[dir=rtl] .ms-u-slideRightOut40{animation-name:fadeOut-rtl,slideRightOut40-rtl}@keyframes slideRightOut40-rtl{0%{transform:translateZ(0)}to{transform:translate3d(-40px,0,0)}}@keyframes slideRightOut40{0%{transform:translateZ(0)}to{transform:translate3d(40px,0,0)}}.ms-u-slideLeftOut40{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftOut40{animation-name:fadeOut,slideLeftOut40}html[dir=rtl] .ms-u-slideLeftOut40{animation-name:fadeOut-rtl,slideLeftOut40-rtl}@keyframes slideLeftOut40-rtl{0%{transform:translateZ(0)}to{transform:translate3d(40px,0,0)}}@keyframes slideLeftOut40{0%{transform:translateZ(0)}to{transform:translate3d(-40px,0,0)}}.ms-u-slideRightOut400{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightOut400{animation-name:fadeOut,slideRightOut400}html[dir=rtl] .ms-u-slideRightOut400{animation-name:fadeOut-rtl,slideRightOut400-rtl}@keyframes slideRightOut400-rtl{0%{transform:translateZ(0)}to{transform:translate3d(-400px,0,0)}}@keyframes slideRightOut400{0%{transform:translateZ(0)}to{transform:translate3d(400px,0,0)}}.ms-u-slideLeftOut400{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftOut400{animation-name:fadeOut,slideLeftOut400}html[dir=rtl] .ms-u-slideLeftOut400{animation-name:fadeOut-rtl,slideLeftOut400-rtl}@keyframes slideLeftOut400-rtl{0%{transform:translateZ(0)}to{transform:translate3d(400px,0,0)}}@keyframes slideLeftOut400{0%{transform:translateZ(0)}to{transform:translate3d(-400px,0,0)}}.ms-u-slideUpOut20{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpOut20{animation-name:fadeOut,slideUpOut20}html[dir=rtl] .ms-u-slideUpOut20{animation-name:fadeOut-rtl,slideUpOut20-rtl}@keyframes slideUpOut20-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}@keyframes slideUpOut20{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}.ms-u-slideUpOut10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpOut10{animation-name:fadeOut,slideUpOut10}html[dir=rtl] .ms-u-slideUpOut10{animation-name:fadeOut-rtl,slideUpOut10-rtl}@keyframes slideUpOut10-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,-10px,0)}}@keyframes slideUpOut10{0%{transform:translateZ(0)}to{transform:translate3d(0,-10px,0)}}.ms-u-slideDownOut20{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownOut20{animation-name:fadeOut,slideDownOut20}html[dir=rtl] .ms-u-slideDownOut20{animation-name:fadeOut-rtl,slideDownOut20-rtl}@keyframes slideDownOut20-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,20px,0)}}@keyframes slideDownOut20{0%{transform:translateZ(0)}to{transform:translate3d(0,20px,0)}}.ms-u-slideDownOut10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownOut10{animation-name:fadeOut,slideDownOut10}html[dir=rtl] .ms-u-slideDownOut10{animation-name:fadeOut-rtl,slideDownOut10-rtl}@keyframes slideDownOut10-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,10px,0)}}@keyframes slideDownOut10{0%{transform:translateZ(0)}to{transform:translate3d(0,10px,0)}}.ms-u-scaleUpIn100{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleUpIn100{animation-name:fadeIn,scaleUp100}html[dir=rtl] .ms-u-scaleUpIn100{animation-name:fadeIn-rtl,scaleUp100-rtl}@keyframes scaleUp100-rtl{0%{transform:scale3d(.98,.98,1)}to{transform:scaleX(1)}}@keyframes scaleUp100{0%{transform:scale3d(.98,.98,1)}to{transform:scaleX(1)}}.ms-u-scaleDownIn100{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleDownIn100{animation-name:fadeIn,scaleDown100}html[dir=rtl] .ms-u-scaleDownIn100{animation-name:fadeIn-rtl,scaleDown100-rtl}@keyframes scaleDown100-rtl{0%{transform:scale3d(1.03,1.03,1)}to{transform:scaleX(1)}}@keyframes scaleDown100{0%{transform:scale3d(1.03,1.03,1)}to{transform:scaleX(1)}}.ms-u-scaleUpOut103{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleUpOut103{animation-name:fadeOut,scaleUp103}html[dir=rtl] .ms-u-scaleUpOut103{animation-name:fadeOut-rtl,scaleUp103-rtl}@keyframes scaleUp103-rtl{0%{transform:scaleX(1)}to{transform:scale3d(1.03,1.03,1)}}@keyframes scaleUp103{0%{transform:scaleX(1)}to{transform:scale3d(1.03,1.03,1)}}.ms-u-scaleDownOut98{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleDownOut98{animation-name:fadeOut,scaleDown98}html[dir=rtl] .ms-u-scaleDownOut98{animation-name:fadeOut-rtl,scaleDown98-rtl}@keyframes scaleDown98-rtl{0%{transform:scaleX(1)}to{transform:scale3d(.98,.98,1)}}@keyframes scaleDown98{0%{transform:scaleX(1)}to{transform:scale3d(.98,.98,1)}}.ms-u-fadeIn400{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both}html[dir=ltr] .ms-u-fadeIn400{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn400{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn100{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.167s}html[dir=ltr] .ms-u-fadeIn100{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn100{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn200{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.267s}html[dir=ltr] .ms-u-fadeIn200{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn200{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn500{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.467s}html[dir=ltr] .ms-u-fadeIn500{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn500{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}@keyframes fadeIn-rtl{0%{opacity:0;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:1}}@keyframes fadeIn{0%{opacity:0;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:1}}.ms-u-fadeOut400{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both}html[dir=ltr] .ms-u-fadeOut400{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut400{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut100{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.1s}html[dir=ltr] .ms-u-fadeOut100{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut100{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut200{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.167s}html[dir=ltr] .ms-u-fadeOut200{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut200{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut500{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.467s}html[dir=ltr] .ms-u-fadeOut500{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut500{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}@keyframes fadeOut-rtl{0%{opacity:1;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:0}}@keyframes fadeOut{0%{opacity:1;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:0}}.ms-u-rotate90deg{-webkit-animation-duration:.1s;-moz-animation-duration:.1s;-ms-animation-duration:.1s;-o-animation-duration:.1s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-rotate90deg{animation-name:rotate90}html[dir=rtl] .ms-u-rotate90deg{animation-name:rotate90-rtl}@keyframes rotate90-rtl{0%{transform:rotate(0deg)}to{transform:rotate(-90deg)}}@keyframes rotate90{0%{transform:rotate(0deg)}to{transform:rotate(90deg)}}.ms-u-rotateN90deg{-webkit-animation-duration:.1s;-moz-animation-duration:.1s;-ms-animation-duration:.1s;-o-animation-duration:.1s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-rotateN90deg{animation-name:rotateN90}html[dir=rtl] .ms-u-rotateN90deg{animation-name:rotateN90-rtl}@keyframes rotateN90-rtl{0%{transform:rotate(-90deg)}to{transform:rotate(0deg)}}@keyframes rotateN90{0%{transform:rotate(90deg)}to{transform:rotate(0deg)}}html[dir] .ms-u-expandCollapse400{transition:height .367s cubic-bezier(.1,.25,.75,.9)}html[dir] .ms-u-expandCollapse200{transition:height .167s cubic-bezier(.1,.25,.75,.9)}html[dir] .ms-u-expandCollapse100{transition:height .1s cubic-bezier(.1,.25,.75,.9)}.ms-u-delay100{animation-delay:.167s}.ms-u-delay200{animation-delay:.267s}@media (max-width:479px){.ms-u-hiddenLgDown,.ms-u-hiddenMdDown,.ms-u-hiddenSm,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:480px) and (max-width:639px){.ms-u-hiddenLgDown,.ms-u-hiddenMd,.ms-u-hiddenMdDown,.ms-u-hiddenMdUp,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:640px) and (max-width:1023px){.ms-u-hiddenLg,.ms-u-hiddenLgDown,.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:1024px) and (max-width:1365px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXl,.ms-u-hiddenXlDown,.ms-u-hiddenXlUp,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:1366px) and (max-width:1919px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlUp,.ms-u-hiddenXxl,.ms-u-hiddenXxlDown,.ms-u-hiddenXxlUp{display:none!important}}@media (min-width:1920px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlUp,.ms-u-hiddenXxlUp,.ms-u-hiddenXxxl{display:none!important}}.ms-u-sm12{width:100%}.ms-u-sm11{width:91.66666666666666%}.ms-u-sm10{width:83.33333333333334%}.ms-u-sm9{width:75%}.ms-u-sm8{width:66.66666666666666%}.ms-u-sm7{width:58.333333333333336%}.ms-u-sm6{width:50%}.ms-u-sm5{width:41.66666666666667%}.ms-u-sm4{width:33.33333333333333%}.ms-u-sm3{width:25%}.ms-u-sm2{width:16.666666666666664%}.ms-u-sm1{width:8.333333333333332%}html[dir=ltr] .ms-u-smPull12{right:100%}html[dir=rtl] .ms-u-smPull12{left:100%}html[dir=ltr] .ms-u-smPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-smPull11{left:91.66666666666666%}html[dir=ltr] .ms-u-smPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-smPull10{left:83.33333333333334%}html[dir=ltr] .ms-u-smPull9{right:75%}html[dir=rtl] .ms-u-smPull9{left:75%}html[dir=ltr] .ms-u-smPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-smPull8{left:66.66666666666666%}html[dir=ltr] .ms-u-smPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-smPull7{left:58.333333333333336%}html[dir=ltr] .ms-u-smPull6{right:50%}html[dir=rtl] .ms-u-smPull6{left:50%}html[dir=ltr] .ms-u-smPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-smPull5{left:41.66666666666667%}html[dir=ltr] .ms-u-smPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-smPull4{left:33.33333333333333%}html[dir=ltr] .ms-u-smPull3{right:25%}html[dir=rtl] .ms-u-smPull3{left:25%}html[dir=ltr] .ms-u-smPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-smPull2{left:16.666666666666664%}html[dir=ltr] .ms-u-smPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-smPull1{left:8.333333333333332%}html[dir=ltr] .ms-u-smPull0{right:auto}html[dir=rtl] .ms-u-smPull0{left:auto}html[dir=ltr] .ms-u-smPush12{left:100%}html[dir=rtl] .ms-u-smPush12{right:100%}html[dir=ltr] .ms-u-smPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-smPush11{right:91.66666666666666%}html[dir=ltr] .ms-u-smPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-smPush10{right:83.33333333333334%}html[dir=ltr] .ms-u-smPush9{left:75%}html[dir=rtl] .ms-u-smPush9{right:75%}html[dir=ltr] .ms-u-smPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-smPush8{right:66.66666666666666%}html[dir=ltr] .ms-u-smPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-smPush7{right:58.333333333333336%}html[dir=ltr] .ms-u-smPush6{left:50%}html[dir=rtl] .ms-u-smPush6{right:50%}html[dir=ltr] .ms-u-smPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-smPush5{right:41.66666666666667%}html[dir=ltr] .ms-u-smPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-smPush4{right:33.33333333333333%}html[dir=ltr] .ms-u-smPush3{left:25%}html[dir=rtl] .ms-u-smPush3{right:25%}html[dir=ltr] .ms-u-smPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-smPush2{right:16.666666666666664%}html[dir=ltr] .ms-u-smPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-smPush1{right:8.333333333333332%}html[dir=ltr] .ms-u-smPush0{left:auto}html[dir=rtl] .ms-u-smPush0{right:auto}html[dir=ltr] .ms-u-smOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-smOffset11{margin-right:91.66666666666666%}html[dir=ltr] .ms-u-smOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-smOffset10{margin-right:83.33333333333334%}html[dir=ltr] .ms-u-smOffset9{margin-left:75%}html[dir=rtl] .ms-u-smOffset9{margin-right:75%}html[dir=ltr] .ms-u-smOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-smOffset8{margin-right:66.66666666666666%}html[dir=ltr] .ms-u-smOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-smOffset7{margin-right:58.333333333333336%}html[dir=ltr] .ms-u-smOffset6{margin-left:50%}html[dir=rtl] .ms-u-smOffset6{margin-right:50%}html[dir=ltr] .ms-u-smOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-smOffset5{margin-right:41.66666666666667%}html[dir=ltr] .ms-u-smOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-smOffset4{margin-right:33.33333333333333%}html[dir=ltr] .ms-u-smOffset3{margin-left:25%}html[dir=rtl] .ms-u-smOffset3{margin-right:25%}html[dir=ltr] .ms-u-smOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-smOffset2{margin-right:16.666666666666664%}html[dir=ltr] .ms-u-smOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-smOffset1{margin-right:8.333333333333332%}html[dir=ltr] .ms-u-smOffset0{margin-left:0}html[dir=rtl] .ms-u-smOffset0{margin-right:0}@media (min-width:480px){.ms-u-md12{width:100%}}@media (min-width:480px){.ms-u-md11{width:91.66666666666666%}}@media (min-width:480px){.ms-u-md10{width:83.33333333333334%}}@media (min-width:480px){.ms-u-md9{width:75%}}@media (min-width:480px){.ms-u-md8{width:66.66666666666666%}}@media (min-width:480px){.ms-u-md7{width:58.333333333333336%}}@media (min-width:480px){.ms-u-md6{width:50%}}@media (min-width:480px){.ms-u-md5{width:41.66666666666667%}}@media (min-width:480px){.ms-u-md4{width:33.33333333333333%}}@media (min-width:480px){.ms-u-md3{width:25%}}@media (min-width:480px){.ms-u-md2{width:16.666666666666664%}}@media (min-width:480px){.ms-u-md1{width:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull12{right:100%}html[dir=rtl] .ms-u-mdPull12{left:100%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-mdPull11{left:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-mdPull10{left:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull9{right:75%}html[dir=rtl] .ms-u-mdPull9{left:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-mdPull8{left:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-mdPull7{left:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull6{right:50%}html[dir=rtl] .ms-u-mdPull6{left:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-mdPull5{left:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-mdPull4{left:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull3{right:25%}html[dir=rtl] .ms-u-mdPull3{left:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-mdPull2{left:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-mdPull1{left:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull0{right:auto}html[dir=rtl] .ms-u-mdPull0{left:auto}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush12{left:100%}html[dir=rtl] .ms-u-mdPush12{right:100%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-mdPush11{right:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-mdPush10{right:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush9{left:75%}html[dir=rtl] .ms-u-mdPush9{right:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-mdPush8{right:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-mdPush7{right:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush6{left:50%}html[dir=rtl] .ms-u-mdPush6{right:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-mdPush5{right:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-mdPush4{right:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush3{left:25%}html[dir=rtl] .ms-u-mdPush3{right:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-mdPush2{right:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-mdPush1{right:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush0{left:auto}html[dir=rtl] .ms-u-mdPush0{right:auto}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-mdOffset11{margin-right:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-mdOffset10{margin-right:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset9{margin-left:75%}html[dir=rtl] .ms-u-mdOffset9{margin-right:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-mdOffset8{margin-right:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-mdOffset7{margin-right:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset6{margin-left:50%}html[dir=rtl] .ms-u-mdOffset6{margin-right:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-mdOffset5{margin-right:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-mdOffset4{margin-right:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset3{margin-left:25%}html[dir=rtl] .ms-u-mdOffset3{margin-right:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-mdOffset2{margin-right:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-mdOffset1{margin-right:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset0{margin-left:0}html[dir=rtl] .ms-u-mdOffset0{margin-right:0}}@media (min-width:640px){.ms-u-lg12{width:100%}}@media (min-width:640px){.ms-u-lg11{width:91.66666666666666%}}@media (min-width:640px){.ms-u-lg10{width:83.33333333333334%}}@media (min-width:640px){.ms-u-lg9{width:75%}}@media (min-width:640px){.ms-u-lg8{width:66.66666666666666%}}@media (min-width:640px){.ms-u-lg7{width:58.333333333333336%}}@media (min-width:640px){.ms-u-lg6{width:50%}}@media (min-width:640px){.ms-u-lg5{width:41.66666666666667%}}@media (min-width:640px){.ms-u-lg4{width:33.33333333333333%}}@media (min-width:640px){.ms-u-lg3{width:25%}}@media (min-width:640px){.ms-u-lg2{width:16.666666666666664%}}@media (min-width:640px){.ms-u-lg1{width:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull12{right:100%}html[dir=rtl] .ms-u-lgPull12{left:100%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-lgPull11{left:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-lgPull10{left:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull9{right:75%}html[dir=rtl] .ms-u-lgPull9{left:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-lgPull8{left:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-lgPull7{left:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull6{right:50%}html[dir=rtl] .ms-u-lgPull6{left:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-lgPull5{left:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-lgPull4{left:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull3{right:25%}html[dir=rtl] .ms-u-lgPull3{left:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-lgPull2{left:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-lgPull1{left:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull0{right:auto}html[dir=rtl] .ms-u-lgPull0{left:auto}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush12{left:100%}html[dir=rtl] .ms-u-lgPush12{right:100%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-lgPush11{right:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-lgPush10{right:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush9{left:75%}html[dir=rtl] .ms-u-lgPush9{right:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-lgPush8{right:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-lgPush7{right:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush6{left:50%}html[dir=rtl] .ms-u-lgPush6{right:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-lgPush5{right:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-lgPush4{right:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush3{left:25%}html[dir=rtl] .ms-u-lgPush3{right:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-lgPush2{right:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-lgPush1{right:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush0{left:auto}html[dir=rtl] .ms-u-lgPush0{right:auto}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-lgOffset11{margin-right:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-lgOffset10{margin-right:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset9{margin-left:75%}html[dir=rtl] .ms-u-lgOffset9{margin-right:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-lgOffset8{margin-right:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-lgOffset7{margin-right:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset6{margin-left:50%}html[dir=rtl] .ms-u-lgOffset6{margin-right:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-lgOffset5{margin-right:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-lgOffset4{margin-right:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset3{margin-left:25%}html[dir=rtl] .ms-u-lgOffset3{margin-right:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-lgOffset2{margin-right:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-lgOffset1{margin-right:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset0{margin-left:0}html[dir=rtl] .ms-u-lgOffset0{margin-right:0}}@media (min-width:1024px){.ms-u-xl12{width:100%}}@media (min-width:1024px){.ms-u-xl11{width:91.66666666666666%}}@media (min-width:1024px){.ms-u-xl10{width:83.33333333333334%}}@media (min-width:1024px){.ms-u-xl9{width:75%}}@media (min-width:1024px){.ms-u-xl8{width:66.66666666666666%}}@media (min-width:1024px){.ms-u-xl7{width:58.333333333333336%}}@media (min-width:1024px){.ms-u-xl6{width:50%}}@media (min-width:1024px){.ms-u-xl5{width:41.66666666666667%}}@media (min-width:1024px){.ms-u-xl4{width:33.33333333333333%}}@media (min-width:1024px){.ms-u-xl3{width:25%}}@media (min-width:1024px){.ms-u-xl2{width:16.666666666666664%}}@media (min-width:1024px){.ms-u-xl1{width:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull12{right:100%}html[dir=rtl] .ms-u-xlPull12{left:100%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xlPull11{left:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xlPull10{left:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull9{right:75%}html[dir=rtl] .ms-u-xlPull9{left:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xlPull8{left:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xlPull7{left:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull6{right:50%}html[dir=rtl] .ms-u-xlPull6{left:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xlPull5{left:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xlPull4{left:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull3{right:25%}html[dir=rtl] .ms-u-xlPull3{left:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xlPull2{left:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xlPull1{left:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull0{right:auto}html[dir=rtl] .ms-u-xlPull0{left:auto}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush12{left:100%}html[dir=rtl] .ms-u-xlPush12{right:100%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xlPush11{right:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xlPush10{right:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush9{left:75%}html[dir=rtl] .ms-u-xlPush9{right:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xlPush8{right:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xlPush7{right:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush6{left:50%}html[dir=rtl] .ms-u-xlPush6{right:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xlPush5{right:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xlPush4{right:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush3{left:25%}html[dir=rtl] .ms-u-xlPush3{right:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xlPush2{right:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xlPush1{right:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush0{left:auto}html[dir=rtl] .ms-u-xlPush0{right:auto}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xlOffset11{margin-right:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xlOffset10{margin-right:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xlOffset9{margin-right:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xlOffset8{margin-right:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xlOffset7{margin-right:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xlOffset6{margin-right:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xlOffset5{margin-right:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xlOffset4{margin-right:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xlOffset3{margin-right:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xlOffset2{margin-right:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xlOffset1{margin-right:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset0{margin-left:0}html[dir=rtl] .ms-u-xlOffset0{margin-right:0}}@media (min-width:1366px){.ms-u-xxl12{width:100%}}@media (min-width:1366px){.ms-u-xxl11{width:91.66666666666666%}}@media (min-width:1366px){.ms-u-xxl10{width:83.33333333333334%}}@media (min-width:1366px){.ms-u-xxl9{width:75%}}@media (min-width:1366px){.ms-u-xxl8{width:66.66666666666666%}}@media (min-width:1366px){.ms-u-xxl7{width:58.333333333333336%}}@media (min-width:1366px){.ms-u-xxl6{width:50%}}@media (min-width:1366px){.ms-u-xxl5{width:41.66666666666667%}}@media (min-width:1366px){.ms-u-xxl4{width:33.33333333333333%}}@media (min-width:1366px){.ms-u-xxl3{width:25%}}@media (min-width:1366px){.ms-u-xxl2{width:16.666666666666664%}}@media (min-width:1366px){.ms-u-xxl1{width:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull12{right:100%}html[dir=rtl] .ms-u-xxlPull12{left:100%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xxlPull11{left:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xxlPull10{left:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull9{right:75%}html[dir=rtl] .ms-u-xxlPull9{left:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xxlPull8{left:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xxlPull7{left:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull6{right:50%}html[dir=rtl] .ms-u-xxlPull6{left:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xxlPull5{left:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xxlPull4{left:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull3{right:25%}html[dir=rtl] .ms-u-xxlPull3{left:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xxlPull2{left:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xxlPull1{left:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull0{right:auto}html[dir=rtl] .ms-u-xxlPull0{left:auto}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush12{left:100%}html[dir=rtl] .ms-u-xxlPush12{right:100%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xxlPush11{right:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xxlPush10{right:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush9{left:75%}html[dir=rtl] .ms-u-xxlPush9{right:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xxlPush8{right:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xxlPush7{right:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush6{left:50%}html[dir=rtl] .ms-u-xxlPush6{right:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xxlPush5{right:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xxlPush4{right:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush3{left:25%}html[dir=rtl] .ms-u-xxlPush3{right:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xxlPush2{right:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xxlPush1{right:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush0{left:auto}html[dir=rtl] .ms-u-xxlPush0{right:auto}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xxlOffset11{margin-right:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xxlOffset10{margin-right:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xxlOffset9{margin-right:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xxlOffset8{margin-right:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xxlOffset7{margin-right:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xxlOffset6{margin-right:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xxlOffset5{margin-right:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xxlOffset4{margin-right:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xxlOffset3{margin-right:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xxlOffset2{margin-right:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xxlOffset1{margin-right:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset0{margin-left:0}html[dir=rtl] .ms-u-xxlOffset0{margin-right:0}}@media (min-width:1920px){.ms-u-xxxl12{width:100%}}@media (min-width:1920px){.ms-u-xxxl11{width:91.66666666666666%}}@media (min-width:1920px){.ms-u-xxxl10{width:83.33333333333334%}}@media (min-width:1920px){.ms-u-xxxl9{width:75%}}@media (min-width:1920px){.ms-u-xxxl8{width:66.66666666666666%}}@media (min-width:1920px){.ms-u-xxxl7{width:58.333333333333336%}}@media (min-width:1920px){.ms-u-xxxl6{width:50%}}@media (min-width:1920px){.ms-u-xxxl5{width:41.66666666666667%}}@media (min-width:1920px){.ms-u-xxxl4{width:33.33333333333333%}}@media (min-width:1920px){.ms-u-xxxl3{width:25%}}@media (min-width:1920px){.ms-u-xxxl2{width:16.666666666666664%}}@media (min-width:1920px){.ms-u-xxxl1{width:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull12{right:100%}html[dir=rtl] .ms-u-xxxlPull12{left:100%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xxxlPull11{left:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xxxlPull10{left:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull9{right:75%}html[dir=rtl] .ms-u-xxxlPull9{left:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xxxlPull8{left:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xxxlPull7{left:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull6{right:50%}html[dir=rtl] .ms-u-xxxlPull6{left:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xxxlPull5{left:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xxxlPull4{left:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull3{right:25%}html[dir=rtl] .ms-u-xxxlPull3{left:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xxxlPull2{left:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xxxlPull1{left:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull0{right:auto}html[dir=rtl] .ms-u-xxxlPull0{left:auto}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush12{left:100%}html[dir=rtl] .ms-u-xxxlPush12{right:100%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xxxlPush11{right:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xxxlPush10{right:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush9{left:75%}html[dir=rtl] .ms-u-xxxlPush9{right:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xxxlPush8{right:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xxxlPush7{right:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush6{left:50%}html[dir=rtl] .ms-u-xxxlPush6{right:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xxxlPush5{right:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xxxlPush4{right:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush3{left:25%}html[dir=rtl] .ms-u-xxxlPush3{right:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xxxlPush2{right:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xxxlPush1{right:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush0{left:auto}html[dir=rtl] .ms-u-xxxlPush0{right:auto}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xxxlOffset11{margin-right:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xxxlOffset10{margin-right:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xxxlOffset9{margin-right:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xxxlOffset8{margin-right:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xxxlOffset7{margin-right:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xxxlOffset6{margin-right:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xxxlOffset5{margin-right:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xxxlOffset4{margin-right:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xxxlOffset3{margin-right:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xxxlOffset2{margin-right:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xxxlOffset1{margin-right:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset0{margin-left:0}html[dir=rtl] .ms-u-xxxlOffset0{margin-right:0}}.ms-Grid{box-sizing:border-box;*zoom:1}html[dir] .ms-Grid{padding:0 8px}.ms-Grid:after,.ms-Grid:before{display:table;content:"";line-height:0}.ms-Grid:after{clear:both}.ms-Grid-row{box-sizing:border-box;*zoom:1}html[dir] .ms-Grid-row{margin:0 -8px}.ms-Grid-row:after,.ms-Grid-row:before{display:table;content:"";line-height:0}.ms-Grid-row:after{clear:both}.ms-Grid-col{position:relative;min-height:1px;box-sizing:border-box}html[dir=ltr] .ms-Grid-col{padding-left:8px;padding-right:8px;float:left}html[dir=rtl] .ms-Grid-col{padding-right:8px;padding-left:8px;float:right}html[dir] .ms-Grid-col .ms-Grid{padding:0}.ms-Fabric{color:#333}--><!--._2oCGj93haij-ioEI0V2boL{display:none}.v7XN5-sLUO3TS4AKvX4al{max-width:none}--><!--._1niWwYsHCqgirsD8-yhn3x .ms-Callout-main{overflow:hidden}._35P67Bqt2-_9UkBhnkjCED{height:32px;color:inherit}html[dir] ._35P67Bqt2-_9UkBhnkjCED{background-color:transparent;border-bottom-style:solid;border-bottom-width:1px}._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-primaryCommands,._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-sideCommands{line-height:32px;height:32px}html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-primaryCommands,html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-sideCommands{margin:0}._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem{line-height:32px;height:100%}._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem-link{line-height:32px}._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-primaryCommands,._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem-link:hover,._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem:hover,._35P67Bqt2-_9UkBhnkjCED .ms-FocusZone{color:inherit!important}html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-primaryCommands,html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem-link:hover,html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem:hover,html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-FocusZone{background-color:inherit!important}._35P67Bqt2-_9UkBhnkjCED .is-expanded .ms-CommandBarItem-overflow,._35P67Bqt2-_9UkBhnkjCED button[id$=selected]{color:inherit!important}._35P67Bqt2-_9UkBhnkjCED button[id$=overflow]{line-height:0}html[dir] ._1m82QbHRaGJFOXY42dCJPO{padding:8px}html[dir=ltr] ._1m82QbHRaGJFOXY42dCJPO{float:left}html[dir=rtl] ._1m82QbHRaGJFOXY42dCJPO{float:right}._1Qa9aZNTwzhCtGC9Xqr9o4{height:16px;width:0}html[dir] ._1Qa9aZNTwzhCtGC9Xqr9o4{padding:0;margin:8px 0}html[dir=ltr] ._1Qa9aZNTwzhCtGC9Xqr9o4{border-right-width:1px;border-right-style:solid;float:left}html[dir=rtl] ._1Qa9aZNTwzhCtGC9Xqr9o4{border-left-width:1px;border-left-style:solid;float:right}-->

    <!--.swx .tab_id_002_noname_0ad8092f-344e-4db3-b2df-1a027e29d61a{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_0ad8092f-344e-4db3-b2df-1a027e29d61a/views/thumbnail'); } .swx .tab_id_002_noname_2268d166-680f-4143-8b9e-8a235f9f580f{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_2268d166-680f-4143-8b9e-8a235f9f580f/views/thumbnail'); } .swx span.moji.id_d5d28e2b5e074db6a7e046f62b338a55 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d5d28e2b5e074db6a7e046f62b338a55/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d5d28e2b5e074db6a7e046f62b338a55 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d5d28e2b5e074db6a7e046f62b338a55/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ac21a0dc632e4a16a99146d19dbd5f10 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ac21a0dc632e4a16a99146d19dbd5f10/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ac21a0dc632e4a16a99146d19dbd5f10 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ac21a0dc632e4a16a99146d19dbd5f10/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_91370e2cdd514a4da59a3f2d1d18d4d3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/91370e2cdd514a4da59a3f2d1d18d4d3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_91370e2cdd514a4da59a3f2d1d18d4d3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/91370e2cdd514a4da59a3f2d1d18d4d3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b0d2b732bf2d47eca34d4dfe161069d6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b0d2b732bf2d47eca34d4dfe161069d6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b0d2b732bf2d47eca34d4dfe161069d6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b0d2b732bf2d47eca34d4dfe161069d6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_12d0b3d20dd94365b37d3c8e88a53c48 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/12d0b3d20dd94365b37d3c8e88a53c48/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_12d0b3d20dd94365b37d3c8e88a53c48 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/12d0b3d20dd94365b37d3c8e88a53c48/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a7d562054d2540eaa3b4613c2f6165c7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a7d562054d2540eaa3b4613c2f6165c7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a7d562054d2540eaa3b4613c2f6165c7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a7d562054d2540eaa3b4613c2f6165c7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c4df6315084241088f660dbb1a14e893 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c4df6315084241088f660dbb1a14e893/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c4df6315084241088f660dbb1a14e893 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c4df6315084241088f660dbb1a14e893/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_25f557ed5522484fa7d780af7d51737d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/25f557ed5522484fa7d780af7d51737d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_25f557ed5522484fa7d780af7d51737d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/25f557ed5522484fa7d780af7d51737d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a4adecdd9c284db7b248071bc7cd4ce0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a4adecdd9c284db7b248071bc7cd4ce0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a4adecdd9c284db7b248071bc7cd4ce0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a4adecdd9c284db7b248071bc7cd4ce0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_93ef3bf9986a4978b046bbdb2f5a6019 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93ef3bf9986a4978b046bbdb2f5a6019/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_93ef3bf9986a4978b046bbdb2f5a6019 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93ef3bf9986a4978b046bbdb2f5a6019/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d8219495416d40b7babb116f8a384525 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d8219495416d40b7babb116f8a384525/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d8219495416d40b7babb116f8a384525 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d8219495416d40b7babb116f8a384525/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5288231ba9974653891e6e0b5dae5c01 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5288231ba9974653891e6e0b5dae5c01/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5288231ba9974653891e6e0b5dae5c01 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5288231ba9974653891e6e0b5dae5c01/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5fb9940952fb45218aeb7765e489c13b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5fb9940952fb45218aeb7765e489c13b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5fb9940952fb45218aeb7765e489c13b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5fb9940952fb45218aeb7765e489c13b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cbd4b2307b6546fea9a0afe08bf1d45e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cbd4b2307b6546fea9a0afe08bf1d45e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cbd4b2307b6546fea9a0afe08bf1d45e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cbd4b2307b6546fea9a0afe08bf1d45e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_636c5e8fbdd14e04ade630c5b6152275 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/636c5e8fbdd14e04ade630c5b6152275/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_636c5e8fbdd14e04ade630c5b6152275 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/636c5e8fbdd14e04ade630c5b6152275/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_eb7fed2ffeab4d339064e67dfc9a783b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eb7fed2ffeab4d339064e67dfc9a783b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_eb7fed2ffeab4d339064e67dfc9a783b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eb7fed2ffeab4d339064e67dfc9a783b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_dc3acfadbb994d3793cfe905a0dec482 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dc3acfadbb994d3793cfe905a0dec482/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_dc3acfadbb994d3793cfe905a0dec482 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dc3acfadbb994d3793cfe905a0dec482/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bd31f2f059ce41bca5dfb9b969d7e1ea span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd31f2f059ce41bca5dfb9b969d7e1ea/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bd31f2f059ce41bca5dfb9b969d7e1ea span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd31f2f059ce41bca5dfb9b969d7e1ea/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ef8a8e4599ca4591a96a67f23c23abd1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef8a8e4599ca4591a96a67f23c23abd1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ef8a8e4599ca4591a96a67f23c23abd1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef8a8e4599ca4591a96a67f23c23abd1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5d7807e764e14f6ea102ddfdd30acf34 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d7807e764e14f6ea102ddfdd30acf34/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5d7807e764e14f6ea102ddfdd30acf34 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d7807e764e14f6ea102ddfdd30acf34/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_201ca95718f34012b6d76bb7b388c652 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/201ca95718f34012b6d76bb7b388c652/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_201ca95718f34012b6d76bb7b388c652 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/201ca95718f34012b6d76bb7b388c652/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5d3fd81f22b341299881072c627533d5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d3fd81f22b341299881072c627533d5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5d3fd81f22b341299881072c627533d5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d3fd81f22b341299881072c627533d5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f305b50326b34f07a0c2dd0c27325cea span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f305b50326b34f07a0c2dd0c27325cea/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f305b50326b34f07a0c2dd0c27325cea span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f305b50326b34f07a0c2dd0c27325cea/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_83bf44f0d867434fb296d77bf9488828 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/83bf44f0d867434fb296d77bf9488828/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_83bf44f0d867434fb296d77bf9488828 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/83bf44f0d867434fb296d77bf9488828/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb677fa811474474ad19fd9cf34afd8e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb677fa811474474ad19fd9cf34afd8e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb677fa811474474ad19fd9cf34afd8e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb677fa811474474ad19fd9cf34afd8e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d796450ddff1496a9d43eb7d1ee795c6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d796450ddff1496a9d43eb7d1ee795c6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d796450ddff1496a9d43eb7d1ee795c6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d796450ddff1496a9d43eb7d1ee795c6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0ebd46c04fa641df8be24bb42d911c6b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ebd46c04fa641df8be24bb42d911c6b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0ebd46c04fa641df8be24bb42d911c6b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ebd46c04fa641df8be24bb42d911c6b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5db6bfb50b064e739f068d407d207ca0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5db6bfb50b064e739f068d407d207ca0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5db6bfb50b064e739f068d407d207ca0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5db6bfb50b064e739f068d407d207ca0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_df369f9ec4a7475396e5c1deabe21167 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df369f9ec4a7475396e5c1deabe21167/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_df369f9ec4a7475396e5c1deabe21167 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df369f9ec4a7475396e5c1deabe21167/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9401c7f9c12944e49daa82fc1e92ec31 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9401c7f9c12944e49daa82fc1e92ec31/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9401c7f9c12944e49daa82fc1e92ec31 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9401c7f9c12944e49daa82fc1e92ec31/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5e4b15ed51244c5daae58114abeda46c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5e4b15ed51244c5daae58114abeda46c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5e4b15ed51244c5daae58114abeda46c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5e4b15ed51244c5daae58114abeda46c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e0734f17138c46a693b00a2b58babc12 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e0734f17138c46a693b00a2b58babc12/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e0734f17138c46a693b00a2b58babc12 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e0734f17138c46a693b00a2b58babc12/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_80a3b4c737e1461b87f86d385084fc84 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80a3b4c737e1461b87f86d385084fc84/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_80a3b4c737e1461b87f86d385084fc84 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80a3b4c737e1461b87f86d385084fc84/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_eadac0775ce3428197104734ef87a481 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eadac0775ce3428197104734ef87a481/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_eadac0775ce3428197104734ef87a481 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eadac0775ce3428197104734ef87a481/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c8d2e2ae0da64a4d8e3bf4fc854c8d25 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c8d2e2ae0da64a4d8e3bf4fc854c8d25/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c8d2e2ae0da64a4d8e3bf4fc854c8d25 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c8d2e2ae0da64a4d8e3bf4fc854c8d25/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c3b6afa09a544c7a8dfd5ff1eaec0bd5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c3b6afa09a544c7a8dfd5ff1eaec0bd5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c3b6afa09a544c7a8dfd5ff1eaec0bd5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c3b6afa09a544c7a8dfd5ff1eaec0bd5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_03987e97cdbd42ffad88e93a648eb7bb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/03987e97cdbd42ffad88e93a648eb7bb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_03987e97cdbd42ffad88e93a648eb7bb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/03987e97cdbd42ffad88e93a648eb7bb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_026491323f50430aabfc3937e3ca3d83 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/026491323f50430aabfc3937e3ca3d83/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_026491323f50430aabfc3937e3ca3d83 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/026491323f50430aabfc3937e3ca3d83/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_34a59afcf88c487db7069f4f88c93a60 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/34a59afcf88c487db7069f4f88c93a60/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_34a59afcf88c487db7069f4f88c93a60 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/34a59afcf88c487db7069f4f88c93a60/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1f60a428906f49d3b9fbaee16b95a63a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1f60a428906f49d3b9fbaee16b95a63a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1f60a428906f49d3b9fbaee16b95a63a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1f60a428906f49d3b9fbaee16b95a63a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_85f3bcfcffe64a5d8440ec21f13a78a1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/85f3bcfcffe64a5d8440ec21f13a78a1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_85f3bcfcffe64a5d8440ec21f13a78a1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/85f3bcfcffe64a5d8440ec21f13a78a1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7757cab2e26e435194c5269358eadda7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7757cab2e26e435194c5269358eadda7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7757cab2e26e435194c5269358eadda7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7757cab2e26e435194c5269358eadda7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8719fee79e884e3aa923bf3140a99d3b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8719fee79e884e3aa923bf3140a99d3b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8719fee79e884e3aa923bf3140a99d3b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8719fee79e884e3aa923bf3140a99d3b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7676b8cb7afc44529d144f7455f2ef8e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7676b8cb7afc44529d144f7455f2ef8e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7676b8cb7afc44529d144f7455f2ef8e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7676b8cb7afc44529d144f7455f2ef8e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_391e60f5ca004b0aa7956478df92eae8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/391e60f5ca004b0aa7956478df92eae8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_391e60f5ca004b0aa7956478df92eae8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/391e60f5ca004b0aa7956478df92eae8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f96a75da9440429ca22baef01ac76685 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f96a75da9440429ca22baef01ac76685/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f96a75da9440429ca22baef01ac76685 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f96a75da9440429ca22baef01ac76685/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_11a49ac0c55b43028d7b64b1bc80543d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11a49ac0c55b43028d7b64b1bc80543d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_11a49ac0c55b43028d7b64b1bc80543d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11a49ac0c55b43028d7b64b1bc80543d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_47eb153b8113466f9a68eaa1e47d21ef span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/47eb153b8113466f9a68eaa1e47d21ef/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_47eb153b8113466f9a68eaa1e47d21ef span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/47eb153b8113466f9a68eaa1e47d21ef/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e245fced1cba4ae18fa0d449de6a89e4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e245fced1cba4ae18fa0d449de6a89e4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e245fced1cba4ae18fa0d449de6a89e4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e245fced1cba4ae18fa0d449de6a89e4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e5f6bbce978749b4947e30cc9688aa50 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5f6bbce978749b4947e30cc9688aa50/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e5f6bbce978749b4947e30cc9688aa50 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5f6bbce978749b4947e30cc9688aa50/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_18884340c2414c62b00bc318504260ed span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/18884340c2414c62b00bc318504260ed/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_18884340c2414c62b00bc318504260ed span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/18884340c2414c62b00bc318504260ed/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6e7f4035a885437fa3fcfd5fc024f907 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6e7f4035a885437fa3fcfd5fc024f907/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6e7f4035a885437fa3fcfd5fc024f907 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6e7f4035a885437fa3fcfd5fc024f907/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8b5e994fbb6c4524983959023879081a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8b5e994fbb6c4524983959023879081a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8b5e994fbb6c4524983959023879081a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8b5e994fbb6c4524983959023879081a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3ea11083ab4b4590876f509701b7f3f6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ea11083ab4b4590876f509701b7f3f6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3ea11083ab4b4590876f509701b7f3f6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ea11083ab4b4590876f509701b7f3f6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9ab2b5d1ff374cea970c22f08aedbe0e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ab2b5d1ff374cea970c22f08aedbe0e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9ab2b5d1ff374cea970c22f08aedbe0e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ab2b5d1ff374cea970c22f08aedbe0e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b23b5804a04e41af8a77deffba126720 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b23b5804a04e41af8a77deffba126720/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b23b5804a04e41af8a77deffba126720 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b23b5804a04e41af8a77deffba126720/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f87b8f95bf4142c281874a8b0d06feff span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f87b8f95bf4142c281874a8b0d06feff/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f87b8f95bf4142c281874a8b0d06feff span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f87b8f95bf4142c281874a8b0d06feff/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a660dab08a73453f89eaba5531ed8db2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a660dab08a73453f89eaba5531ed8db2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a660dab08a73453f89eaba5531ed8db2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a660dab08a73453f89eaba5531ed8db2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9dc9b765760948378c7d749f229a0cce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9dc9b765760948378c7d749f229a0cce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9dc9b765760948378c7d749f229a0cce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9dc9b765760948378c7d749f229a0cce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5dd08aa8fc4e43529a6e1e303899a73e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5dd08aa8fc4e43529a6e1e303899a73e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5dd08aa8fc4e43529a6e1e303899a73e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5dd08aa8fc4e43529a6e1e303899a73e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d817b63981fb4d0fbf47b3d93e29acb4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d817b63981fb4d0fbf47b3d93e29acb4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d817b63981fb4d0fbf47b3d93e29acb4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d817b63981fb4d0fbf47b3d93e29acb4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2b3bd2ed622e443c8ff98c5df55b4e31 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2b3bd2ed622e443c8ff98c5df55b4e31/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2b3bd2ed622e443c8ff98c5df55b4e31 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2b3bd2ed622e443c8ff98c5df55b4e31/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ad5e3abb979a411399d82f622e542ea6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ad5e3abb979a411399d82f622e542ea6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ad5e3abb979a411399d82f622e542ea6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ad5e3abb979a411399d82f622e542ea6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cb52f32d32eb49f2861c6d575338a4f0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cb52f32d32eb49f2861c6d575338a4f0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cb52f32d32eb49f2861c6d575338a4f0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cb52f32d32eb49f2861c6d575338a4f0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c9001322cacf481680807243df386e39 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9001322cacf481680807243df386e39/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c9001322cacf481680807243df386e39 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9001322cacf481680807243df386e39/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_594b92fd85b34d2d95fc895c5a9a0bb3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/594b92fd85b34d2d95fc895c5a9a0bb3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_594b92fd85b34d2d95fc895c5a9a0bb3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/594b92fd85b34d2d95fc895c5a9a0bb3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_dfeb195419d142029f217bbd6dbb6cc6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dfeb195419d142029f217bbd6dbb6cc6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_dfeb195419d142029f217bbd6dbb6cc6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dfeb195419d142029f217bbd6dbb6cc6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3a732810e2724bd68d904eb44dc2bb29 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3a732810e2724bd68d904eb44dc2bb29/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3a732810e2724bd68d904eb44dc2bb29 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3a732810e2724bd68d904eb44dc2bb29/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_beef2d6ecacd4201807f8671d356649e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/beef2d6ecacd4201807f8671d356649e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_beef2d6ecacd4201807f8671d356649e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/beef2d6ecacd4201807f8671d356649e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb1c2f628c504c4b94065f3c960b5bae span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb1c2f628c504c4b94065f3c960b5bae/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb1c2f628c504c4b94065f3c960b5bae span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb1c2f628c504c4b94065f3c960b5bae/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0e644c87b7f54177b5c9256fed2925d5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0e644c87b7f54177b5c9256fed2925d5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0e644c87b7f54177b5c9256fed2925d5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0e644c87b7f54177b5c9256fed2925d5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c94e49b572144fa79fbb82d918a2c831 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c94e49b572144fa79fbb82d918a2c831/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c94e49b572144fa79fbb82d918a2c831 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c94e49b572144fa79fbb82d918a2c831/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9ebcc3c17e43443989bfdc00ea0c89e7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ebcc3c17e43443989bfdc00ea0c89e7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9ebcc3c17e43443989bfdc00ea0c89e7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ebcc3c17e43443989bfdc00ea0c89e7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_05990448feea47169c832857356868b7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05990448feea47169c832857356868b7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_05990448feea47169c832857356868b7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05990448feea47169c832857356868b7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_70f9799e55d840b58a99dc831ffdc859 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/70f9799e55d840b58a99dc831ffdc859/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_70f9799e55d840b58a99dc831ffdc859 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/70f9799e55d840b58a99dc831ffdc859/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a6f985f1052b486fbd34983a86f2de10 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6f985f1052b486fbd34983a86f2de10/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a6f985f1052b486fbd34983a86f2de10 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6f985f1052b486fbd34983a86f2de10/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4c959df8b4404d759ba3ea250d551b55 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c959df8b4404d759ba3ea250d551b55/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4c959df8b4404d759ba3ea250d551b55 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c959df8b4404d759ba3ea250d551b55/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_64417822e3d64dfb83d68f80766cbad4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64417822e3d64dfb83d68f80766cbad4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_64417822e3d64dfb83d68f80766cbad4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64417822e3d64dfb83d68f80766cbad4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f19cdd4dd3924506841263d11191f8df span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f19cdd4dd3924506841263d11191f8df/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f19cdd4dd3924506841263d11191f8df span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f19cdd4dd3924506841263d11191f8df/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a32cb52b18a84bf69e2d3cca0c312384 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a32cb52b18a84bf69e2d3cca0c312384/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a32cb52b18a84bf69e2d3cca0c312384 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a32cb52b18a84bf69e2d3cca0c312384/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ef67bb6d812747928f86a198bac84d33 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef67bb6d812747928f86a198bac84d33/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ef67bb6d812747928f86a198bac84d33 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef67bb6d812747928f86a198bac84d33/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_05c5681f761d4ecfbd3f31e903463a56 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05c5681f761d4ecfbd3f31e903463a56/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_05c5681f761d4ecfbd3f31e903463a56 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05c5681f761d4ecfbd3f31e903463a56/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_81c62925e8f943a386c6bb959b133281 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81c62925e8f943a386c6bb959b133281/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_81c62925e8f943a386c6bb959b133281 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81c62925e8f943a386c6bb959b133281/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_958d5310-cd1b-41bb-a23e-888fab5491ba{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_958d5310-cd1b-41bb-a23e-888fab5491ba/views/thumbnail'); } .swx span.moji.id_e70058351dfa4c59b66e46e34b1c4cc7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e70058351dfa4c59b66e46e34b1c4cc7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e70058351dfa4c59b66e46e34b1c4cc7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e70058351dfa4c59b66e46e34b1c4cc7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_09b6ddfd09214089b0c0196b8675efce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/09b6ddfd09214089b0c0196b8675efce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_09b6ddfd09214089b0c0196b8675efce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/09b6ddfd09214089b0c0196b8675efce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_14b0b0e3dd8340bc86ee51b67bf07649 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/14b0b0e3dd8340bc86ee51b67bf07649/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_14b0b0e3dd8340bc86ee51b67bf07649 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/14b0b0e3dd8340bc86ee51b67bf07649/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1cb97ee73b8a465cbe93090a427c522d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1cb97ee73b8a465cbe93090a427c522d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1cb97ee73b8a465cbe93090a427c522d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1cb97ee73b8a465cbe93090a427c522d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fbefd5e5569b4b21a268138073efa3f7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fbefd5e5569b4b21a268138073efa3f7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fbefd5e5569b4b21a268138073efa3f7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fbefd5e5569b4b21a268138073efa3f7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_949d0c90966d4ab1bb934833fda2a8c1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/949d0c90966d4ab1bb934833fda2a8c1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_949d0c90966d4ab1bb934833fda2a8c1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/949d0c90966d4ab1bb934833fda2a8c1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_dcb8b97d4fcb4ad48828477e56791670 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dcb8b97d4fcb4ad48828477e56791670/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_dcb8b97d4fcb4ad48828477e56791670 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dcb8b97d4fcb4ad48828477e56791670/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_51a1005cca6e46b09e59bbb8ac760350 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/51a1005cca6e46b09e59bbb8ac760350/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_51a1005cca6e46b09e59bbb8ac760350 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/51a1005cca6e46b09e59bbb8ac760350/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fe866a5f7d3649b08a3af18636d999ce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fe866a5f7d3649b08a3af18636d999ce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fe866a5f7d3649b08a3af18636d999ce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fe866a5f7d3649b08a3af18636d999ce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e239655d37964392aac78778215fbc8b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e239655d37964392aac78778215fbc8b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e239655d37964392aac78778215fbc8b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e239655d37964392aac78778215fbc8b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_efd7748c7df44228b4247ecb993f6a63 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/efd7748c7df44228b4247ecb993f6a63/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_efd7748c7df44228b4247ecb993f6a63 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/efd7748c7df44228b4247ecb993f6a63/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9ae183167d594bcba640cf5d9f167a6d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ae183167d594bcba640cf5d9f167a6d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9ae183167d594bcba640cf5d9f167a6d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ae183167d594bcba640cf5d9f167a6d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8a6827ff43e4489188e8cdc28e09f635 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8a6827ff43e4489188e8cdc28e09f635/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8a6827ff43e4489188e8cdc28e09f635 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8a6827ff43e4489188e8cdc28e09f635/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9f5c23a7922a4e54887eb4489344c164 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9f5c23a7922a4e54887eb4489344c164/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9f5c23a7922a4e54887eb4489344c164 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9f5c23a7922a4e54887eb4489344c164/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cedcd9e099014abe91162991edc1d563 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cedcd9e099014abe91162991edc1d563/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cedcd9e099014abe91162991edc1d563 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cedcd9e099014abe91162991edc1d563/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5b01a75a60864c339416187eb51d2d12 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5b01a75a60864c339416187eb51d2d12/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5b01a75a60864c339416187eb51d2d12 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5b01a75a60864c339416187eb51d2d12/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_17c776c766fc449aa9c7e7e6f5d1ed53 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/17c776c766fc449aa9c7e7e6f5d1ed53/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_17c776c766fc449aa9c7e7e6f5d1ed53 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/17c776c766fc449aa9c7e7e6f5d1ed53/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2822aeddd78447d0be51841e8e850cf2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2822aeddd78447d0be51841e8e850cf2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2822aeddd78447d0be51841e8e850cf2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2822aeddd78447d0be51841e8e850cf2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0b915a9734d14dc0a674e1e0f053f6aa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0b915a9734d14dc0a674e1e0f053f6aa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0b915a9734d14dc0a674e1e0f053f6aa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0b915a9734d14dc0a674e1e0f053f6aa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e5443de4193848a09a4014404ca63de6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5443de4193848a09a4014404ca63de6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e5443de4193848a09a4014404ca63de6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5443de4193848a09a4014404ca63de6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0ca8ffd2e17b408fa66f5bf4d94b199e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ca8ffd2e17b408fa66f5bf4d94b199e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0ca8ffd2e17b408fa66f5bf4d94b199e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ca8ffd2e17b408fa66f5bf4d94b199e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8bd884e2726f4121812bdc7c94bbe870 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8bd884e2726f4121812bdc7c94bbe870/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8bd884e2726f4121812bdc7c94bbe870 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8bd884e2726f4121812bdc7c94bbe870/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7ab4107dac6c4f399867b78bb1387740 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7ab4107dac6c4f399867b78bb1387740/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7ab4107dac6c4f399867b78bb1387740 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7ab4107dac6c4f399867b78bb1387740/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_68713b838afb44f497982b9f7a43aad7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/68713b838afb44f497982b9f7a43aad7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_68713b838afb44f497982b9f7a43aad7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/68713b838afb44f497982b9f7a43aad7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9fcd7c6dc5a44aaea0533151f5dbea3a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9fcd7c6dc5a44aaea0533151f5dbea3a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9fcd7c6dc5a44aaea0533151f5dbea3a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9fcd7c6dc5a44aaea0533151f5dbea3a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_848c7fe5ce5c4affbc58343e0b607065 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/848c7fe5ce5c4affbc58343e0b607065/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_848c7fe5ce5c4affbc58343e0b607065 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/848c7fe5ce5c4affbc58343e0b607065/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f49a981d136745eebd793760930b2026 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f49a981d136745eebd793760930b2026/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f49a981d136745eebd793760930b2026 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f49a981d136745eebd793760930b2026/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_21024d3e6e50455e8ebe5fe842c2a12c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21024d3e6e50455e8ebe5fe842c2a12c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_21024d3e6e50455e8ebe5fe842c2a12c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21024d3e6e50455e8ebe5fe842c2a12c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2fc1fdcbcd30482185157dceaced8014 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2fc1fdcbcd30482185157dceaced8014/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2fc1fdcbcd30482185157dceaced8014 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2fc1fdcbcd30482185157dceaced8014/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_549d9551d9e64ab19e480de462797946 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/549d9551d9e64ab19e480de462797946/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_549d9551d9e64ab19e480de462797946 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/549d9551d9e64ab19e480de462797946/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69d5a839b5a945bba62aeac9382aad91 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69d5a839b5a945bba62aeac9382aad91/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69d5a839b5a945bba62aeac9382aad91 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69d5a839b5a945bba62aeac9382aad91/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9445d780f15f4c838c9385031626e652 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9445d780f15f4c838c9385031626e652/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9445d780f15f4c838c9385031626e652 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9445d780f15f4c838c9385031626e652/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6cc1dc76cb944247b5e358e91645b754 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6cc1dc76cb944247b5e358e91645b754/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6cc1dc76cb944247b5e358e91645b754 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6cc1dc76cb944247b5e358e91645b754/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c145bbcd0d344ee6b61ce9a166dd2459 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c145bbcd0d344ee6b61ce9a166dd2459/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c145bbcd0d344ee6b61ce9a166dd2459 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c145bbcd0d344ee6b61ce9a166dd2459/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5eaab9720bfb4698b976dec5e77f25a6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5eaab9720bfb4698b976dec5e77f25a6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5eaab9720bfb4698b976dec5e77f25a6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5eaab9720bfb4698b976dec5e77f25a6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_88635eebac244c59a4a629b46c5b4fae span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/88635eebac244c59a4a629b46c5b4fae/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_88635eebac244c59a4a629b46c5b4fae span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/88635eebac244c59a4a629b46c5b4fae/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_040add8720a84dccb298bb4fbcde0f20 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/040add8720a84dccb298bb4fbcde0f20/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_040add8720a84dccb298bb4fbcde0f20 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/040add8720a84dccb298bb4fbcde0f20/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9f2a04d6acb04848a1fecca6d5cfc792 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9f2a04d6acb04848a1fecca6d5cfc792/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9f2a04d6acb04848a1fecca6d5cfc792 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9f2a04d6acb04848a1fecca6d5cfc792/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_be1d0aa377614975b16509068dd37804 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/be1d0aa377614975b16509068dd37804/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_be1d0aa377614975b16509068dd37804 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/be1d0aa377614975b16509068dd37804/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3a6f31f2e9264c089142ce6f94989ea6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3a6f31f2e9264c089142ce6f94989ea6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3a6f31f2e9264c089142ce6f94989ea6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3a6f31f2e9264c089142ce6f94989ea6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5f8a8496c2c44e69802c45235184d679 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5f8a8496c2c44e69802c45235184d679/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5f8a8496c2c44e69802c45235184d679 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5f8a8496c2c44e69802c45235184d679/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d8f9062690b74b118c3f313d93c9a4a5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d8f9062690b74b118c3f313d93c9a4a5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d8f9062690b74b118c3f313d93c9a4a5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d8f9062690b74b118c3f313d93c9a4a5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_11070ed6f6df4d1fb22ebe1e425685aa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11070ed6f6df4d1fb22ebe1e425685aa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_11070ed6f6df4d1fb22ebe1e425685aa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11070ed6f6df4d1fb22ebe1e425685aa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a70dd6ee1f41414bab2f8add4a5418ff span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a70dd6ee1f41414bab2f8add4a5418ff/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a70dd6ee1f41414bab2f8add4a5418ff span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a70dd6ee1f41414bab2f8add4a5418ff/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7473cd905bf94b15a8db01e50a240138 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7473cd905bf94b15a8db01e50a240138/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7473cd905bf94b15a8db01e50a240138 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7473cd905bf94b15a8db01e50a240138/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69a0a917cf0f47feb8714d85093484d6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69a0a917cf0f47feb8714d85093484d6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69a0a917cf0f47feb8714d85093484d6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69a0a917cf0f47feb8714d85093484d6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6afc571194704870a44cd8ff58545d2e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6afc571194704870a44cd8ff58545d2e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6afc571194704870a44cd8ff58545d2e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6afc571194704870a44cd8ff58545d2e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_187e1d82ff13425693589e6a50783e5c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/187e1d82ff13425693589e6a50783e5c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_187e1d82ff13425693589e6a50783e5c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/187e1d82ff13425693589e6a50783e5c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_63f7e941be294b7993a3bcf46cdf89cb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/63f7e941be294b7993a3bcf46cdf89cb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_63f7e941be294b7993a3bcf46cdf89cb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/63f7e941be294b7993a3bcf46cdf89cb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ecfcc40d42c948279d1cd037fb6d9fe4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ecfcc40d42c948279d1cd037fb6d9fe4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ecfcc40d42c948279d1cd037fb6d9fe4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ecfcc40d42c948279d1cd037fb6d9fe4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2425c945fdbf4a6ab386304ee74683f0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2425c945fdbf4a6ab386304ee74683f0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2425c945fdbf4a6ab386304ee74683f0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2425c945fdbf4a6ab386304ee74683f0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_725f0b5d99ec40af888527ac42ceb99f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/725f0b5d99ec40af888527ac42ceb99f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_725f0b5d99ec40af888527ac42ceb99f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/725f0b5d99ec40af888527ac42ceb99f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_923e0ceafdcd4d278ad501719b2f5a6b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/923e0ceafdcd4d278ad501719b2f5a6b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_923e0ceafdcd4d278ad501719b2f5a6b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/923e0ceafdcd4d278ad501719b2f5a6b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e417fc5820294105963ea6c71cc94cbb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e417fc5820294105963ea6c71cc94cbb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e417fc5820294105963ea6c71cc94cbb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e417fc5820294105963ea6c71cc94cbb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_98732a8744774c86a324d21d86d2051c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/98732a8744774c86a324d21d86d2051c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_98732a8744774c86a324d21d86d2051c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/98732a8744774c86a324d21d86d2051c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_73c8114935344fa0879e01e0a9821f64 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/73c8114935344fa0879e01e0a9821f64/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_73c8114935344fa0879e01e0a9821f64 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/73c8114935344fa0879e01e0a9821f64/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_30c197b4173c4fc09fffbec84a6b366f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/30c197b4173c4fc09fffbec84a6b366f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_30c197b4173c4fc09fffbec84a6b366f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/30c197b4173c4fc09fffbec84a6b366f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_175fd19cacb74bbba1a53c6be6f06b35 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/175fd19cacb74bbba1a53c6be6f06b35/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_175fd19cacb74bbba1a53c6be6f06b35 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/175fd19cacb74bbba1a53c6be6f06b35/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_64e5bded0052435d92b87bdd070939cb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64e5bded0052435d92b87bdd070939cb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_64e5bded0052435d92b87bdd070939cb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64e5bded0052435d92b87bdd070939cb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e12a86f86adf47769f8e8eb08d680531 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e12a86f86adf47769f8e8eb08d680531/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e12a86f86adf47769f8e8eb08d680531 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e12a86f86adf47769f8e8eb08d680531/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0f29275aab324fe2b8128b0cd1bef28c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0f29275aab324fe2b8128b0cd1bef28c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0f29275aab324fe2b8128b0cd1bef28c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0f29275aab324fe2b8128b0cd1bef28c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_198427d4b6fb41998a36d8553714ac97 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/198427d4b6fb41998a36d8553714ac97/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_198427d4b6fb41998a36d8553714ac97 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/198427d4b6fb41998a36d8553714ac97/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3e28ea82de214ab5ab64f109f9a2a91e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3e28ea82de214ab5ab64f109f9a2a91e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3e28ea82de214ab5ab64f109f9a2a91e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3e28ea82de214ab5ab64f109f9a2a91e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1dba82a7e1f842e994138582eaeff9e2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1dba82a7e1f842e994138582eaeff9e2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1dba82a7e1f842e994138582eaeff9e2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1dba82a7e1f842e994138582eaeff9e2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_796baec988c943569cff3b0e91c7bcf9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/796baec988c943569cff3b0e91c7bcf9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_796baec988c943569cff3b0e91c7bcf9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/796baec988c943569cff3b0e91c7bcf9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cf27ae06fe0f430689df6fccd68b6fad span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cf27ae06fe0f430689df6fccd68b6fad/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cf27ae06fe0f430689df6fccd68b6fad span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cf27ae06fe0f430689df6fccd68b6fad/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4060021b522145a281f5ad7c194e8359 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4060021b522145a281f5ad7c194e8359/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4060021b522145a281f5ad7c194e8359 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4060021b522145a281f5ad7c194e8359/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9b34855ca4264825bacb3374e5cc5ef0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9b34855ca4264825bacb3374e5cc5ef0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9b34855ca4264825bacb3374e5cc5ef0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9b34855ca4264825bacb3374e5cc5ef0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5981f482c86949f286eaaf9c787525fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5981f482c86949f286eaaf9c787525fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5981f482c86949f286eaaf9c787525fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5981f482c86949f286eaaf9c787525fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3b3584c6b7324fd580dc3e38e485d8ce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3b3584c6b7324fd580dc3e38e485d8ce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3b3584c6b7324fd580dc3e38e485d8ce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3b3584c6b7324fd580dc3e38e485d8ce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69e5864bdccc4b4e9be230a9d7a84b01 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69e5864bdccc4b4e9be230a9d7a84b01/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69e5864bdccc4b4e9be230a9d7a84b01 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69e5864bdccc4b4e9be230a9d7a84b01/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb93beb00bae4940a52133b934a66164 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb93beb00bae4940a52133b934a66164/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb93beb00bae4940a52133b934a66164 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb93beb00bae4940a52133b934a66164/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e5a88c46af5f4b4a81f9f53eabdb18e3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5a88c46af5f4b4a81f9f53eabdb18e3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e5a88c46af5f4b4a81f9f53eabdb18e3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5a88c46af5f4b4a81f9f53eabdb18e3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_006732094eb5439c957f6e1b60b6e80d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/006732094eb5439c957f6e1b60b6e80d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_006732094eb5439c957f6e1b60b6e80d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/006732094eb5439c957f6e1b60b6e80d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8ba76350eaff44339fe69ce03d139337 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8ba76350eaff44339fe69ce03d139337/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8ba76350eaff44339fe69ce03d139337 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8ba76350eaff44339fe69ce03d139337/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_17f3d267617b46c7ae735a2b31a332f2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/17f3d267617b46c7ae735a2b31a332f2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_17f3d267617b46c7ae735a2b31a332f2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/17f3d267617b46c7ae735a2b31a332f2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4c7cfb904c7c4902975156bfaf6dee55 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c7cfb904c7c4902975156bfaf6dee55/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4c7cfb904c7c4902975156bfaf6dee55 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c7cfb904c7c4902975156bfaf6dee55/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7c06975dd0cb46ec9e1040ac3fd3921d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7c06975dd0cb46ec9e1040ac3fd3921d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7c06975dd0cb46ec9e1040ac3fd3921d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7c06975dd0cb46ec9e1040ac3fd3921d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_3f0899b2-8969-4887-8a71-d1b1ca3e1345{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_3f0899b2-8969-4887-8a71-d1b1ca3e1345/views/thumbnail'); } .swx span.moji.id_71473939cf2a4a249bfffb0c61d5b52e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/71473939cf2a4a249bfffb0c61d5b52e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_71473939cf2a4a249bfffb0c61d5b52e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/71473939cf2a4a249bfffb0c61d5b52e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_428cb1701e594cfab12b003fb92818ac span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/428cb1701e594cfab12b003fb92818ac/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_428cb1701e594cfab12b003fb92818ac span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/428cb1701e594cfab12b003fb92818ac/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_84a856e7cf024f1e8d288eb35a6e5509 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/84a856e7cf024f1e8d288eb35a6e5509/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_84a856e7cf024f1e8d288eb35a6e5509 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/84a856e7cf024f1e8d288eb35a6e5509/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_85edb35e56cf4ff7acf10803b33b99da span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/85edb35e56cf4ff7acf10803b33b99da/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_85edb35e56cf4ff7acf10803b33b99da span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/85edb35e56cf4ff7acf10803b33b99da/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bba3513bc75549ff9117940f52e547f3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bba3513bc75549ff9117940f52e547f3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bba3513bc75549ff9117940f52e547f3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bba3513bc75549ff9117940f52e547f3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_206b27c757e74fc784d34a276864b48e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/206b27c757e74fc784d34a276864b48e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_206b27c757e74fc784d34a276864b48e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/206b27c757e74fc784d34a276864b48e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e02b3419253e462daafd19d5774b26a7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e02b3419253e462daafd19d5774b26a7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e02b3419253e462daafd19d5774b26a7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e02b3419253e462daafd19d5774b26a7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ab7391c6e7f94b6686c3aee7b3bd59f2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ab7391c6e7f94b6686c3aee7b3bd59f2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ab7391c6e7f94b6686c3aee7b3bd59f2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ab7391c6e7f94b6686c3aee7b3bd59f2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bfbe7722aa8c4c86b0c6f3bff9737670 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bfbe7722aa8c4c86b0c6f3bff9737670/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bfbe7722aa8c4c86b0c6f3bff9737670 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bfbe7722aa8c4c86b0c6f3bff9737670/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c08321b3b07b467f81bd11d912892bfa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c08321b3b07b467f81bd11d912892bfa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c08321b3b07b467f81bd11d912892bfa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c08321b3b07b467f81bd11d912892bfa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2f81038cf33f46b491e7972a01d0f852 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2f81038cf33f46b491e7972a01d0f852/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2f81038cf33f46b491e7972a01d0f852 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2f81038cf33f46b491e7972a01d0f852/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d026be1d8edb48a5aea251d335bfb2cf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d026be1d8edb48a5aea251d335bfb2cf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d026be1d8edb48a5aea251d335bfb2cf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d026be1d8edb48a5aea251d335bfb2cf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cec481bb17544214a4427fac86db4d99 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cec481bb17544214a4427fac86db4d99/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cec481bb17544214a4427fac86db4d99 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cec481bb17544214a4427fac86db4d99/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ddca5fcdb71d4a1ba3076f618638bb2e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ddca5fcdb71d4a1ba3076f618638bb2e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ddca5fcdb71d4a1ba3076f618638bb2e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ddca5fcdb71d4a1ba3076f618638bb2e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_249439bb868e47d7ad274ae821bfee75 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/249439bb868e47d7ad274ae821bfee75/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_249439bb868e47d7ad274ae821bfee75 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/249439bb868e47d7ad274ae821bfee75/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4d68acf9a31f40eb86b415bf9347201e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4d68acf9a31f40eb86b415bf9347201e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4d68acf9a31f40eb86b415bf9347201e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4d68acf9a31f40eb86b415bf9347201e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_29d3dd4cc5704de396cf4ffc984651af span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/29d3dd4cc5704de396cf4ffc984651af/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_29d3dd4cc5704de396cf4ffc984651af span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/29d3dd4cc5704de396cf4ffc984651af/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c4946db4ec39440682ab31e984b8fb81 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c4946db4ec39440682ab31e984b8fb81/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c4946db4ec39440682ab31e984b8fb81 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c4946db4ec39440682ab31e984b8fb81/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b3e318618785404b8177157f089d4c9c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b3e318618785404b8177157f089d4c9c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b3e318618785404b8177157f089d4c9c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b3e318618785404b8177157f089d4c9c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f7cd7a504bad47c894b35a73f25a638d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f7cd7a504bad47c894b35a73f25a638d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f7cd7a504bad47c894b35a73f25a638d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f7cd7a504bad47c894b35a73f25a638d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1fdfc400fc234e9fb09dc3d706b6c3f7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1fdfc400fc234e9fb09dc3d706b6c3f7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1fdfc400fc234e9fb09dc3d706b6c3f7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1fdfc400fc234e9fb09dc3d706b6c3f7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_df0a569902b84e549e3675000441b2ef span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df0a569902b84e549e3675000441b2ef/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_df0a569902b84e549e3675000441b2ef span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df0a569902b84e549e3675000441b2ef/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2a92334f21eb4bc68be6961636102456 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2a92334f21eb4bc68be6961636102456/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2a92334f21eb4bc68be6961636102456 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2a92334f21eb4bc68be6961636102456/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fb6fd15bd3e24d8d9e4feb5c372eb03a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fb6fd15bd3e24d8d9e4feb5c372eb03a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fb6fd15bd3e24d8d9e4feb5c372eb03a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fb6fd15bd3e24d8d9e4feb5c372eb03a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_05990448feea47169c832857356868b7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05990448feea47169c832857356868b7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_05990448feea47169c832857356868b7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05990448feea47169c832857356868b7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_70f9799e55d840b58a99dc831ffdc859 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/70f9799e55d840b58a99dc831ffdc859/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_70f9799e55d840b58a99dc831ffdc859 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/70f9799e55d840b58a99dc831ffdc859/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_64417822e3d64dfb83d68f80766cbad4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64417822e3d64dfb83d68f80766cbad4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_64417822e3d64dfb83d68f80766cbad4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64417822e3d64dfb83d68f80766cbad4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f19cdd4dd3924506841263d11191f8df span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f19cdd4dd3924506841263d11191f8df/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f19cdd4dd3924506841263d11191f8df span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f19cdd4dd3924506841263d11191f8df/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a32cb52b18a84bf69e2d3cca0c312384 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a32cb52b18a84bf69e2d3cca0c312384/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a32cb52b18a84bf69e2d3cca0c312384 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a32cb52b18a84bf69e2d3cca0c312384/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ef67bb6d812747928f86a198bac84d33 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef67bb6d812747928f86a198bac84d33/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ef67bb6d812747928f86a198bac84d33 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef67bb6d812747928f86a198bac84d33/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_05c5681f761d4ecfbd3f31e903463a56 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05c5681f761d4ecfbd3f31e903463a56/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_05c5681f761d4ecfbd3f31e903463a56 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05c5681f761d4ecfbd3f31e903463a56/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_81c62925e8f943a386c6bb959b133281 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81c62925e8f943a386c6bb959b133281/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_81c62925e8f943a386c6bb959b133281 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81c62925e8f943a386c6bb959b133281/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4c959df8b4404d759ba3ea250d551b55 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c959df8b4404d759ba3ea250d551b55/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4c959df8b4404d759ba3ea250d551b55 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c959df8b4404d759ba3ea250d551b55/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a6f985f1052b486fbd34983a86f2de10 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6f985f1052b486fbd34983a86f2de10/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a6f985f1052b486fbd34983a86f2de10 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6f985f1052b486fbd34983a86f2de10/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d6dca45ec9424423964cc8c28958e0b9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d6dca45ec9424423964cc8c28958e0b9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d6dca45ec9424423964cc8c28958e0b9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d6dca45ec9424423964cc8c28958e0b9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_65118840c45e406f834c93118e1f47ab span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/65118840c45e406f834c93118e1f47ab/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_65118840c45e406f834c93118e1f47ab span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/65118840c45e406f834c93118e1f47ab/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d686d6e036534406a1646710717eecf3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d686d6e036534406a1646710717eecf3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d686d6e036534406a1646710717eecf3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d686d6e036534406a1646710717eecf3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_21cd328a8ba440fd833ef01204a38bca span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21cd328a8ba440fd833ef01204a38bca/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_21cd328a8ba440fd833ef01204a38bca span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21cd328a8ba440fd833ef01204a38bca/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f3e0e5efcb47446693a34db91f029f20 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f3e0e5efcb47446693a34db91f029f20/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f3e0e5efcb47446693a34db91f029f20 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f3e0e5efcb47446693a34db91f029f20/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c5f05c3e1b464e4e93bae0219769bcec span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c5f05c3e1b464e4e93bae0219769bcec/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c5f05c3e1b464e4e93bae0219769bcec span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c5f05c3e1b464e4e93bae0219769bcec/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_712b4523e3e44de7950d939b320516d3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/712b4523e3e44de7950d939b320516d3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_712b4523e3e44de7950d939b320516d3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/712b4523e3e44de7950d939b320516d3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fa8f0046afd44fe0bbc263d702501172 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fa8f0046afd44fe0bbc263d702501172/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fa8f0046afd44fe0bbc263d702501172 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fa8f0046afd44fe0bbc263d702501172/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d5e1e45f386a4c28b1813a3528c0b99c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d5e1e45f386a4c28b1813a3528c0b99c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d5e1e45f386a4c28b1813a3528c0b99c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d5e1e45f386a4c28b1813a3528c0b99c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_014b9e432fd442e98bc0f3a07a68e9ad span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/014b9e432fd442e98bc0f3a07a68e9ad/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_014b9e432fd442e98bc0f3a07a68e9ad span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/014b9e432fd442e98bc0f3a07a68e9ad/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_187c5506169542e1b984da2e505e955b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/187c5506169542e1b984da2e505e955b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_187c5506169542e1b984da2e505e955b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/187c5506169542e1b984da2e505e955b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d59e0c965d03465c99febb40c82213ae span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d59e0c965d03465c99febb40c82213ae/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d59e0c965d03465c99febb40c82213ae span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d59e0c965d03465c99febb40c82213ae/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_9140db0c-bc25-4ff2-a9d7-9e9721215cf0{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_9140db0c-bc25-4ff2-a9d7-9e9721215cf0/views/thumbnail'); } .swx span.moji.id_673c4b8b466c4774b4c84808b2670263 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/673c4b8b466c4774b4c84808b2670263/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_673c4b8b466c4774b4c84808b2670263 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/673c4b8b466c4774b4c84808b2670263/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_179f82faf6924d37bdb6a04a9a186078 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/179f82faf6924d37bdb6a04a9a186078/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_179f82faf6924d37bdb6a04a9a186078 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/179f82faf6924d37bdb6a04a9a186078/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_829ad138bc524595a9b7b6a1b95a4d79 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/829ad138bc524595a9b7b6a1b95a4d79/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_829ad138bc524595a9b7b6a1b95a4d79 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/829ad138bc524595a9b7b6a1b95a4d79/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_075bac49af93448aae6a17693b6c06a3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/075bac49af93448aae6a17693b6c06a3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_075bac49af93448aae6a17693b6c06a3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/075bac49af93448aae6a17693b6c06a3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_74bd2c325ae14ef38119146cf1d5e338 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/74bd2c325ae14ef38119146cf1d5e338/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_74bd2c325ae14ef38119146cf1d5e338 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/74bd2c325ae14ef38119146cf1d5e338/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5bbf7a2c060849fc8588a725aa4c4a2f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5bbf7a2c060849fc8588a725aa4c4a2f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5bbf7a2c060849fc8588a725aa4c4a2f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5bbf7a2c060849fc8588a725aa4c4a2f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6e0bf7ee73d047deb12a13fa51b48a5b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6e0bf7ee73d047deb12a13fa51b48a5b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6e0bf7ee73d047deb12a13fa51b48a5b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6e0bf7ee73d047deb12a13fa51b48a5b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d72b5430ea5f4dcfb9c28fed21043fd4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d72b5430ea5f4dcfb9c28fed21043fd4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d72b5430ea5f4dcfb9c28fed21043fd4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d72b5430ea5f4dcfb9c28fed21043fd4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d50ae14ad8394880beebd304e5228fc8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d50ae14ad8394880beebd304e5228fc8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d50ae14ad8394880beebd304e5228fc8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d50ae14ad8394880beebd304e5228fc8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e679b2e74ac14b089a97e70ba58e12cb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e679b2e74ac14b089a97e70ba58e12cb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e679b2e74ac14b089a97e70ba58e12cb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e679b2e74ac14b089a97e70ba58e12cb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6d80b24e9d8b442b81d16349a070d4ff span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6d80b24e9d8b442b81d16349a070d4ff/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6d80b24e9d8b442b81d16349a070d4ff span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6d80b24e9d8b442b81d16349a070d4ff/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c940426316eb42ec8278831cc18486fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c940426316eb42ec8278831cc18486fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c940426316eb42ec8278831cc18486fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c940426316eb42ec8278831cc18486fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_93bc04ed1df04ace986840df7dc97cb1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93bc04ed1df04ace986840df7dc97cb1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_93bc04ed1df04ace986840df7dc97cb1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93bc04ed1df04ace986840df7dc97cb1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6a6ea5af9d2046168749d1d689d3bfd3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6a6ea5af9d2046168749d1d689d3bfd3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6a6ea5af9d2046168749d1d689d3bfd3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6a6ea5af9d2046168749d1d689d3bfd3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5d7807e764e14f6ea102ddfdd30acf34 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d7807e764e14f6ea102ddfdd30acf34/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5d7807e764e14f6ea102ddfdd30acf34 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d7807e764e14f6ea102ddfdd30acf34/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_83bf44f0d867434fb296d77bf9488828 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/83bf44f0d867434fb296d77bf9488828/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_83bf44f0d867434fb296d77bf9488828 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/83bf44f0d867434fb296d77bf9488828/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f305b50326b34f07a0c2dd0c27325cea span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f305b50326b34f07a0c2dd0c27325cea/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f305b50326b34f07a0c2dd0c27325cea span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f305b50326b34f07a0c2dd0c27325cea/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_81918ab3b0f441f5a5c2c497958408cb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81918ab3b0f441f5a5c2c497958408cb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_81918ab3b0f441f5a5c2c497958408cb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81918ab3b0f441f5a5c2c497958408cb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5d3fd81f22b341299881072c627533d5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d3fd81f22b341299881072c627533d5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5d3fd81f22b341299881072c627533d5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d3fd81f22b341299881072c627533d5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_650dddb218fa49e58b37365b70f2f2fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/650dddb218fa49e58b37365b70f2f2fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_650dddb218fa49e58b37365b70f2f2fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/650dddb218fa49e58b37365b70f2f2fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b1040c09b5064088916c769fdec01ae7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b1040c09b5064088916c769fdec01ae7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b1040c09b5064088916c769fdec01ae7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b1040c09b5064088916c769fdec01ae7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_19a9ea11ee2045988b3302668054bf05 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/19a9ea11ee2045988b3302668054bf05/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_19a9ea11ee2045988b3302668054bf05 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/19a9ea11ee2045988b3302668054bf05/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb11876c0c0047a69b9200b6e0efd78a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb11876c0c0047a69b9200b6e0efd78a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb11876c0c0047a69b9200b6e0efd78a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb11876c0c0047a69b9200b6e0efd78a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9cfe64021d374cf5b96421b69643c080 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9cfe64021d374cf5b96421b69643c080/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9cfe64021d374cf5b96421b69643c080 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9cfe64021d374cf5b96421b69643c080/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69dbdd78ac32446b956da89856469e65 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69dbdd78ac32446b956da89856469e65/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69dbdd78ac32446b956da89856469e65 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69dbdd78ac32446b956da89856469e65/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c78954a018954f7ea698df876c6a8b3f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c78954a018954f7ea698df876c6a8b3f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c78954a018954f7ea698df876c6a8b3f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c78954a018954f7ea698df876c6a8b3f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f06cb8bc97b54669a43bbd2149cd61bd span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f06cb8bc97b54669a43bbd2149cd61bd/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f06cb8bc97b54669a43bbd2149cd61bd span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f06cb8bc97b54669a43bbd2149cd61bd/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2cf4c86d50ab4945b6f761b3da41e36c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2cf4c86d50ab4945b6f761b3da41e36c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2cf4c86d50ab4945b6f761b3da41e36c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2cf4c86d50ab4945b6f761b3da41e36c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3f8400211a9945ed89b8d6bb14cb0994 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3f8400211a9945ed89b8d6bb14cb0994/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3f8400211a9945ed89b8d6bb14cb0994 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3f8400211a9945ed89b8d6bb14cb0994/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0f22c385ca22484d9bfbb3cbab48beea span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0f22c385ca22484d9bfbb3cbab48beea/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0f22c385ca22484d9bfbb3cbab48beea span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0f22c385ca22484d9bfbb3cbab48beea/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6b781277ee4b466db2fc8d2465e11e73 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6b781277ee4b466db2fc8d2465e11e73/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6b781277ee4b466db2fc8d2465e11e73 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6b781277ee4b466db2fc8d2465e11e73/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0228740c3c714b48a739e7f23085c6cd span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0228740c3c714b48a739e7f23085c6cd/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0228740c3c714b48a739e7f23085c6cd span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0228740c3c714b48a739e7f23085c6cd/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a03e417766214c759167f2248d4a61d6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a03e417766214c759167f2248d4a61d6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a03e417766214c759167f2248d4a61d6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a03e417766214c759167f2248d4a61d6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f54ad605536242908a5a0d41c9c1b067 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f54ad605536242908a5a0d41c9c1b067/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f54ad605536242908a5a0d41c9c1b067 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f54ad605536242908a5a0d41c9c1b067/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_aff5b84ab7274da687f581c3f1e0df62 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/aff5b84ab7274da687f581c3f1e0df62/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_aff5b84ab7274da687f581c3f1e0df62 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/aff5b84ab7274da687f581c3f1e0df62/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b9191f54eda54cf1bc866906f44f88bc span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b9191f54eda54cf1bc866906f44f88bc/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b9191f54eda54cf1bc866906f44f88bc span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b9191f54eda54cf1bc866906f44f88bc/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7ee81d5c2d674bb5a15dc472cea34855 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7ee81d5c2d674bb5a15dc472cea34855/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7ee81d5c2d674bb5a15dc472cea34855 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7ee81d5c2d674bb5a15dc472cea34855/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3208293a51b649d496870f8aa12a134b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3208293a51b649d496870f8aa12a134b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3208293a51b649d496870f8aa12a134b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3208293a51b649d496870f8aa12a134b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_aeac21728808419db8762f0668726a46 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/aeac21728808419db8762f0668726a46/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_aeac21728808419db8762f0668726a46 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/aeac21728808419db8762f0668726a46/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cdd18ea4871e43d496e160ad4965f27e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cdd18ea4871e43d496e160ad4965f27e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cdd18ea4871e43d496e160ad4965f27e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cdd18ea4871e43d496e160ad4965f27e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_44328e9107284bd48dde0eb680c0cae9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/44328e9107284bd48dde0eb680c0cae9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_44328e9107284bd48dde0eb680c0cae9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/44328e9107284bd48dde0eb680c0cae9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d21ac7501aa749d5b8e7a8aec0ed90f0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d21ac7501aa749d5b8e7a8aec0ed90f0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d21ac7501aa749d5b8e7a8aec0ed90f0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d21ac7501aa749d5b8e7a8aec0ed90f0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e986a374294e4fb0b99b789eaebad67a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e986a374294e4fb0b99b789eaebad67a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e986a374294e4fb0b99b789eaebad67a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e986a374294e4fb0b99b789eaebad67a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fc4e775f2e0d4f0395f09b58827d2605 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fc4e775f2e0d4f0395f09b58827d2605/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fc4e775f2e0d4f0395f09b58827d2605 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fc4e775f2e0d4f0395f09b58827d2605/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ffe8af5342c54a9491bb5c7fe5f787bf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ffe8af5342c54a9491bb5c7fe5f787bf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ffe8af5342c54a9491bb5c7fe5f787bf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ffe8af5342c54a9491bb5c7fe5f787bf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c2aadc9747af4d47ae8e885a9e6f287a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c2aadc9747af4d47ae8e885a9e6f287a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c2aadc9747af4d47ae8e885a9e6f287a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c2aadc9747af4d47ae8e885a9e6f287a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_58505e34009947878396f1423ba55a4b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/58505e34009947878396f1423ba55a4b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_58505e34009947878396f1423ba55a4b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/58505e34009947878396f1423ba55a4b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_34bacd320f1c4a9c88bee38a62898b20 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/34bacd320f1c4a9c88bee38a62898b20/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_34bacd320f1c4a9c88bee38a62898b20 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/34bacd320f1c4a9c88bee38a62898b20/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cc7d0be304be4cf584078df6b70f3e36 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cc7d0be304be4cf584078df6b70f3e36/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cc7d0be304be4cf584078df6b70f3e36 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cc7d0be304be4cf584078df6b70f3e36/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5077996932954f3db31d339c1babbc68 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5077996932954f3db31d339c1babbc68/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5077996932954f3db31d339c1babbc68 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5077996932954f3db31d339c1babbc68/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_762c55d69b184dda8743b07a02fac9f9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/762c55d69b184dda8743b07a02fac9f9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_762c55d69b184dda8743b07a02fac9f9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/762c55d69b184dda8743b07a02fac9f9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b6b857539d1646288934df53a153c141 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b6b857539d1646288934df53a153c141/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b6b857539d1646288934df53a153c141 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b6b857539d1646288934df53a153c141/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_689d5408da2d4da6b77a6af46e1afd88 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/689d5408da2d4da6b77a6af46e1afd88/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_689d5408da2d4da6b77a6af46e1afd88 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/689d5408da2d4da6b77a6af46e1afd88/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2100e28ed09e4775a8f526407c688d1a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2100e28ed09e4775a8f526407c688d1a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2100e28ed09e4775a8f526407c688d1a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2100e28ed09e4775a8f526407c688d1a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_76441168f9104465ae8f7c82a5caee39 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/76441168f9104465ae8f7c82a5caee39/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_76441168f9104465ae8f7c82a5caee39 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/76441168f9104465ae8f7c82a5caee39/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_00317bf44db34abfa94f94ecc7188fa1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/00317bf44db34abfa94f94ecc7188fa1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_00317bf44db34abfa94f94ecc7188fa1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/00317bf44db34abfa94f94ecc7188fa1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_60221d3288e84567a2616c9bb0d3d0e2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/60221d3288e84567a2616c9bb0d3d0e2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_60221d3288e84567a2616c9bb0d3d0e2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/60221d3288e84567a2616c9bb0d3d0e2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a84a3172a87443f7a33a6586a58c1dc5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a84a3172a87443f7a33a6586a58c1dc5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a84a3172a87443f7a33a6586a58c1dc5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a84a3172a87443f7a33a6586a58c1dc5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3468419d02f14bbdb16dc55670357608 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3468419d02f14bbdb16dc55670357608/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3468419d02f14bbdb16dc55670357608 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3468419d02f14bbdb16dc55670357608/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d2f6fe7561ad4af9ae89e6644509614d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d2f6fe7561ad4af9ae89e6644509614d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d2f6fe7561ad4af9ae89e6644509614d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d2f6fe7561ad4af9ae89e6644509614d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_21d60ed7dc4647838a301aa21c328e3c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21d60ed7dc4647838a301aa21c328e3c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_21d60ed7dc4647838a301aa21c328e3c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21d60ed7dc4647838a301aa21c328e3c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0d3f576c6f244ab79ef7b6ad65e7fd64 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0d3f576c6f244ab79ef7b6ad65e7fd64/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0d3f576c6f244ab79ef7b6ad65e7fd64 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0d3f576c6f244ab79ef7b6ad65e7fd64/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_24abb925bd7344ff8e0078f4cdef7c16 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/24abb925bd7344ff8e0078f4cdef7c16/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_24abb925bd7344ff8e0078f4cdef7c16 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/24abb925bd7344ff8e0078f4cdef7c16/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_55ae8db8fc214ece88be5cad13934456 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/55ae8db8fc214ece88be5cad13934456/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_55ae8db8fc214ece88be5cad13934456 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/55ae8db8fc214ece88be5cad13934456/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c8d5659530cb4e029a52ed39c451c81d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c8d5659530cb4e029a52ed39c451c81d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c8d5659530cb4e029a52ed39c451c81d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c8d5659530cb4e029a52ed39c451c81d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bd75ea973fb041f2aa8842b7b883380d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd75ea973fb041f2aa8842b7b883380d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bd75ea973fb041f2aa8842b7b883380d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd75ea973fb041f2aa8842b7b883380d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cec8eeff6e1342e19ebad603d3dd6222 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cec8eeff6e1342e19ebad603d3dd6222/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cec8eeff6e1342e19ebad603d3dd6222 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cec8eeff6e1342e19ebad603d3dd6222/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2e4502d4475d402695c253acf62deff5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2e4502d4475d402695c253acf62deff5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2e4502d4475d402695c253acf62deff5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2e4502d4475d402695c253acf62deff5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_47c9ad2d-6808-452e-9c8a-8edf6cd6d206{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_47c9ad2d-6808-452e-9c8a-8edf6cd6d206/views/thumbnail'); } .swx span.moji.id_d56cc53636294519a89d199cabb901df span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d56cc53636294519a89d199cabb901df/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d56cc53636294519a89d199cabb901df span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d56cc53636294519a89d199cabb901df/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f13557045fc9495bb4622e341a6d8e50 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f13557045fc9495bb4622e341a6d8e50/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f13557045fc9495bb4622e341a6d8e50 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f13557045fc9495bb4622e341a6d8e50/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d318c3ae43ac41c28e494c936b26237f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d318c3ae43ac41c28e494c936b26237f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d318c3ae43ac41c28e494c936b26237f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d318c3ae43ac41c28e494c936b26237f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_dc13520d028a4482bdb6d1d8f345346d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dc13520d028a4482bdb6d1d8f345346d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_dc13520d028a4482bdb6d1d8f345346d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dc13520d028a4482bdb6d1d8f345346d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d45faa770d5c48a78c3b96609aeab752 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d45faa770d5c48a78c3b96609aeab752/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d45faa770d5c48a78c3b96609aeab752 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d45faa770d5c48a78c3b96609aeab752/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_01b90af5efaa4a329ba5fb9fc11a8214 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/01b90af5efaa4a329ba5fb9fc11a8214/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_01b90af5efaa4a329ba5fb9fc11a8214 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/01b90af5efaa4a329ba5fb9fc11a8214/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_afccd49ff27d440e9eb04a7fa0486af0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/afccd49ff27d440e9eb04a7fa0486af0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_afccd49ff27d440e9eb04a7fa0486af0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/afccd49ff27d440e9eb04a7fa0486af0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a40f1059859645098c3b2bf5b60ea6d2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a40f1059859645098c3b2bf5b60ea6d2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a40f1059859645098c3b2bf5b60ea6d2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a40f1059859645098c3b2bf5b60ea6d2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9db38710de1e4baf81d4716c4adf91ae span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9db38710de1e4baf81d4716c4adf91ae/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9db38710de1e4baf81d4716c4adf91ae span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9db38710de1e4baf81d4716c4adf91ae/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c9d5c75397dc4b4e8208d9453e2a3a73 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9d5c75397dc4b4e8208d9453e2a3a73/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c9d5c75397dc4b4e8208d9453e2a3a73 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9d5c75397dc4b4e8208d9453e2a3a73/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fe932a77c25244ccbe18e50782e7a664 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fe932a77c25244ccbe18e50782e7a664/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fe932a77c25244ccbe18e50782e7a664 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fe932a77c25244ccbe18e50782e7a664/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c0c5a61511fd48abb28c0c3f06ba8804 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c0c5a61511fd48abb28c0c3f06ba8804/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c0c5a61511fd48abb28c0c3f06ba8804 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c0c5a61511fd48abb28c0c3f06ba8804/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8027dfb48ed34e2bba262bb3201764c1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8027dfb48ed34e2bba262bb3201764c1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8027dfb48ed34e2bba262bb3201764c1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8027dfb48ed34e2bba262bb3201764c1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3cb8024cb3544ccbb3e15047b15cee5c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3cb8024cb3544ccbb3e15047b15cee5c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3cb8024cb3544ccbb3e15047b15cee5c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3cb8024cb3544ccbb3e15047b15cee5c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b58c1b2e1b8b4783872e827002a6d750 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b58c1b2e1b8b4783872e827002a6d750/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b58c1b2e1b8b4783872e827002a6d750 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b58c1b2e1b8b4783872e827002a6d750/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_314d4a0ddc3a4d4db2fbae0d8600835b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/314d4a0ddc3a4d4db2fbae0d8600835b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_314d4a0ddc3a4d4db2fbae0d8600835b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/314d4a0ddc3a4d4db2fbae0d8600835b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7996182e84444a4dba0d0f0a0d539605 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7996182e84444a4dba0d0f0a0d539605/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7996182e84444a4dba0d0f0a0d539605 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7996182e84444a4dba0d0f0a0d539605/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6a02f7b0e5cd4f96889708ddd0373502 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6a02f7b0e5cd4f96889708ddd0373502/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6a02f7b0e5cd4f96889708ddd0373502 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6a02f7b0e5cd4f96889708ddd0373502/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a39a393f0351424089b2336d90bd31a0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a39a393f0351424089b2336d90bd31a0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a39a393f0351424089b2336d90bd31a0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a39a393f0351424089b2336d90bd31a0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f1147fcaef6d44ff95f79490e33a0bca span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f1147fcaef6d44ff95f79490e33a0bca/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f1147fcaef6d44ff95f79490e33a0bca span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f1147fcaef6d44ff95f79490e33a0bca/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5de66b6d601f49c592e6b05d51800bd3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5de66b6d601f49c592e6b05d51800bd3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5de66b6d601f49c592e6b05d51800bd3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5de66b6d601f49c592e6b05d51800bd3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_29c47595fcd64bf48e9094f043fd910b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/29c47595fcd64bf48e9094f043fd910b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_29c47595fcd64bf48e9094f043fd910b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/29c47595fcd64bf48e9094f043fd910b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_89f6866e23f444ea9d952211fd7556fd span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/89f6866e23f444ea9d952211fd7556fd/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_89f6866e23f444ea9d952211fd7556fd span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/89f6866e23f444ea9d952211fd7556fd/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e87e2280d045412ca423a39518976409 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e87e2280d045412ca423a39518976409/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e87e2280d045412ca423a39518976409 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e87e2280d045412ca423a39518976409/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2cd3d1b5da9a4cbb8c92e4eb0ae63edc span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2cd3d1b5da9a4cbb8c92e4eb0ae63edc/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2cd3d1b5da9a4cbb8c92e4eb0ae63edc span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2cd3d1b5da9a4cbb8c92e4eb0ae63edc/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_10279447f732471d99fb35dd3b5fcbf6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/10279447f732471d99fb35dd3b5fcbf6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_10279447f732471d99fb35dd3b5fcbf6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/10279447f732471d99fb35dd3b5fcbf6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f4432a0e21dd4396b89d80ea6d59c530 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f4432a0e21dd4396b89d80ea6d59c530/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f4432a0e21dd4396b89d80ea6d59c530 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f4432a0e21dd4396b89d80ea6d59c530/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0a7f800771c047a4b7fc70cd5db96f6a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a7f800771c047a4b7fc70cd5db96f6a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0a7f800771c047a4b7fc70cd5db96f6a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a7f800771c047a4b7fc70cd5db96f6a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7c92f2f5f73944b9abdd00f7bebf2f6d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7c92f2f5f73944b9abdd00f7bebf2f6d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7c92f2f5f73944b9abdd00f7bebf2f6d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7c92f2f5f73944b9abdd00f7bebf2f6d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0c51e8b06af641b9be78f21b6423f64f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0c51e8b06af641b9be78f21b6423f64f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0c51e8b06af641b9be78f21b6423f64f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0c51e8b06af641b9be78f21b6423f64f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d128b5f888764c06ab4fa4413d9f782e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d128b5f888764c06ab4fa4413d9f782e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d128b5f888764c06ab4fa4413d9f782e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d128b5f888764c06ab4fa4413d9f782e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5c5234c2364247c886f71f58f395dc4a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5c5234c2364247c886f71f58f395dc4a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5c5234c2364247c886f71f58f395dc4a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5c5234c2364247c886f71f58f395dc4a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a39cca0a78224bc09fa3e1fb1646181a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a39cca0a78224bc09fa3e1fb1646181a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a39cca0a78224bc09fa3e1fb1646181a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a39cca0a78224bc09fa3e1fb1646181a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_599742270f5d4673a8242b83ff4d38be span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/599742270f5d4673a8242b83ff4d38be/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_599742270f5d4673a8242b83ff4d38be span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/599742270f5d4673a8242b83ff4d38be/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8c9c913bd0e9491f9c95b29860b13570 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8c9c913bd0e9491f9c95b29860b13570/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8c9c913bd0e9491f9c95b29860b13570 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8c9c913bd0e9491f9c95b29860b13570/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8bd527b823384392a8ba47e345a386c2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8bd527b823384392a8ba47e345a386c2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8bd527b823384392a8ba47e345a386c2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8bd527b823384392a8ba47e345a386c2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_38939ff08daa4331ac99a4fb58e2ab7b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/38939ff08daa4331ac99a4fb58e2ab7b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_38939ff08daa4331ac99a4fb58e2ab7b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/38939ff08daa4331ac99a4fb58e2ab7b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0a62f2035a5d4000aaca26b1ed3b0491 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a62f2035a5d4000aaca26b1ed3b0491/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0a62f2035a5d4000aaca26b1ed3b0491 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a62f2035a5d4000aaca26b1ed3b0491/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1dd204076b16496393ba936b22e3861f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1dd204076b16496393ba936b22e3861f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1dd204076b16496393ba936b22e3861f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1dd204076b16496393ba936b22e3861f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_14f03002-b78b-4bb3-875a-caf90f336962{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_14f03002-b78b-4bb3-875a-caf90f336962/views/thumbnail'); } .swx span.moji.id_5e4b15ed51244c5daae58114abeda46c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5e4b15ed51244c5daae58114abeda46c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5e4b15ed51244c5daae58114abeda46c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5e4b15ed51244c5daae58114abeda46c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e0734f17138c46a693b00a2b58babc12 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e0734f17138c46a693b00a2b58babc12/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e0734f17138c46a693b00a2b58babc12 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e0734f17138c46a693b00a2b58babc12/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9401c7f9c12944e49daa82fc1e92ec31 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9401c7f9c12944e49daa82fc1e92ec31/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9401c7f9c12944e49daa82fc1e92ec31 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9401c7f9c12944e49daa82fc1e92ec31/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0ebd46c04fa641df8be24bb42d911c6b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ebd46c04fa641df8be24bb42d911c6b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0ebd46c04fa641df8be24bb42d911c6b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ebd46c04fa641df8be24bb42d911c6b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2c954e3931b84b88b23be618aad04d60 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2c954e3931b84b88b23be618aad04d60/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2c954e3931b84b88b23be618aad04d60 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2c954e3931b84b88b23be618aad04d60/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d796450ddff1496a9d43eb7d1ee795c6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d796450ddff1496a9d43eb7d1ee795c6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d796450ddff1496a9d43eb7d1ee795c6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d796450ddff1496a9d43eb7d1ee795c6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_df369f9ec4a7475396e5c1deabe21167 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df369f9ec4a7475396e5c1deabe21167/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_df369f9ec4a7475396e5c1deabe21167 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df369f9ec4a7475396e5c1deabe21167/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bd44b6dc2e784f6eac5db538a15a5d8c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd44b6dc2e784f6eac5db538a15a5d8c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bd44b6dc2e784f6eac5db538a15a5d8c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd44b6dc2e784f6eac5db538a15a5d8c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_80a3b4c737e1461b87f86d385084fc84 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80a3b4c737e1461b87f86d385084fc84/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_80a3b4c737e1461b87f86d385084fc84 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80a3b4c737e1461b87f86d385084fc84/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb677fa811474474ad19fd9cf34afd8e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb677fa811474474ad19fd9cf34afd8e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb677fa811474474ad19fd9cf34afd8e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb677fa811474474ad19fd9cf34afd8e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5db6bfb50b064e739f068d407d207ca0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5db6bfb50b064e739f068d407d207ca0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5db6bfb50b064e739f068d407d207ca0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5db6bfb50b064e739f068d407d207ca0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3bf5fa39f6504adf83135118d40896bc span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3bf5fa39f6504adf83135118d40896bc/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3bf5fa39f6504adf83135118d40896bc span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3bf5fa39f6504adf83135118d40896bc/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3e36be2d9396496ea6e8dc7f6a9acad7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3e36be2d9396496ea6e8dc7f6a9acad7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3e36be2d9396496ea6e8dc7f6a9acad7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3e36be2d9396496ea6e8dc7f6a9acad7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_eadac0775ce3428197104734ef87a481 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eadac0775ce3428197104734ef87a481/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_eadac0775ce3428197104734ef87a481 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eadac0775ce3428197104734ef87a481/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fdff4a0706474dc0a09124a20a4d4df1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fdff4a0706474dc0a09124a20a4d4df1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fdff4a0706474dc0a09124a20a4d4df1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fdff4a0706474dc0a09124a20a4d4df1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7a43b13d029342ef8377421e67467be4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7a43b13d029342ef8377421e67467be4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7a43b13d029342ef8377421e67467be4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7a43b13d029342ef8377421e67467be4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_75063885ecac46e5858d78e952081db8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/75063885ecac46e5858d78e952081db8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_75063885ecac46e5858d78e952081db8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/75063885ecac46e5858d78e952081db8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c9c96f5f116644169c3b7dc18e420427 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9c96f5f116644169c3b7dc18e420427/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c9c96f5f116644169c3b7dc18e420427 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9c96f5f116644169c3b7dc18e420427/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8f5cb164036544bba48aa99934b070bf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8f5cb164036544bba48aa99934b070bf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8f5cb164036544bba48aa99934b070bf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8f5cb164036544bba48aa99934b070bf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fed32aeaa317437ebd2b0a2d7d9036a9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fed32aeaa317437ebd2b0a2d7d9036a9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fed32aeaa317437ebd2b0a2d7d9036a9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fed32aeaa317437ebd2b0a2d7d9036a9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_93ef3bf9986a4978b046bbdb2f5a6019 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93ef3bf9986a4978b046bbdb2f5a6019/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_93ef3bf9986a4978b046bbdb2f5a6019 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93ef3bf9986a4978b046bbdb2f5a6019/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a4adecdd9c284db7b248071bc7cd4ce0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a4adecdd9c284db7b248071bc7cd4ce0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a4adecdd9c284db7b248071bc7cd4ce0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a4adecdd9c284db7b248071bc7cd4ce0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_2fc67e28-34b3-4068-8040-724564b07476{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_2fc67e28-34b3-4068-8040-724564b07476/views/thumbnail'); } .swx span.moji.id_9dc9b765760948378c7d749f229a0cce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9dc9b765760948378c7d749f229a0cce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9dc9b765760948378c7d749f229a0cce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9dc9b765760948378c7d749f229a0cce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2b3bd2ed622e443c8ff98c5df55b4e31 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2b3bd2ed622e443c8ff98c5df55b4e31/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2b3bd2ed622e443c8ff98c5df55b4e31 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2b3bd2ed622e443c8ff98c5df55b4e31/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c73b191c08504b9c933b76f58707b550 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c73b191c08504b9c933b76f58707b550/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c73b191c08504b9c933b76f58707b550 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c73b191c08504b9c933b76f58707b550/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3af445b6d4ac46f5a885c6b3f871801c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3af445b6d4ac46f5a885c6b3f871801c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3af445b6d4ac46f5a885c6b3f871801c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3af445b6d4ac46f5a885c6b3f871801c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5dd08aa8fc4e43529a6e1e303899a73e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5dd08aa8fc4e43529a6e1e303899a73e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5dd08aa8fc4e43529a6e1e303899a73e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5dd08aa8fc4e43529a6e1e303899a73e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d817b63981fb4d0fbf47b3d93e29acb4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d817b63981fb4d0fbf47b3d93e29acb4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d817b63981fb4d0fbf47b3d93e29acb4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d817b63981fb4d0fbf47b3d93e29acb4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e86ec46981574373baeca9af544e1dd8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e86ec46981574373baeca9af544e1dd8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e86ec46981574373baeca9af544e1dd8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e86ec46981574373baeca9af544e1dd8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f35ebf0ddd1d4da8b5de712adb3083ba span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f35ebf0ddd1d4da8b5de712adb3083ba/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f35ebf0ddd1d4da8b5de712adb3083ba span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f35ebf0ddd1d4da8b5de712adb3083ba/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_194a1e4d44b242e58367749dcb90326a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/194a1e4d44b242e58367749dcb90326a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_194a1e4d44b242e58367749dcb90326a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/194a1e4d44b242e58367749dcb90326a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9023ca489ef3473b81f5bb44eb3d8d73 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9023ca489ef3473b81f5bb44eb3d8d73/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9023ca489ef3473b81f5bb44eb3d8d73 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9023ca489ef3473b81f5bb44eb3d8d73/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_68138afc5fda4ef79b91a3ca40b05502 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/68138afc5fda4ef79b91a3ca40b05502/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_68138afc5fda4ef79b91a3ca40b05502 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/68138afc5fda4ef79b91a3ca40b05502/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ad5e3abb979a411399d82f622e542ea6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ad5e3abb979a411399d82f622e542ea6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ad5e3abb979a411399d82f622e542ea6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ad5e3abb979a411399d82f622e542ea6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_2cd836d1-956e-4ca9-afbe-0531dcdca505{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_2cd836d1-956e-4ca9-afbe-0531dcdca505/views/thumbnail'); } .swx span.moji.id_18884340c2414c62b00bc318504260ed span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/18884340c2414c62b00bc318504260ed/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_18884340c2414c62b00bc318504260ed span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/18884340c2414c62b00bc318504260ed/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9ab2b5d1ff374cea970c22f08aedbe0e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ab2b5d1ff374cea970c22f08aedbe0e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9ab2b5d1ff374cea970c22f08aedbe0e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ab2b5d1ff374cea970c22f08aedbe0e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_03a045222ce34b90b58e4bf180c2284a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/03a045222ce34b90b58e4bf180c2284a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_03a045222ce34b90b58e4bf180c2284a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/03a045222ce34b90b58e4bf180c2284a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7cfb161c33234356bcda36b1a3062b39 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7cfb161c33234356bcda36b1a3062b39/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7cfb161c33234356bcda36b1a3062b39 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7cfb161c33234356bcda36b1a3062b39/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e53595ec70754b01a9b0a8c077d2e5ad span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e53595ec70754b01a9b0a8c077d2e5ad/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e53595ec70754b01a9b0a8c077d2e5ad span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e53595ec70754b01a9b0a8c077d2e5ad/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5120b685cdba4f50b91ecce8327c57c2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5120b685cdba4f50b91ecce8327c57c2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5120b685cdba4f50b91ecce8327c57c2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5120b685cdba4f50b91ecce8327c57c2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_391e60f5ca004b0aa7956478df92eae8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/391e60f5ca004b0aa7956478df92eae8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_391e60f5ca004b0aa7956478df92eae8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/391e60f5ca004b0aa7956478df92eae8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a660dab08a73453f89eaba5531ed8db2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a660dab08a73453f89eaba5531ed8db2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a660dab08a73453f89eaba5531ed8db2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a660dab08a73453f89eaba5531ed8db2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7fb1910129484e31a4ae54346c84e206 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7fb1910129484e31a4ae54346c84e206/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7fb1910129484e31a4ae54346c84e206 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7fb1910129484e31a4ae54346c84e206/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_87b5c8f795064f7da0da22a59af95680 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/87b5c8f795064f7da0da22a59af95680/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_87b5c8f795064f7da0da22a59af95680 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/87b5c8f795064f7da0da22a59af95680/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_40e49ed72f3f4c53b898102fdbfc2c03 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/40e49ed72f3f4c53b898102fdbfc2c03/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_40e49ed72f3f4c53b898102fdbfc2c03 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/40e49ed72f3f4c53b898102fdbfc2c03/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9956c4564c8e4fa0a1f0abdecf23d5b2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9956c4564c8e4fa0a1f0abdecf23d5b2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9956c4564c8e4fa0a1f0abdecf23d5b2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9956c4564c8e4fa0a1f0abdecf23d5b2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3bf8b7a4e9c347708d25c5f0069dea3f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3bf8b7a4e9c347708d25c5f0069dea3f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3bf8b7a4e9c347708d25c5f0069dea3f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3bf8b7a4e9c347708d25c5f0069dea3f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c0c8700df236443ab100d1963c22f192 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c0c8700df236443ab100d1963c22f192/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c0c8700df236443ab100d1963c22f192 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c0c8700df236443ab100d1963c22f192/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b23b5804a04e41af8a77deffba126720 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b23b5804a04e41af8a77deffba126720/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b23b5804a04e41af8a77deffba126720 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b23b5804a04e41af8a77deffba126720/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e1d534825cff456eb54edfe06fc673cf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e1d534825cff456eb54edfe06fc673cf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e1d534825cff456eb54edfe06fc673cf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e1d534825cff456eb54edfe06fc673cf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_96aabeaf71b44e6faa3c6f141b5f34f9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/96aabeaf71b44e6faa3c6f141b5f34f9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_96aabeaf71b44e6faa3c6f141b5f34f9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/96aabeaf71b44e6faa3c6f141b5f34f9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7964e7a51ee44e9c8536016e70563fdc span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7964e7a51ee44e9c8536016e70563fdc/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7964e7a51ee44e9c8536016e70563fdc span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7964e7a51ee44e9c8536016e70563fdc/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f96a75da9440429ca22baef01ac76685 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f96a75da9440429ca22baef01ac76685/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f96a75da9440429ca22baef01ac76685 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f96a75da9440429ca22baef01ac76685/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fef63f9addcc47bd8e16e5fef8d4a1fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fef63f9addcc47bd8e16e5fef8d4a1fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fef63f9addcc47bd8e16e5fef8d4a1fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fef63f9addcc47bd8e16e5fef8d4a1fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_11a49ac0c55b43028d7b64b1bc80543d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11a49ac0c55b43028d7b64b1bc80543d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_11a49ac0c55b43028d7b64b1bc80543d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11a49ac0c55b43028d7b64b1bc80543d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0972745a71fd428fb4265e31c3bd1bef span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0972745a71fd428fb4265e31c3bd1bef/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0972745a71fd428fb4265e31c3bd1bef span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0972745a71fd428fb4265e31c3bd1bef/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_80864926eae84cc1b44623185ef2d757 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80864926eae84cc1b44623185ef2d757/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_80864926eae84cc1b44623185ef2d757 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80864926eae84cc1b44623185ef2d757/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a6b6cceccbd34d0498dafd7fd4bc51d7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6b6cceccbd34d0498dafd7fd4bc51d7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a6b6cceccbd34d0498dafd7fd4bc51d7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6b6cceccbd34d0498dafd7fd4bc51d7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1d88bbe54b7247f0b2f303c7dd4da0fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1d88bbe54b7247f0b2f303c7dd4da0fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1d88bbe54b7247f0b2f303c7dd4da0fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1d88bbe54b7247f0b2f303c7dd4da0fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_678da6cda87145f1bc9b96954a3562cf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/678da6cda87145f1bc9b96954a3562cf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_678da6cda87145f1bc9b96954a3562cf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/678da6cda87145f1bc9b96954a3562cf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_33cf47a4af8e436da5efe3e9f2a249a1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/33cf47a4af8e436da5efe3e9f2a249a1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_33cf47a4af8e436da5efe3e9f2a249a1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/33cf47a4af8e436da5efe3e9f2a249a1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_008f01b9135a4441a8249f5d003c14a3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/008f01b9135a4441a8249f5d003c14a3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_008f01b9135a4441a8249f5d003c14a3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/008f01b9135a4441a8249f5d003c14a3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2a7b74e34fe04d9d8b171c61199dbed3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2a7b74e34fe04d9d8b171c61199dbed3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2a7b74e34fe04d9d8b171c61199dbed3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2a7b74e34fe04d9d8b171c61199dbed3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ccbdfa5036ff4d61a51d87acb294aa03 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ccbdfa5036ff4d61a51d87acb294aa03/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ccbdfa5036ff4d61a51d87acb294aa03 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ccbdfa5036ff4d61a51d87acb294aa03/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0a122fcbe9e148fdb3ca527c0fd330fb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a122fcbe9e148fdb3ca527c0fd330fb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0a122fcbe9e148fdb3ca527c0fd330fb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a122fcbe9e148fdb3ca527c0fd330fb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d934e84022054927a10617d9c68b5f15 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d934e84022054927a10617d9c68b5f15/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d934e84022054927a10617d9c68b5f15 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d934e84022054927a10617d9c68b5f15/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3ed454a895f046e3ab8065cfda006729 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ed454a895f046e3ab8065cfda006729/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3ed454a895f046e3ab8065cfda006729 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ed454a895f046e3ab8065cfda006729/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_556d61fc9e414c0c84d6ae38a9c01659 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/556d61fc9e414c0c84d6ae38a9c01659/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_556d61fc9e414c0c84d6ae38a9c01659 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/556d61fc9e414c0c84d6ae38a9c01659/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_45626156ed244e2093f262ef05de7500 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/45626156ed244e2093f262ef05de7500/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_45626156ed244e2093f262ef05de7500 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/45626156ed244e2093f262ef05de7500/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d7e5b0d9f6ad4554b7585863166516bb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d7e5b0d9f6ad4554b7585863166516bb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d7e5b0d9f6ad4554b7585863166516bb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d7e5b0d9f6ad4554b7585863166516bb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_40d32ff12d044343b6576049a9c85188 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/40d32ff12d044343b6576049a9c85188/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_40d32ff12d044343b6576049a9c85188 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/40d32ff12d044343b6576049a9c85188/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c552a516696a48fabc97caf091cc1bd5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c552a516696a48fabc97caf091cc1bd5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c552a516696a48fabc97caf091cc1bd5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c552a516696a48fabc97caf091cc1bd5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6feba691dd4a44398bffb5075ab12923 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6feba691dd4a44398bffb5075ab12923/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6feba691dd4a44398bffb5075ab12923 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6feba691dd4a44398bffb5075ab12923/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_02ea7e8b82f545928b11285544095d6a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/02ea7e8b82f545928b11285544095d6a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_02ea7e8b82f545928b11285544095d6a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/02ea7e8b82f545928b11285544095d6a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69b140433d7b4358923629e259f7c3eb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69b140433d7b4358923629e259f7c3eb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69b140433d7b4358923629e259f7c3eb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69b140433d7b4358923629e259f7c3eb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f6e477f5171548349bd36f72c9d40b9a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f6e477f5171548349bd36f72c9d40b9a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f6e477f5171548349bd36f72c9d40b9a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f6e477f5171548349bd36f72c9d40b9a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e245fced1cba4ae18fa0d449de6a89e4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e245fced1cba4ae18fa0d449de6a89e4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e245fced1cba4ae18fa0d449de6a89e4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e245fced1cba4ae18fa0d449de6a89e4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b55b85cc25e34675ba8ed0c50050951c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b55b85cc25e34675ba8ed0c50050951c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b55b85cc25e34675ba8ed0c50050951c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b55b85cc25e34675ba8ed0c50050951c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f540c8eb9b524b92966ec9367fc9b939 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f540c8eb9b524b92966ec9367fc9b939/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f540c8eb9b524b92966ec9367fc9b939 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f540c8eb9b524b92966ec9367fc9b939/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cf65bd5003004764b30c8c2b7274bb18 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cf65bd5003004764b30c8c2b7274bb18/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cf65bd5003004764b30c8c2b7274bb18 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cf65bd5003004764b30c8c2b7274bb18/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_48049a964c6947d398fbc42005288e89 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/48049a964c6947d398fbc42005288e89/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_48049a964c6947d398fbc42005288e89 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/48049a964c6947d398fbc42005288e89/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fd966c6f0d7247d98441e66e66104a15 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fd966c6f0d7247d98441e66e66104a15/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fd966c6f0d7247d98441e66e66104a15 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fd966c6f0d7247d98441e66e66104a15/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8b5e994fbb6c4524983959023879081a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8b5e994fbb6c4524983959023879081a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8b5e994fbb6c4524983959023879081a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8b5e994fbb6c4524983959023879081a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b2d0489dd19046a585ab3b9fb12eb952 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b2d0489dd19046a585ab3b9fb12eb952/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b2d0489dd19046a585ab3b9fb12eb952 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b2d0489dd19046a585ab3b9fb12eb952/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8ae2ef5b828447c3a6c9832b2c51160b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8ae2ef5b828447c3a6c9832b2c51160b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8ae2ef5b828447c3a6c9832b2c51160b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8ae2ef5b828447c3a6c9832b2c51160b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f87b8f95bf4142c281874a8b0d06feff span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f87b8f95bf4142c281874a8b0d06feff/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f87b8f95bf4142c281874a8b0d06feff span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f87b8f95bf4142c281874a8b0d06feff/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3ea11083ab4b4590876f509701b7f3f6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ea11083ab4b4590876f509701b7f3f6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3ea11083ab4b4590876f509701b7f3f6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ea11083ab4b4590876f509701b7f3f6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }-->

    +
    Representative example: Credit limit: £1,200. Interest: £67 Total payable: £1,267 in 11 monthly instalments of £115. Representative 10.6% APR. Interest rate: 5.6% pa (variable)’
    +

    <!--@font-face { font-family: "wf_segoe-ui_light"; src: local("Segoe UI Light"), local("Segoe WP Light"), url('prem/fonts/segoeui-light.woff') format('woff'), url('prem/fonts/segoeui-light.ttf') format('truetype'); } @font-face { font-family: "wf_segoe-ui_normal"; src: local("Segoe UI"), local("Segoe WP"), url('prem/fonts/segoeui-regular.woff') format('woff'), url('prem/fonts/segoeui-regular.ttf') format('truetype'); } @font-face { font-family: "wf_segoe-ui_semibold"; src: local("Segoe UI Semibold"), local("Segoe WP Semibold"), url('prem/fonts/segoeui-semibold.woff') format('woff'), url('prem/fonts/segoeui-semibold.ttf') format('truetype'); font-weight: bold; } @font-face { font-family: "wf_segoe-ui_semilight"; src: local("Segoe UI Semilight"), local("Segoe WP Semilight"), url('prem/fonts/segoeui-semilight.woff') format('woff'), url('prem/fonts/segoeui-semilight.ttf') format('truetype'); } @font-face { font-family: 'webfontPreload'; src: url('prem/16.1809.14.2333995/resources/styles/fonts/office365icons.eot?#iefix') format('embedded-opentype'), url('prem/16.1809.14.2333995/resources/styles/fonts/office365icons.woff') format('woff'), url('prem/16.1809.14.2333995/resources/styles/fonts/office365icons.ttf') format('truetype'); font-weight: normal; font-style: normal; }-->

    <!--.customScrollBar::-webkit-scrollbar{height:18px;width:18px}.customScrollBar::-webkit-scrollbar:disabled{display:none}.customScrollBar::-webkit-scrollbar-button{background-color:#fff;background-repeat:no-repeat;cursor:pointer}.customScrollBar::-webkit-scrollbar-button:horizontal:increment,.customScrollBar::-webkit-scrollbar-button:horizontal:decrement,.customScrollBar::-webkit-scrollbar-button:horizontal:increment:hover,.customScrollBar::-webkit-scrollbar-button:horizontal:decrement:hover,.customScrollBar::-webkit-scrollbar-button:vertical:increment,.customScrollBar::-webkit-scrollbar-button:vertical:decrement,.customScrollBar::-webkit-scrollbar-button:vertical:increment:hover,.customScrollBar::-webkit-scrollbar-button:vertical:decrement:hover{background-position:center;height:18px;width:18px}.customScrollBarLight::-webkit-scrollbar-button{display:none}.customScrollBar::-webkit-scrollbar-track{background-color:#fff}.customScrollBarLight::-webkit-scrollbar-track{background-color:#0072c6}.customScrollBar::-webkit-scrollbar-thumb{border-radius:9px;border:solid 6px #fff;background-color:#c8c8c8}.customScrollBarLight::-webkit-scrollbar-thumb{border-color:#0072c6;background-color:#95b1c1}.customScrollBar::-webkit-scrollbar-thumb:vertical{min-height:50px}.customScrollBar::-webkit-scrollbar-thumb:horizontal{min-width:50px}.customScrollBar::-webkit-scrollbar-thumb:hover{border-radius:9px;border:solid 6px #fff;background-color:#98a3a6}.customScrollBar::-webkit-scrollbar-corner{background-color:#fff}.nativeScrollInertia{-webkit-overflow-scrolling:touch}.csimg{display:inline-block;overflow:hidden}button::-moz-focus-inner{border-width:0;padding:0}.textbox{border-width:1px;border-style:solid;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;-webkit-appearance:none;height:30px;padding:0 5px}.tnarrow .textbox,.twide .textbox{font-size:12px;background-color:#fff;height:14px;padding:3px 5px}.textbox::-webkit-input-placeholder{color:#a6a6a6}.textbox:-moz-placeholder{color:#a6a6a6}.textbox::-moz-placeholder{color:#a6a6a6}.textbox:-ms-input-placeholder{color:#a6a6a6}.textarea{padding:10px}.textarea:hover{background-color:transparent;border-color:transparent}.o365button{background:transparent;border-width:0;padding:0;cursor:pointer!important;font-size:14px}.o365button:disabled,label.o365button[disabled=true]{cursor:default!important}.o365buttonOutlined{padding-right:11px;padding-left:11px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid}.o365buttonOutlined .o365buttonLabel{display:inline-block}.o365buttonOutlined{height:30px}.twide .o365buttonOutlined,.tnarrow .o365buttonOutlined{height:22px}.o365buttonOutlined .o365buttonLabel{height:22px}.checkbox{border-style:none;cursor:pointer;vertical-align:middle}.popupShadow{box-shadow:0 0 20px rgba(0,0,0,.4);border:1px solid #eaeaea}.contextMenuDropShadow{box-shadow:0 0 7px rgba(0,0,0,.4);border:1px solid #eaeaea}.modalBackground{background-color:#fff;height:100%;width:100%;opacity:.65;filter:Alpha(opacity=65)}.clearModalBackground{background-color:#fff;opacity:0;filter:Alpha(opacity=0);height:100%;width:100%}.contextMenuPopup{background-color:#fff}.removeFocusOutline *:focus{outline:none}.addFocusOutline button:focus{outline:dotted 1px}.addFocusRingOutline button:focus{outline:auto 5px -webkit-focus-ring-color}.border-color-transparent{border-color:transparent}.vResize,.hResize{z-index:1000}.hResize,.hResizeCursor *{cursor:row-resize!important}.vResize,.vResizeCursor *{cursor:col-resize!important}.vResizing,.hResizing{filter:alpha(opacity=60);opacity:.6;-moz-opacity:.6;border:solid 1px #666}.vResizing{border-width:0 1px}.hResizing{border-width:1px 0}--><!--.ms-font-su{color:#333;font-family:"wf_segoe-ui_semilight", "Segoe UI Semilight", "Segoe WP Semilight", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:42px;font-weight:normal}.ms-font-xxl{color:#333;font-family:"wf_segoe-ui_light", "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:28px;font-weight:normal}.touch .ms-font-xxl{font-size:30px}.ms-font-xl{color:#333;font-family:"wf_segoe-ui_light", "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:21px;font-weight:normal}.touch .ms-font-xl{font-size:22px}.ms-font-l{color:#333;font-family:"wf_segoe-ui_semilight", "Segoe UI Semilight", "Segoe WP Semilight", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:17px;font-weight:normal}.touch .ms-font-l{font-size:18px}.ms-font-m{color:#333;font-family:"wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:14px;font-weight:normal}.touch .ms-font-m{font-size:15px}.ms-font-s{color:#333;font-family:"wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:12px;font-weight:normal}.touch .ms-font-s{font-size:13px}.ms-font-xs{color:#333;font-family:"wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:11px;font-weight:normal}.touch .ms-font-xs{font-size:12px}.ms-font-mi{color:#333;font-family:"wf_segoe-ui_semibold", "Segoe UI Semibold", "Segoe WP Semibold", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-size:10px;font-weight:normal}.touch .ms-font-mi{font-size:11px}.ms-font-weight-light,.ms-fwt-l,.ms-font-weight-light-hover:hover,.ms-font-weight-light-before:before,.ms-fwt-l-h:hover,.ms-fwt-l-b:before{font-family:"wf_segoe-ui_light", "Segoe UI Light", "Segoe WP Light", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;}.ms-font-weight-semilight,.ms-fwt-sl,.ms-font-weight-semilight-hover:hover,.ms-font-weight-semilight-before:before,.ms-fwt-sl-h:hover,.ms-fwt-sl-b:before{font-family:"wf_segoe-ui_semilight", "Segoe UI Semilight", "Segoe WP Semilight", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif}.ms-font-weight-regular,.ms-fwt-r,.ms-font-weight-regular-hover:hover,.ms-font-weight-regular-before:before,.ms-fwt-r-h:hover,.ms-fwt-r-b:before{font-family:"wf_segoe-ui_normal", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif}.ms-font-weight-semibold,.ms-fwt-sb,.ms-font-weight-semibold-hover:hover,.ms-font-weight-semibold-before:before,.ms-fwt-sb-h:hover,.ms-fwt-sb-b:before{font-family:"wf_segoe-ui_semibold", "Segoe UI Semibold", "Segoe WP Semibold", "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif;font-weight:bold}--><!--.ms-bg-color-themeDark, .ms-bgc-td, .ms-bg-color-themeDark-hover:hover, .ms-bg-color-themeDark-focus:focus, .ms-bg-color-themeDark-before:before, .ms-bgc-td-h:hover, .ms-bgc-td-f:focus, .ms-bgc-td-b:before { background-color: #C2171C; }.ms-bg-color-themeDarkAlt, .ms-bgc-tda, .ms-bg-color-themeDarkAlt-hover:hover, .ms-bg-color-themeDarkAlt-focus:focus, .ms-bg-color-themeDarkAlt-before:before, .ms-bgc-tda-h:hover, .ms-bgc-tda-f:focus, .ms-bgc-tda-b:before { background-color: #C2171C; }.ms-bg-color-themeDarker, .ms-bgc-tdr, .ms-bg-color-themeDarker-hover:hover, .ms-bg-color-themeDarker-focus:focus, .ms-bg-color-themeDarker-before:before, .ms-bgc-tdr-h:hover, .ms-bgc-tdr-f:focus, .ms-bgc-tdr-b:before { background-color: #A01318; }.ms-bg-color-themePrimary, .ms-bgc-tp, .ms-bg-color-themePrimary-hover:hover, .ms-bg-color-themePrimary-focus:focus, .ms-bg-color-themePrimary-before:before, .ms-bgc-tp-h:hover, .ms-bgc-tp-f:focus, .ms-bgc-tp-b:before { background-color: #E31E25; }.ms-bg-color-themeSecondary, .ms-bgc-ts, .ms-bg-color-themeSecondary-hover:hover, .ms-bg-color-themeSecondary-focus:focus, .ms-bg-color-themeSecondary-before:before, .ms-bgc-ts-h:hover, .ms-bgc-ts-f:focus, .ms-bgc-ts-b:before { background-color: #E33942; }.ms-bg-color-themeTertiary, .ms-bgc-tt, .ms-bg-color-themeTertiary-hover:hover, .ms-bg-color-themeTertiary-focus:focus, .ms-bg-color-themeTertiary-before:before, .ms-bgc-tt-h:hover, .ms-bgc-tt-f:focus, .ms-bgc-tt-b:before { background-color: #EC7A81; }.ms-bg-color-themeLight, .ms-bgc-tl, .ms-bg-color-themeLight-hover:hover, .ms-bg-color-themeLight-focus:focus, .ms-bg-color-themeLight-before:before, .ms-bgc-tl-h:hover, .ms-bgc-tl-f:focus, .ms-bgc-tl-b:before { background-color: #F3A7AB; }.ms-bg-color-themeLighter, .ms-bgc-tlr, .ms-bg-color-themeLighter-hover:hover, .ms-bg-color-themeLighter-focus:focus, .ms-bg-color-themeLighter-before:before, .ms-bgc-tlr-h:hover, .ms-bgc-tlr-f:focus, .ms-bgc-tlr-b:before { background-color: #FBE0E1; }.ms-bg-color-themeLighterAlt, .ms-bgc-tlra, .ms-bg-color-themeLighterAlt-hover:hover, .ms-bg-color-themeLighterAlt-focus:focus, .ms-bg-color-themeLighterAlt-before:before, .ms-bgc-tlra-h:hover, .ms-bgc-tlra-f:focus, .ms-bgc-tlra-b:before { background-color: #FDEFF0; }.ms-border-color-themeDark, .ms-bcl-td, .ms-border-color-themeDark-hover:hover, .ms-border-color-themeDark-focus:focus, .ms-border-color-themeDark-before:before, .ms-bcl-td-h:hover, .ms-bcl-td-f:focus, .ms-bcl-td-b:before { border-color: #C2171C; }.ms-border-color-themeDarkAlt, .ms-bcl-tda, .ms-border-color-themeDarkAlt-hover:hover, .ms-border-color-themeDarkAlt-focus:focus, .ms-border-color-themeDarkAlt-before:before, .ms-bcl-tda-h:hover, .ms-bcl-tda-f:focus, .ms-bcl-tda-b:before { border-color: #C2171C; }.ms-border-color-themeDarker, .ms-bcl-tdr, .ms-border-color-themeDarker-hover:hover, .ms-border-color-themeDarker-focus:focus, .ms-border-color-themeDarker-before:before, .ms-bcl-tdr-h:hover, .ms-bcl-tdr-f:focus, .ms-bcl-tdr-b:before { border-color: #A01318; }.ms-border-color-themePrimary, .ms-bcl-tp, .ms-border-color-themePrimary-hover:hover, .ms-border-color-themePrimary-focus:focus, .ms-border-color-themePrimary-before:before, .ms-bcl-tp-h:hover, .ms-bcl-tp-f:focus, .ms-bcl-tp-b:before { border-color: #E31E25; }.ms-border-color-themeSecondary, .ms-bcl-ts, .ms-border-color-themeSecondary-hover:hover, .ms-border-color-themeSecondary-focus:focus, .ms-border-color-themeSecondary-before:before, .ms-bcl-ts-h:hover, .ms-bcl-ts-f:focus, .ms-bcl-ts-b:before { border-color: #E33942; }.ms-border-color-themeTertiary, .ms-bcl-tt, .ms-border-color-themeTertiary-hover:hover, .ms-border-color-themeTertiary-focus:focus, .ms-border-color-themeTertiary-before:before, .ms-bcl-tt-h:hover, .ms-bcl-tt-f:focus, .ms-bcl-tt-b:before { border-color: #EC7A81; }.ms-border-color-themeLight, .ms-bcl-tl, .ms-border-color-themeLight-hover:hover, .ms-border-color-themeLight-focus:focus, .ms-border-color-themeLight-before:before, .ms-bcl-tl-h:hover, .ms-bcl-tl-f:focus, .ms-bcl-tl-b:before { border-color: #F3A7AB; }.ms-border-color-themeLighter, .ms-bcl-tlr, .ms-border-color-themeLighter-hover:hover, .ms-border-color-themeLighter-focus:focus, .ms-border-color-themeLighter-before:before, .ms-bcl-tlr-h:hover, .ms-bcl-tlr-f:focus, .ms-bcl-tlr-b:before { border-color: #FBE0E1; }.ms-border-color-themeLighterAlt, .ms-bcl-tlra, .ms-border-color-themeLighterAlt-hover:hover, .ms-border-color-themeLighterAlt-focus:focus, .ms-border-color-themeLighterAlt-before:before, .ms-bcl-tlra-h:hover, .ms-bcl-tlra-f:focus, .ms-bcl-tlra-b:before { border-color: #FDEFF0; }.ms-border-color-top-themePrimary, .ms-bcl-t-tp, .ms-border-color-top-themePrimary-hover:hover, .ms-border-color-top-themePrimary-focus:focus, .ms-border-color-top-themePrimary-before:before, .ms-bcl-t-tp-h:hover, .ms-bcl-t-tp-f:focus, .ms-bcl-t-tp-b:before { border-top-color: #E31E25; }.ms-font-color-themeDark, .ms-fontColor-themeDark, .ms-fontColor-themeDark, .ms-fcl-td, .ms-font-color-themeDark-hover:hover, .ms-font-color-themeDark-focus:focus, .ms-font-color-themeDark-before:before, .ms-fcl-td-h:hover, .ms-fcl-td-f:focus, .ms-fcl-td-b:before { color: #C2171C; }.ms-font-color-themeDarkAlt, .ms-fontColor-themeDarkAlt, .ms-fontColor-themeDarkAlt, .ms-fcl-tda, .ms-font-color-themeDarkAlt-hover:hover, .ms-font-color-themeDarkAlt-focus:focus, .ms-font-color-themeDarkAlt-before:before, .ms-fcl-tda-h:hover, .ms-fcl-tda-f:focus, .ms-fcl-tda-b:before { color: #C2171C; }.ms-font-color-themeDarker, .ms-fontColor-themeDarker, .ms-fontColor-themeDarker, .ms-fcl-tdr, .ms-font-color-themeDarker-hover:hover, .ms-font-color-themeDarker-focus:focus, .ms-font-color-themeDarker-before:before, .ms-fcl-tdr-h:hover, .ms-fcl-tdr-f:focus, .ms-fcl-tdr-b:before { color: #A01318; }.ms-font-color-themePrimary, .ms-fontColor-themePrimary, .ms-fontColor-themePrimary, .ms-fcl-tp, .ms-font-color-themePrimary-hover:hover, .ms-font-color-themePrimary-focus:focus, .ms-font-color-themePrimary-before:before, .ms-fcl-tp-h:hover, .ms-fcl-tp-f:focus, .ms-fcl-tp-b:before { color: #E31E25; }.ms-font-color-themeSecondary, .ms-fontColor-themeSecondary, .ms-fontColor-themeSecondary, .ms-fcl-ts, .ms-font-color-themeSecondary-hover:hover, .ms-font-color-themeSecondary-focus:focus, .ms-font-color-themeSecondary-before:before, .ms-fcl-ts-h:hover, .ms-fcl-ts-f:focus, .ms-fcl-ts-b:before { color: #E33942; }.ms-font-color-themeTertiary, .ms-fontColor-themeTertiary, .ms-fontColor-themeTertiary, .ms-fcl-tt, .ms-font-color-themeTertiary-hover:hover, .ms-font-color-themeTertiary-focus:focus, .ms-font-color-themeTertiary-before:before, .ms-fcl-tt-h:hover, .ms-fcl-tt-f:focus, .ms-fcl-tt-b:before { color: #EC7A81; }.ms-font-color-themeLight, .ms-fontColor-themeLight, .ms-fontColor-themeLight, .ms-fcl-tl, .ms-font-color-themeLight-hover:hover, .ms-font-color-themeLight-focus:focus, .ms-font-color-themeLight-before:before, .ms-fcl-tl-h:hover, .ms-fcl-tl-f:focus, .ms-fcl-tl-b:before { color: #F3A7AB; }.ms-font-color-themeLighter, .ms-fontColor-themeLighter, .ms-fontColor-themeLighter, .ms-fcl-tlr, .ms-font-color-themeLighter-hover:hover, .ms-font-color-themeLighter-focus:focus, .ms-font-color-themeLighter-before:before, .ms-fcl-tlr-h:hover, .ms-fcl-tlr-f:focus, .ms-fcl-tlr-b:before { color: #FBE0E1; }.ms-font-color-themeLighterAlt, .ms-fontColor-themeLighterAlt, .ms-fontColor-themeLighterAlt, .ms-fcl-tlra, .ms-font-color-themeLighterAlt-hover:hover, .ms-font-color-themeLighterAlt-focus:focus, .ms-font-color-themeLighterAlt-before:before, .ms-fcl-tlra-h:hover, .ms-fcl-tlra-f:focus, .ms-fcl-tlra-b:before { color: #FDEFF0; }.o365cs-base.o365cst .o365cs-topnavLinkBackground-2{background-color:transparent;background-color:rgba(228,30,38,.8);}.o365cs-base.o365cst .o365cs-topnavText,.o365cs-base.o365cst .o365cs-topnavText:hover{color:#ffffff;}.o365cs-base.o365cst .o365cs-navMenuButton{color:#ffffff;}.o365cs-base.o365cst.o365cs-topnavBGColor-2{background-color:transparent;}.o365cs-base.o365cst .o365cs-appLauncherBackground{background-color:#A01318}--><!--.ms-bg-color-black,.ms-bgc-b,.ms-bg-color-black-hover:hover,.ms-bg-color-black-focus:focus,.ms-bg-color-black-before:before,.ms-bgc-b-h:hover,.ms-bgc-b-f:focus,.ms-bgc-b-b:before{background-color:#000}.ms-bg-color-neutralDark,.ms-bgc-nd,.ms-bg-color-neutralDark-hover:hover,.ms-bg-color-neutralDark-focus:focus,.ms-bg-color-neutralDark-before:before,.ms-bgc-nd-h:hover,.ms-bgc-nd-f:focus,.ms-bgc-nd-b:before{background-color:#212121}.ms-bg-color-neutralPrimary,.ms-bgc-np,.ms-bg-color-neutralPrimary-hover:hover,.ms-bg-color-neutralPrimary-focus:focus,.ms-bg-color-neutralPrimary-before:before,.ms-bgc-np-h:hover,.ms-bgc-np-f:focus,.ms-bgc-np-b:before{background-color:#333}.ms-bg-color-neutralSecondary,.ms-bgc-ns,.ms-bg-color-neutralSecondary-hover:hover,.ms-bg-color-neutralSecondary-focus:focus,.ms-bg-color-neutralSecondary-before:before,.ms-bgc-ns-h:hover,.ms-bgc-ns-f:focus,.ms-bgc-ns-b:before{background-color:#666}.ms-bg-color-neutralSecondaryAlt,.ms-bgc-nsa,.ms-bg-color-neutralSecondaryAlt-hover:hover,.ms-bg-color-neutralSecondaryAlt-focus:focus,.ms-bg-color-neutralSecondaryAlt-before:before,.ms-bgc-nsa-h:hover,.ms-bgc-nsa-f:focus,.ms-bgc-nsa-b:before{background-color:#767676}.ms-bg-color-neutralTertiary,.ms-bgc-nt,.ms-bg-color-neutralTertiary-hover:hover,.ms-bg-color-neutralTertiary-focus:focus,.ms-bg-color-neutralTertiary-before:before,.ms-bgc-nt-h:hover,.ms-bgc-nt-f:focus,.ms-bgc-nt-b:before{background-color:#a6a6a6}.ms-bg-color-neutralTertiaryAlt,.ms-bgc-nta,.ms-bg-color-neutralTertiaryAlt-hover:hover,.ms-bg-color-neutralTertiaryAlt-focus:focus,.ms-bg-color-neutralTertiaryAlt-before:before,.ms-bgc-nta-h:hover,.ms-bgc-nta-f:focus,.ms-bgc-nta-b:before{background-color:#c8c8c8}.ms-bg-color-neutralLight,.ms-bgc-nl,.ms-bg-color-neutralLight-hover:hover,.ms-bg-color-neutralLight-focus:focus,.ms-bg-color-neutralLight-before:before,.ms-bgc-nl-h:hover,.ms-bgc-nl-f:focus,.ms-bgc-nl-b:before{background-color:#eaeaea}.ms-bg-color-neutralLighter,.ms-bgc-nlr,.ms-bg-color-neutralLighter-hover:hover,.ms-bg-color-neutralLighter-focus:focus,.ms-bg-color-neutralLighter-before:before,.ms-bgc-nlr-h:hover,.ms-bgc-nlr-f:focus,.ms-bgc-nlr-b:before{background-color:#f4f4f4}.ms-bg-color-neutralLighterAlt,.ms-bgc-nlra,.ms-bg-color-neutralLighterAlt-hover:hover,.ms-bg-color-neutralLighterAlt-focus:focus,.ms-bg-color-neutralLighterAlt-before:before,.ms-bgc-nlra-h:hover,.ms-bgc-nlra-f:focus,.ms-bgc-nlra-b:before{background-color:#f8f8f8}.ms-bg-color-white,.ms-bgc-w,.ms-bg-color-white-hover:hover,.ms-bg-color-white-focus:focus,.ms-bg-color-white-before:before,.ms-bgc-w-h:hover,.ms-bgc-w-b:before{background-color:#fff}.ms-border-color-black,.ms-bcl-b,.ms-border-color-black-hover:hover,.ms-border-color-black-focus:focus,.ms-border-color-black-before:before,.ms-bcl-b-h:hover,.ms-bcl-b-f:focus,.ms-bcl-b-b:before{border-color:#000}.ms-border-color-neutralDark,.ms-bcl-nd,.ms-border-color-neutralDark-hover:hover,.ms-border-color-neutralDark-focus:focus,.ms-border-color-neutralDark-before:before,.ms-bcl-nd-h:hover,.ms-bcl-nd-f:focus,.ms-bcl-nd-b:before{border-color:#212121}.ms-border-color-neutralPrimary,.ms-bcl-np,.ms-border-color-neutralPrimary-hover:hover,.ms-border-color-neutralPrimary-focus:focus,.ms-border-color-neutralPrimary-before:before,.ms-bcl-np-h:hover,.ms-bcl-np-f:focus,.ms-bcl-np-b:before{border-color:#333}.ms-border-color-neutralSecondary,.ms-bcl-ns,.ms-border-color-neutralSecondary-hover:hover,.ms-border-color-neutralSecondary-focus:focus,.ms-border-color-neutralSecondary-before:before,.ms-bcl-ns-h:hover,.ms-bcl-ns-f:focus,.ms-bcl-ns-b:before{border-color:#666}.ms-border-color-neutralSecondaryAlt,.ms-bcl-nsa,.ms-border-color-neutralSecondaryAlt-hover:hover,.ms-border-color-neutralSecondaryAlt-focus:focus,.ms-border-color-neutralSecondaryAlt-before:before,.ms-bcl-nsa-h:hover,.ms-bcl-nsa-f:focus,.ms-bcl-nsa-b:before{border-color:#767676}.ms-border-color-neutralTertiary,.ms-bcl-nt,.ms-border-color-neutralTertiary-hover:hover,.ms-border-color-neutralTertiary-focus:focus,.ms-border-color-neutralTertiary-before:before,.ms-bcl-nt-h:hover,.ms-bcl-nt-f:focus,.ms-bcl-nt-b:before{border-color:#a6a6a6}.ms-border-color-neutralTertiaryAlt,.ms-bcl-nta,.ms-border-color-neutralTertiaryAlt-hover:hover,.ms-border-color-neutralTertiaryAlt-focus:focus,.ms-border-color-neutralTertiaryAlt-before:before,.ms-bcl-nta-h:hover,.ms-bcl-nta-f:focus,.ms-bcl-nta-b:before{border-color:#c8c8c8}.ms-border-color-neutralLight,.ms-bcl-nl,.ms-border-color-neutralLight-hover:hover,.ms-border-color-neutralLight-focus:focus,.ms-border-color-neutralLight-before:before,.ms-bcl-nl-h:hover,.ms-bcl-nl-f:focus,.ms-bcl-nl-b:before{border-color:#eaeaea}.ms-border-color-neutralLighter,.ms-bcl-nlr,.ms-border-color-neutralLighter-hover:hover,.ms-border-color-neutralLighter-focus:focus,.ms-border-color-neutralLighter-before:before,.ms-bcl-nlr-h:hover,.ms-bcl-nlr-f:focus,.ms-bcl-nlr-b:before{border-color:#f4f4f4}.ms-border-color-neutralLighterAlt,.ms-bcl-nlra,.ms-border-color-neutralLighterAlt-hover:hover,.ms-border-color-neutralLighterAlt-focus:focus,.ms-border-color-neutralLighterAlt-before:before,.ms-bcl-nlra-h:hover,.ms-bcl-nlra-f:focus,.ms-bcl-nlra-b:before{border-color:#f8f8f8}.ms-border-color-white,.ms-bcl-w,.ms-border-color-white-hover:hover,.ms-border-color-white-focus:focus,.ms-border-color-white-before:before,.ms-bcl-w-h:hover,.ms-bcl-w-f:focus,.ms-bcl-w-b:before{border-color:#fff}.ms-font-color-black,.ms-fontColor-black,.ms-fcl-b,.ms-font-color-black-hover:hover,.ms-font-color-black-focus:focus,.ms-font-color-black-before:before,.ms-fcl-b-h:hover,.ms-fcl-b-f:focus,.ms-fcl-b-b:before{color:#000}.ms-font-color-neutralDark,.ms-fontColor-neutralDark,.ms-fcl-nd,.ms-font-color-neutralDark-hover:hover,.ms-font-color-neutralDark-focus:focus,.ms-font-color-neutralDark-before:before,.ms-fcl-nd-h:hover,.ms-fcl-nd-f:focus,.ms-fcl-nd-b:before{color:#212121}.ms-font-color-neutralPrimary,.ms-fontColor-neutralPrimary,.ms-fcl-np,.ms-font-color-neutralPrimary-hover:hover,.ms-font-color-neutralPrimary-focus:focus,.ms-font-color-neutralPrimary-before:before,.ms-fcl-np-h:hover,.ms-fcl-np-f:focus,.ms-fcl-np-b:before{color:#333}.ms-font-color-neutralSecondary,.ms-fontColor-neutralSecondary,.ms-fcl-ns,.ms-font-color-neutralSecondary-hover:hover,.ms-font-color-neutralSecondary-focus:focus,.ms-font-color-neutralSecondary-before:before,.ms-fcl-ns-h:hover,.ms-fcl-ns-f:focus,.ms-fcl-ns-b:before{color:#666}.ms-font-color-neutralSecondaryAlt,.ms-fontColor-neutralSecondaryAlt,.ms-fcl-nsa,.ms-font-color-neutralSecondaryAlt-hover:hover,.ms-font-color-neutralSecondaryAlt-focus:focus,.ms-font-color-neutralSecondaryAlt-before:before,.ms-fcl-nsa-h:hover,.ms-fcl-nsa-f:focus,.ms-fcl-nsa-b:before{color:#767676}.ms-font-color-neutralTertiary,.ms-fontColor-neutralTertiary,.ms-fcl-nt,.ms-font-color-neutralTertiary-hover:hover,.ms-font-color-neutralTertiary-focus:focus,.ms-font-color-neutralTertiary-before:before,.ms-fcl-nt-h:hover,.ms-fcl-nt-f:focus,.ms-fcl-nt-b:before{color:#a6a6a6}.ms-font-color-neutralTertiaryAlt,.ms-fontColor-neutralTertiaryAlt,.ms-fcl-nta,.ms-font-color-neutralTertiaryAlt-hover:hover,.ms-font-color-neutralTertiaryAlt-focus:focus,.ms-font-color-neutralTertiaryAlt-before:before,.ms-fcl-nta-h:hover,.ms-fcl-nta-f:focus,.ms-fcl-nta-b:before{color:#c8c8c8}.ms-font-color-neutralLight,.ms-fontColor-neutralLight,.ms-fcl-nl,.ms-font-color-neutralLight-hover:hover,.ms-font-color-neutralLight-focus:focus,.ms-font-color-neutralLight-before:before,.ms-fcl-nl-h:hover,.ms-fcl-nl-f:focus,.ms-fcl-nl-b:before{color:#eaeaea}.ms-font-color-neutralLighter,.ms-fontColor-neutralLighter,.ms-fcl-nlr,.ms-font-color-neutralLighter-hover:hover,.ms-font-color-neutralLighter-focus:focus,.ms-font-color-neutralLighter-before:before,.ms-fcl-nlr-h:hover,.ms-fcl-nlr-f:focus,.ms-fcl-nlr-b:before{color:#f4f4f4}.ms-font-color-neutralLighterAlt,.ms-fontColor-neutralLighterAlt,.ms-fcl-nlra,.ms-font-color-neutralLighterAlt-hover:hover,.ms-font-color-neutralLighterAlt-focus:focus,.ms-font-color-neutralLighterAlt-before:before,.ms-fcl-nlra-h:hover,.ms-fcl-nlra-f:focus,.ms-fcl-nlra-b:before{color:#f8f8f8}.ms-font-color-white,.ms-fontColor-white,.ms-fcl-w,.ms-font-color-white-hover:hover,.ms-font-color-white-focus:focus,.ms-font-color-white-before:before,.ms-fcl-w-h:hover,.ms-fcl-w-f:focus,.ms-fcl-w-b:before{color:#fff}--><!--.ms-bg-color-yellow,.ms-bgc-y,.ms-bg-color-yellow-hover:hover,.ms-bg-color-yellow-before:before,.ms-bgc-y-h:hover,.ms-bgc-y-b:before{background-color:#ffb900}.ms-bg-color-yellowLight,.ms-bgc-yl,.ms-bg-color-yellowLight-hover:hover,.ms-bg-color-yellowLight-before:before,.ms-bgc-yl-h:hover,.ms-bgc-yl-b:before{background-color:#fff100}.ms-bg-color-orange,.ms-bgc-o,.ms-bg-color-orange-hover:hover,.ms-bg-color-orange-before:before,.ms-bgc-o-h:hover,.ms-bgc-o-b:before{background-color:#d83b01}.ms-bg-color-orangeLight,.ms-bgc-ol,.ms-bg-color-orangeLight-hover:hover,.ms-bg-color-orangeLight-before:before,.ms-bgc-ol-h:hover,.ms-bgc-ol-b:before{background-color:#ff8c00}.ms-bg-color-redDark,.ms-bgc-rd,.ms-bg-color-redDark-hover:hover,.ms-bg-color-redDark-before:before,.ms-bgc-rd-h:hover,.ms-bgc-rd-b:before{background-color:#a80000}.ms-bg-color-red,.ms-bgc-r,.ms-bg-color-red-hover:hover,.ms-bg-color-red-before:before,.ms-bgc-r-h:hover,.ms-bgc-r-b:before{background-color:#e81123}.ms-bg-color-magentaDark,.ms-bgc-md,.ms-bg-color-magentaDark-hover:hover,.ms-bg-color-magentaDark-before:before,.ms-bgc-md-h:hover,.ms-bgc-md-b:before{background-color:#5c005c}.ms-bg-color-magenta,.ms-bgc-m,.ms-bg-color-magenta-hover:hover,.ms-bg-color-magenta-before:before,.ms-bgc-m-h:hover,.ms-bgc-m-b:before{background-color:#b4009e}.ms-bg-color-magentaLight,.ms-bgc-ml,.ms-bg-color-magentaLight-hover:hover,.ms-bg-color-magentaLight-before:before,.ms-bgc-ml-h:hover,.ms-bgc-ml-b:before{background-color:#e3008c}.ms-bg-color-purpleDark,.ms-bgc-pd,.ms-bg-color-purpleDark-hover:hover,.ms-bg-color-purpleDark-before:before,.ms-bgc-pd-h:hover,.ms-bgc-pd-b:before{background-color:#32145a}.ms-bg-color-purple,.ms-bgc-p,.ms-bg-color-purple-hover:hover,.ms-bg-color-purple-before:before,.ms-bgc-p-h:hover,.ms-bgc-p-b:before{background-color:#5c2d91}.ms-bg-color-purpleLight,.ms-bgc-pl,.ms-bg-color-purpleLight-hover:hover,.ms-bg-color-purpleLight-before:before,.ms-bgc-pl-h:hover,.ms-bgc-pl-b:before{background-color:#b4a0ff}.ms-bg-color-blueDark,.ms-bgc-bd,.ms-bg-color-blueDark-hover:hover,.ms-bg-color-blueDark-before:before,.ms-bgc-bd-h:hover,.ms-bgc-bd-b:before{background-color:#002050}.ms-bg-color-blueMid,.ms-bgc-bm,.ms-bg-color-blueMid-hover:hover,.ms-bg-color-blueMid-before:before,.ms-bgc-bm-h:hover,.ms-bgc-bm-b:before{background-color:#00188f}.ms-bg-color-blue,.ms-bgc-blu,.ms-bg-color-blue-hover:hover,.ms-bg-color-blue-before:before,.ms-bgc-blu-h:hover,.ms-bgc-blu-b:before{background-color:#0078d7}.ms-bg-color-blueLight,.ms-bgc-bl,.ms-bg-color-blueLight-hover:hover,.ms-bg-color-blueLight-before:before,.ms-bgc-bl-h:hover,.ms-bgc-bl-b:before{background-color:#00bcf2}.ms-bg-color-tealDark,.ms-bgc-ted,.ms-bg-color-tealDark-hover:hover,.ms-bg-color-tealDark-before:before,.ms-bgc-ted-h:hover,.ms-bgc-ted-b:before{background-color:#004b50}.ms-bg-color-teal,.ms-bgc-t,.ms-bg-color-teal-hover:hover,.ms-bg-color-teal-before:before,.ms-bgc-t-h:hover,.ms-bgc-t-b:before{background-color:#008272}.ms-bg-color-tealLight,.ms-bgc-tel,.ms-bg-color-tealLight-hover:hover,.ms-bg-color-tealLight-before:before,.ms-bgc-tel-h:hover,.ms-bgc-tel-b:before{background-color:#00b294}.ms-bg-color-greenDark,.ms-bgc-gd,.ms-bg-color-greenDark-hover:hover,.ms-bg-color-greenDark-before:before,.ms-bgc-gd-h:hover,.ms-bgc-gd-b:before{background-color:#004b1c}.ms-bg-color-green,.ms-bgc-g,.ms-bg-color-green-hover:hover,.ms-bg-color-green-before:before,.ms-bgc-g-h:hover,.ms-bgc-g-b:before{background-color:#107c10}.ms-bg-color-greenLight,.ms-bgc-gl,.ms-bg-color-greenLight-hover:hover,.ms-bg-color-greenLight-before:before,.ms-bgc-gl-h:hover,.ms-bgc-gl-b:before{background-color:#bad80a}.ms-border-color-yellow,.ms-bcl-y,.ms-border-color-yellow-hover:hover,.ms-border-color-yellow-before:before,.ms-bcl-y-h:hover,.ms-bcl-y-b:before{border-color:#ffb900}.ms-border-color-yellowLight,.ms-bcl-yl,.ms-border-color-yellowLight-hover:hover,.ms-border-color-yellowLight-before:before,.ms-bcl-yl-h:hover,.ms-bcl-yl-b:before{border-color:#fff100}.ms-border-color-orange,.ms-bcl-o,.ms-border-color-orange-hover:hover,.ms-border-color-orange-before:before,.ms-bcl-o-h:hover,.ms-bcl-o-b:before{border-color:#d83b01}.ms-border-color-orangeLight,.ms-bcl-ol,.ms-border-color-orangeLight-hover:hover,.ms-border-color-orangeLight-before:before,.ms-bcl-ol-h:hover,.ms-bcl-ol-b:before{border-color:#ff8c00}.ms-border-color-redDark,.ms-bcl-rd,.ms-border-color-redDark-hover:hover,.ms-border-color-redDark-before:before,.ms-bcl-rd-h:hover,.ms-bcl-rd-b:before{border-color:#a80000}.ms-border-color-red,.ms-bcl-r,.ms-border-color-red-hover:hover,.ms-border-color-red-before:before,.ms-bcl-r-h:hover,.ms-bcl-r-b:before{border-color:#e81123}.ms-border-color-magentaDark,.ms-bcl-md,.ms-border-color-magentaDark-hover:hover,.ms-border-color-magentaDark-before:before,.ms-bcl-md-h:hover,.ms-bcl-md-b:before{border-color:#5c005c}.ms-border-color-magenta,.ms-bcl-m,.ms-border-color-magenta-hover:hover,.ms-border-color-magenta-before:before,.ms-bcl-m-h:hover,.ms-bcl-m-b:before{border-color:#b4009e}.ms-border-color-magentaLight,.ms-bcl-ml,.ms-border-color-magentaLight-hover:hover,.ms-border-color-magentaLight-before:before,.ms-bcl-ml-h:hover,.ms-bcl-ml-b:before{border-color:#e3008c}.ms-border-color-purpleDark,.ms-bcl-pd,.ms-border-color-purpleDark-hover:hover,.ms-border-color-purpleDark-before:before,.ms-bcl-pd-h:hover,.ms-bcl-pd-b:before{border-color:#32145a}.ms-border-color-purple,.ms-bcl-p,.ms-border-color-purple-hover:hover,.ms-border-color-purple-before:before,.ms-bcl-p-h:hover,.ms-bcl-p-b:before{border-color:#5c2d91}.ms-border-color-purpleLight,.ms-bcl-pl,.ms-border-color-purpleLight-hover:hover,.ms-border-color-purpleLight-before:before,.ms-bcl-pl-h:hover,.ms-bcl-pl-b:before{border-color:#b4a0ff}.ms-border-color-blueDark,.ms-bcl-bd,.ms-border-color-blueDark-hover:hover,.ms-border-color-blueDark-before:before,.ms-bcl-bd-h:hover,.ms-bcl-bd-b:before{border-color:#002050}.ms-border-color-blueMid,.ms-bcl-bm,.ms-border-color-blueMid-hover:hover,.ms-border-color-blueMid-before:before,.ms-bcl-bm-h:hover,.ms-bcl-bm-b:before{border-color:#00188f}.ms-border-color-blue,.ms-bcl-blu,.ms-border-color-blue-hover:hover,.ms-border-color-blue-before:before,.ms-bcl-blu-h:hover,.ms-bcl-blu-b:before{border-color:#0078d7}.ms-border-color-blueLight,.ms-bcl-bl,.ms-border-color-blueLight-hover:hover,.ms-border-color-blueLight-before:before,.ms-bcl-bl-h:hover,.ms-bcl-bl-b:before{border-color:#00bcf2}.ms-border-color-tealDark,.ms-bcl-ted,.ms-border-color-tealDark-hover:hover,.ms-border-color-tealDark-before:before,.ms-bcl-ted-h:hover,.ms-bcl-ted-b:before{border-color:#004b50}.ms-border-color-teal,.ms-bcl-t,.ms-border-color-teal-hover:hover,.ms-border-color-teal-before:before,.ms-bcl-t-h:hover,.ms-bcl-t-b:before{border-color:#008272}.ms-border-color-tealLight,.ms-bcl-tel,.ms-border-color-tealLight-hover:hover,.ms-border-color-tealLight-before:before,.ms-bcl-tel-h:hover,.ms-bcl-tel-b:before{border-color:#00b294}.ms-border-color-greenDark,.ms-bcl-gd,.ms-border-color-greenDark-hover:hover,.ms-border-color-greenDark-before:before,.ms-bcl-gd-h:hover,.ms-bcl-gd-b:before{border-color:#004b1c}.ms-border-color-green,.ms-bcl-g,.ms-border-color-green-hover:hover,.ms-border-color-green-before:before,.ms-bcl-g-h:hover,.ms-bcl-g-b:before{border-color:#107c10}.ms-border-color-greenLight,.ms-bcl-gl,.ms-border-color-greenLight-hover:hover,.ms-border-color-greenLight-before:before,.ms-bcl-gl-h:hover,.ms-bcl-gl-b:before{border-color:#bad80a}.ms-font-color-yellow,.ms-fcl-y,.ms-font-color-yellow-hover:hover,.ms-font-color-yellow-before:before,.ms-fcl-y-h:hover,.ms-fcl-y-b:before{color:#ffb900}.ms-font-color-yellowLight,.ms-fcl-yl,.ms-font-color-yellowLight-hover:hover,.ms-font-color-yellowLight-before:before,.ms-fcl-yl-h:hover,.ms-fcl-yl-b:before{color:#fff100}.ms-font-color-orange,.ms-fcl-o,.ms-font-color-orange-hover:hover,.ms-font-color-orange-before:before,.ms-fcl-o-h:hover,.ms-fcl-o-b:before{color:#d83b01}.ms-font-color-orangeLight,.ms-fcl-ol,.ms-font-color-orangeLight-hover:hover,.ms-font-color-orangeLight-before:before,.ms-fcl-ol-h:hover,.ms-fcl-ol-b:before{color:#ff8c00}.ms-font-color-redDark,.ms-fcl-rd,.ms-font-color-redDark-hover:hover,.ms-font-color-redDark-before:before,.ms-fcl-rd-h:hover,.ms-fcl-rd-b:before{color:#a80000}.ms-font-color-red,.ms-fcl-r,.ms-font-color-red-hover:hover,.ms-font-color-red-before:before,.ms-fcl-r-h:hover,.ms-fcl-r-b:before{color:#e81123}.ms-font-color-magentaDark,.ms-fcl-md,.ms-font-color-magentaDark-hover:hover,.ms-font-color-magentaDark-before:before,.ms-fcl-md-h:hover,.ms-fcl-md-b:before{color:#5c005c}.ms-font-color-magenta,.ms-fcl-m,.ms-font-color-magenta-hover:hover,.ms-font-color-magenta-before:before,.ms-fcl-m-h:hover,.ms-fcl-m-b:before{color:#b4009e}.ms-font-color-magentaLight,.ms-fcl-ml,.ms-font-color-magentaLight-hover:hover,.ms-font-color-magentaLight-before:before,.ms-fcl-ml-h:hover,.ms-fcl-ml-b:before{color:#e3008c}.ms-font-color-purpleDark,.ms-fcl-pd,.ms-font-color-purpleDark-hover:hover,.ms-font-color-purpleDark-before:before,.ms-fcl-pd-h:hover,.ms-fcl-pd-b:before{color:#32145a}.ms-font-color-purple,.ms-fcl-p,.ms-font-color-purple-hover:hover,.ms-font-color-purple-before:before,.ms-fcl-p-h:hover,.ms-fcl-p-b:before{color:#5c2d91}.ms-font-color-purpleLight,.ms-fcl-pl,.ms-font-color-purpleLight-hover:hover,.ms-font-color-purpleLight-before:before,.ms-fcl-pl-h:hover,.ms-fcl-pl-b:before{color:#b4a0ff}.ms-font-color-blueDark,.ms-fcl-bd,.ms-font-color-blueDark-hover:hover,.ms-font-color-blueDark-before:before,.ms-fcl-bd-h:hover,.ms-fcl-bd-b:before{color:#002050}.ms-font-color-blueMid,.ms-fcl-bm,.ms-font-color-blueMid-hover:hover,.ms-font-color-blueMid-before:before,.ms-fcl-bm-h:hover,.ms-fcl-bm-b:before{color:#00188f}.ms-font-color-blue,.ms-fcl-blu,.ms-font-color-blue-hover:hover,.ms-font-color-blue-before:before,.ms-fcl-blu-h:hover,.ms-fcl-blu-b:before{color:#0078d7}.ms-font-color-blueLight,.ms-fcl-bl,.ms-font-color-blueLight-hover:hover,.ms-font-color-blueLight-before:before,.ms-fcl-bl-h:hover,.ms-fcl-bl-b:before{color:#00bcf2}.ms-font-color-tealDark,.ms-fcl-ted,.ms-font-color-tealDark-hover:hover,.ms-font-color-tealDark-before:before,.ms-fcl-ted-h:hover,.ms-fcl-ted-b:before{color:#004b50}.ms-font-color-teal,.ms-fcl-t,.ms-font-color-teal-hover:hover,.ms-font-color-teal-before:before,.ms-fcl-t-h:hover,.ms-fcl-t-b:before{color:#008272}.ms-font-color-tealLight,.ms-fcl-tel,.ms-font-color-tealLight-hover:hover,.ms-font-color-tealLight-before:before,.ms-fcl-tel-h:hover,.ms-fcl-tel-b:before{color:#00b294}.ms-font-color-greenDark,.ms-fcl-gd,.ms-font-color-greenDark-hover:hover,.ms-font-color-greenDark-before:before,.ms-fcl-gd-h:hover,.ms-fcl-gd-b:before{color:#004b1c}.ms-font-color-green,.ms-fcl-g,.ms-font-color-green-hover:hover,.ms-font-color-green-before:before,.ms-fcl-g-h:hover,.ms-fcl-g-b:before{color:#107c10}.ms-font-color-greenLight,.ms-fcl-gl,.ms-font-color-greenLight-hover:hover,.ms-font-color-greenLight-before:before,.ms-fcl-gl-h:hover,.ms-fcl-gl-b:before{color:#bad80a}--><!--.owa-font-compose{font-family:Calibri,Arial,Helvetica,sans-serif}.owa-bg-color-neutral-orange{background-color:#D82300}.owa-bg-color-neutral-red{background-color:#A80F22}.owa-bg-color-neutral-yellow{background-color:#FFEE94}.owa-bg-color-neutral-green{background-color:#5DD255}.owa-bg-color-cal-green{background-color:#68A490}.owa-bg-color-cal-purple{background-color:#976CBE}.owa-border-color-neutral-orange{border-color:#D82300}.owa-border-color-neutral-red{border-color:#A80F22}.owa-border-color-neutral-yellow{border-color:#FFEE94}.owa-border-color-neutral-green{border-color:#5DD255}.owa-border-color-cal-green{border-color:#68A490}.owa-border-color-cal-purple{border-color:#976CBE}.owa-color-neutral-darkBlue{color:#00008B}.owa-color-neutral-orange{color:#D82300}.owa-color-neutral-red{color:#A80F22}.owa-color-neutral-yellow{color:#FFEE94}.owa-color-neutral-green{color:#5DD255}.owa-color-neutral-green-alt,.owa-color-neutral-green-alt:before{color:#107c10}.owa-color-cal-green{color:#68A490}.owa-color-cal-green-hover{color:#377353}.owa-color-cal-purple{color:#976CBE}.owa-color-cal-purple-hover{color:#67397B}.owa-color-cal-blue{color:#71C2EB}.owa-color-cal-brown{color:#AB9B81}.owa-color-cal-green-alt{color:#A9C47A}.owa-color-cal-grey{color:#999B9C}.owa-color-cal-orange{color:#E6975C}.owa-color-cal-pink{color:#CA6AAB}.owa-color-cal-red{color:#D57272}.owa-color-cal-teal{color:#7BCBC4}.owa-color-cal-yellow{color:#E3B75D}.owa-color-folder-brown{color:#EAC282}.ms-font-color-red{color:#E81123}.ms-font-color-redDark{color:#A80000}-->

    <!--.o365cs-topnavBGImage{background:url('prem/16.1809.14.2333995/resources/themes/paint/images/0/headerbgmaing2.png'),url('prem/16.1809.14.2333995/resources/themes/paint/images/0/headerbgmaing2.gif');width:1px;height:1px}-->

    <!--body { width: 100%; height: 100%; margin: 0; padding: 0; } #owaLoading { background-color: #FFF; width: 100%; height: 100%; position: absolute; z-index: 10001; } #loadingLogo, #loadingSpinner, #statusText { display: block; margin-left: auto; margin-right: auto; text-align: center; } #loadingLogo { padding-top: 174px; padding-bottom: 22px; } .tnarrow #loadingLogo { padding-top: 52px; } #statusText { color: #0072c6; font-family: 'wf_segoe-ui_normal', 'Segoe UI', 'Segoe WP', Tahoma, Arial, sans-serif; font-size: 12px; margin-top: 20px; } #statusText > span { display: none; margin-left: auto; margin-right: auto; line-height: 11px; } #statusText.script > .script { display: inline; } #statusText.scriptDelay > .scriptDelay { display: inline; } #statusText.data > .data { display: inline; } #statusText.dataDelay > .dataDelay { display: inline; } #statusText.render > .render { display: inline; }-->

    +

    <!--.msFabricScrollDisabled_d34f8364{overflow:hidden!important}--><!--.root_5a2b2aae{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-shadow:0 0 5px 0 rgba(0,0,0,.4);position:absolute;border:1px solid #eaeaea;box-sizing:border-box}@media screen and (-ms-high-contrast:active){.root_5a2b2aae{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_5a2b2aae{border:1px solid #000000}}.container_5a2b2aae{position:relative}.main_5a2b2aae{background-color:#ffffff;overflow-x:hidden;overflow-y:auto;position:relative}.beak_5a2b2aae{position:absolute;background-color:#ffffff;box-shadow:inherit;border:inherit;box-sizing:border-box;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.beakCurtain_5a2b2aae{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#ffffff}--><!--.rootIsFixed_c0ebb2d8{position:fixed;z-index:1000000;top:0;left:0;width:100vw;height:100vh;visibility:hidden}.content_c0ebb2d8{visibility:visible}--><!--.imageContainer_440a7ad1{overflow:hidden}--><!--.root_f9df2ee4{overflow:hidden}.rootIsMaximizeFrame_f9df2ee4{height:100%;width:100%}.image_f9df2ee4{display:block;opacity:0}.image_f9df2ee4.imageIsLoaded_f9df2ee4{opacity:1}.imageIsCenter_f9df2ee4,.imageIsContain_f9df2ee4,.imageIsCover_f9df2ee4{position:relative;top:50%}html[dir=ltr] .imageIsCenter_f9df2ee4,html[dir=ltr] .imageIsContain_f9df2ee4,html[dir=ltr] .imageIsCover_f9df2ee4{left:50%}html[dir=rtl] .imageIsCenter_f9df2ee4,html[dir=rtl] .imageIsContain_f9df2ee4,html[dir=rtl] .imageIsCover_f9df2ee4{right:50%}html[dir=ltr] .imageIsCenter_f9df2ee4,html[dir=ltr] .imageIsContain_f9df2ee4,html[dir=ltr] .imageIsCover_f9df2ee4{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}html[dir=rtl] .imageIsCenter_f9df2ee4,html[dir=rtl] .imageIsContain_f9df2ee4,html[dir=rtl] .imageIsCover_f9df2ee4{-webkit-transform:translate(50%,-50%);transform:translate(50%,-50%)}.imageIsContain_f9df2ee4.imageIsLandscape_f9df2ee4{width:100%;height:auto}.imageIsContain_f9df2ee4.imageIsPortrait_f9df2ee4{height:100%;width:auto}.imageIsCover_f9df2ee4.imageIsLandscape_f9df2ee4{height:100%;width:auto}.imageIsCover_f9df2ee4.imageIsPortrait_f9df2ee4{width:100%;height:auto}.imageIsNone_f9df2ee4{height:auto;width:auto}.imageIsScaleWidthHeight_f9df2ee4{height:100%;width:100%}.imageIsScaleWidth_f9df2ee4{height:auto;width:100%}.imageIsScaleHeight_f9df2ee4{height:100%;width:auto}--><!--.root_d6e318d8{background-color:#ffffff;min-width:180px}.list_d6e318d8{list-style-type:none;margin:0;padding:0;line-height:0}.item_d6e318d8{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;position:relative;box-sizing:border-box}.link_d6e318d8{font:inherit;color:inherit;background:0 0;border:none;width:100%;height:36px;line-height:36px;display:block;cursor:pointer;padding:0 6px}.link_d6e318d8::-moz-focus-inner{border:0}.link_d6e318d8{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .link_d6e318d8:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .link_d6e318d8{text-align:left}html[dir=rtl] .link_d6e318d8{text-align:right}.link_d6e318d8:hover:not([disabled]){background:#f4f4f4}.link_d6e318d8.isDisabled_d6e318d8,.link_d6e318d8[disabled]{color:#c8c8c8;cursor:default;pointer-events:none}.link_d6e318d8.isDisabled_d6e318d8 .icon_d6e318d8,.link_d6e318d8[disabled] .icon_d6e318d8{color:#c8c8c8}.is-focusVisible .link_d6e318d8:focus{background:#f4f4f4}.link_d6e318d8.isExpanded_d6e318d8,.link_d6e318d8.isExpanded_d6e318d8:hover{background:#dadada;color:#000000;font-weight:600}.header_d6e318d8{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;font-weight:600;color:#0078d7;background:0 0;border:none;height:36px;line-height:36px;cursor:default;padding:0 6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.header_d6e318d8::-moz-focus-inner{border:0}.header_d6e318d8{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .header_d6e318d8:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .header_d6e318d8{text-align:left}html[dir=rtl] .header_d6e318d8{text-align:right}a.link_d6e318d8{padding:0 6px;text-rendering:auto;color:inherit;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-shadow:none;text-decoration:none;box-sizing:border-box}.linkContent_d6e318d8{white-space:nowrap;height:inherit;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.divider_d6e318d8{display:block;height:1px;background-color:#eaeaea;position:relative}.icon_d6e318d8{display:inline-block;min-height:1px;max-height:36px;width:14px;margin:0 4px;vertical-align:middle;-ms-flex-negative:0;flex-shrink:0}.iconColor_d6e318d8{color:#0078d7}.itemText_d6e318d8{margin:0 4px;vertical-align:middle;display:inline-block;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.submenuIcon_d6e318d8{height:36px;line-height:36px;text-align:center;font-size:10px;display:inline-block;vertical-align:middle;-ms-flex-negative:0;flex-shrink:0}--><!--.root_8b49c145{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;color:#0078d7;margin:0;overflow:inherit;padding:0;text-overflow:inherit}.isEnabled_8b49c145:focus,.isEnabled_8b49c145:hover{color:#004578}.isEnabled_8b49c145:active{color:#0078d7}.isDisabled_8b49c145{color:#a6a6a6;pointer-events:none;cursor:default}button.root_8b49c145{background:0 0;border:none;cursor:pointer;display:inline;font-size:inherit}button.root_8b49c145::-moz-focus-inner{border:0}button.root_8b49c145{outline:transparent;position:relative}.ms-Fabric.is-focusVisible button.root_8b49c145:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] button.root_8b49c145{text-align:left}html[dir=rtl] button.root_8b49c145{text-align:right}a.root_8b49c145{text-decoration:none}.ms-Fabric.is-focusVisible a.root_8b49c145:focus{outline:1px solid #666666}--><!--.root_a46124c0{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;margin:23px 0 1px}.list_a46124c0{white-space:nowrap;padding:0;margin:0}.chevron_a46124c0{font-size:12px;color:#666666;vertical-align:top;margin:11px 0;line-height:1}.listItem_a46124c0{list-style-type:none;vertical-align:top;margin:0;padding:0;display:inline-block;position:relative}.listItem_a46124c0:last-of-type .chevron_a46124c0{display:none}.listItem_a46124c0 .itemLink_a46124c0,.listItem_a46124c0 .item_a46124c0{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;display:inline-block;padding:0 8px;max-width:160px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;vertical-align:top}.overflow_a46124c0{display:inline-block;position:relative}.overflowButton_a46124c0{font-size:16px;display:inline-block;color:#0078d7;padding:9px 8px;cursor:pointer;vertical-align:top;line-height:1}.overflowButton_a46124c0:hover{cursor:pointer;background-color:#f4f4f4}.item_a46124c0:hover{cursor:default}.root_a46124c0 .itemLink_a46124c0:hover{background-color:#f4f4f4;color:initial;cursor:pointer}.root_a46124c0 .itemLink_a46124c0:focus{color:#212121}.root_a46124c0 .itemLink_a46124c0:active{outline:transparent;background-color:#c8c8c8;color:#333333}.itemLink_a46124c0,.overflowButton_a46124c0{text-decoration:none;outline:transparent}@media screen and (max-width:639px){.listItem_a46124c0 .itemLink_a46124c0{font-size:17px}.chevron_a46124c0{font-size:10px;margin:8px 0}.overflowButton_a46124c0{font-size:15px;padding:6px 8px;line-height:1}}@media screen and (max-width:479px){.listItem_a46124c0 .itemLink_a46124c0{font-size:14px;max-width:116px}.chevron_a46124c0{font-size:8px;margin:7px 0}.overflowButton_a46124c0{padding:4px 6px}}--><!--.flexContainer_9db79f3e{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.root_9db79f3e{outline:transparent}.screenReaderOnly_9db79f3e{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}--><!--.root_025f4789{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;background-color:#f4f4f4;color:#333333;min-width:80px;height:32px;font-weight:600;font-size:14px}.root_025f4789::-moz-focus-inner{border:0}.root_025f4789{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_025f4789:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.label_025f4789{margin:0 4px;line-height:100%}.icon_025f4789{margin:0 4px;height:16px;line-height:16px;text-align:center;vertical-align:middle}.isEnabled_025f4789.isToggled_025f4789{background-color:#0078d7;color:#ffffff}.isEnabled_025f4789:hover{background-color:#eaeaea;color:#000000}.isEnabled_025f4789:active{background-color:#0078d7;color:#ffffff}.isDisabled_025f4789{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none}.isDisabled_025f4789:focus,.isDisabled_025f4789:hover{outline:0}--><!--.root_196d516c{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;border-width:0;background-color:transparent;padding:0 4px;height:40px;color:#333333}.root_196d516c::-moz-focus-inner{border:0}.root_196d516c{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_196d516c:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.flexContainer_196d516c{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.label_196d516c{margin:0 4px;line-height:100%}.icon_196d516c{margin:0 4px;height:16px;line-height:16px;text-align:center;vertical-align:middle}.isEnabled_196d516c.isToggled_196d516c{background-color:#c8c8c8}.isEnabled_196d516c.isToggled_196d516c:hover{background-color:#eaeaea;color:#004578}.isEnabled_196d516c:hover{color:#004578}.isEnabled_196d516c:active{color:#0078d7}.isEnabled_196d516c .icon_196d516c{color:#0078d7}.isDisabled_196d516c{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none;background-color:transparent}.isDisabled_196d516c:focus,.isDisabled_196d516c:hover{outline:0}--><!--.root_7db910d8{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;padding:16px 20px;background-color:#f4f4f4;color:#666666;min-width:80px;max-width:280px;min-height:72px}.root_7db910d8::-moz-focus-inner{border:0}.root_7db910d8{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_7db910d8:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.flexContainer_7db910d8{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;-ms-grid-row-align:stretch;align-items:stretch;min-width:100%;height:auto}html[dir=ltr] .flexContainer_7db910d8{text-align:left}html[dir=rtl] .flexContainer_7db910d8{text-align:right}.label_7db910d8{margin:0 4px;line-height:100%;font-weight:600;color:#000000;margin:0 0 5px}.description_7db910d8{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#666666;line-height:100%}.isEnabled_7db910d8.isToggled_7db910d8{background-color:#0078d7;color:#ffffff}.isEnabled_7db910d8.isToggled_7db910d8 .description_7db910d8,.isEnabled_7db910d8.isToggled_7db910d8 .label_7db910d8{color:inherit}.isEnabled_7db910d8.isToggled_7db910d8:hover{background-color:#eaeaea}.isEnabled_7db910d8.isToggled_7db910d8:hover .description_7db910d8,.isEnabled_7db910d8.isToggled_7db910d8:hover .label_7db910d8{color:#212121}.isEnabled_7db910d8:hover{background-color:#eaeaea}.isEnabled_7db910d8:hover .description_7db910d8{color:#212121}.isEnabled_7db910d8:active{background-color:#0078d7;color:#ffffff}.isEnabled_7db910d8:active .description_7db910d8,.isEnabled_7db910d8:active .label_7db910d8{color:inherit}.isDisabled_7db910d8{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none}.isDisabled_7db910d8:focus,.isDisabled_7db910d8:hover{outline:0}.isDisabled_7db910d8 .description_7db910d8,.isDisabled_7db910d8 .label_7db910d8{color:inherit}--><!--.root_bf6ba701{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;border-width:0;background-color:transparent;padding:0 4px;width:32px;height:32px;color:#666666;font-size:16px}.root_bf6ba701::-moz-focus-inner{border:0}.root_bf6ba701{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_bf6ba701:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.icon_bf6ba701{margin:0 4px;height:16px;line-height:16px;text-align:center;vertical-align:middle;color:#000000}.isEnabled_bf6ba701.isToggled_bf6ba701{background-color:#c8c8c8}.isEnabled_bf6ba701.isToggled_bf6ba701.icon_bf6ba701{color:#000000}.isEnabled_bf6ba701.isToggled_bf6ba701:hover{background-color:#eaeaea}.isEnabled_bf6ba701:hover{color:#004578}.isEnabled_bf6ba701:active{color:#0078d7}.isDisabled_bf6ba701{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none;background-color:transparent}.isDisabled_bf6ba701:focus,.isDisabled_bf6ba701:hover{outline:0}--><!--.root_96e4843c{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;text-decoration:none;text-align:center;cursor:pointer;display:inline-block;vertical-align:top;padding:0 16px;background-color:#0078d7;color:#ffffff;min-width:80px;height:32px;font-weight:600;font-size:14px}.root_96e4843c::-moz-focus-inner{border:0}.root_96e4843c{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_96e4843c:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.root_96e4843c::-moz-focus-inner{border:0}.root_96e4843c{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_96e4843c:focus:after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:1px solid #ffffff}.label_96e4843c{margin:0 4px;line-height:100%}.icon_96e4843c{margin:0 4px;height:16px;line-height:16px;text-align:center;vertical-align:middle}.isEnabled_96e4843c.isToggled_96e4843c{background-color:#005a9e;color:#ffffff}.isEnabled_96e4843c.isToggled_96e4843c:hover{background-color:#eaeaea;color:#000000}.isEnabled_96e4843c:hover{background-color:#005a9e}.isEnabled_96e4843c:active{background-color:#0078d7;color:#ffffff}.isDisabled_96e4843c{background-color:#f4f4f4;color:#a6a6a6;cursor:default;pointer-events:none}.isDisabled_96e4843c:focus,.isDisabled_96e4843c:hover{outline:0}--><!--.root_e5c4ec90{box-sizing:border-box;margin:0;padding:0;box-shadow:none;margin-bottom:17px}.picker_e5c4ec90{color:#000000;font-size:14px;position:relative}html[dir=ltr] .picker_e5c4ec90{text-align:left}html[dir=rtl] .picker_e5c4ec90{text-align:right}.holder_e5c4ec90{-webkit-overflow-scrolling:touch;box-sizing:border-box;background:#ffffff;min-width:300px;display:none}.picker_e5c4ec90.pickerIsOpened_e5c4ec90 .holder_e5c4ec90{-webkit-animation-name:fadeIn_e5c4ec90,slideDownIn10_e5c4ec90;animation-name:fadeIn_e5c4ec90,slideDownIn10_e5c4ec90;-webkit-animation-duration:167ms;-moz-animation-duration:167ms;-ms-animation-duration:167ms;-o-animation-duration:167ms;-webkit-animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-timing-function:cubic-bezier(.1,.25,.75,.9);-webkit-animation-fill-mode:both;animation-fill-mode:both;box-sizing:border-box;display:block}.pickerIsOpened_e5c4ec90{position:relative}.frame_e5c4ec90{padding:1px;position:relative}.wrap_e5c4ec90{margin:-1px;padding:9px}.dayPicker_e5c4ec90{display:block;margin-bottom:30px}.header_e5c4ec90{height:40px;line-height:44px}.month_e5c4ec90,.year_e5c4ec90{display:inline-block;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;margin-top:-1px}.month_e5c4ec90:hover,.year_e5c4ec90:hover{color:#005a9e;cursor:pointer}html[dir=ltr] .month_e5c4ec90{margin-left:15px}html[dir=rtl] .month_e5c4ec90{margin-right:15px}html[dir=ltr] .year_e5c4ec90{margin-left:15px}html[dir=rtl] .year_e5c4ec90{margin-right:15px}.table_e5c4ec90{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:inherit}.table_e5c4ec90 td{margin:0;padding:0}.table_e5c4ec90 td:hover{outline:1px solid transparent}.day_e5c4ec90,.weekday_e5c4ec90{width:40px;height:40px;padding:0;line-height:40px;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:15px;font-weight:400;color:#333333}.dayIsToday_e5c4ec90{position:relative;background-color:#c7e0f4}.dayIsDisabled_e5c4ec90:before{border-top-color:#a6a6a6}.dayIsUnfocused_e5c4ec90{color:#a6a6a6;font-weight:400}.dayIsFocused_e5c4ec90:hover,.dayIsUnfocused_e5c4ec90:hover{cursor:pointer;color:#000000;background:#eaeaea}.day_e5c4ec90.dayIsHighlighted_e5c4ec90.dayIsFocused_e5c4ec90::-moz-focus-inner{border:0}.day_e5c4ec90.dayIsHighlighted_e5c4ec90.dayIsFocused_e5c4ec90{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .day_e5c4ec90.dayIsHighlighted_e5c4ec90.dayIsFocused_e5c4ec90:focus:after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:1px solid #ffffff}.dayIsHighlighted_e5c4ec90:hover,.pickerIsFocused_e5c4ec90 .dayIsHighlighted_e5c4ec90{cursor:pointer;color:#ffffff;background:#0078d7}.dayIsHighlighted_e5c4ec90.dayDisabled_e5c4ec90,.dayIsHighlighted_e5c4ec90.dayDisabled_e5c4ec90:hover{background:#a6a6a6}.monthPicker_e5c4ec90,.yearPicker_e5c4ec90{display:none}.monthComponents_e5c4ec90{position:absolute;top:9px}html[dir=ltr] .monthComponents_e5c4ec90{right:9px}html[dir=rtl] .monthComponents_e5c4ec90{left:9px}html[dir=ltr] .monthComponents_e5c4ec90{left:9px}html[dir=rtl] .monthComponents_e5c4ec90{right:9px}.decadeComponents_e5c4ec90,.yearComponents_e5c4ec90{position:absolute;top:-2px}html[dir=ltr] .decadeComponents_e5c4ec90,html[dir=ltr] .yearComponents_e5c4ec90{right:10px}html[dir=rtl] .decadeComponents_e5c4ec90,html[dir=rtl] .yearComponents_e5c4ec90{left:10px}.nextDecade_e5c4ec90,.nextMonth_e5c4ec90,.nextYear_e5c4ec90,.prevDecade_e5c4ec90,.prevMonth_e5c4ec90,.prevYear_e5c4ec90{width:40px;height:40px;display:block;text-align:center;line-height:40px;text-align:center;font-size:16px;color:#666666;position:relative;top:2px}html[dir=ltr] .nextDecade_e5c4ec90,html[dir=ltr] .nextMonth_e5c4ec90,html[dir=ltr] .nextYear_e5c4ec90,html[dir=ltr] .prevDecade_e5c4ec90,html[dir=ltr] .prevMonth_e5c4ec90,html[dir=ltr] .prevYear_e5c4ec90{margin-left:10px}html[dir=rtl] .nextDecade_e5c4ec90,html[dir=rtl] .nextMonth_e5c4ec90,html[dir=rtl] .nextYear_e5c4ec90,html[dir=rtl] .prevDecade_e5c4ec90,html[dir=rtl] .prevMonth_e5c4ec90,html[dir=rtl] .prevYear_e5c4ec90{margin-right:10px}.nextDecade_e5c4ec90:hover,.nextMonth_e5c4ec90:hover,.nextYear_e5c4ec90:hover,.prevDecade_e5c4ec90:hover,.prevMonth_e5c4ec90:hover,.prevYear_e5c4ec90:hover{color:#212121;cursor:pointer;outline:1px solid transparent}.headerToggleView_e5c4ec90{height:40px;position:absolute;top:0;width:140px;cursor:pointer}html[dir=ltr] .headerToggleView_e5c4ec90{left:0}html[dir=rtl] .headerToggleView_e5c4ec90{right:0}.currentDecade_e5c4ec90,.currentYear_e5c4ec90{display:block;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;height:40px;line-height:40px}html[dir=ltr] .currentDecade_e5c4ec90,html[dir=ltr] .currentYear_e5c4ec90{margin-left:15px}html[dir=rtl] .currentDecade_e5c4ec90,html[dir=rtl] .currentYear_e5c4ec90{margin-right:15px}.currentYear_e5c4ec90{color:#0078d7}.currentYear_e5c4ec90:hover{color:#005a9e;cursor:pointer}.optionGrid_e5c4ec90{position:relative;height:210px;width:280px;margin:10px 0 30px 5px}html[dir=rtl] .optionGrid_e5c4ec90{margin:10px 5px 30px 0}.monthOption_e5c4ec90,.yearOption_e5c4ec90{background-color:#f4f4f4;width:60px;height:60px;line-height:60px;cursor:pointer;margin:0 10px 10px 0;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:13px;font-weight:400;color:#333333;text-align:center}html[dir=ltr] .monthOption_e5c4ec90,html[dir=ltr] .yearOption_e5c4ec90{float:left}html[dir=rtl] .monthOption_e5c4ec90,html[dir=rtl] .yearOption_e5c4ec90{float:right}html[dir=rtl] .monthOption_e5c4ec90,html[dir=rtl] .yearOption_e5c4ec90{margin:0 0 10px 10px}.monthOption_e5c4ec90:hover,.yearOption_e5c4ec90:hover{background-color:#c8c8c8;outline:1px solid transparent}.monthOption_e5c4ec90.isHighlighted_e5c4ec90,.yearOption_e5c4ec90.isHighlighted_e5c4ec90{background-color:#333333;color:#ffffff}.goToday_e5c4ec90{bottom:9px;color:#0078d7;cursor:pointer;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:13px;font-weight:400;color:#333333;height:30px;line-height:30px;padding:0 10px;position:absolute!important}html[dir=ltr] .goToday_e5c4ec90{right:3px}html[dir=rtl] .goToday_e5c4ec90{left:3px}.goToday_e5c4ec90:hover{outline:1px solid transparent}.root_e5c4ec90.isPickingYears_e5c4ec90 .dayPicker_e5c4ec90,.root_e5c4ec90.isPickingYears_e5c4ec90 .monthComponents_e5c4ec90{display:none}.root_e5c4ec90.isPickingYears_e5c4ec90 .monthPicker_e5c4ec90{display:none}.root_e5c4ec90.isPickingYears_e5c4ec90 .yearPicker_e5c4ec90{display:block}@media (min-width:460px){.header_e5c4ec90{height:30px;line-height:30px}.day_e5c4ec90,.weekday_e5c4ec90{width:30px;height:30px;line-height:28px;font-weight:600;font-size:12px}.monthComponents_e5c4ec90{width:210px}.nextDecade_e5c4ec90,.nextMonth_e5c4ec90,.nextYear_e5c4ec90,.prevDecade_e5c4ec90,.prevMonth_e5c4ec90,.prevYear_e5c4ec90{font-size:12px;width:24px;height:24px;line-height:24px}.holder_e5c4ec90{min-width:230px}.month_e5c4ec90,.year_e5c4ec90{font-weight:300}.month_e5c4ec90,.year_e5c4ec90{font-size:17px;color:#333333}.month_e5c4ec90:hover,.year_e5c4ec90:hover{color:#333333;cursor:default}.pickerIsMonthPickerVisible_e5c4ec90 .dayPicker_e5c4ec90{margin:-10px 0;padding:10px 0}.pickerIsMonthPickerVisible_e5c4ec90 .dayPicker_e5c4ec90{box-sizing:border-box;width:220px;min-height:230px}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .dayPicker_e5c4ec90{border-right:1px solid #eaeaea}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .dayPicker_e5c4ec90{border-left:1px solid #eaeaea}.pickerIsMonthPickerVisible_e5c4ec90 .holder_e5c4ec90{width:440px}.pickerIsMonthPickerVisible_e5c4ec90 .monthPicker_e5c4ec90{display:block}.pickerIsMonthPickerVisible_e5c4ec90 .monthPicker_e5c4ec90,.pickerIsMonthPickerVisible_e5c4ec90 .yearPicker_e5c4ec90{top:9px;position:absolute}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .monthPicker_e5c4ec90,html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .yearPicker_e5c4ec90{left:238px}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .monthPicker_e5c4ec90,html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .yearPicker_e5c4ec90{right:238px}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .month_e5c4ec90{margin-left:12px}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .month_e5c4ec90{margin-right:12px}.pickerIsMonthPickerVisible_e5c4ec90 .optionGrid_e5c4ec90{width:200px;height:auto;margin:10px 0 0 0}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .optionGrid_e5c4ec90{margin:10px 0 0 0}.pickerIsMonthPickerVisible_e5c4ec90 .toggleMonthView_e5c4ec90{display:none}.pickerIsMonthPickerVisible_e5c4ec90 .currentDecade_e5c4ec90,.pickerIsMonthPickerVisible_e5c4ec90 .currentYear_e5c4ec90{font-size:17px;margin:0;height:30px;line-height:26px;padding:0 10px;display:inline-block}.pickerIsMonthPickerVisible_e5c4ec90 .monthOption_e5c4ec90,.pickerIsMonthPickerVisible_e5c4ec90 .yearOption_e5c4ec90{width:40px;height:40px;line-height:38px;font-size:12px;margin:0 10px 10px 0}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .monthOption_e5c4ec90,html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .yearOption_e5c4ec90{margin:0 0 10px 10px}.pickerIsMonthPickerVisible_e5c4ec90 .monthOption_e5c4ec90:hover,.pickerIsMonthPickerVisible_e5c4ec90 .yearOption_e5c4ec90:hover{outline:1px solid transparent}.pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{box-sizing:border-box;font-size:12px;height:30px;line-height:30px;padding:0 10px;top:199px}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{right:3px}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{left:3px}html[dir=ltr] .pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{text-align:right}html[dir=rtl] .pickerIsMonthPickerVisible_e5c4ec90 .goToday_e5c4ec90{text-align:left}.pickerIsMonthPickerVisible_e5c4ec90 .root_e5c4ec90.isPickingYears_e5c4ec90 .dayPicker_e5c4ec90,.pickerIsMonthPickerVisible_e5c4ec90 .root_e5c4ec90.isPickingYears_e5c4ec90 .monthComponents_e5c4ec90{display:block}.pickerIsMonthPickerVisible_e5c4ec90 .root_e5c4ec90.isPickingYears_e5c4ec90 .monthPicker_e5c4ec90{display:none}.pickerIsMonthPickerVisible_e5c4ec90 .root_e5c4ec90.isPickingYears_e5c4ec90 .yearPicker_e5c4ec90{display:block}}@media (max-width:459px){.root_e5c4ec90.isPickingMonths_e5c4ec90 .dayPicker_e5c4ec90,.root_e5c4ec90.isPickingMonths_e5c4ec90 .monthComponents_e5c4ec90{display:none}.root_e5c4ec90.isPickingMonths_e5c4ec90 .monthPicker_e5c4ec90{display:block}}.wrap_e5c4ec90 div:focus::-moz-focus-inner,.wrap_e5c4ec90 span:focus::-moz-focus-inner{border:0}.wrap_e5c4ec90 div:focus,.wrap_e5c4ec90 span:focus{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .wrap_e5c4ec90 div:focus:focus:after,.ms-Fabric.is-focusVisible .wrap_e5c4ec90 span:focus:focus:after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:1px solid #0078d7}.goToday_e5c4ec90{width:auto}.nextMonth_e5c4ec90,.nextYear_e5c4ec90,.prevMonth_e5c4ec90,.prevYear_e5c4ec90{display:inline-block}html[dir=ltr] .navContainer_e5c4ec90{float:right}html[dir=rtl] .navContainer_e5c4ec90{float:left}--><!--.root_632a9a87{box-sizing:border-box;color:#333333;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;font-size:14px;font-weight:400;min-height:36px;position:relative}.textLabel_632a9a87{font-size:14px;padding:0 0 0 26px;display:inline-block;font-size:14px}html[dir=rtl] .textLabel_632a9a87{padding:0 26px 0 0}.input_632a9a87{position:absolute;opacity:0;top:8px}.label_632a9a87::before{content:'';display:inline-block;border:1px solid #a6a6a6;width:20px;height:20px;font-weight:400;position:absolute;box-sizing:border-box;transition-property:background,border,border-color;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.23,1)}.label_632a9a87::after{content:"\E73E";font-family:FabricMDL2Icons;display:none;position:absolute;font-weight:900;background-color:transparent;font-size:13px;top:0;color:#ffffff;line-height:20px;width:20px;text-align:center}.label_632a9a87{display:inline-block;cursor:pointer;margin-top:8px;position:relative;vertical-align:top;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;min-width:20px;min-height:20px;line-height:20px}.label_632a9a87:hover::before{border-color:#767676}.label_632a9a87:hover .textLabel_632a9a87{color:#000000}.label_632a9a87:focus::before{border-color:#767676}.label_632a9a87:focus.labelIsDisabled_632a9a87::before{border-color:#c8c8c8}.label_632a9a87:focus.labelIsChecked_632a9a87::before{border-color:#106ebe}.label_632a9a87:active::before{border-color:#767676}.label_632a9a87:active .textLabel_632a9a87{color:#000000}.label_632a9a87.labelIsChecked_632a9a87::before{border:10px solid #0078d7;background-color:#0078d7}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:black-on-white){.label_632a9a87.labelIsChecked_632a9a87::before{display:none}}.label_632a9a87.labelIsChecked_632a9a87::after{display:block}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:black-on-white){.label_632a9a87.labelIsChecked_632a9a87::after{height:16px;width:16px;line-height:16px}}@media screen and (-ms-high-contrast:active){.label_632a9a87.labelIsChecked_632a9a87::after{border:2px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.label_632a9a87.labelIsChecked_632a9a87::after{border:2px solid #000000}}.label_632a9a87.labelIsChecked_632a9a87:focus::before,.label_632a9a87.labelIsChecked_632a9a87:hover::before{border-color:#106ebe}.label_632a9a87.labelIsDisabled_632a9a87{cursor:default}.label_632a9a87.labelIsDisabled_632a9a87:focus::before,.label_632a9a87.labelIsDisabled_632a9a87:hover::before{border-color:#c8c8c8}.label_632a9a87.labelIsDisabled_632a9a87::before{background-color:#c8c8c8;border-color:#c8c8c8;color:#c8c8c8}@media screen and (-ms-high-contrast:active){.label_632a9a87.labelIsDisabled_632a9a87::after{border:2px solid #0f0}}@media screen and (-ms-high-contrast:black-on-white){.label_632a9a87.labelIsDisabled_632a9a87::after{border:2px solid #600000}}@media screen and (-ms-high-contrast:active){.label_632a9a87.labelIsDisabled_632a9a87::after{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.label_632a9a87.labelIsDisabled_632a9a87::after{color:#600000}}.label_632a9a87.labelIsDisabled_632a9a87 .textLabel_632a9a87{color:#a6a6a6}@media screen and (-ms-high-contrast:active){.label_632a9a87.labelIsDisabled_632a9a87 .textLabel_632a9a87{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.label_632a9a87.labelIsDisabled_632a9a87 .textLabel_632a9a87{color:#600000}}.label_632a9a87.labelIsInFocus_632a9a87::before{border-color:#767676}.label_632a9a87.labelIsInFocus_632a9a87.labelIsDisabled_632a9a87::before{border-color:#c8c8c8}.label_632a9a87.labelIsInFocus_632a9a87.labelIsChecked_632a9a87::before{border-color:#106ebe}.ms-Fabric.is-focusVisible .rootIsInFocus_632a9a87::before{content:'';position:absolute;top:0;bottom:0;left:0;right:0;border:1px solid #666666}@media screen and (-ms-high-contrast:active){.ms-Fabric.is-focusVisible .rootIsInFocus_632a9a87::before{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.ms-Fabric.is-focusVisible .rootIsInFocus_632a9a87::before{border:1px solid #000000}}--><!--.root_b71e4c37{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;box-sizing:border-box;margin:0;padding:0;box-shadow:none;color:#333333;box-sizing:border-box;display:block;padding:5px 0;word-wrap:break-word;overflow-wrap:break-word}.isRequired_b71e4c37::after{content:' *';color:#a80000}.isDisabled_b71e4c37{color:#a6a6a6}--><!--.root_ba8e6d49{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;margin-bottom:4px}.choiceField_ba8e6d49{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;box-sizing:border-box;color:#333333;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;font-size:14px;font-weight:400;min-height:26px;border:none;position:relative;margin-top:8px}html[dir=ltr] .choiceField_ba8e6d49{padding-left:8px}html[dir=rtl] .choiceField_ba8e6d49{padding-right:8px}.choiceField_ba8e6d49 .ms-Label{font-size:14px;padding:0 0 0 26px;display:inline-block}html[dir=rtl] .choiceField_ba8e6d49 .ms-Label{padding:0 26px 0 0}.input_ba8e6d49{position:absolute;opacity:0;top:8px}.field_ba8e6d49::before{content:'';display:inline-block;background-color:#ffffff;border:1px solid #767676;width:20px;height:20px;font-weight:400;position:absolute;top:-1px;box-sizing:border-box;transition-property:border-color;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.23,1);border-radius:50%}.field_ba8e6d49::after{content:'';width:0;height:0;border-radius:50%;position:absolute;transition-property:top,left,right,width,height;transition-duration:150ms;transition-timing-function:cubic-bezier(.4,0,.23,1);box-sizing:border-box}html[dir=ltr] .field_ba8e6d49::after{left:10px}html[dir=rtl] .field_ba8e6d49::after{right:10px}html[dir=ltr] .field_ba8e6d49::after{right:0}html[dir=rtl] .field_ba8e6d49::after{left:0}@media screen and (-ms-high-contrast:active){.field_ba8e6d49::after{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49::after{color:#600000}}.field_ba8e6d49{display:inline-block;cursor:pointer;margin-top:0;position:relative;vertical-align:top;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.field_ba8e6d49:focus::before,.field_ba8e6d49:hover::before{border-color:#000000}.field_ba8e6d49:focus .ms-Label,.field_ba8e6d49:hover .ms-Label{color:#000000}.field_ba8e6d49.fieldIsChecked_ba8e6d49::before{border:2px solid #0078d7}@media screen and (-ms-high-contrast:active){.field_ba8e6d49.fieldIsChecked_ba8e6d49::before{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49.fieldIsChecked_ba8e6d49::before{border-color:#37006e}}.field_ba8e6d49.fieldIsChecked_ba8e6d49::after{background-color:#0078d7;top:4px;width:10px;height:10px}html[dir=ltr] .field_ba8e6d49.fieldIsChecked_ba8e6d49::after{left:5px}html[dir=rtl] .field_ba8e6d49.fieldIsChecked_ba8e6d49::after{right:5px}@media screen and (-ms-high-contrast:active){.field_ba8e6d49.fieldIsChecked_ba8e6d49::after{background-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49.fieldIsChecked_ba8e6d49::after{background-color:#37006e}}.field_ba8e6d49.fieldIsChecked_ba8e6d49:focus::before,.field_ba8e6d49.fieldIsChecked_ba8e6d49:hover::before{border-color:#2b88d8}.field_ba8e6d49.fieldIsDisabled_ba8e6d49{cursor:default}.field_ba8e6d49.fieldIsDisabled_ba8e6d49::before{background-color:#c8c8c8;border-color:#c8c8c8}@media screen and (-ms-high-contrast:active){.field_ba8e6d49.fieldIsDisabled_ba8e6d49::before{border-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49.fieldIsDisabled_ba8e6d49::before{border-color:#600000}}.field_ba8e6d49.fieldIsDisabled_ba8e6d49 .ms-Label{color:#c8c8c8}@media screen and (-ms-high-contrast:active){.field_ba8e6d49.fieldIsDisabled_ba8e6d49 .ms-Label{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.field_ba8e6d49.fieldIsDisabled_ba8e6d49 .ms-Label{color:#600000}}.field_ba8e6d49.fieldIsChecked_ba8e6d49.fieldIsDisabled_ba8e6d49::before{background-color:#ffffff;border-color:#c8c8c8}.field_ba8e6d49.fieldIsChecked_ba8e6d49.fieldIsDisabled_ba8e6d49::after{background-color:#c8c8c8}.choiceFieldIsIcon_ba8e6d49,.choiceFieldIsImage_ba8e6d49{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:0;margin:0 4px 4px 0;background-color:#f4f4f4}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49,html[dir=rtl] .choiceFieldIsImage_ba8e6d49{margin:0 0 4px 4px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49,html[dir=ltr] .choiceFieldIsImage_ba8e6d49{padding-left:0}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49,html[dir=rtl] .choiceFieldIsImage_ba8e6d49{padding-right:0}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49{display:inline-block;box-sizing:border-box;min-width:96px;cursor:pointer;padding:4px;padding-top:22px;margin:0;text-align:center;transition:all .2s ease;border:2px solid transparent}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49.fieldIsDisabled_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49.fieldIsDisabled_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49.fieldIsDisabled_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49.fieldIsDisabled_ba8e6d49{cursor:default}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49.fieldIsDisabled_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49.fieldIsDisabled_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49.fieldIsDisabled_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49.fieldIsDisabled_ba8e6d49 .innerField_ba8e6d49{opacity:.25}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49{position:relative;padding:0 28px}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49{padding-bottom:2px;transition:opacity .2s ease}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49.imageWrapperIsHidden_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49.imageWrapperIsHidden_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49.imageWrapperIsHidden_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49.imageWrapperIsHidden_ba8e6d49{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;opacity:0}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49 .ms-Image,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49 .ms-Image,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49 .ms-Image,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .innerField_ba8e6d49 .imageWrapper_ba8e6d49 .ms-Image{display:inline-block}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .labelWrapper_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .labelWrapper_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .labelWrapper_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .labelWrapper_ba8e6d49{display:inline-block;position:relative;margin:4px 0 0 0;height:32px;line-height:16px;overflow-y:hidden;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49 .labelWrapper_ba8e6d49 .ms-Label,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49 .labelWrapper_ba8e6d49 .ms-Label,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49 .labelWrapper_ba8e6d49 .ms-Label,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49 .labelWrapper_ba8e6d49 .ms-Label{padding:0}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{top:3px;opacity:0}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{right:3px}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{left:3px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{left:auto}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::before,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::before,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::before{right:auto}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{top:13px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{right:13px}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{left:13px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{left:auto}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49::after{right:auto}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover{border-color:#c8c8c8}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):focus::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49):hover::before{opacity:1}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49{border-color:#0078d7}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::before{opacity:1}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after{top:8px}html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=ltr] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=ltr] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after{right:8px}html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=rtl] .choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after,html[dir=rtl] .choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49::after{left:8px}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover{border-color:#005a9e}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::before,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::before,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::before,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::before{border-color:#005a9e}.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::after,.choiceFieldIsIcon_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::after,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::after,.choiceFieldIsImage_ba8e6d49 .fieldIsIcon_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::after,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:focus::after,.choiceFieldIsImage_ba8e6d49 .fieldIsImage_ba8e6d49:not(.fieldIsDisabled_ba8e6d49).fieldIsChecked_ba8e6d49:hover::after{background-color:#005a9e}.choiceFieldIsIcon_ba8e6d49{height:96px;width:96px}.choiceFieldIsIcon_ba8e6d49 .iconWrapper_ba8e6d49{font-size:32px;line-height:32px;height:32px}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:1px solid #333333}@media screen and (-ms-high-contrast:active){.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:2px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:2px solid #000000}}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::-moz-focus-inner,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::after,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #333333}@media screen and (-ms-high-contrast:active){.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::-moz-focus-inner,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::after,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:2px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::-moz-focus-inner,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::-moz-focus-inner{border:0}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsIcon_ba8e6d49::after,.ms-Fabric.is-focusVisible .choiceFieldIsInFocus_ba8e6d49.choiceFieldIsImage_ba8e6d49::after{content:'';position:absolute;top:1px;right:1px;bottom:1px;left:1px;pointer-events:none;border:3px solid #000000}}--><!--.root_940e5897{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0;padding:0;box-shadow:none;margin-bottom:8px;position:relative}.screenReaderOnly_940e5897{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.fieldGroup_940e5897{border:1px solid #c8c8c8;background:#ffffff;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;position:relative}.fieldGroup_940e5897:hover{border-color:#767676}.fieldGroup_940e5897.fieldGroupIsFocused_940e5897{border-color:#0078d7}.rootIsDisabled_940e5897>.fieldGroup_940e5897{background-color:#f4f4f4;border-color:#f4f4f4;pointer-events:none;cursor:default}@media screen and (-ms-high-contrast:active){.fieldGroup_940e5897.fieldGroupIsFocused_940e5897,.fieldGroup_940e5897:hover{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.fieldGroup_940e5897.fieldGroupIsFocused_940e5897,.fieldGroup_940e5897:hover{border-color:#37006e}}.fieldGroup_940e5897::-ms-clear{display:none}.root_940e5897.rootIsDisabled_940e5897 .field{background-color:#f4f4f4;border-color:#f4f4f4;pointer-events:none;cursor:default}.fieldAddon_940e5897{background:#f4f4f4;color:#666666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 10px;line-height:1}.field_940e5897{box-sizing:border-box;margin:0;padding:0;box-shadow:none;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;border-radius:0;border:none;color:#333333;padding:0 12px 0 12px;width:100%;text-overflow:ellipsis;outline:0}html[dir=rtl] .field_940e5897{padding:0 12px 0 12px}.field_940e5897:active,.field_940e5897:focus,.field_940e5897:hover{outline:0}html[dir=ltr] .field_940e5897.hasIcon_940e5897{padding-right:24px}html[dir=rtl] .field_940e5897.hasIcon_940e5897{padding-left:24px}.field_940e5897[disabled]{background-color:transparent;border-color:transparent;pointer-events:none;cursor:default}.field_940e5897 .field_940e5897::-webkit-input-placeholder{color:#d0d0d0}.field_940e5897 .field_940e5897::-moz-placeholder{color:#d0d0d0}.field_940e5897 .field_940e5897:-moz-placeholder{color:#d0d0d0}.field_940e5897 .field_940e5897:-ms-input-placeholder{color:#d0d0d0}.root_940e5897.rootIsRequired_940e5897 .ms-Label::after{content:' *';color:#a80000}.root_940e5897.rootIsActive_940e5897{border-color:#0078d7}.errorIcon_940e5897{vertical-align:middle;font-size:14px}html[dir=ltr] .errorIcon_940e5897{margin-right:5px}html[dir=rtl] .errorIcon_940e5897{margin-left:5px}.icon_940e5897{position:absolute;bottom:8px;top:auto}html[dir=ltr] .icon_940e5897{right:8px}html[dir=rtl] .icon_940e5897{left:8px}.description_940e5897{color:#666666;font-size:11px}.rootIsBorderless_940e5897 .fieldGroup_940e5897{border-color:transparent}.root_940e5897.rootIsUnderlined_940e5897{border-bottom:1px solid #c8c8c8;border-width:0;border-bottom-width:1px;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.root_940e5897.rootIsUnderlined_940e5897:hover:not(.rootIsDisabled_940e5897){border-color:#767676}@media screen and (-ms-high-contrast:active){.root_940e5897.rootIsUnderlined_940e5897:hover:not(.rootIsDisabled_940e5897){border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_940e5897.rootIsUnderlined_940e5897:hover:not(.rootIsDisabled_940e5897){border-color:#37006e}}.root_940e5897.rootIsUnderlined_940e5897 .ms-Label{font-size:14px;line-height:22px;height:32px}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{margin-right:8px}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{margin-left:8px}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-left:12px}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-right:12px}.root_940e5897.rootIsUnderlined_940e5897 .fieldGroup_940e5897{-webkit-box-flex:1;-ms-flex:1 1 0;flex:1 1 0;border:0}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .fieldGroup_940e5897{text-align:left}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .fieldGroup_940e5897{text-align:right}.root_940e5897.rootIsUnderlined_940e5897.rootIsDisabled_940e5897{border-bottom-color:#f4f4f4}.root_940e5897.rootIsUnderlined_940e5897.rootIsDisabled_940e5897 .ms-Label{color:#a6a6a6}.root_940e5897.rootIsUnderlined_940e5897.rootIsDisabled_940e5897 .field_940e5897{background-color:transparent;color:#c8c8c8}.root_940e5897.rootIsUnderlined_940e5897.rootIsActive_940e5897{border-color:#0078d7}@media screen and (-ms-high-contrast:active){.root_940e5897.rootIsUnderlined_940e5897.rootIsActive_940e5897{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_940e5897.rootIsUnderlined_940e5897.rootIsActive_940e5897{border-color:#37006e}}.root_940e5897.rootIsMultiline_940e5897 .fieldGroup_940e5897{min-height:60px;height:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.root_940e5897.rootIsMultiline_940e5897 .field_940e5897{line-height:17px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-top:6px;overflow:auto;width:100%}html[dir=ltr] .root_940e5897.rootIsMultiline_940e5897 .field_940e5897.hasIcon_940e5897{padding-right:40px}html[dir=rtl] .root_940e5897.rootIsMultiline_940e5897 .field_940e5897.hasIcon_940e5897{padding-left:40px}.errorMessage_940e5897{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#a80000;margin:0;padding-top:5px}.invalid_940e5897,.invalid_940e5897:focus,.invalid_940e5897:hover{border-color:#a80000}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-left:12px}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-right:12px}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-right:0}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .ms-Label{padding-left:0}html[dir=ltr] .root_940e5897.rootIsUnderlined_940e5897 .field_940e5897{text-align:left}html[dir=rtl] .root_940e5897.rootIsUnderlined_940e5897 .field_940e5897{text-align:right}.root_940e5897.rootIsMultiline_940e5897 .icon_940e5897{padding-bottom:8px;-webkit-box-align:end;-ms-flex-align:end;-ms-grid-row-align:flex-end;align-items:flex-end}html[dir=ltr] .root_940e5897.rootIsMultiline_940e5897 .icon_940e5897{padding-right:24px}html[dir=rtl] .root_940e5897.rootIsMultiline_940e5897 .icon_940e5897{padding-left:24px}.root_940e5897.rootIsMultiline_940e5897 .field_940e5897.fieldIsUnresizable_940e5897{resize:none}.hidden_940e5897{display:none}--><!--.root_c35efa75{position:relative;max-width:300px}.panel_c35efa75{padding:16px}.colorRect_c35efa75{position:relative;margin-bottom:10px}.rectContainer_c35efa75{position:relative}.capture_c35efa75{position:absolute;left:0;top:0;bottom:0;right:0;background:rgba(255,0,0,.1)}.rectContainer_c35efa75.rectContainerIsAdjusting_c35efa75 .capture_c35efa75{position:fixed}.thumb_c35efa75{position:absolute;width:20px;height:20px;background:#fff;border:1px solid rgba(255,255,255,.8);border-radius:50%;box-shadow:0 0 15px -5px #000;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.thumb_c35efa75.thumbIsSlider_c35efa75{top:50%}.light_c35efa75{position:absolute;left:0;right:0;top:0;bottom:0;background:linear-gradient(to right,#fff 0,transparent 100%)}.dark_c35efa75{position:absolute;left:0;right:0;top:0;bottom:0;background:linear-gradient(to bottom,transparent 0,#000 100%)}.slider_c35efa75{position:relative;height:20px;margin-bottom:5px;border:1px solid #eaeaea;box-sizing:border-box}.slider_c35efa75.colorSliderIsHue_c35efa75{background:linear-gradient(to left,red 0,#f09 10%,#cd00ff 20%,#3200ff 30%,#06f 40%,#00fffd 50%,#0f6 60%,#35ff00 70%,#cdff00 80%,#f90 90%,red 100%)}.slider_c35efa75.colorSliderIsAlpha_c35efa75{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAJUlEQVQYV2N89erVfwY0ICYmxoguxjgUFKI7GsTH5m4M3w1ChQC1/Ca8i2n1WgAAAABJRU5ErkJggg==)}.sliderOverlay_c35efa75{content:'';position:absolute;left:0;right:0;top:0;bottom:0}.input_c35efa75{width:100%;border:none;box-sizing:border-box;height:30px}.input_c35efa75.ms-TextField{padding-right:2px}.input_c35efa75 .input_c35efa75.ms-TextField-field{min-width:auto;padding:5px}--><!--.root_c5968264{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;position:relative;background-color:#f4f4f4;height:40px;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.primaryCommands_c5968264{position:absolute;overflow:hidden;display:inline;vertical-align:top;line-height:40px;max-width:100%;margin:0 20px}.sideCommands_c5968264{position:absolute}html[dir=ltr] .sideCommands_c5968264{right:0}html[dir=rtl] .sideCommands_c5968264{left:0}html[dir=ltr] .sideCommands_c5968264{text-align:right}html[dir=rtl] .sideCommands_c5968264{text-align:left}html[dir=ltr] .sideCommands_c5968264{padding-right:20px}html[dir=rtl] .sideCommands_c5968264{padding-left:20px}.item_c5968264{display:inline-block;color:#0078d7;height:40px;outline:transparent;vertical-align:top;margin:0 4px}.item_c5968264:hover{background-color:#eaeaea;color:#333333}.itemChevronDown_c5968264,.itemCommandText_c5968264{display:inline-block;padding:0 4px;vertical-align:top}.itemText_c5968264{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;position:relative;background:0 0;border:none;line-height:40px;min-width:20px;text-align:center;padding:0 4px;display:block;height:100%}.itemText_c5968264::-moz-focus-inner{border:0}.itemText_c5968264{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .itemText_c5968264:focus:after{content:'';position:absolute;top:2px;right:2px;bottom:2px;left:2px;pointer-events:none;border:1px solid #666666}.itemText_c5968264.itemLinkIsNoName_c5968264{padding:0 8px}.itemLink_c5968264{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;position:relative;background:0 0;border:none;line-height:40px;min-width:20px;text-align:center;padding:0 4px;display:block;height:100%;cursor:pointer}.itemLink_c5968264::-moz-focus-inner{border:0}.itemLink_c5968264{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .itemLink_c5968264:focus:after{content:'';position:absolute;top:2px;right:2px;bottom:2px;left:2px;pointer-events:none;border:1px solid #666666}.itemLink_c5968264.itemLinkIsNoName_c5968264{padding:0 8px}@media screen and (-ms-high-contrast:active){.itemLink_c5968264.itemLinkIsExpanded_c5968264::-moz-focus-inner,.itemLink_c5968264:hover::-moz-focus-inner{border:0}.itemLink_c5968264.itemLinkIsExpanded_c5968264,.itemLink_c5968264:hover{outline:transparent;position:relative}.itemLink_c5968264.itemLinkIsExpanded_c5968264::after,.itemLink_c5968264:hover::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.itemLink_c5968264.itemLinkIsExpanded_c5968264::-moz-focus-inner,.itemLink_c5968264:hover::-moz-focus-inner{border:0}.itemLink_c5968264.itemLinkIsExpanded_c5968264,.itemLink_c5968264:hover{outline:transparent;position:relative}.itemLink_c5968264.itemLinkIsExpanded_c5968264::after,.itemLink_c5968264:hover::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #000000}}.itemLink_c5968264:hover:not([disabled]){color:#212121;background-color:#eaeaea}.itemLink_c5968264:hover:not([disabled]) .itemIcon_c5968264{color:#005a9e}.itemLink_c5968264:hover:not([disabled]) .itemChevronDown_c5968264{color:#3c3c3c}.itemLink_c5968264:hover:not([disabled]) .itemOverflow_c5968264{color:#212121}.itemLink_c5968264.itemLinkIsExpanded_c5968264{background-color:#dadada;color:#000000}.itemLink_c5968264.itemLinkIsExpanded_c5968264 .itemIcon_c5968264{color:#004578}.itemLink_c5968264.itemLinkIsExpanded_c5968264 .itemChevronDown_c5968264{color:#212121}.itemLink_c5968264.itemLinkIsExpanded_c5968264 .itemOverflow_c5968264{color:#000000}.itemLink_c5968264.itemLinkIsExpanded_c5968264:hover{background-color:#d0d0d0}.itemLink_c5968264[disabled]{color:#c8c8c8;cursor:default;pointer-events:none}.itemLink_c5968264[disabled] .itemIcon_c5968264{color:#c8c8c8}.itemIcon_c5968264{font-size:16px;padding:0 4px}.itemIconColor_c5968264{color:#106ebe}.itemChevronDown_c5968264{color:#666666;font-size:12px}.itemOverflow_c5968264{font-size:18px;color:#333333;padding:0 7px}.search_c5968264{width:208px;max-width:208px;background-color:#ffffff;color:#333333;height:40px;position:relative;box-sizing:border-box;border-color:transparent}html[dir=ltr] .search_c5968264{float:left}html[dir=rtl] .search_c5968264{float:right}html[dir=ltr] .search_c5968264{border-right:1px solid #eaeaea}html[dir=rtl] .search_c5968264{border-left:1px solid #eaeaea}@media screen and (-ms-high-contrast:active){.search_c5968264{z-index:10}html[dir=ltr] .search_c5968264{border-right:1px solid #ffffff}html[dir=rtl] .search_c5968264{border-left:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){html[dir=ltr] .search_c5968264{border-right:1px solid #000000}html[dir=rtl] .search_c5968264{border-left:1px solid #000000}}.search_c5968264:before{position:absolute;content:' ';right:0;bottom:0;left:0;margin:0 8px;border-bottom:1px solid #eaeaea}.search_c5968264:hover{color:#0078d7}@media screen and (-ms-high-contrast:active){.search_c5968264:hover::-moz-focus-inner{border:0}.search_c5968264:hover{outline:transparent;position:relative}.search_c5968264:hover::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.search_c5968264:hover::-moz-focus-inner{border:0}.search_c5968264:hover{outline:transparent;position:relative}.search_c5968264:hover::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #000000}}.searchInput_c5968264{height:40px;padding:8px 8px 8px 0;border:none;background-color:transparent;width:100%;box-sizing:border-box;outline:0;cursor:pointer;font-size:14px;-webkit-appearance:none;-webkit-border-radius:0}html[dir=ltr] .searchInput_c5968264{border-left:42px solid transparent}html[dir=rtl] .searchInput_c5968264{border-right:42px solid transparent}@media screen and (-ms-high-contrast:active){html[dir=ltr] .searchInput_c5968264{border-left:40px solid #000000}html[dir=rtl] .searchInput_c5968264{border-right:40px solid #000000}}@media screen and (-ms-high-contrast:black-on-white){html[dir=ltr] .searchInput_c5968264{border-left:40px solid #ffffff}html[dir=rtl] .searchInput_c5968264{border-right:40px solid #ffffff}}.searchInput_c5968264::-ms-clear{display:none}.searchIconSearchWrapper_c5968264{display:block}.searchIconArrowWrapper_c5968264{display:none}.searchIconArrowWrapper_c5968264,.searchIconSearchWrapper_c5968264{top:0}html[dir=ltr] .searchIconArrowWrapper_c5968264,html[dir=ltr] .searchIconSearchWrapper_c5968264{padding-left:17px}html[dir=rtl] .searchIconArrowWrapper_c5968264,html[dir=rtl] .searchIconSearchWrapper_c5968264{padding-right:17px}html[dir=ltr] .searchIconArrowWrapper_c5968264,html[dir=ltr] .searchIconSearchWrapper_c5968264{padding-right:8px}html[dir=rtl] .searchIconArrowWrapper_c5968264,html[dir=rtl] .searchIconSearchWrapper_c5968264{padding-left:8px}.searchIconClearWrapper_c5968264{display:none;top:1px;z-index:10}html[dir=ltr] .searchIconClearWrapper_c5968264{right:0}html[dir=rtl] .searchIconClearWrapper_c5968264{left:0}.searchIconWrapper_c5968264{height:40px;line-height:40px;cursor:pointer;position:absolute;text-align:center}.search_c5968264 .ms-Icon:before{font-size:16px;color:#0078d7}.searchInput_c5968264,.searchInput_c5968264::-webkit-input-placeholder{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px}--><!--.root_80ecb764{box-sizing:border-box;margin:0;padding:0;box-shadow:none;margin-bottom:17px}.textField_80ecb764{position:relative}.textField_80ecb764 input::-ms-clear{display:none}.textField_80ecb764 input[readonly]{cursor:pointer}.eventWithLabel_80ecb764{color:#666666;font-size:20px;line-height:20px;pointer-events:none;position:absolute;bottom:5px}html[dir=ltr] .eventWithLabel_80ecb764{right:9px}html[dir=rtl] .eventWithLabel_80ecb764{left:9px}.eventWithoutLabel_80ecb764{color:#666666;font-size:20px;line-height:20px;pointer-events:none;position:absolute;top:7px}html[dir=ltr] .eventWithoutLabel_80ecb764{right:9px}html[dir=rtl] .eventWithoutLabel_80ecb764{left:9px}--><!--.root_bc6aaf09{line-height:1;width:24px;height:24px;vertical-align:top;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.root_bc6aaf09.rootIsChecked_bc6aaf09 .background_bc6aaf09:before{color:#0078d7}.root_bc6aaf09.rootIsChecked_bc6aaf09 .background_bc6aaf09:after{color:#ffffff}.root_bc6aaf09.rootIsChecked_bc6aaf09 .check_bc6aaf09{opacity:1;color:#ffffff;font-weight:900;font-size:12px}.root_bc6aaf09:hover .check_bc6aaf09{opacity:1}.check_bc6aaf09{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;color:#c8c8c8;opacity:0}.background_bc6aaf09{position:relative;height:24px;width:24px}.background_bc6aaf09:before{content:'\E91F';color:#ffffff}.background_bc6aaf09:after{content:'\EA3A';color:#c8c8c8}.background_bc6aaf09:after,.background_bc6aaf09:before{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-size:24px;height:24px;width:24px;position:absolute}--><!--.root_0e8cb6cd{display:inline-block}--><!--.root_3e5aae20{display:inline-block;min-width:100%;vertical-align:top;height:36px;line-height:36px;white-space:nowrap;padding-bottom:1px;border-bottom:1px solid #eaeaea;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.root_3e5aae20.rootIsSelectAllHidden_3e5aae20 .cell_3e5aae20.cellIsCheck_3e5aae20{visibility:hidden}.cell_3e5aae20.cellIsCheck_3e5aae20 .ms-Check-background{opacity:0}.cell_3e5aae20.cellIsCheck_3e5aae20:hover .ms-Check-background,.root_3e5aae20.rootIsAllSelected_3e5aae20 .ms-Check-background{opacity:1}.cellWrapper_3e5aae20{display:inline-block;position:relative}.cell_3e5aae20{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;background:0 0;color:#c8c8c8;font-weight:400;position:relative;display:inline-block;box-sizing:border-box;padding:0 8px;border:none;line-height:inherit;margin:0;height:36px;vertical-align:top;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cell_3e5aae20::-moz-focus-inner{border:0}.cell_3e5aae20{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .cell_3e5aae20:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .cell_3e5aae20{text-align:left}html[dir=rtl] .cell_3e5aae20{text-align:right}html[dir=ltr] .cell_3e5aae20{text-align:left}html[dir=rtl] .cell_3e5aae20{text-align:right}.cell_3e5aae20.cellIsCheck_3e5aae20{position:relative;padding:6px;margin:0}.cell_3e5aae20.cellIsActionable_3e5aae20{color:#666666}.cell_3e5aae20.cellIsActionable_3e5aae20:hover{color:#333333;background:#f8f8f8}.cell_3e5aae20.cellIsActionable_3e5aae20:active{background:#eaeaea}.cell_3e5aae20.cellIsSizer_3e5aae20{position:absolute;width:16px;cursor:ew-resize;bottom:0;top:0;height:inherit;background:0 0}html[dir=ltr] .cell_3e5aae20.cellIsSizer_3e5aae20{margin-left:-10px}html[dir=rtl] .cell_3e5aae20.cellIsSizer_3e5aae20{margin-right:-10px}.cell_3e5aae20.cellIsEmpty_3e5aae20{text-overflow:clip}.cell_3e5aae20.cellIsSizer_3e5aae20:after{content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:#c8c8c8;opacity:0}.cell_3e5aae20.cellIsSizer_3e5aae20.cellIsResizing_3e5aae20:after,.cell_3e5aae20.cellIsSizer_3e5aae20:hover:after{opacity:1;transition:opacity .3s linear}.collapseButton_3e5aae20{text-align:center;-webkit-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear;width:20px;outline:0}.collapseButton_3e5aae20.collapseButtonIsCollapsed_3e5aae20{-webkit-transform:rotate(0);transform:rotate(0)}.cell_3e5aae20 .nearIcon_3e5aae20{color:#666666;opacity:1}html[dir=ltr] .cell_3e5aae20 .nearIcon_3e5aae20{padding-right:4px}html[dir=rtl] .cell_3e5aae20 .nearIcon_3e5aae20{padding-left:4px}.cell_3e5aae20 .filterChevron_3e5aae20{color:#a6a6a6;vertical-align:middle}html[dir=ltr] .cell_3e5aae20 .filterChevron_3e5aae20{padding-left:4px}html[dir=rtl] .cell_3e5aae20 .filterChevron_3e5aae20{padding-right:4px}.sizingOverlay_3e5aae20{position:absolute;left:0;top:0;right:0;bottom:0;cursor:ew-resize;background:rgba(255,255,255,0)}html[dir=ltr] .cell_3e5aae20 .collapseButton_3e5aae20{padding-right:0}html[dir=rtl] .cell_3e5aae20 .collapseButton_3e5aae20{padding-left:0}--><!--.root_3d8e3150{display:inline-block;min-width:100%;min-height:36px;margin:1px 0;vertical-align:top;white-space:nowrap;padding:0;box-sizing:border-box;background:0 0;border:none;vertical-align:top;line-height:16px}.root_3d8e3150::-moz-focus-inner{border:0}.root_3d8e3150{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_3d8e3150:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .root_3d8e3150{text-align:left}html[dir=rtl] .root_3d8e3150{text-align:right}.root_3d8e3150:hover{background:#f4f4f4}.rootIsSelected_3d8e3150{background:#d0d0d0}.rootIsSelected_3d8e3150:hover{background:#dadada}.rootIsContentUnselectable_3d8e3150{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.cell_3d8e3150{display:inline-block;position:relative;box-sizing:border-box;padding:10px 0;margin:0 8px;min-height:36px;vertical-align:top;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cell_3d8e3150>button{max-width:100%}.isMultiline_3d8e3150{white-space:normal;word-break:break-word;text-overflow:clip}.fields_3d8e3150{display:inline-block}.check_3d8e3150{display:inline-block;cursor:default;padding:6px;box-sizing:border-box;vertical-align:top;background:0 0;border:none;opacity:0}.check_3d8e3150::-moz-focus-inner{border:0}.check_3d8e3150{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .check_3d8e3150:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.checkDisabled_3d8e3150{visibility:hidden}.rootIsCheckVisible_3d8e3150 .check_3d8e3150,.rootIsSelected_3d8e3150 .check_3d8e3150,.root_3d8e3150:hover .check_3d8e3150{opacity:1}.cellMeasurer_3d8e3150 .cell_3d8e3150{overflow:visible;white-space:nowrap}.checkSpacer_3d8e3150{display:inline-block;height:20px;width:20px}--><!--.root_d0adda33{position:relative;padding:10px 84px;cursor:pointer}.root_d0adda33 .ms-Link{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px}--><!--@-webkit-keyframes spinAnimation_5328356c{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinAnimation_5328356c{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.root_5328356c>.circle_5328356c{margin:auto;box-sizing:border-box;border-radius:50%;width:100%;height:100%;border:1.5px solid #c7e0f4;border-top-color:#0078d7;-webkit-animation:spinAnimation_5328356c 1.3s infinite cubic-bezier(.53,.21,.29,.67);animation:spinAnimation_5328356c 1.3s infinite cubic-bezier(.53,.21,.29,.67)}.root_5328356c>.circle_5328356c.circleIsXSmall_5328356c{width:12px;height:12px}.root_5328356c>.circle_5328356c.circleIsSmall_5328356c{width:16px;height:16px}.root_5328356c>.circle_5328356c.circleIsMedium_5328356c,.root_5328356c>.circle_5328356c.circleIsTypeMedium_5328356c{width:20px;height:20px}.root_5328356c>.circle_5328356c.circleIsLarge_5328356c,.root_5328356c>.circle_5328356c.circleIsTypeLarge_5328356c{width:28px;height:28px}.root_5328356c .label_5328356c{color:#0078d7;margin-top:10px;text-align:center}.root_5328356c .screenReaderOnly_5328356c{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media screen and (-ms-high-contrast:active){.root_5328356c>.circle_5328356c{border-top-style:none}}--><!--.root_ad643f53{cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.root_ad643f53::-moz-focus-inner{border:0}.root_ad643f53{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_ad643f53:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.root_ad643f53:hover{background:#eff6fc}.root_ad643f53.rootIsSelected_ad643f53{background:#deecf9}.root_ad643f53.rootIsSelected_ad643f53:hover{background:#c7e0f4}.check_ad643f53,.expand_ad643f53{display:inline-block;cursor:default;padding:6px;-webkit-transform:translateY(50%);transform:translateY(50%);margin-top:-12px;box-sizing:border-box;vertical-align:top;background:0 0;border:none;font-size:12px;top:4px}.check_ad643f53::-moz-focus-inner,.expand_ad643f53::-moz-focus-inner{border:0}.check_ad643f53,.expand_ad643f53{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .check_ad643f53:focus:after,.ms-Fabric.is-focusVisible .expand_ad643f53:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.check_ad643f53{opacity:0;margin-top:-10px}.check_ad643f53:focus{opacity:1}.root_ad643f53.rootIsSelected_ad643f53 .check_ad643f53,.root_ad643f53:hover .check_ad643f53{opacity:1}.title_ad643f53{padding:14px 6px;display:inline-block;cursor:pointer;outline:0}.expand_ad643f53{width:36px;height:40px;color:#666666}.expand_ad643f53 .ms-Icon{-webkit-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}.expand_ad643f53 .ms-Icon.expandIsCollapsed_ad643f53{-webkit-transform:rotate(0);transform:rotate(0)}.loading_ad643f53{display:inline-block;visibility:hidden;opacity:0;padding:0 16px;vertical-align:middle;transition:visibility 367ms,opacity 367ms}.loading_ad643f53.loadingIsVisible_ad643f53{visibility:visible;opacity:1}.dropIcon_ad643f53{display:inline-block;position:relative;top:-16px;font-size:20px;color:#767676;transition:opacity 467ms cubic-bezier(.39,.575,.565,1),-webkit-transform 267ms cubic-bezier(.6,-.28,.735,.045);transition:transform 267ms cubic-bezier(.6,-.28,.735,.045),opacity 467ms cubic-bezier(.39,.575,.565,1);transition:transform 267ms cubic-bezier(.6,-.28,.735,.045),opacity 467ms cubic-bezier(.39,.575,.565,1),-webkit-transform 267ms cubic-bezier(.6,-.28,.735,.045);opacity:0;-webkit-transform:rotate(.2deg) scale(.65);transform:rotate(.2deg) scale(.65);-webkit-transform-origin:10px 10px;transform-origin:10px 10px}html[dir=ltr] .dropIcon_ad643f53{left:-26px}html[dir=rtl] .dropIcon_ad643f53{right:-26px}.dropIcon_ad643f53 .ms-Icon--Tag{position:absolute}.ms-GroupedList-group.is-dropping>.root_ad643f53 .dropIcon_ad643f53{transition:opacity 167ms cubic-bezier(.39,.575,.565,1),-webkit-transform 467ms cubic-bezier(.075,.82,.165,1);transition:transform 467ms cubic-bezier(.075,.82,.165,1),opacity 167ms cubic-bezier(.39,.575,.565,1);transition:transform 467ms cubic-bezier(.075,.82,.165,1),opacity 167ms cubic-bezier(.39,.575,.565,1),-webkit-transform 467ms cubic-bezier(.075,.82,.165,1);transition-delay:367ms;opacity:1;-webkit-transform:rotate(.2deg) scale(1);transform:rotate(.2deg) scale(1)}.ms-GroupedList-group.is-dropping .check_ad643f53{opacity:0}--><!--.root_9b1b313e{position:relative;font-size:12px}.root_9b1b313e BUTTON{font-family:inherit;background-color:transparent}.group_9b1b313e{transition:background-color 267ms cubic-bezier(.445,.05,.55,.95)}.groupIsDropping_9b1b313e{background-color:#eaeaea}.root_9b1b313e .ms-List-cell{min-height:38px}--><!--.root_3e55d798{position:relative;font-size:12px;background:0 0;color:#333333}.focusZone_3e55d798{display:inline-block;vertical-align:top;min-width:100%;min-height:1px}.rootIsHorizontalConstrained_3e55d798{overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch}.root_3e55d798 .ms-List-cell{min-height:38px;word-break:break-word}--><!--.root_f22ef814{background-color:rgba(255,255,255,.4);position:absolute;bottom:0;left:0;right:0;top:0}.root_f22ef814.rootIsNone_f22ef814{visibility:hidden}.root_f22ef814.rootIsDark_f22ef814{background-color:rgba(0,0,0,.4)}--><!--.root_39c95f97{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;background-color:transparent;position:fixed;height:100%;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity 267ms}.root_39c95f97 .ms-Button.ms-Button--compound{display:block}html[dir=ltr] .root_39c95f97 .ms-Button.ms-Button--compound{margin-left:0}html[dir=rtl] .root_39c95f97 .ms-Button.ms-Button--compound{margin-right:0}@media screen and (-ms-high-contrast:active){.root_39c95f97 .ms-Overlay{opacity:0}}.rootIsVisible_39c95f97{opacity:1;pointer-events:auto}.main_39c95f97{box-shadow:0 0 5px 0 rgba(0,0,0,.4);background-color:#ffffff;box-sizing:border-box;position:relative;outline:3px solid transparent;max-height:100%;overflow-y:auto}html[dir=ltr] .main_39c95f97{text-align:left}html[dir=rtl] .main_39c95f97{text-align:right}--><!--.isOpen_49e4f91a{display:-webkit-box;display:-ms-flexbox;display:flex}.main_49e4f91a{width:288px}.button_49e4f91a.isClose_49e4f91a{display:none}.button_49e4f91a.isClose_49e4f91a .ms-Icon.ms-Icon--Cancel{color:#666666;font-size:16px}.inner_49e4f91a{padding:0 28px 20px}.header_49e4f91a{position:relative;width:100%;box-sizing:border-box}.title_49e4f91a{margin:0;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;padding:20px 36px 20px 28px}html[dir=rtl] .title_49e4f91a{padding:20px 28px 20px 36px}.topButton_49e4f91a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;top:0;padding:12px 12px 0 0}html[dir=ltr] .topButton_49e4f91a{right:0}html[dir=rtl] .topButton_49e4f91a{left:0}html[dir=rtl] .topButton_49e4f91a{padding:12px 0 0 12px}.topButton_49e4f91a>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.content_49e4f91a{position:relative;width:100%}.content_49e4f91a .ms-Button.ms-Button--compound{margin-bottom:20px}.content_49e4f91a .ms-Button.ms-Button--compound:last-child{margin-bottom:0}.subText_49e4f91a{margin:0 0 20px 0;padding-top:8px;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#333333;font-weight:300;line-height:1.5}.actions_49e4f91a{position:relative;width:100%;min-height:24px;line-height:24px;margin:20px 0 0;font-size:0}.actions_49e4f91a .ms-Button{line-height:normal}.actionsRight_49e4f91a{font-size:0}html[dir=ltr] .actionsRight_49e4f91a{text-align:right}html[dir=rtl] .actionsRight_49e4f91a{text-align:left}html[dir=ltr] .actionsRight_49e4f91a{margin-right:-4px}html[dir=rtl] .actionsRight_49e4f91a{margin-left:-4px}.actionsRight_49e4f91a .action_49e4f91a{margin:0 4px}.isClose_49e4f91a:not(.isLargeHeader_49e4f91a) .button_49e4f91a.isClose_49e4f91a{display:block}.isMultiline_49e4f91a .title_49e4f91a{font-size:28px}.isMultiline_49e4f91a .inner_49e4f91a{padding:0 20px 20px}.isLargeHeader_49e4f91a .header_49e4f91a{background-color:#0078d7}.isLargeHeader_49e4f91a .title_49e4f91a{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:28px;font-weight:100;color:#ffffff;padding:26px 28px 28px;margin-bottom:8px}.isLargeHeader_49e4f91a .subText_49e4f91a{font-size:14px}@media (min-width:480px){.main_49e4f91a{width:auto;min-width:288px;max-width:340px}}--><!--.root_788939a4{-webkit-font-smoothing:antialiased;background-color:#ffffff;border:1px solid #eaeaea;box-sizing:border-box;max-width:320px;min-width:206px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative}.rootIsActionable_788939a4:hover{cursor:pointer;border-color:#c8c8c8}.rootIsActionable_788939a4:hover:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid #c8c8c8;pointer-events:none}.location_788939a4+.title_788939a4{padding-top:4px}.rootIsCompact_788939a4{border-bottom:2px solid #a6a6a6;display:-webkit-box;display:-ms-flexbox;display:flex;max-width:480px;height:109px}.rootIsCompact_788939a4 .ms-DocumentCard-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.rootIsCompact_788939a4 .preview_788939a4{border-bottom:none;max-height:106px;max-width:144px}.rootIsCompact_788939a4 .preview_788939a4 .icon_788939a4 .ms-Image-image{max-height:32px;max-width:32px}html[dir=ltr] .rootIsCompact_788939a4 .preview_788939a4{border-right:1px solid #eaeaea}html[dir=rtl] .rootIsCompact_788939a4 .preview_788939a4{border-left:1px solid #eaeaea}.rootIsCompact_788939a4 .title_788939a4{padding:12px 16px 8px 16px;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:15px;font-weight:400;line-height:16px}.rootIsCompact_788939a4 .activity_788939a4{padding-bottom:12px}.actions_788939a4{height:34px;padding:4px 12px;position:relative}.action_788939a4{color:#666666;cursor:pointer}html[dir=ltr] .action_788939a4{float:left}html[dir=rtl] .action_788939a4{float:right}html[dir=ltr] .action_788939a4{margin-right:4px}html[dir=rtl] .action_788939a4{margin-left:4px}.action_788939a4 .ms-Button{font-size:16px;height:34px;width:34px}.action_788939a4 .ms-Button:hover .ms-Button-icon{color:#1174c3;cursor:pointer}.views_788939a4{line-height:34px}html[dir=ltr] .views_788939a4{text-align:right}html[dir=rtl] .views_788939a4{text-align:left}.views_788939a4 .ms-Icon{font-size:16px;vertical-align:top}html[dir=ltr] .views_788939a4 .ms-Icon{margin-right:4px}html[dir=rtl] .views_788939a4 .ms-Icon{margin-left:4px}.activity_788939a4{padding:8px 16px;position:relative}html[dir=ltr] .activityIsMultiplePeople_788939a4 .avatar_788939a4:nth-of-type(2){margin-left:-16px}html[dir=rtl] .activityIsMultiplePeople_788939a4 .avatar_788939a4:nth-of-type(2){margin-right:-16px}html[dir=ltr] .activityIsMultiplePeople_788939a4 .activityDetails_788939a4{left:72px}html[dir=rtl] .activityIsMultiplePeople_788939a4 .activityDetails_788939a4{right:72px}.avatars_788939a4{height:32px}html[dir=ltr] .avatars_788939a4{margin-left:-2px}html[dir=rtl] .avatars_788939a4{margin-right:-2px}.avatar_788939a4{display:inline-block;vertical-align:top;position:relative;text-align:center;width:32px;height:32px}.avatar_788939a4:after{content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border:2px solid #fafafa;border-radius:50%}.activityDetails_788939a4{height:32px;position:absolute;top:8px;width:calc(100% - 72px)}html[dir=ltr] .activityDetails_788939a4{left:56px}html[dir=rtl] .activityDetails_788939a4{right:56px}.activityActivity_788939a4,.name_788939a4{display:block;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#767676;line-height:15px;height:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.name_788939a4{color:#333333;font-weight:600}.location_788939a4{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;color:#333333;display:block;padding:8px 16px;position:relative;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.location_788939a4:hover{color:#0078d7;cursor:pointer}.preview_788939a4{border-bottom:2px solid #a6a6a6;position:relative;background-color:#f8f8f8;overflow:hidden}.preview_788939a4.previewIsFileList_788939a4{background-color:#ffffff}.icon_788939a4{bottom:10px;position:absolute}html[dir=ltr] .icon_788939a4{left:10px}html[dir=rtl] .icon_788939a4{right:10px}.fileList_788939a4{padding:16px 16px 0 16px;list-style-type:none;margin:0}html[dir=rtl] .fileList_788939a4{padding:16px 16px 0 16px}.fileList_788939a4 li{height:16px;line-height:16px;margin-bottom:8px;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}html[dir=ltr] .fileList_788939a4 li{padding-left:24px}html[dir=rtl] .fileList_788939a4 li{padding-right:24px}.fileList_788939a4 a{font-size:12px;text-decoration:none;color:#212121}.fileList_788939a4 a:hover{color:#0078d7}.fileListIcon_788939a4{position:absolute;top:0}html[dir=ltr] .fileListIcon_788939a4{left:0}html[dir=rtl] .fileListIcon_788939a4{right:0}.fileListMore_788939a4{padding:0 16px 8px 16px;display:block;font-size:12px}html[dir=rtl] .fileListMore_788939a4{padding:0 16px 8px 16px}.title_788939a4{padding:8px 16px;display:block;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:17px;font-weight:300;color:#333333;height:38px;line-height:21px;overflow:hidden;word-wrap:break-word}--><!--.root_46a0fb85{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0;padding:0;box-shadow:none;color:#333333;font-size:14px;font-weight:400;line-height:1;position:relative;height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.root_46a0fb85 .contextualHost_46a0fb85{display:none}.imageArea_46a0fb85{position:relative;overflow:hidden;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 48px;flex:0 0 48px;height:48px;width:48px;border-radius:50%}@media screen and (-ms-high-contrast:active){.imageArea_46a0fb85{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.imageArea_46a0fb85{border:1px solid #000000}}.imageArea_46a0fb85 .image_46a0fb85{border:0}.placeholder_46a0fb85{color:#ffffff;position:absolute;right:0;left:0;font-size:47px;top:9px;z-index:5}.initials_46a0fb85{color:#ffffff;font-size:17px;font-weight:100;line-height:46px;height:48px}.initials_46a0fb85.initialsIsLightBlue_46a0fb85{background-color:#6ba5e7}.initials_46a0fb85.initialsIsBlue_46a0fb85{background-color:#2d89ef}.initials_46a0fb85.initialsIsDarkBlue_46a0fb85{background-color:#2b5797}.initials_46a0fb85.initialsIsTeal_46a0fb85{background-color:#00aba9}.initials_46a0fb85.initialsIsLightGreen_46a0fb85{background-color:#99b433}.initials_46a0fb85.initialsIsGreen_46a0fb85{background-color:#00a300}.initials_46a0fb85.initialsIsDarkGreen_46a0fb85{background-color:#1e7145}.initials_46a0fb85.initialsIsLightPink_46a0fb85{background-color:#e773bd}.initials_46a0fb85.initialsIsPink_46a0fb85{background-color:#ff0097}.initials_46a0fb85.initialsIsMagenta_46a0fb85{background-color:#7e3878}.initials_46a0fb85.initialsIsPurple_46a0fb85{background-color:#603cba}.initials_46a0fb85.initialsIsBlack_46a0fb85{background-color:#1d1d1d}.initials_46a0fb85.initialsIsOrange_46a0fb85{background-color:#da532c}.initials_46a0fb85.initialsIsRed_46a0fb85{background-color:#e11}.initials_46a0fb85.initialsIsDarkRed_46a0fb85{background-color:#b91d47}.image_46a0fb85{position:absolute;top:0;width:100%;height:100%;border-radius:50%;-webkit-perspective:1px;perspective:1px}html[dir=ltr] .image_46a0fb85{margin-right:10px}html[dir=rtl] .image_46a0fb85{margin-left:10px}html[dir=ltr] .image_46a0fb85{left:0}html[dir=rtl] .image_46a0fb85{right:0}.image_46a0fb85[src=""]{display:none}.presence_46a0fb85{background-color:#7fba00;position:absolute;height:12px;width:12px;border-radius:50%;top:auto;bottom:-1px;border:2px solid #ffffff;text-align:center;box-sizing:content-box;-ms-high-contrast-adjust:none}html[dir=ltr] .presence_46a0fb85{left:34px}html[dir=rtl] .presence_46a0fb85{right:34px}@media screen and (-ms-high-contrast:active){.presence_46a0fb85{border-color:#000000;color:#000000;background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.presence_46a0fb85{border-color:#ffffff;color:#ffffff;background-color:#000000}}.presence_46a0fb85 .presenceIcon_46a0fb85{color:#ffffff;font-size:8px;line-height:12px;vertical-align:top}@media screen and (-ms-high-contrast:active){.presence_46a0fb85 .presenceIcon_46a0fb85{color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.presence_46a0fb85 .presenceIcon_46a0fb85{color:#ffffff}}.details_46a0fb85{padding:0 24px 0 12px;min-width:0;width:100%}html[dir=rtl] .details_46a0fb85{padding:0 12px 0 24px}html[dir=ltr] .details_46a0fb85{text-align:left}html[dir=rtl] .details_46a0fb85{text-align:right}.optionalText_46a0fb85,.primaryText_46a0fb85,.secondaryText_46a0fb85,.tertiaryText_46a0fb85,.textContent_46a0fb85{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.primaryText_46a0fb85{color:#333333;font-weight:400;font-size:17px;margin-top:-3px;line-height:1.4}.optionalText_46a0fb85,.secondaryText_46a0fb85,.tertiaryText_46a0fb85{color:#666666;font-weight:400;font-size:12px;white-space:nowrap;line-height:1.3}.secondaryText_46a0fb85{padding-top:3px}.optionalText_46a0fb85,.tertiaryText_46a0fb85{padding-top:5px;display:none}.root_46a0fb85.rootIsTiny_46a0fb85{height:30px;min-width:30px}.root_46a0fb85.rootIsTiny_46a0fb85 .imageArea_46a0fb85{overflow:visible;background:0 0;height:0;width:0}.root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{top:10px;border:0}html[dir=ltr] .root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{right:auto}html[dir=rtl] .root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{left:auto}html[dir=ltr] .root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{left:0}html[dir=rtl] .root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{right:0}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{top:9px;border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsTiny_46a0fb85 .presence_46a0fb85{border:1px solid #000000}}html[dir=ltr] .root_46a0fb85.rootIsTiny_46a0fb85 .details_46a0fb85{padding-left:20px}html[dir=rtl] .root_46a0fb85.rootIsTiny_46a0fb85 .details_46a0fb85{padding-right:20px}.root_46a0fb85.rootIsTiny_46a0fb85 .primaryText_46a0fb85{font-size:14px;padding-top:4px}.root_46a0fb85.rootIsTiny_46a0fb85 .secondaryText_46a0fb85{display:none}.root_46a0fb85.rootIsTiny_46a0fb85.rootIsReadonly_46a0fb85{padding:0;background-color:transparent}.root_46a0fb85.rootIsTiny_46a0fb85.rootIsReadonly_46a0fb85 .primaryText_46a0fb85:after{content:';'}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85{height:24px;line-height:24px;min-width:24px;margin-right:4px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 24px;flex:0 0 24px;height:24px;width:24px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .placeholder_46a0fb85{font-size:18px;top:4px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .initials_46a0fb85{font-size:11px;height:24px;line-height:24px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .presence_46a0fb85{height:8px;width:8px;border:4px solid #fff}html[dir=ltr] .root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .presence_46a0fb85{left:16px}html[dir=rtl] .root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .presence_46a0fb85{right:16px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .presenceIcon_46a0fb85{font-size:6px;line-height:9px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .primaryText_46a0fb85{font-size:14px;padding-top:3px}.root_46a0fb85.rootIsExtraExtraSmall_46a0fb85 .secondaryText_46a0fb85{display:none}.root_46a0fb85.rootIs28_46a0fb85{height:28px;line-height:28px;min-width:28px}.root_46a0fb85.rootIs28_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIs28_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 28px;flex:0 0 28px;height:28px;width:28px}.root_46a0fb85.rootIs28_46a0fb85 .placeholder_46a0fb85{font-size:18px;top:4px}.root_46a0fb85.rootIs28_46a0fb85 .initials_46a0fb85{font-size:11px;height:28px;line-height:28px}.root_46a0fb85.rootIs28_46a0fb85 .presence_46a0fb85{height:8px;width:8px;border:4px solid #fff}html[dir=ltr] .root_46a0fb85.rootIs28_46a0fb85 .presence_46a0fb85{left:16px}html[dir=rtl] .root_46a0fb85.rootIs28_46a0fb85 .presence_46a0fb85{right:16px}.root_46a0fb85.rootIs28_46a0fb85 .presenceIcon_46a0fb85{font-size:6px;line-height:9px}.root_46a0fb85.rootIs28_46a0fb85 .primaryText_46a0fb85{font-size:14px;padding-top:3px}.root_46a0fb85.rootIs28_46a0fb85 .secondaryText_46a0fb85{display:none}.root_46a0fb85.rootIsExtraSmall_46a0fb85{height:32px;line-height:32px;min-width:32px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsExtraSmall_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 32px;flex:0 0 32px;height:32px;width:32px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .placeholder_46a0fb85{font-size:28px;top:6px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .initials_46a0fb85{font-size:14px;height:32px;line-height:32px}html[dir=ltr] .root_46a0fb85.rootIsExtraSmall_46a0fb85 .presence_46a0fb85{left:19px}html[dir=rtl] .root_46a0fb85.rootIsExtraSmall_46a0fb85 .presence_46a0fb85{right:19px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .primaryText_46a0fb85{font-size:14px;padding-top:3px}.root_46a0fb85.rootIsExtraSmall_46a0fb85 .secondaryText_46a0fb85{display:none}.root_46a0fb85.rootIsSmall_46a0fb85{height:40px;line-height:40px;min-width:40px}.root_46a0fb85.rootIsSmall_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsSmall_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 40px;flex:0 0 40px;height:40px;width:40px}.root_46a0fb85.rootIsSmall_46a0fb85 .placeholder_46a0fb85{font-size:38px;top:5px}.root_46a0fb85.rootIsSmall_46a0fb85 .initials_46a0fb85{font-size:14px;height:40px;line-height:40px}html[dir=ltr] .root_46a0fb85.rootIsSmall_46a0fb85 .presence_46a0fb85{left:27px}html[dir=rtl] .root_46a0fb85.rootIsSmall_46a0fb85 .presence_46a0fb85{right:27px}.root_46a0fb85.rootIsSmall_46a0fb85 .primaryText_46a0fb85{font-size:14px}.root_46a0fb85.rootIsSmall_46a0fb85 .primaryText_46a0fb85,.root_46a0fb85.rootIsSmall_46a0fb85 .secondaryText_46a0fb85{padding-top:1px}.root_46a0fb85.rootIsLarge_46a0fb85{height:72px;line-height:72px;min-width:72px}.root_46a0fb85.rootIsLarge_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsLarge_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 72px;flex:0 0 72px;height:72px;width:72px}.root_46a0fb85.rootIsLarge_46a0fb85 .placeholder_46a0fb85{font-size:67px;top:10px}.root_46a0fb85.rootIsLarge_46a0fb85 .initials_46a0fb85{font-size:28px;height:72px;line-height:70px}.root_46a0fb85.rootIsLarge_46a0fb85 .presence_46a0fb85{height:20px;width:20px;border-width:3px}html[dir=ltr] .root_46a0fb85.rootIsLarge_46a0fb85 .presence_46a0fb85{left:49px}html[dir=rtl] .root_46a0fb85.rootIsLarge_46a0fb85 .presence_46a0fb85{right:49px}.root_46a0fb85.rootIsLarge_46a0fb85 .presenceIcon_46a0fb85{line-height:20px;font-size:14px}.root_46a0fb85.rootIsLarge_46a0fb85 .secondaryText_46a0fb85{padding-top:3px}.root_46a0fb85.rootIsLarge_46a0fb85 .tertiaryText_46a0fb85{padding-top:5px;display:block}.root_46a0fb85.rootIsExtraLarge_46a0fb85{height:100px;line-height:100px;min-width:100px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .imageArea_46a0fb85,.root_46a0fb85.rootIsExtraLarge_46a0fb85 .image_46a0fb85{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;height:100px;width:100px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .placeholder_46a0fb85{font-size:95px;top:12px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .initials_46a0fb85{font-size:42px;height:100px;line-height:96px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .presence_46a0fb85{height:28px;width:28px;border-width:4px}html[dir=ltr] .root_46a0fb85.rootIsExtraLarge_46a0fb85 .presence_46a0fb85{left:71px}html[dir=rtl] .root_46a0fb85.rootIsExtraLarge_46a0fb85 .presence_46a0fb85{right:71px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .presenceIcon_46a0fb85{line-height:28px;font-size:21px;position:relative;top:1px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .primaryText_46a0fb85{font-size:21px;font-weight:300;margin-top:0}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .secondaryText_46a0fb85{padding-top:2px}.root_46a0fb85.rootIsExtraLarge_46a0fb85 .optionalText_46a0fb85,.root_46a0fb85.rootIsExtraLarge_46a0fb85 .tertiaryText_46a0fb85{padding-top:5px;display:block}.root_46a0fb85.rootIsDarkText_46a0fb85 .primaryText_46a0fb85{color:#212121}.root_46a0fb85.rootIsDarkText_46a0fb85 .optionalText_46a0fb85,.root_46a0fb85.rootIsDarkText_46a0fb85 .secondaryText_46a0fb85,.root_46a0fb85.rootIsDarkText_46a0fb85 .tertiaryText_46a0fb85{color:#333333}.root_46a0fb85.rootIsSelectable_46a0fb85{cursor:pointer;padding:0 10px}.root_46a0fb85.rootIsSelectable_46a0fb85:not(.rootExtraLarge_46a0fb85):focus,.root_46a0fb85.rootIsSelectable_46a0fb85:not(.rootExtraLarge_46a0fb85):hover{background-color:#deecf9;outline:1px solid transparent}.root_46a0fb85.rootIsAvailable_46a0fb85 .presence_46a0fb85{background-color:#7fba00}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsAvailable_46a0fb85 .presence_46a0fb85{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsAvailable_46a0fb85 .presence_46a0fb85{background-color:#600000}}.root_46a0fb85.rootIsAway_46a0fb85 .presence_46a0fb85{background-color:#fcd116}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsAway_46a0fb85 .presence_46a0fb85{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsAway_46a0fb85 .presence_46a0fb85{background-color:#000000}}.root_46a0fb85.rootIsAway_46a0fb85 .presenceIcon_46a0fb85{position:relative}html[dir=ltr] .root_46a0fb85.rootIsAway_46a0fb85 .presenceIcon_46a0fb85{left:1px}html[dir=rtl] .root_46a0fb85.rootIsAway_46a0fb85 .presenceIcon_46a0fb85{right:1px}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85{background-color:#ffffff}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{content:'';width:100%;height:100%;position:absolute;top:0;box-shadow:0 0 0 2px #d93b3b inset;border-radius:50%}html[dir=ltr] .root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{left:0}html[dir=rtl] .root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{right:0}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{content:'';width:100%;height:2px;background-color:#d93b3b;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);position:absolute;top:5px}html[dir=ltr] .root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{left:0}html[dir=rtl] .root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{right:0}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85{color:#0f0;background-color:#000000}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{box-shadow:0 0 0 2px #0f0 inset}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85{color:#600000;background-color:#ffffff}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::before{box-shadow:0 0 0 2px #600000 inset}.root_46a0fb85.rootIsBlocked_46a0fb85 .presence_46a0fb85::after{background-color:#600000}}.root_46a0fb85.rootIsBlocked_46a0fb85.rootIsLarge_46a0fb85 .presence_46a0fb85::after{top:9px}.root_46a0fb85.rootIsBlocked_46a0fb85.rootIsExtraLarge_46a0fb85 .presence_46a0fb85::after{top:13px}.root_46a0fb85.rootIsBusy_46a0fb85 .presence_46a0fb85{background-color:#d93b3b}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsBusy_46a0fb85 .presence_46a0fb85{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsBusy_46a0fb85 .presence_46a0fb85{background-color:#600000}}.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85{background-color:#e81123}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85{color:#000000;background-color:#0f0}.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85::before{background-color:#0f0}.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85::after{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsDoNotDisturb_46a0fb85 .presence_46a0fb85{background-color:#600000}}.root_46a0fb85.rootIsOffline_46a0fb85 .presence_46a0fb85{background-color:#93abbd}@media screen and (-ms-high-contrast:active){.root_46a0fb85.rootIsOffline_46a0fb85 .presence_46a0fb85{background-color:#0f0;box-shadow:0 0 0 1px #ffffff inset}}@media screen and (-ms-high-contrast:black-on-white){.root_46a0fb85.rootIsOffline_46a0fb85 .presence_46a0fb85{background-color:#ffffff;box-shadow:0 0 0 1px #000000 inset}}--><!--.root_f4b03d55{display:none;pointer-events:none;position:absolute;top:0;left:0;right:0;bottom:0}.root_f4b03d55 .overlay_f4b03d55{display:none;pointer-events:none;opacity:1;cursor:pointer;transition:opacity 367ms cubic-bezier(.1,.9,.2,1)}.main_f4b03d55{background-color:#ffffff;position:absolute;width:100%;bottom:0;top:0;display:none;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}html[dir=ltr] .main_f4b03d55{right:0}html[dir=rtl] .main_f4b03d55{left:0}@media (min-width:480px){.main_f4b03d55{border-left:1px solid #eaeaea;border-right:1px solid #eaeaea;pointer-events:auto;width:340px;box-shadow:-30px 0 30px -30px rgba(0,0,0,.2)}html[dir=ltr] .main_f4b03d55{left:auto}html[dir=rtl] .main_f4b03d55{right:auto}}.root_f4b03d55.rootIsSmall_f4b03d55 .main_f4b03d55{width:272px}@media (min-width:480px){.root_f4b03d55.rootIsSmall_f4b03d55 .main_f4b03d55{width:340px}}.root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{width:272px;box-shadow:30px 0 30px -30px rgba(0,0,0,.2)}html[dir=ltr] .root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{right:auto}html[dir=rtl] .root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{left:auto}html[dir=ltr] .root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{left:0}html[dir=rtl] .root_f4b03d55.rootIsSmallLeft_f4b03d55 .main_f4b03d55{right:0}.root_f4b03d55.rootIsSmallFluid_f4b03d55 .main_f4b03d55{width:100%}@media (min-width:640px){.root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55,.root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55,.root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55,.root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{width:auto}html[dir=ltr] .root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55,html[dir=ltr] .root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55,html[dir=ltr] .root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55,html[dir=ltr] .root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{left:48px}html[dir=rtl] .root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55,html[dir=rtl] .root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55,html[dir=rtl] .root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55,html[dir=rtl] .root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{right:48px}}@media (min-width:1024px){.root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55{width:643px}html[dir=ltr] .root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55{left:auto}html[dir=rtl] .root_f4b03d55.rootIsMedium_f4b03d55 .main_f4b03d55{right:auto}}@media (min-width:1366px){html[dir=ltr] .root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55{left:428px}html[dir=rtl] .root_f4b03d55.rootIsLarge_f4b03d55 .main_f4b03d55{right:428px}}@media (min-width:1366px){.root_f4b03d55.rootIsLarge_f4b03d55.rootIsFixed_f4b03d55 .main_f4b03d55{width:940px}html[dir=ltr] .root_f4b03d55.rootIsLarge_f4b03d55.rootIsFixed_f4b03d55 .main_f4b03d55{left:auto}html[dir=rtl] .root_f4b03d55.rootIsLarge_f4b03d55.rootIsFixed_f4b03d55 .main_f4b03d55{right:auto}}@media (min-width:1366px){html[dir=ltr] .root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{left:176px}html[dir=rtl] .root_f4b03d55.rootIsXLarge_f4b03d55 .main_f4b03d55{right:176px}}@media (min-width:1024px){html[dir=ltr] .root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55{left:auto}html[dir=rtl] .root_f4b03d55.rootIsCustom_f4b03d55 .main_f4b03d55{right:auto}}.root_f4b03d55.rootIsOpen_f4b03d55{display:block}.root_f4b03d55.rootIsOpen_f4b03d55 .main_f4b03d55{opacity:1;pointer-events:auto;display:block}.root_f4b03d55.rootIsOpen_f4b03d55 .overlay_f4b03d55{cursor:pointer;display:block;pointer-events:auto}@media screen and (-ms-high-contrast:active){.root_f4b03d55.rootIsOpen_f4b03d55 .overlay_f4b03d55{opacity:0}}.closeButton_f4b03d55{background:0 0;border:0;cursor:pointer;position:absolute;top:0;height:44px;width:44px;line-height:44px;padding:0;color:#666666;font-size:20px}html[dir=ltr] .closeButton_f4b03d55{right:4px}html[dir=rtl] .closeButton_f4b03d55{left:4px}.closeButton_f4b03d55:hover{color:#333333}.contentInner_f4b03d55{position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-overflow-scrolling:touch;-webkit-transform:translateZ(0);transform:translateZ(0)}.rootHasCloseButton_f4b03d55 .contentInner_f4b03d55{top:44px}.content_f4b03d55,.footerInner_f4b03d55,.header_f4b03d55{padding-left:16px;padding-right:16px}@media (min-width:640px){.content_f4b03d55,.footerInner_f4b03d55,.header_f4b03d55{padding-left:32px;padding-right:32px}}@media (min-width:1366px){.content_f4b03d55,.footerInner_f4b03d55,.header_f4b03d55{padding-left:40px;padding-right:40px}}.header_f4b03d55{margin:14px 0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}@media (min-width:1024px){.header_f4b03d55{margin-top:30px}}.content_f4b03d55{margin-bottom:0;overflow-y:auto}.footer_f4b03d55{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;border-top:1px solid transparent;transition:border 367ms cubic-bezier(.1,.25,.75,.9)}.footerInner_f4b03d55{padding-bottom:20px;padding-top:20px}.footerIsSticky_f4b03d55{background:#ffffff;border-top-color:#eaeaea}.headerText_f4b03d55{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100;color:#333333;line-height:32px;margin:0}--><!--.root_ca4b5a14{box-sizing:border-box;margin:0;padding:0;box-shadow:none;font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#333333;margin-bottom:10px;position:relative;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.root_ca4b5a14:active .caretDown_ca4b5a14,.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:focus .caretDown_ca4b5a14,.root_ca4b5a14:focus .title_ca4b5a14,.root_ca4b5a14:hover .caretDown_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{color:#000000}@media screen and (-ms-high-contrast:active){.root_ca4b5a14:active .caretDown_ca4b5a14,.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:focus .caretDown_ca4b5a14,.root_ca4b5a14:focus .title_ca4b5a14,.root_ca4b5a14:hover .caretDown_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14:active .caretDown_ca4b5a14,.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:focus .caretDown_ca4b5a14,.root_ca4b5a14:focus .title_ca4b5a14,.root_ca4b5a14:hover .caretDown_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{color:#37006e}}.root_ca4b5a14:active .titleIsPlaceHolder_ca4b5a14,.root_ca4b5a14:focus .titleIsPlaceHolder_ca4b5a14,.root_ca4b5a14:hover .titleIsPlaceHolder_ca4b5a14{color:#a6a6a6}.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{border-color:#0078d7}@media screen and (-ms-high-contrast:active){.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14:active .title_ca4b5a14,.root_ca4b5a14:hover .title_ca4b5a14{border-color:#37006e}}.root_ca4b5a14:focus .title_ca4b5a14{border-color:#0078d7}@media screen and (-ms-high-contrast:active){.root_ca4b5a14:focus .title_ca4b5a14{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14:focus .title_ca4b5a14{border-color:#37006e}}.root_ca4b5a14 .ms-Label{display:inline-block;margin-bottom:8px}.root_ca4b5a14.rootIsDisabled_ca4b5a14 .title_ca4b5a14{background-color:#f4f4f4;border-color:#f4f4f4;color:#a6a6a6;cursor:default}@media screen and (-ms-high-contrast:active){.root_ca4b5a14.rootIsDisabled_ca4b5a14 .title_ca4b5a14{border-color:#0f0;color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14.rootIsDisabled_ca4b5a14 .title_ca4b5a14{border-color:#600000;color:#600000}}.root_ca4b5a14.rootIsDisabled_ca4b5a14 .title_ca4b5a14.titleIsError_ca4b5a14{border-color:#a80000}.root_ca4b5a14.rootIsDisabled_ca4b5a14 .caretDown_ca4b5a14{color:#a6a6a6}@media screen and (-ms-high-contrast:active){.root_ca4b5a14.rootIsDisabled_ca4b5a14 .caretDown_ca4b5a14{color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.root_ca4b5a14.rootIsDisabled_ca4b5a14 .caretDown_ca4b5a14{color:#600000}}.caretDown_ca4b5a14{color:#212121;font-size:12px;position:absolute;top:1px;pointer-events:none;height:32px;line-height:30px}html[dir=ltr] .caretDown_ca4b5a14{right:12px}html[dir=rtl] .caretDown_ca4b5a14{left:12px}.title_ca4b5a14{box-sizing:border-box;margin:0;padding:0;box-shadow:none;background:#ffffff;border:1px solid #c8c8c8;cursor:pointer;display:block;height:32px;line-height:30px;padding:0 32px 0 12px;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}html[dir=rtl] .title_ca4b5a14{padding:0 12px 0 32px}.title_ca4b5a14.titleIsError_ca4b5a14{border-color:#a80000}.title_ca4b5a14.titleIsPlaceHolder_ca4b5a14{color:#a6a6a6}.panel_ca4b5a14 .ms-Panel-main{box-shadow:-30px 0 30px -30px rgba(0,0,0,.2)}.panel_ca4b5a14 .ms-Panel-contentInner{padding:0 0 20px}.callout_ca4b5a14{box-shadow:0 0 5px 0 rgba(0,0,0,.4);border:1px solid #eaeaea}.errorMessage_ca4b5a14{color:#a80000}.errorMessage_ca4b5a14::before{content:'* '}.items_ca4b5a14{display:block}.item_ca4b5a14{background:0 0;box-sizing:border-box;cursor:pointer;display:block;width:100%;height:auto;min-height:36px;line-height:20px;padding:5px 16px;position:relative;border:1px solid transparent;word-wrap:break-word;overflow-wrap:break-word;text-align:left}@media screen and (-ms-high-contrast:active){.item_ca4b5a14{border-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14{border-color:#ffffff}}.item_ca4b5a14:hover{background-color:#f4f4f4;color:#000000}@media screen and (-ms-high-contrast:active){.item_ca4b5a14:hover{background-color:#1aebff;border-color:#1aebff;color:#000000}.item_ca4b5a14:hover:focus{border-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14:hover{background-color:#37006e;border-color:#37006e;color:#ffffff}}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14:hover{-ms-high-contrast-adjust:none}}.item_ca4b5a14::-moz-focus-inner{border:0}.item_ca4b5a14{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .item_ca4b5a14:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.item_ca4b5a14:focus{background-color:#f4f4f4}.item_ca4b5a14:active{background-color:#f4f4f4;color:#000000}.item_ca4b5a14.itemIsDisabled_ca4b5a14{background:#ffffff;color:#a6a6a6;cursor:default}.item_ca4b5a14 .ms-Button-flexContainer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.item_ca4b5a14.itemIsSelected_ca4b5a14{background-color:#dadada;color:#000000}.item_ca4b5a14.itemIsSelected_ca4b5a14:hover{background-color:#dadada}.item_ca4b5a14.itemIsSelected_ca4b5a14::-moz-focus-inner{border:0}.item_ca4b5a14.itemIsSelected_ca4b5a14{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .item_ca4b5a14.itemIsSelected_ca4b5a14:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}@media screen and (-ms-high-contrast:active){.item_ca4b5a14.itemIsSelected_ca4b5a14{background-color:#1aebff;border-color:#1aebff;color:#000000}.item_ca4b5a14.itemIsSelected_ca4b5a14:focus{border-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14.itemIsSelected_ca4b5a14{background-color:#37006e;border-color:#37006e;color:#ffffff}}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:black-on-white){.item_ca4b5a14.itemIsSelected_ca4b5a14{-ms-high-contrast-adjust:none}}.header_ca4b5a14{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;font-weight:600;color:#0078d7;background:0 0;border:none;height:36px;line-height:36px;cursor:default;padding:0 16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html[dir=ltr] .header_ca4b5a14{text-align:left}html[dir=rtl] .header_ca4b5a14{text-align:right}.divider_ca4b5a14{height:1px;background-color:#eaeaea}.optionText_ca4b5a14{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:100%;word-wrap:break-word;overflow-wrap:break-word;margin:1px}--><!--.root_c70d018d{width:auto}.clear_c70d018d{clear:both}.itemContainer_c70d018d{display:-webkit-box;display:-ms-flexbox;display:flex}.members_c70d018d{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;overflow:hidden;margin:-2px}.members_c70d018d>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:2px}.itemButton_c70d018d{text-align:center;padding:0;border-radius:50%;vertical-align:top}.itemButton_c70d018d::-moz-focus-inner{border:0}.itemButton_c70d018d{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .itemButton_c70d018d:focus:after{content:'';position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;pointer-events:none;border:1px solid #666666}.itemButton_c70d018d .ms-Persona-details{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}button.itemButton_c70d018d{display:inline;background:0 0;padding:0;cursor:pointer;border:none}button.itemButton_c70d018d::-moz-focus-inner{padding:0;border:0}button.addButton_c70d018d{font-size:14px;color:#ffffff;background-color:#0078d7}html[dir=ltr] button.addButton_c70d018d{margin-right:4px}html[dir=rtl] button.addButton_c70d018d{margin-left:4px}button.addButton_c70d018d:focus,button.addButton_c70d018d:hover{background-color:#005a9e}button.addButton_c70d018d:active{background-color:#004578}button.addButton_c70d018d:disabled{background-color:#c8c8c8}button.overflowButton_c70d018d{font-size:14px;color:#666666;background-color:#eaeaea}html[dir=ltr] button.overflowButton_c70d018d{margin-left:4px}html[dir=rtl] button.overflowButton_c70d018d{margin-right:4px}button.descriptiveOverflowButton_c70d018d{font-size:12px;color:#666666;background-color:#eaeaea}html[dir=ltr] button.descriptiveOverflowButton_c70d018d{margin-left:4px}html[dir=rtl] button.descriptiveOverflowButton_c70d018d{margin-right:4px}.screenReaderOnly_c70d018d{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}--><!--.root_1b8277ae{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;background-color:#f4f4f4;color:#333333;width:100%;box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.root_1b8277ae .icon_1b8277ae{color:#767676}html[dir=ltr] .root_1b8277ae .icon_1b8277ae{padding-right:8px}html[dir=rtl] .root_1b8277ae .icon_1b8277ae{padding-left:8px}.root_1b8277ae .ms-Link{font-size:12px;color:#005a9e}html[dir=ltr] .root_1b8277ae .ms-Button{margin-left:6px}html[dir=rtl] .root_1b8277ae .ms-Button{margin-right:6px}.icon_1b8277ae,.text_1b8277ae{display:table-cell;vertical-align:top}.icon_1b8277ae{font-size:16px;min-width:16px;min-height:16px;display:-webkit-box;display:-ms-flexbox;display:flex}.text_1b8277ae{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;min-width:0;display:-webkit-box;display:-ms-flexbox;display:flex}.root_1b8277ae.rootIsWarning_1b8277ae{background-color:#fff4ce;color:#333333}.root_1b8277ae.rootIsSevereWarning_1b8277ae{background-color:#fed9cc;color:#333333}.root_1b8277ae.rootIsSevereWarning_1b8277ae .icon_1b8277ae{color:#d83b01}.root_1b8277ae.rootIsError_1b8277ae{background-color:#fde7e9;color:#333333}.root_1b8277ae.rootIsError_1b8277ae .icon_1b8277ae{color:#a80000}.root_1b8277ae.rootIsBlocked_1b8277ae{background-color:#fde7e9;color:#333333}.root_1b8277ae.rootIsBlocked_1b8277ae .icon_1b8277ae{color:#a80000}.root_1b8277ae.rootIsSuccess_1b8277ae{background-color:#dff6dd;color:#333333}.root_1b8277ae.rootIsSuccess_1b8277ae .icon_1b8277ae{color:#107c10}.content_1b8277ae{padding:16px;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;box-sizing:border-box}.content_1b8277ae:before{pointer-events:none;position:absolute;right:0;bottom:0;left:0;top:0;margin:0}@media screen and (-ms-high-contrast:active){.content_1b8277ae:before{border:1px solid #ffffff;content:' '}}@media screen and (-ms-high-contrast:black-on-white){.content_1b8277ae:before{border:1px solid #000000;content:' '}}.actionables_1b8277ae{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;min-width:0}.actionables_1b8277ae>.dismissal_1b8277ae{right:0;top:0;position:absolute!important}.actionsOneline_1b8277ae,.actions_1b8277ae{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.actionsOneline_1b8277ae{position:relative}.dismissal_1b8277ae{min-width:0}.dismissal_1b8277ae::-moz-focus-inner{border:0}.dismissal_1b8277ae{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .dismissal_1b8277ae:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .dismissalOneline_1b8277ae .dismissal_1b8277ae{margin-right:-8px}html[dir=rtl] .dismissalOneline_1b8277ae .dismissal_1b8277ae{margin-left:-8px}.root_1b8277ae+.root_1b8277ae{margin-top:6px}html[dir=ltr] .innerTextPadding_1b8277ae{padding-right:24px}html[dir=rtl] .innerTextPadding_1b8277ae{padding-left:24px}html[dir=ltr] .innerTextPadding_1b8277ae .innerText_1b8277ae>span,html[dir=ltr] .innerTextPadding_1b8277ae span{padding-right:4px}html[dir=rtl] .innerTextPadding_1b8277ae .innerText_1b8277ae>span,html[dir=rtl] .innerTextPadding_1b8277ae span{padding-left:4px}.multiline_1b8277ae>.content_1b8277ae>.actionables_1b8277ae{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.singleline_1b8277ae .content_1b8277ae .icon_1b8277ae{-webkit-box-align:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center}.singleline_1b8277ae .content_1b8277ae .actionables_1b8277ae>.text_1b8277ae{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center}.singleline_1b8277ae .content_1b8277ae .actionables_1b8277ae>.text_1b8277ae .innerTextPadding_1b8277ae,.singleline_1b8277ae .content_1b8277ae .actionables_1b8277ae>.text_1b8277ae .innerText_1b8277ae{max-height:1.3em;line-height:1.3em;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.singleline_1b8277ae .content_1b8277ae>.actionables_1b8277ae{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.root_1b8277ae .ms-Icon--Cancel{font-size:14px}--><!--.root_1f4f07e8{position:relative;cursor:default}.dragMask_1f4f07e8{position:absolute;background:rgba(255,0,0,0);left:0;top:0;right:0;bottom:0}.box_1f4f07e8{position:absolute;box-sizing:border-box;border:1px solid #0078d7;pointer-events:none}.boxFill_1f4f07e8{position:absolute;box-sizing:border-box;background-color:#0078d7;opacity:.1;left:0;top:0;right:0;bottom:0}--><!--.root_374224b2{overflow-y:auto;-webkit-overflow-scrolling:touch;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.rootIsOnTop_374224b2{position:absolute}.navItems_374224b2{list-style-type:none}.navItems_374224b2,.navItems_374224b2>.navItem_374224b2{padding:0}.groupContent_374224b2{display:none;margin-bottom:40px}.group_374224b2.groupIsExpanded_374224b2 .groupContent_374224b2{display:block}.icon_374224b2{padding:0;color:#333333;background:#f4f4f4;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}html[dir=ltr] .iconLink_374224b2{margin-right:4px}html[dir=rtl] .iconLink_374224b2{margin-left:4px}.chevronButton_374224b2{display:block;font-weight:400;font-size:12px;line-height:36px;margin:5px 0;padding:0 20px 0 28px;background:0 0;border:none;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;cursor:pointer;color:#333333;background:#ffffff}html[dir=ltr] .chevronButton_374224b2{text-align:left}html[dir=rtl] .chevronButton_374224b2{text-align:right}html[dir=rtl] .chevronButton_374224b2{padding:0 28px 0 20px}.chevronButton_374224b2:visited{color:inherit}.chevronButton_374224b2:hover{color:#333333;background:#f8f8f8}.chevronButton_374224b2.chevronButtonIsGroup_374224b2{width:100%;height:36px;border-bottom:1px solid #eaeaea}.chevronIcon_374224b2{position:absolute;height:36px;line-height:36px;font-size:12px;transition:-webkit-transform .1s linear;transition:transform .1s linear;transition:transform .1s linear,-webkit-transform .1s linear}html[dir=ltr] .chevronIcon_374224b2{left:8px}html[dir=rtl] .chevronIcon_374224b2{right:8px}.chevronIsExpanded_374224b2{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}.linkText_374224b2{vertical-align:middle}.compositeLink_374224b2{display:block;position:relative;color:#333333;background:#ffffff}.compositeLink_374224b2 .chevronButton_374224b2.chevronButtonLink_374224b2{display:block;width:26px;height:34px;position:absolute;top:1px;z-index:1;padding:0;margin:0}html[dir=ltr] .compositeLink_374224b2 .chevronButton_374224b2.chevronButtonLink_374224b2{left:1px}html[dir=rtl] .compositeLink_374224b2 .chevronButton_374224b2.chevronButtonLink_374224b2{right:1px}.compositeLink_374224b2 .chevronButton_374224b2.chevronButtonLink_374224b2 .chevronIcon_374224b2{position:relative}.compositeLink_374224b2 a{color:#333333}.compositeLink_374224b2:hover .chevronButton_374224b2,.compositeLink_374224b2:hover a{background:#f8f8f8;color:#333333}.compositeLink_374224b2.compositeLinkIsExpanded_374224b2 .chevronIcon_374224b2{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}.compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2,.compositeLink_374224b2.compositeLinkIsSelected_374224b2 a{color:#0078d7;background:#f4f4f4}.compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,.compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{content:'';position:absolute;top:0;bottom:0}html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{border-left:2px solid #0078d7}html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{border-right:2px solid #0078d7}html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{right:0}html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{left:0}html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=ltr] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{left:0}html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 .chevronButton_374224b2:after,html[dir=rtl] .compositeLink_374224b2.compositeLinkIsSelected_374224b2 a:after{right:0}.link_374224b2{display:block;position:relative;height:36px;line-height:36px;text-decoration:none;padding:0 20px;cursor:pointer;text-overflow:ellipsis;text-decoration:none;white-space:nowrap;overflow:hidden}.groupHeaderFontSize_374224b2{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:17px;font-weight:300}.chevronButtonGroup_374224b2::-moz-focus-inner,.chevronButtonLink_374224b2::-moz-focus-inner,.chevronButton_374224b2::-moz-focus-inner,.link_374224b2::-moz-focus-inner{border:0}.chevronButtonGroup_374224b2,.chevronButtonLink_374224b2,.chevronButton_374224b2,.link_374224b2{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .chevronButtonGroup_374224b2:focus:after,.ms-Fabric.is-focusVisible .chevronButtonLink_374224b2:focus:after,.ms-Fabric.is-focusVisible .chevronButton_374224b2:focus:after,.ms-Fabric.is-focusVisible .link_374224b2:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .root_374224b2 .link_374224b2{padding-left:20px}html[dir=rtl] .root_374224b2 .link_374224b2{padding-right:20px}.root_374224b2 .link_374224b2 .ms-Button-label{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#0078d7}html[dir=ltr] .root_374224b2 .link_374224b2.linkIsOnExpanded_374224b2{padding-left:28px}html[dir=rtl] .root_374224b2 .link_374224b2.linkIsOnExpanded_374224b2{padding-right:28px}--><!--.root_bf0c5865{min-width:180px}.suggestionsItem_bf0c5865{width:100%;height:auto;padding:4px 20px 6px;display:block;border:none;background:#ffffff}html[dir=ltr] .suggestionsItem_bf0c5865{text-align:left}html[dir=rtl] .suggestionsItem_bf0c5865{text-align:right}.suggestionsItem_bf0c5865:hover{background:#eaeaea}.suggestionsItem_bf0c5865.suggestionsItemIsSuggested_bf0c5865{background:#d0d0d0}.suggestionsItem_bf0c5865.suggestionsItemIsSuggested_bf0c5865:hover{background:#dadada}.searchMoreButton_bf0c5865{background:0 0;border:0;cursor:pointer;height:auto;text-align:center;margin:0;width:100%}.searchMoreButton_bf0c5865:hover{background-color:#eaeaea;cursor:pointer}.searchMoreButton_bf0c5865:active,.searchMoreButton_bf0c5865:focus{background-color:#c7e0f4}.suggestionsTitle_bf0c5865{color:#0078d7;font-size:12px;text-align:center;text-transform:uppercase;line-height:40px;border-bottom:1px solid #eaeaea}.suggestionsContainer_bf0c5865{overflow-y:auto;overflow-x:hidden;max-height:300px;border-bottom:1px solid #eaeaea}.suggestionsNone_bf0c5865{text-align:center;color:#767676;font-size:12px;line-height:30px}.suggestionsSpinner_bf0c5865{margin:5px;text-align:center;white-space:nowrap;line-height:20px}.suggestionsSpinner_bf0c5865 .ms-Spinner-circle{display:inline-block;vertical-align:middle}.suggestionsSpinner_bf0c5865 .ms-Spinner-label{display:inline-block;margin:0 10px;vertical-align:middle}--><!--.pickerText_02ee47ef{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;box-sizing:border-box;border:1px solid #eaeaea;min-width:180px;padding:1px;min-height:32px}.pickerText_02ee47ef:hover{border-color:#c7e0f4}.pickerText_02ee47ef.inputFocused_02ee47ef{border-color:#0078d7}.pickerInput_02ee47ef{height:26px;border:none;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;outline:0;padding:0 6px 0;margin:1px}--><!--.personaContainer_4ebdd9aa{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#f4f4f4;margin:1px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;max-width:100%}.personaContainer_4ebdd9aa::-moz-focus-inner{border:0}.personaContainer_4ebdd9aa{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .personaContainer_4ebdd9aa:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.personaContainer_4ebdd9aa:hover{background:#eaeaea}.personaContainer_4ebdd9aa.personaContainerIsSelected_4ebdd9aa{background:#d0d0d0}.personaContainer_4ebdd9aa.personaContainerIsSelected_4ebdd9aa:hover{background:#dadada}.personaContainer_4ebdd9aa .itemContent_4ebdd9aa{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:0;max-width:100%;overflow-x:hidden}.personaContainer_4ebdd9aa .removeButton_4ebdd9aa{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-preferred-size:32px;flex-basis:32px;height:100%}.personaContainer_4ebdd9aa .personaDetails_4ebdd9aa{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.itemContainer_4ebdd9aa{display:inline-block;vertical-align:top}--><!--.resultContent_f9d9df29{display:table-row}.resultContent_f9d9df29 .resultItem_f9d9df29{display:table-cell;vertical-align:bottom}.peoplePickerPersona_f9d9df29{width:180px}.peoplePickerPersona_f9d9df29 .ms-Persona-details{width:100%}.peoplePicker_f9d9df29 .ms-BasePicker-text{min-height:40px}--><!--.root_c90a8776{-ms-flex-negative:1;flex-shrink:1;background:#f4f4f4;margin:1px;height:26px;line-height:26px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;min-width:100px;max-width:100%}.root_c90a8776::-moz-focus-inner{border:0}.root_c90a8776{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_c90a8776:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.root_c90a8776:hover{background:#eaeaea}.root_c90a8776.isSelected_c90a8776{background:#d0d0d0}.root_c90a8776.isSelected_c90a8776:hover{background:#dadada}.tagItemText_c90a8776{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:100px;margin:0 8px}.tagItemClose_c90a8776{cursor:pointer;color:#666666;font-size:12px;display:inline-block;text-align:center;vertical-align:top;width:30px;height:100%;-ms-flex-negative:0;flex-shrink:0}.tagItemTextOverflow_c90a8776{overflow:hidden;text-overflow:ellipsis;max-width:60vw}--><!--.root_57c1f354{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0;padding:0;box-shadow:none;font-size:14px;font-weight:400;position:relative;color:#0078d7;white-space:nowrap}.links_57c1f354{font-size:0;height:40px;list-style-type:none;padding:0;white-space:nowrap}.root_57c1f354 .link_57c1f354{color:#333333;display:inline-block;font-size:14px;font-weight:400;line-height:40px;padding:0 8px;text-align:center;position:relative;background-color:transparent;border:0}html[dir=ltr] .root_57c1f354 .link_57c1f354{margin-right:8px}html[dir=rtl] .root_57c1f354 .link_57c1f354{margin-left:8px}.root_57c1f354 .link_57c1f354:hover{cursor:pointer}.root_57c1f354 .link_57c1f354:focus{outline:0}.root_57c1f354 .link_57c1f354::before{background-color:transparent;bottom:0;content:'';height:2px;left:8px;position:absolute;right:8px;transition:background-color 267ms cubic-bezier(.1,.25,.75,.9)}.root_57c1f354 .link_57c1f354::after{color:transparent;content:attr(title);display:block;font-weight:700;height:1px;overflow:hidden;visibility:hidden}.root_57c1f354 .link_57c1f354 .count_57c1f354,.root_57c1f354 .link_57c1f354 .text_57c1f354{display:inline-block;vertical-align:top}html[dir=ltr] .root_57c1f354 .link_57c1f354 .icon_57c1f354+.text_57c1f354{margin-left:4px}html[dir=rtl] .root_57c1f354 .link_57c1f354 .icon_57c1f354+.text_57c1f354{margin-right:4px}html[dir=ltr] .root_57c1f354 .link_57c1f354 .count_57c1f354{margin-left:4px}html[dir=rtl] .root_57c1f354 .link_57c1f354 .count_57c1f354{margin-right:4px}.root_57c1f354 .link_57c1f354.linkIsSelected_57c1f354{font-weight:600}.root_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{background-color:#0078d7}@media screen and (-ms-high-contrast:active){.root_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{background-color:transparent;border-bottom:2px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{background-color:transparent;border-bottom:2px solid #000000}}.root_57c1f354 .link_57c1f354.linkIsDisabled_57c1f354{color:#a6a6a6}.ms-Fabric.is-focusVisible .link_57c1f354:focus{outline:1px solid #767676}.link_57c1f354.linkIsOverflow_57c1f354{color:#666666}.link_57c1f354.linkIsOverflow_57c1f354.linkIsSelected_57c1f354{color:#0078d7}.link_57c1f354.linkIsOverflow_57c1f354:focus:not(.linkIsSelected_57c1f354),.link_57c1f354.linkIsOverflow_57c1f354:hover:not(.linkIsSelected_57c1f354){color:#212121}.link_57c1f354.linkIsOverflow_57c1f354:active{color:#0078d7}.ellipsis_57c1f354{font-size:15px;position:relative;top:0}.root_57c1f354.rootIsLarge_57c1f354 .link_57c1f354{font-size:17px}.root_57c1f354.rootIsLarge_57c1f354 .link_57c1f354.linkIsOverflow_57c1f354::after{font-size:17px}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354{height:40px;line-height:40px;background-color:#f4f4f4;padding:0 10px;vertical-align:top}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354::-moz-focus-inner{border:0}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}html[dir=ltr] .root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354{margin-right:0}html[dir=rtl] .root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354{margin-left:0}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:focus:not(.linkIsSelected_57c1f354):not(.linkIsOverflow_57c1f354),.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:hover:not(.linkIsSelected_57c1f354):not(.linkIsOverflow_57c1f354){color:#000000}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:active{color:#ffffff;background-color:#0078d7}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354{background-color:#0078d7;color:#ffffff;font-weight:300}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{background-color:transparent;transition:none;position:absolute;top:0;left:0;right:0;bottom:0;content:'';height:auto}@media screen and (-ms-high-contrast:active){.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354::before{border:1px solid #000000}}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsOverflow_57c1f354:focus:not(.linkIsSelected_57c1f354),.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsOverflow_57c1f354:hover:not(.linkIsSelected_57c1f354){background-color:#ffffff}.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsOverflow_57c1f354:active{background-color:#0078d7}.ms-Fabric.is-focusVisible .root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354:focus:before{height:auto;background:0 0;transition:none}@media screen and (-ms-high-contrast:active){.root_57c1f354.rootIsTabs_57c1f354 .link_57c1f354.linkIsSelected_57c1f354{font-weight:600}}--><!--.root_57da241f{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-weight:400}.itemName_57da241f{color:#333333;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding-top:4px;line-height:20px}.itemDescription_57da241f{color:#767676;font-size:11px;line-height:18px}.itemProgress_57da241f{position:relative;height:2px;padding:8px 0}.progressTrack_57da241f{position:absolute;width:100%;height:2px;background-color:#eaeaea;outline:1px solid transparent}.progressBar_57da241f{background-color:#0078d7;height:2px;position:absolute;transition:width .3s ease;width:0}@media screen and (-ms-high-contrast:active){.progressBar_57da241f{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.progressBar_57da241f{background-color:#000000}}.smoothTransition_57da241f{transition-property:width;transition-timing-function:linear;transition-duration:150ms}--><!--.input_ef7d3b07{position:absolute;opacity:0;top:0}.container_ef7d3b07{position:relative;display:inline-block}.container_ef7d3b07:hover .star_ef7d3b07:not(.starIsDisabled_ef7d3b07){color:#000000}.container_ef7d3b07:hover .star_ef7d3b07:not(.starIsDisabled_ef7d3b07).star_ef7d3b07:hover{color:#106ebe}.container_ef7d3b07:hover .star_ef7d3b07:not(.starIsDisabled_ef7d3b07).star_ef7d3b07:hover~.star_ef7d3b07{color:#a6a6a6}.container_ef7d3b07 .star_ef7d3b07{display:inline-block;text-align:center;color:#a6a6a6}.container_ef7d3b07 .star_ef7d3b07.starIsSelected_ef7d3b07{color:#000000}.container_ef7d3b07 .star_ef7d3b07.starIsDisabled_ef7d3b07{color:#c8c8c8}.container_ef7d3b07 .star_ef7d3b07.starIsDisabled_ef7d3b07 .label_ef7d3b07{cursor:default}.container_ef7d3b07 .star_ef7d3b07 .label_ef7d3b07{display:inline-block;cursor:pointer;font-size:16px;padding:12px 0;border:1px solid transparent}.rootIsLarge_ef7d3b07 .container_ef7d3b07 .label_ef7d3b07{font-size:20px;padding:6px 2px 9px 2px}.labelText_ef7d3b07{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.ms-Fabric.is-focusVisible .starIsInFocus_ef7d3b07 .label_ef7d3b07{border:1px solid #666666}--><!--.root_2f85df04{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;box-sizing:border-box;margin:0;padding:0;box-shadow:none;color:#333333;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin-bottom:10px;padding:0 0 0 8px;border:1px solid #71afe5;height:32px}html[dir=rtl] .root_2f85df04{padding:0 8px 0 0}@media screen and (-ms-high-contrast:active){.root_2f85df04{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.root_2f85df04{border:1px solid #000000}}.iconContainer_2f85df04{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;color:#767676;font-size:16px;width:32px;text-align:center;transition:width 167ms;color:#0078d7}.icon_2f85df04{opacity:1;transition:opacity 167ms 0s}.field_2f85df04{box-sizing:border-box;margin:0;padding:0;box-shadow:none;border:none;outline:0;font-weight:inherit;font-family:inherit;font-size:inherit;color:#000000;background-color:transparent;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px;overflow:hidden;text-overflow:ellipsis;padding-bottom:.5px}.field_2f85df04::-ms-clear{display:none}.clearButton_2f85df04{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:none;cursor:pointer;text-align:center;font-size:12px;-ms-flex-preferred-size:32px;flex-basis:32px;-ms-flex-negative:0;flex-shrink:0;color:#0078d7}.root_2f85df04:hover{border-color:#004578}.root_2f85df04:hover .label_2f85df04{color:#000000}.root_2f85df04:hover .label_2f85df04 .iconContainer_2f85df04{color:#004578}.rootIsActive_2f85df04{border-color:#004578}.rootIsActive_2f85df04 .iconContainer_2f85df04{width:4px;transition:width 167ms}.rootIsActive_2f85df04 .icon_2f85df04{opacity:0;opacity:0 0s 167ms}.rootIsDisabled_2f85df04{border-color:#f4f4f4}.rootIsDisabled_2f85df04 .iconContainer_2f85df04{color:#c8c8c8}.rootIsDisabled_2f85df04 .field_2f85df04{background-color:#f4f4f4;pointer-events:none;cursor:default}.rootCanClear_2f85df04 .clearButton_2f85df04{display:-webkit-box;display:-ms-flexbox;display:flex}--><!--.root_4cb163ab{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:8px}.titleLabel_4cb163ab{padding:0}.line_4cb163ab{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;width:100%}.line_4cb163ab span{height:4px;border-radius:4px;box-sizing:border-box}.activeSection_4cb163ab{background:#666666}@media screen and (-ms-high-contrast:active){.activeSection_4cb163ab{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.activeSection_4cb163ab{background-color:#000000}}.inactiveSection_4cb163ab{background:#c8c8c8}@media screen and (-ms-high-contrast:active){.inactiveSection_4cb163ab{border:1px solid #ffffff}}@media screen and (-ms-high-contrast:black-on-white){.inactiveSection_4cb163ab{border:1px solid #000000}}.showTransitions_4cb163ab .thumb_4cb163ab{transition:left 367ms cubic-bezier(.1,.9,.2,1)}.showTransitions_4cb163ab .activeSection_4cb163ab,.showTransitions_4cb163ab .inactiveSection_4cb163ab{transition:width 367ms cubic-bezier(.1,.9,.2,1)}.slideBox_4cb163ab{background:0 0;border:none;padding:0;margin:0}.slideBox_4cb163ab .thumb_4cb163ab{border:2px solid #666666;box-sizing:border-box;background:#ffffff;display:block;width:16px;height:16px;position:absolute;top:-6px;border-radius:10px}html[dir=ltr] .slideBox_4cb163ab .thumb_4cb163ab{-webkit-transform:translateX(-50%);transform:translateX(-50%)}html[dir=rtl] .slideBox_4cb163ab .thumb_4cb163ab{-webkit-transform:translateX(50%);transform:translateX(50%)}.container_4cb163ab{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.slideBox_4cb163ab{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;height:28px;line-height:28px;padding:0 8px}.slideBox_4cb163ab::-moz-focus-inner{border:0}.slideBox_4cb163ab{outline:transparent;position:relative}.ms-Fabric.is-focusVisible .slideBox_4cb163ab:focus:after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border:1px solid #666666}.valueLabel_4cb163ab{-ms-flex-negative:1;flex-shrink:1;width:30px;margin:0 8px;line-height:1}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .thumb_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .thumb_4cb163ab{border:2px solid #0078d7}@media screen and (-ms-high-contrast:active){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .thumb_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .thumb_4cb163ab{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .thumb_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .thumb_4cb163ab{border-color:#37006e}}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .activeSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .activeSection_4cb163ab{background-color:#0078d7}@media screen and (-ms-high-contrast:active){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .activeSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .activeSection_4cb163ab{background-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .activeSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .activeSection_4cb163ab{background-color:#37006e}}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .inactiveSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .inactiveSection_4cb163ab{background-color:#c7e0f4}@media screen and (-ms-high-contrast:active){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .inactiveSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .inactiveSection_4cb163ab{border-color:#1aebff}}@media screen and (-ms-high-contrast:black-on-white){.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .inactiveSection_4cb163ab,.rootIsEnabled_4cb163ab .slideBox_4cb163ab:hover .inactiveSection_4cb163ab{border-color:#37006e}}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .thumb_4cb163ab{border:2px solid #106ebe}.rootIsEnabled_4cb163ab .slideBox_4cb163ab:active .activeSection_4cb163ab{background-color:#106ebe}.rootIsDisabled_4cb163ab .thumb_4cb163ab{border-color:#c8c8c8}@media screen and (-ms-high-contrast:active){.rootIsDisabled_4cb163ab .thumb_4cb163ab{border-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.rootIsDisabled_4cb163ab .thumb_4cb163ab{border-color:#600000}}@media screen and (-ms-high-contrast:active){.rootIsDisabled_4cb163ab .activeSection_4cb163ab,.rootIsDisabled_4cb163ab .inactiveSection_4cb163ab{background-color:#0f0;border-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.rootIsDisabled_4cb163ab .activeSection_4cb163ab,.rootIsDisabled_4cb163ab .inactiveSection_4cb163ab{background-color:#600000;border-color:#600000}}.rootIsDisabled_4cb163ab .activeSection_4cb163ab{background:#c8c8c8}.rootIsDisabled_4cb163ab .inactiveSection_4cb163ab{background:#eaeaea}--><!--.root_2ee7cd8d{display:block;max-width:364px}.bodyContent_2ee7cd8d{padding:20px}.headerIsLarge_2ee7cd8d:not(:last-child){margin-bottom:14px}.headline_2ee7cd8d{margin:0;color:#ffffff}.headerIsLarge_2ee7cd8d .headline_2ee7cd8d{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:28px;font-weight:100;font-weight:100}.headerIsSmall_2ee7cd8d .headline_2ee7cd8d{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;font-weight:600}html[dir=ltr] .headerIsSmall_2ee7cd8d .headline_2ee7cd8d{margin-right:10px}html[dir=rtl] .headerIsSmall_2ee7cd8d .headline_2ee7cd8d{margin-left:10px}.body_2ee7cd8d:not(:last-child){margin-bottom:20px}.subText_2ee7cd8d{margin:0;font-size:14px;color:#ffffff;font-weight:300}.root_2ee7cd8d .closeButton_2ee7cd8d{position:absolute;top:0;color:#ffffff;font-size:12px}html[dir=ltr] .root_2ee7cd8d .closeButton_2ee7cd8d{right:0}html[dir=rtl] .root_2ee7cd8d .closeButton_2ee7cd8d{left:0}html[dir=ltr] .footer_2ee7cd8d .ms-Button:not(:first-child){margin-left:20px}html[dir=rtl] .footer_2ee7cd8d .ms-Button:not(:first-child){margin-right:20px}.root_2ee7cd8d .ms-Callout-beak,.root_2ee7cd8d .ms-Callout-main,.root_2ee7cd8d .ms-Callout-smallbeak{background:#0078d7}.root_2ee7cd8d .primaryButton_2ee7cd8d{background-color:#ffffff;border-color:#ffffff}.root_2ee7cd8d .primaryButton_2ee7cd8d .ms-Button-label{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#0078d7}.root_2ee7cd8d .primaryButton_2ee7cd8d:hover{background-color:#deecf9;border-color:#deecf9}.root_2ee7cd8d .primaryButton_2ee7cd8d:focus{background-color:#deecf9;border-color:#ffffff}.root_2ee7cd8d .primaryButton_2ee7cd8d:active{background-color:#ffffff;border-color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d{background-color:#0078d7;border-color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d .ms-Button-label{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d:hover{background-color:#106ebe;border-color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d:focus{background-color:#106ebe;border-color:#ffffff}.root_2ee7cd8d .secondaryButton_2ee7cd8d:active{background-color:#0078d7;border-color:#ffffff}--><!--.root_f151e544{font-family:"Segoe UI WestEuropean","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0;padding:0;box-shadow:none;position:relative;display:block;margin-bottom:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.isEnabled_f151e544 .invisibleToggle_f151e544{cursor:pointer}.isEnabled_f151e544 .background_f151e544{background:#ffffff;border:1px solid #767676}.isEnabled_f151e544 .thumb_f151e544{background:#767676}@media screen and (-ms-high-contrast:active){.isEnabled_f151e544 .thumb_f151e544{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.isEnabled_f151e544 .thumb_f151e544{background-color:#000000}}.isEnabled_f151e544 .slider_f151e544:hover .background_f151e544{border:1px solid #000000}.isEnabled_f151e544 .slider_f151e544:hover .thumb_f151e544{background:#000000}.isEnabled_f151e544.isChecked_f151e544 .background_f151e544{background:#0078d7;border:1px solid transparent}@media screen and (-ms-high-contrast:active){.isEnabled_f151e544.isChecked_f151e544 .background_f151e544{background-color:#ffffff}}@media screen and (-ms-high-contrast:black-on-white){.isEnabled_f151e544.isChecked_f151e544 .background_f151e544{background-color:#000000}}.isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{background:#ffffff}html[dir=ltr] .isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{left:28px}html[dir=rtl] .isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{right:28px}@media screen and (-ms-high-contrast:active){.isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{background-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.isEnabled_f151e544.isChecked_f151e544 .thumb_f151e544{background-color:#ffffff}}.isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .background_f151e544{border:1px solid #0078d7;background:#2b88d8}.isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{background:#ffffff}html[dir=ltr] .isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{left:28px}html[dir=rtl] .isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{right:28px}@media screen and (-ms-high-contrast:active){.isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{background-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.isEnabled_f151e544.isChecked_f151e544 .slider_f151e544:hover .thumb_f151e544{background-color:#ffffff}}.isDisabled_f151e544 .thumb_f151e544{background:#c8c8c8}@media screen and (-ms-high-contrast:active){.isDisabled_f151e544 .thumb_f151e544{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.isDisabled_f151e544 .thumb_f151e544{background-color:#600000}}.isDisabled_f151e544 .background_f151e544{background:#ffffff;border:1px solid #c8c8c8}@media screen and (-ms-high-contrast:active){.isDisabled_f151e544 .background_f151e544{border-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.isDisabled_f151e544 .background_f151e544{border-color:#600000}}.isDisabled_f151e544.isChecked_f151e544 .background_f151e544{background:#c8c8c8;border:1px solid transparent}@media screen and (-ms-high-contrast:active){.isDisabled_f151e544.isChecked_f151e544 .background_f151e544{background-color:#0f0}}@media screen and (-ms-high-contrast:black-on-white){.isDisabled_f151e544.isChecked_f151e544 .background_f151e544{background-color:#600000}}.isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{background:#f4f4f4}html[dir=ltr] .isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{left:28px}html[dir=rtl] .isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{right:28px}@media screen and (-ms-high-contrast:active){.isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{background-color:#000000}}@media screen and (-ms-high-contrast:black-on-white){.isDisabled_f151e544.isChecked_f151e544 .thumb_f151e544{background-color:#ffffff}}.innerContainer_f151e544{display:inline-block;min-width:45px}.ms-Fabric.is-focusVisible .root_f151e544.isEnabled_f151e544 .invisibleToggle_f151e544:focus+.background_f151e544 .focus_f151e544{border:1px solid #000000}.invisibleToggle_f151e544{position:absolute;opacity:0;left:0;top:0;width:100%;height:100%;margin:0;padding:0}.slider_f151e544{position:relative;min-height:20px}.background_f151e544{display:inline-block;position:absolute;width:44px;height:20px;box-sizing:border-box;vertical-align:middle;border-radius:20px;cursor:pointer;transition:all .1s ease;pointer-events:none}.thumb_f151e544{position:absolute;width:10px;height:10px;border-radius:10px;top:4px;transition:all .1s ease}html[dir=ltr] .thumb_f151e544{left:4px}html[dir=rtl] .thumb_f151e544{right:4px}.stateText_f151e544{display:inline-block;vertical-align:top;line-height:20px;padding:0}html[dir=ltr] .stateText_f151e544{margin-left:54px}html[dir=rtl] .stateText_f151e544{margin-right:54px}.focus_f151e544{position:absolute;left:-3px;top:-3px;right:-3px;bottom:-3px;box-sizing:border-box;outline:transparent}--><!--.root_d110f881{max-width:364px;background:#ffffff;padding:8px;pointer-events:none}.root_d110f881.hasMediumDelay_d110f881{-webkit-animation-delay:.3s;animation-delay:.3s}.content_d110f881{font-size:12px;color:#333333;word-wrap:break-word;overflow-wrap:break-word}.subText_d110f881{margin:0}--><!--.host_df8e5554{display:inline}--><!--.qjbZdNS-BeDNFcx5IWgt{display:inline-block}.qjbZdNS-BeDNFcx5IWgt button,.qjbZdNS-BeDNFcx5IWgt button:focus{color:#767676;width:70px;height:30px;font-size:12px;font-weight:300}html[dir] .qjbZdNS-BeDNFcx5IWgt button,html[dir] .qjbZdNS-BeDNFcx5IWgt button:focus{padding:4px 10px 6px;border:none;background-color:#fff}html[dir=ltr] .qjbZdNS-BeDNFcx5IWgt button,html[dir=ltr] .qjbZdNS-BeDNFcx5IWgt button:focus{text-align:left}html[dir=rtl] .qjbZdNS-BeDNFcx5IWgt button,html[dir=rtl] .qjbZdNS-BeDNFcx5IWgt button:focus{text-align:right}.qjbZdNS-BeDNFcx5IWgt button:active,.qjbZdNS-BeDNFcx5IWgt button:hover{color:#212121}html[dir] .qjbZdNS-BeDNFcx5IWgt button:hover{background-color:#fff}.qjbZdNS-BeDNFcx5IWgt button:disabled{color:#a6a6a6}html[dir] .qjbZdNS-BeDNFcx5IWgt button:disabled{border-color:#fff;background-color:#fff}.qjbZdNS-BeDNFcx5IWgt button span{font-weight:400;font-size:16px}html[dir] .qjbZdNS-BeDNFcx5IWgt button span{padding:0 7px}.qjbZdNS-BeDNFcx5IWgt button:disabled .ms-Icon--chevronDown{color:#a6a6a6}.qjbZdNS-BeDNFcx5IWgt button .ms-Button-label{font-size:12px}._1uSKA9DzFXl4J0_Tjc1MXP{z-index:1901}html[dir] ._1uSKA9DzFXl4J0_Tjc1MXP{box-shadow:0 0 7px rgba(0,0,0,.4)}._1uSKA9DzFXl4J0_Tjc1MXP>div{overflow:inherit}._3MbVb_n8GM-qhdnP2oQ9w-{height:auto;width:280px;font-size:12px}._35oA_09s2dnUde7IiZc9d8{max-height:180px;overflow-y:auto;overflow-x:hidden;display:block}html[dir] ._2AFChQXDDqm0FXiq_h5yKf{padding-bottom:9px}._1ooEZoznLqTL7gYkkUG3WT{width:100%}html[dir] ._1ooEZoznLqTL7gYkkUG3WT{border-collapse:collapse}.pGOsO7qTTcjUalYemhBH_{line-height:30px;font-size:14px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}html[dir] .pGOsO7qTTcjUalYemhBH_{background-color:#f4f4f4;padding:6px 26px 8px;margin-bottom:9px}html[dir=ltr] .pGOsO7qTTcjUalYemhBH_{margin-left:10px}html[dir=rtl] .pGOsO7qTTcjUalYemhBH_{margin-right:10px}html[dir=ltr] ._103wA56dWR_VMTQGiGvwvX{margin-left:22px}html[dir=rtl] ._103wA56dWR_VMTQGiGvwvX{margin-right:22px}html[dir] .pGOsO7qTTcjUalYemhBH_:hover{background-color:#eaeaea}._3W6WuHPSz5FLMJWALHuJHz{font-family:Segoe UI Semibold,Segoe UI,Tahoma,Geneva,Verdana,sans-serif}._3fboll9VxYlXRyDK4ZO0JA{position:relative}html[dir=ltr] ._3fboll9VxYlXRyDK4ZO0JA{margin-left:10px}html[dir=rtl] ._3fboll9VxYlXRyDK4ZO0JA{margin-right:10px}._3FfmQ5tDQaeZYYKw-InuWM{position:absolute;top:36px;width:263px;z-index:1901}html[dir] ._3FfmQ5tDQaeZYYKw-InuWM{background:#fff;border:1px solid #eaeaea}html[dir=ltr] ._3FfmQ5tDQaeZYYKw-InuWM{box-shadow:1px 1px 7px rgba(0,0,0,.4)}html[dir=rtl] ._3FfmQ5tDQaeZYYKw-InuWM{box-shadow:-1px 1px 7px rgba(0,0,0,.4)}._3FfmQ5tDQaeZYYKw-InuWM ._2wCM7vY0mKNq8HvZYZww3R{width:193px}html[dir=ltr] ._3FfmQ5tDQaeZYYKw-InuWM ._2wCM7vY0mKNq8HvZYZww3R{padding-left:9px}html[dir=rtl] ._3FfmQ5tDQaeZYYKw-InuWM ._2wCM7vY0mKNq8HvZYZww3R{padding-right:9px}.DZNhSfi-rz9iyw0MNy_hG{height:28px}html[dir] .DZNhSfi-rz9iyw0MNy_hG{padding:0 3px}._10r6V_QECrej5MH2y537Fw{font-weight:700}._2wCM7vY0mKNq8HvZYZww3R{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px}html[dir] ._3qCJFJVQBxvO1EWWAPdCWn{padding:0 10px}html[dir=ltr] ._3qCJFJVQBxvO1EWWAPdCWn{text-align:right}html[dir=rtl] ._3qCJFJVQBxvO1EWWAPdCWn{text-align:left}html[dir=ltr] ._3GuidKSk6lFFWcrn9s_Dek{margin:10px 6px 15px 0}html[dir=rtl] ._3GuidKSk6lFFWcrn9s_Dek{margin:10px 0 15px 6px}.kjuxTS2OLJactWVWThvS3{font-size:11px}html[dir] .kjuxTS2OLJactWVWThvS3{padding:0 3px}._2AFChQXDDqm0FXiq_h5yKf hr{color:#eaeaea}html[dir] ._2AFChQXDDqm0FXiq_h5yKf hr{background-color:#eaeaea;border-color:#eaeaea;border-bottom-width:0;border-style:solid;margin-bottom:5px}._3MbVb_n8GM-qhdnP2oQ9w-{cursor:default}html[dir=ltr] ._3MbVb_n8GM-qhdnP2oQ9w-{text-align:left}html[dir=rtl] ._3MbVb_n8GM-qhdnP2oQ9w-{text-align:right}html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button,html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button:active,html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button:focus,html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button:hover,html[dir] ._3MbVb_n8GM-qhdnP2oQ9w-.ms-Button:visited,html[dir] .qjbZdNS-BeDNFcx5IWgt,html[dir] .qjbZdNS-BeDNFcx5IWgt.ms-Button:disabled{background-color:transparent;border-color:transparent}._3MbVb_n8GM-qhdnP2oQ9w-:active>.ms-Button-label,._3MbVb_n8GM-qhdnP2oQ9w->.ms-Button-label{font-family:Segoe UI Semilight,Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-weight:400;color:#000}.ms-SearchBox-closebutton{color:#fff}--><!--.RaaSll0e3hOeJTHMQLySs{position:relative;width:230px;height:280px;overflow:hidden}html[dir] .RaaSll0e3hOeJTHMQLySs{margin:20px;border:1px solid #eaeaea}._3GHjI_hOL8hL6kUeNl4og8{position:absolute!important;top:0;z-index:2002;width:50px;height:20px}html[dir=ltr] ._3GHjI_hOL8hL6kUeNl4og8{right:0}html[dir=rtl] ._3GHjI_hOL8hL6kUeNl4og8{left:0}._1M8uGZLuwOOhHtEaKE5brI{min-width:10px;color:#666}html[dir] ._1M8uGZLuwOOhHtEaKE5brI{background-color:transparent;padding:10px}html[dir] ._2iZiJ52p5Ibp1tcMXn-Zto{padding-top:15px;padding-bottom:15px;border-bottom-style:solid;border-width:1px;border-color:#eaeaea}html[dir=ltr] ._2iZiJ52p5Ibp1tcMXn-Zto{padding-left:20px}html[dir=rtl] ._2iZiJ52p5Ibp1tcMXn-Zto{padding-right:20px}._7_xBLMLcwKO1qUMSEeAjO{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400}html[dir] ._7_xBLMLcwKO1qUMSEeAjO{border-bottom-style:solid;border-width:1px;padding:15px 20px;margin-bottom:15px;border-color:#eaeaea}html[dir=ltr] ._7_xBLMLcwKO1qUMSEeAjO{text-align:left}html[dir=rtl] ._7_xBLMLcwKO1qUMSEeAjO{text-align:right}._3R_akt1uzq0BBGENj8ZYSp{height:60px;width:100%;color:#0078d7;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400}html[dir] ._3R_akt1uzq0BBGENj8ZYSp{margin-top:10px;margin-bottom:15px}html[dir] .GmaGb-7fO-IiegLSxw4g_{padding-top:10px}._2eR3ihGy4eNTaeC9BvL7tN{width:60px;height:25px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400;font-weight:600;color:#0078d7}html[dir] ._2eR3ihGy4eNTaeC9BvL7tN{background-color:#fff;border-radius:3px;border:1px solid;margin-top:15px}._18vUGRlxQiO38TP5BpVXQ7{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#a6a6a6}html[dir] ._18vUGRlxQiO38TP5BpVXQ7{margin:12px}._32fZkTb40RHcjM7Tyv-469{height:45px}html[dir] ._32fZkTb40RHcjM7Tyv-469{border-bottom-style:solid;border-width:1px;margin-top:12px;border-color:#eaeaea}.YzChVSQnspHQ4EtzHpEZP{overflow:hidden;height:30px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400}html[dir] .YzChVSQnspHQ4EtzHpEZP{margin:0 20px}html[dir=ltr] .YzChVSQnspHQ4EtzHpEZP{text-align:left}html[dir=rtl] .YzChVSQnspHQ4EtzHpEZP{text-align:right}._3rDCTWOrNEIO9kgau9D2cU{text-overflow:ellipsis;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:11px;font-weight:400;color:#a6a6a6}html[dir] ._3rDCTWOrNEIO9kgau9D2cU{padding:5px 20px}html[dir=ltr] ._3rDCTWOrNEIO9kgau9D2cU{text-align:left}html[dir=rtl] ._3rDCTWOrNEIO9kgau9D2cU{text-align:right}._2a_HGDwOzuGq8FnXAaBCZH{text-overflow:ellipsis;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:12px;font-weight:400}html[dir] ._2a_HGDwOzuGq8FnXAaBCZH{padding:5px 20px}html[dir=ltr] ._2a_HGDwOzuGq8FnXAaBCZH{text-align:left}html[dir=rtl] ._2a_HGDwOzuGq8FnXAaBCZH{text-align:right}--><!--.W3Gro7btK0K_9bZvMv84a{-webkit-overflow-scrolling:touch;overflow-x:hidden;width:100%}html[dir] .W3Gro7btK0K_9bZvMv84a{padding:20px 0;background-color:#fff}.zH5sUqTasM8eTJ-iaKvwR{overflow-y:hidden}.GlZYfgS9Ysv-hF4iWLmSc{overflow-y:auto}.QdYlTiUbLVk_dHvixK3oM{min-width:200px}html[dir] .QdYlTiUbLVk_dHvixK3oM{background-color:#fff}html[dir=ltr] .QdYlTiUbLVk_dHvixK3oM{float:right}html[dir=rtl] .QdYlTiUbLVk_dHvixK3oM{float:left}._3XMWGsbV7jx2tpFHZpy7Jk{cursor:pointer;min-width:200px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}html[dir] ._3XMWGsbV7jx2tpFHZpy7Jk{border:none;background-color:#fff}html[dir=ltr] ._3XMWGsbV7jx2tpFHZpy7Jk{float:right}html[dir=rtl] ._3XMWGsbV7jx2tpFHZpy7Jk{float:left}._2PMRU_Au00dO_7tHXEveG6{min-height:200px}._31xsuGWhNOZ7Pp10XgZP6y{width:100%;height:50px}html[dir] ._31xsuGWhNOZ7Pp10XgZP6y{margin-top:20px}._2VlOBiCHIlYRRQAsESYOKu{display:inline;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:21px;font-weight:100}.OLdwCXIpAJqNhNuJ4uBNl{outline:0;position:relative}html[dir] .OLdwCXIpAJqNhNuJ4uBNl{text-align:center}html[dir=ltr] .OLdwCXIpAJqNhNuJ4uBNl{float:left}html[dir=rtl] .OLdwCXIpAJqNhNuJ4uBNl{float:right}._3OTYAocki1mEQVDeQQRY1p{position:absolute;top:2px;bottom:2px}html[dir=ltr] ._3OTYAocki1mEQVDeQQRY1p,html[dir=rtl] ._3OTYAocki1mEQVDeQQRY1p{left:2px;right:2px}._2sG2jXov6lUoWvSbPtecBH{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}html[dir] ._2sG2jXov6lUoWvSbPtecBH{text-align:center;margin-top:80px}._2VO5zUV9DLu7cL8SYVA1nb{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}.J5cKa2vglCmxsd03ZkLc2 ._1HnH_mcUPRL6S1ME-zEp-B{position:relative}._3PoHNweRptVJZ4TajQou8a{width:100%;height:30px}.uRi831CfzTLN2cIrXlM3S{cursor:pointer;min-width:200px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}html[dir] .uRi831CfzTLN2cIrXlM3S{border:none;background-color:#fff}html[dir=ltr] .uRi831CfzTLN2cIrXlM3S{float:right}html[dir=rtl] .uRi831CfzTLN2cIrXlM3S{float:left}._2NsHR0ypfZd7_tGNJJwwPM{width:100px;height:30px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400;color:#69afe5;font-weight:600}html[dir] ._2NsHR0ypfZd7_tGNJJwwPM{margin:10px;background-color:#fff;border-radius:4px;border:1px solid;border-color:#69afe5}--><!--._2YY-l3IQnlpjOujWG8-7mm{width:90%;min-height:200px}html[dir] ._2YY-l3IQnlpjOujWG8-7mm{margin:auto;padding-top:40px}._3R7bBEgB4fVxmrsEsI3oIq{max-width:200px}html[dir] ._3R7bBEgB4fVxmrsEsI3oIq{margin-top:20px}._2mGF-a2EePyWNwgs_jDlbY{font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;font-weight:400}html[dir] ._2mGF-a2EePyWNwgs_jDlbY{margin-top:50px}--><!--html[dir] ._241o7hpuGyRa6Pkrc8dy3w{margin-bottom:10px}._3dH-qFs992B7oRQncGYfo5{width:100%;height:66px;font-family:Segoe UI WestEuropean,Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;font-size:42px;font-weight:100;color:#0078d7}html[dir] ._3dH-qFs992B7oRQncGYfo5{text-align:center}._3tE7GqX-k4AblGzqGqfh72{width:100%}._39GZsvibnu6oE3djDseEDW{position:relative;overflow-y:auto;width:100%}._3tE7GqX-k4AblGzqGqfh72 ul{height:45px}html[dir] ._3tE7GqX-k4AblGzqGqfh72 ul{text-align:center}._3tE7GqX-k4AblGzqGqfh72 ul button{width:100px}._3tE7GqX-k4AblGzqGqfh72 ul button span{width:100%}--><!--._1ADkIfYVZS2bQUXWpjyCfY{bottom:0;height:40px;position:relative;top:0;width:340px;z-index:1;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] ._1ADkIfYVZS2bQUXWpjyCfY{background-position:50% 50%;background:#eaeaea none no-repeat scroll 50% 50%/cover padding-box border-box}html[dir=ltr] ._1ADkIfYVZS2bQUXWpjyCfY{left:0;right:0;text-align:left}html[dir=rtl] ._1ADkIfYVZS2bQUXWpjyCfY{right:0;left:0;text-align:right}._2QoS7z2xsdxUJKQ4EilidV{bottom:-33.5px;display:block;height:73.5px;position:absolute;top:0;width:340px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir=ltr] ._2QoS7z2xsdxUJKQ4EilidV{left:0;right:0;text-align:left}html[dir=rtl] ._2QoS7z2xsdxUJKQ4EilidV{right:0;left:0;text-align:right}._2I74SlNmAGvrr-0PW3VcC_{bottom:450px;height:100px;position:absolute;top:12px;width:100px;z-index:4;perspective-origin:56px 56px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir] ._2I74SlNmAGvrr-0PW3VcC_{transform:matrix(.5,0,0,.5,0,0);transform-origin:112px 0;border:6px solid #fff;border-radius:50% 50% 50% 50%}html[dir=ltr] ._2I74SlNmAGvrr-0PW3VcC_{left:212px;right:16px;text-align:left;background:#eaeaea none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._2I74SlNmAGvrr-0PW3VcC_{right:212px;left:16px;text-align:right;background:#eaeaea none repeat scroll 100% 0/auto padding-box border-box}.ebfvOHpTX0LUiW1glKMh6{bottom:0;height:82px;position:relative;top:0;width:300px;z-index:0;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] .ebfvOHpTX0LUiW1glKMh6{border-bottom:1px solid rgba(0,0,0,.14902)}html[dir=ltr] .ebfvOHpTX0LUiW1glKMh6{left:0;right:0;text-align:left;background:#fff none repeat scroll 0 0/auto padding-box border-box;padding:8px 16px 16px 24px}html[dir=rtl] .ebfvOHpTX0LUiW1glKMh6{right:0;left:0;text-align:right;background:#fff none repeat scroll 100% 0/auto padding-box border-box;padding:8px 24px 16px 16px}._3EpjI431BnmL0PGNx07-5j{color:#333;height:31px;max-width:250px;text-overflow:ellipsis;white-space:nowrap;width:250px;column-rule-color:#333;font:normal normal normal normal 21px/31.5px Segoe UI Semilight WestEuropean,Segoe UI Semilight,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333;overflow:hidden}html[dir] ._3EpjI431BnmL0PGNx07-5j{border:0 none #333}html[dir=ltr] ._3EpjI431BnmL0PGNx07-5j{text-align:left}html[dir=rtl] ._3EpjI431BnmL0PGNx07-5j{text-align:right}._2Vug3fO3sVVI_SOgqzRMmF{color:#767676;height:19px;text-overflow:ellipsis;white-space:nowrap;width:300px;column-rule-color:#767676;font:normal normal normal normal 12px/18px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #767676;overflow:hidden}html[dir] ._2Vug3fO3sVVI_SOgqzRMmF{border:0 none #767676}html[dir=ltr] ._2Vug3fO3sVVI_SOgqzRMmF{text-align:left}html[dir=rtl] ._2Vug3fO3sVVI_SOgqzRMmF{text-align:right}._1o4xwaNRRgeAw0PArEX4VI{color:#eaeaea;white-space:nowrap;column-rule-color:#eaeaea;font:normal normal normal normal 15.6px/18px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #eaeaea}html[dir] ._1o4xwaNRRgeAw0PArEX4VI{border:0 none #eaeaea;margin:0 7.8px}html[dir=ltr] ._1o4xwaNRRgeAw0PArEX4VI{text-align:left}html[dir=rtl] ._1o4xwaNRRgeAw0PArEX4VI{text-align:right}._2_0U5WX-EicjeIWfV5k0Mg{color:#094ab2;cursor:pointer;display:block;height:22px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;width:300px;column-rule-color:#094ab2;font:normal normal normal normal 12px/20px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #094ab2;overflow:hidden}html[dir] ._2_0U5WX-EicjeIWfV5k0Mg{border:0 none #094ab2;margin:10px 0 0}html[dir=ltr] ._2_0U5WX-EicjeIWfV5k0Mg{text-align:left}html[dir=rtl] ._2_0U5WX-EicjeIWfV5k0Mg{text-align:right}._1OlJn15Vbm07pmj1S-Nz8a{color:#333;cursor:pointer;vertical-align:middle;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/20px Segoe UI Semibold WestEuropean,Segoe UI Semibold,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._1OlJn15Vbm07pmj1S-Nz8a{border:0 none #333}html[dir=ltr] ._1OlJn15Vbm07pmj1S-Nz8a{text-align:left}html[dir=rtl] ._1OlJn15Vbm07pmj1S-Nz8a{text-align:right}--><!--._3x0MXdpHCF2RZzwTQLUpGE{bottom:0;height:190px;min-height:105px;position:relative;top:0;width:290px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;list-style:none outside none;overflow:hidden}html[dir] ._3x0MXdpHCF2RZzwTQLUpGE{border:1px solid rgba(0,0,0,.14902);margin:0 0 8px;padding:16px}html[dir=ltr] ._3x0MXdpHCF2RZzwTQLUpGE{left:0;right:0;background:#fff none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._3x0MXdpHCF2RZzwTQLUpGE{right:0;left:0;background:#fff none repeat scroll 100% 0/auto padding-box border-box}.OCypFjOIydJqrlLtPYzwR{color:#767676;cursor:pointer;height:20px;width:242px;column-rule-color:#767676;font:normal normal normal normal 15px/normal Segoe UI Light WestEuropean,Segoe UI Light,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #767676}html[dir] .OCypFjOIydJqrlLtPYzwR{text-align:center;border:0 none #767676;margin:0 0 10px;padding:0 24px}._1UNo29gcSFlcXCZ5lO_DK7{color:#333;height:125px;width:290px;column-rule-color:#333;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;list-style:none outside none;outline:0 none #333}html[dir] ._1UNo29gcSFlcXCZ5lO_DK7{border:0 none #333;margin:0;padding:0}html[dir=ltr] ._1UNo29gcSFlcXCZ5lO_DK7{text-align:left}html[dir=rtl] ._1UNo29gcSFlcXCZ5lO_DK7{text-align:right}._3sADx2StTgZjvznJzqYc-k{color:#333;height:25px;width:290px;column-rule-color:#333;font:normal normal normal normal 12px/25px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._3sADx2StTgZjvznJzqYc-k{border:0 none #333}.JC-o1R-Imuyno7Qd3yJHn{color:#333;height:25px;width:290px;column-rule-color:#333;font:normal normal normal normal 12px/25px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] .JC-o1R-Imuyno7Qd3yJHn{border:0 none #333}._10wU23ML08U6AkusphMFpD{bottom:2px;color:#333;cursor:pointer;display:inline-block;height:16px;position:relative;top:-2px;white-space:nowrap;width:16px;column-rule-color:#333;font:normal normal normal normal 12px/25px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._10wU23ML08U6AkusphMFpD{border:0 none #333}html[dir=ltr] ._10wU23ML08U6AkusphMFpD{left:0;right:0;text-align:left;margin:0 4px 0 0}html[dir=rtl] ._10wU23ML08U6AkusphMFpD{right:0;left:0;text-align:right;margin:0 0 0 4px}._2SABWZU5KXNWVC_f8fXxUU{color:#333;cursor:pointer;display:inline-block;height:16px;vertical-align:middle;white-space:nowrap;width:16px;column-rule-color:#333;font:normal normal normal normal 16px/25px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._2SABWZU5KXNWVC_f8fXxUU{border:0 none #333}html[dir=ltr] ._2SABWZU5KXNWVC_f8fXxUU{text-align:left}html[dir=rtl] ._2SABWZU5KXNWVC_f8fXxUU{text-align:right}._2FsnZoHitAsCOUiNzidNjQ{color:#333;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/25px Segoe UI Semibold WestEuropean,Segoe UI Semibold,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333;overflow:hidden}html[dir] ._2FsnZoHitAsCOUiNzidNjQ{border:0 none #333}html[dir=ltr] ._2FsnZoHitAsCOUiNzidNjQ{text-align:left}html[dir=rtl] ._2FsnZoHitAsCOUiNzidNjQ{text-align:right}._11cEuwHkRH9RcM6F7RksJi{color:#333;content:'"\E038"';cursor:pointer;speak:none;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/12px Office365Icons;outline:0 none #333}html[dir] ._11cEuwHkRH9RcM6F7RksJi{border:0 none #333}html[dir=ltr] ._11cEuwHkRH9RcM6F7RksJi{text-align:left}html[dir=rtl] ._11cEuwHkRH9RcM6F7RksJi{text-align:right}html[dir=ltr] ._37fIUonJ8aCq3EpXqfTFJP{float:right}html[dir=rtl] ._37fIUonJ8aCq3EpXqfTFJP{float:left}._1ZIlIn4JBbMFR8Ln22Jken{height:40px;width:290px;font:normal normal normal normal 12px/38px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir] ._1ZIlIn4JBbMFR8Ln22Jken{border-top:1px solid #f4f4f4;margin:10px -10px -16px;padding:0 10px}html[dir=ltr] ._1ZIlIn4JBbMFR8Ln22Jken{text-align:left}html[dir=rtl] ._1ZIlIn4JBbMFR8Ln22Jken{text-align:right}._3uA1VyQztfx2UiHw_q3ypB{color:#0078d7;cursor:pointer;text-decoration:none;column-rule-color:#0078d7;font:normal normal normal normal 12px/38px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #0078d7}html[dir] ._3uA1VyQztfx2UiHw_q3ypB{border:0 none #0078d7}html[dir=ltr] ._3uA1VyQztfx2UiHw_q3ypB{text-align:left}html[dir=rtl] ._3uA1VyQztfx2UiHw_q3ypB{text-align:right}--><!--._1HMiHNN5DTAijMYyQF04qi{bottom:0;color:#fff;cursor:pointer;display:block;height:32px;object-fit:cover;position:absolute;speak:none;top:0;width:32px;column-rule-color:#fff;font:normal normal normal normal 21px/40px Office365Icons;outline:0 none #fff}html[dir] ._1HMiHNN5DTAijMYyQF04qi{text-align:center;border:0 none #fff}html[dir=ltr] ._1HMiHNN5DTAijMYyQF04qi,html[dir=rtl] ._1HMiHNN5DTAijMYyQF04qi{left:0;right:0}._1R76bIsjLumorvhvLBj0R-{color:#767676;cursor:pointer;height:20px;width:242px;column-rule-color:#767676;font:normal normal normal normal 15px/normal Segoe UI Light WestEuropean,Segoe UI Light,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #767676}html[dir] ._1R76bIsjLumorvhvLBj0R-{text-align:center;border:0 none #767676;margin:0 0 10px;padding:0 24px;transition:color .1s ease 0s}._1WZbpgeRh0HpoBNXLaDtKi{bottom:0;color:#fff;cursor:pointer;display:inline-block;height:32px;position:relative;speak:none;top:0;vertical-align:middle;width:32px;z-index:0;column-rule-color:#fff;font:normal normal normal normal 21px/40px Office365Icons;outline:0 none #fff;overflow:hidden}html[dir] ._1WZbpgeRh0HpoBNXLaDtKi{text-align:center;border:0 none #fff;border-radius:50% 50% 50% 50%}html[dir=ltr] ._1WZbpgeRh0HpoBNXLaDtKi{left:0;right:0;background:#a6a6a6 none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._1WZbpgeRh0HpoBNXLaDtKi{right:0;left:0;background:#a6a6a6 none repeat scroll 100% 0/auto padding-box border-box}._3em9swG76rKZHUXQsyA83z{color:#094ab2;cursor:pointer;display:block;height:16px;min-height:auto;min-width:auto;text-overflow:ellipsis;white-space:nowrap;width:250px;column-rule-color:#094ab2;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #094ab2;overflow:hidden}html[dir] ._3em9swG76rKZHUXQsyA83z{border:0 none #094ab2}html[dir=ltr] ._3em9swG76rKZHUXQsyA83z{text-align:left}html[dir=rtl] ._3em9swG76rKZHUXQsyA83z{text-align:right}.GwikMziIUttMpn-5F7xEU{color:#333;cursor:pointer;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/normal Segoe UI Semibold WestEuropean,Segoe UI Semibold,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] .GwikMziIUttMpn-5F7xEU{border:0 none #333}html[dir=ltr] .GwikMziIUttMpn-5F7xEU{text-align:left}html[dir=rtl] .GwikMziIUttMpn-5F7xEU{text-align:right}._2SPeiql8P-7reGfnrmId6u{color:#333;cursor:pointer;white-space:nowrap;column-rule-color:#333;font:normal normal normal normal 12px/normal Segoe UI Semilight WestEuropean,Segoe UI Semilight,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #333}html[dir] ._2SPeiql8P-7reGfnrmId6u{border-top:0 none #333;border-bottom:0 none #333}html[dir=ltr] ._2SPeiql8P-7reGfnrmId6u{text-align:left;border-right:0 none #333;border-left:1px solid rgba(0,0,0,.0980392);margin:0 0 0 7.2px;padding:0 0 0 9.6px}html[dir=rtl] ._2SPeiql8P-7reGfnrmId6u{text-align:right;border-left:0 none #333;border-right:1px solid rgba(0,0,0,.0980392);margin:0 7.2px 0 0;padding:0 9.6px 0 0}._8o2L_9vlCq2qxLunoAIrZ{bottom:0;height:105px;min-height:105px;position:relative;top:0;width:290px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] ._8o2L_9vlCq2qxLunoAIrZ{border:1px solid rgba(0,0,0,.14902);margin:0 0 8px;padding:16px;transition:border-color .167s ease 0s,box-shadow .167s ease 0s}html[dir=ltr] ._8o2L_9vlCq2qxLunoAIrZ{left:0;right:0;background:#fff none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._8o2L_9vlCq2qxLunoAIrZ{right:0;left:0;background:#fff none repeat scroll 100% 0/auto padding-box border-box}._28gxcFJHoDWSC0FEUaRp1p{height:40px;width:290px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir=ltr] ._28gxcFJHoDWSC0FEUaRp1p{text-align:left}html[dir=rtl] ._28gxcFJHoDWSC0FEUaRp1p{text-align:right}.mPY1BoQ1p2VIT-ma8xr-C{height:40px;width:290px;font:normal normal normal normal 12px/38px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir] .mPY1BoQ1p2VIT-ma8xr-C{border-top:1px solid #f4f4f4;margin:10px -10px -16px;padding:0 10px}html[dir=ltr] .mPY1BoQ1p2VIT-ma8xr-C{text-align:left}html[dir=rtl] .mPY1BoQ1p2VIT-ma8xr-C{text-align:right}.DV5ah-0pRw3rHzOf_w331{color:#0078d7;cursor:pointer;text-decoration:none;column-rule-color:#0078d7;font:normal normal normal normal 12px/38px Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;outline:0 none #0078d7}html[dir] .DV5ah-0pRw3rHzOf_w331{border:0 none #0078d7}html[dir=ltr] .DV5ah-0pRw3rHzOf_w331{text-align:left}html[dir=rtl] .DV5ah-0pRw3rHzOf_w331{text-align:right}--><!--._37PF7054bD8dBPcGZ-AVEs{height:32px;width:324px;perspective-origin:162px 16px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;list-style:none outside none}html[dir] ._37PF7054bD8dBPcGZ-AVEs{text-align:center;transform-origin:162px 16px}._2EoKloCGPngo_e92-lQt1y{color:#0078d7;display:inline-block;height:32px;text-decoration:none;column-rule-color:#0078d7;perspective-origin:67.9531px 16px;font:normal normal normal normal 12px/32px Segoe UI Semibold WestEuropean,Segoe UI Semibold,Segoe UI,Tahoma,Arial,sans-serif;list-style:none outside none;outline:0 none #0078d7}html[dir] ._2EoKloCGPngo_e92-lQt1y{text-align:center;transform-origin:67.9531px 16px;border:0 none #0078d7;padding:0 8px}--><!--.y8KhungVYDPkSBu02LDAt{height:411px;max-height:420px;width:324px;perspective-origin:170px 213.5px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:auto}html[dir] .y8KhungVYDPkSBu02LDAt{transform-origin:170px 213.5px;padding:8px;transition:opacity .467s cubic-bezier(.175,.885,.32,1.275) 0s,max-height .467s cubic-bezier(.175,.885,.32,1.275) 0s}html[dir=ltr] .y8KhungVYDPkSBu02LDAt{text-align:left}html[dir=rtl] .y8KhungVYDPkSBu02LDAt{text-align:right}--><!--.K3uDTJJ9jObolmgnP_OT7{bottom:0;height:40px;position:relative;top:0;width:340px;z-index:1;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] .K3uDTJJ9jObolmgnP_OT7{background-position:50% 50%;background:#eaeaea none no-repeat scroll 50% 50%/cover padding-box border-box}html[dir=ltr] .K3uDTJJ9jObolmgnP_OT7{left:0;right:0;text-align:left}html[dir=rtl] .K3uDTJJ9jObolmgnP_OT7{right:0;left:0;text-align:right}._230zlaYLrpB6dI8s6c9hnq{bottom:-33.5px;display:block;height:73.5px;position:absolute;top:0;width:340px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir=ltr] ._230zlaYLrpB6dI8s6c9hnq{left:0;right:0;text-align:left}html[dir=rtl] ._230zlaYLrpB6dI8s6c9hnq{right:0;left:0;text-align:right}.rok3bnVvO3OD4Z062PMcS{bottom:0;position:absolute;top:0;height:40px;width:40px;z-index:4;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden;opacity:.75}html[dir] .rok3bnVvO3OD4Z062PMcS{background-position:50% 50%;border:0;background:#868686 none no-repeat scroll 50% 50%/cover padding-box border-box}html[dir=ltr] .rok3bnVvO3OD4Z062PMcS{left:0;right:0;text-align:left}html[dir=rtl] .rok3bnVvO3OD4Z062PMcS{right:0;left:0;text-align:right}._27v09l_gTuHkrDOP5XUbZq{bottom:0;position:absolute;top:0;height:40px;z-index:4;font:normal normal 700 normal 16px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] ._27v09l_gTuHkrDOP5XUbZq{border:0}html[dir=ltr] ._27v09l_gTuHkrDOP5XUbZq{left:45px;right:0;text-align:left}html[dir=rtl] ._27v09l_gTuHkrDOP5XUbZq{right:45px;left:0;text-align:right}._2oOhTaZq6VHZSnoAoOPwfy{bottom:450px;height:100px;position:absolute;top:12px;width:100px;z-index:4;perspective-origin:56px 56px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif}html[dir] ._2oOhTaZq6VHZSnoAoOPwfy{transform:matrix(.5,0,0,.5,0,0);transform-origin:112px 0;border:6px solid #fff;border-radius:50% 50% 50% 50%}html[dir=ltr] ._2oOhTaZq6VHZSnoAoOPwfy{left:212px;right:16px;text-align:left;background:#eaeaea none repeat scroll 0 0/auto padding-box border-box}html[dir=rtl] ._2oOhTaZq6VHZSnoAoOPwfy{right:212px;left:16px;text-align:right;background:#eaeaea none repeat scroll 100% 0/auto padding-box border-box}--><!--._3oibwpF4wGzWAsrkNKkkFA{bottom:0;height:574px;position:relative;top:0;width:340px;z-index:2;perspective-origin:171px 288px;font:normal normal normal normal 12px/normal Segoe UI Regular WestEuropean,Segoe UI,Tahoma,Arial,sans-serif;overflow:hidden}html[dir] ._3oibwpF4wGzWAsrkNKkkFA{box-shadow:0 0 20px 0 rgba(0,0,0,.2);transform-origin:171px 288px;border:1px solid rgba(0,0,0,.14902);transition:opacity .267s ease-out 0s}html[dir=ltr] ._3oibwpF4wGzWAsrkNKkkFA{left:180px;right:-160px;text-align:left;background:#eaeaea none repeat scroll 0 0/auto padding-box border-box;margin:-20px 0 0 -180px}html[dir=rtl] ._3oibwpF4wGzWAsrkNKkkFA{right:180px;left:-160px;text-align:right;background:#eaeaea none repeat scroll 100% 0/auto padding-box border-box;margin:-20px -180px 0 0}.SW2_Ez_huokK8vbvLV0ak{position:absolute;top:510px}html[dir=ltr] .SW2_Ez_huokK8vbvLV0ak{float:left}html[dir=rtl] .SW2_Ez_huokK8vbvLV0ak{float:right}--><!--.ms-u-borderBox,.ms-u-borderBox:after,.ms-u-borderBox:before{box-sizing:border-box}html[dir] .ms-u-borderBase{border:1px solid}.ms-u-clearfix{*zoom:1}.ms-u-clearfix:after,.ms-u-clearfix:before{display:table;content:"";line-height:0}.ms-u-clearfix:after{clear:both}.ms-u-normalize{box-sizing:border-box}html[dir] .ms-u-normalize{margin:0;padding:0;box-shadow:none}html[dir=ltr] .ms-u-textAlignLeft{text-align:left}html[dir=rtl] .ms-u-textAlignLeft{text-align:right}html[dir] .ms-u-textAlignCenter{text-align:center}html[dir=ltr] .ms-u-textAlignRight{text-align:right}html[dir=rtl] .ms-u-textAlignRight{text-align:left}.ms-u-screenReaderOnly{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}html[dir] .ms-u-screenReaderOnly{padding:0;margin:-1px;border:0}.ms-u-textTruncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.ms-u-noWrap{white-space:nowrap}html[dir] .ms-bgColor-themeDark,html[dir] .ms-bgColor-themeDark--hover:hover{background-color:#005a9e}html[dir] .ms-bgColor-themeDarkAlt,html[dir] .ms-bgColor-themeDarkAlt--hover:hover{background-color:#106ebe}html[dir] .ms-bgColor-themeDarker,html[dir] .ms-bgColor-themeDarker--hover:hover{background-color:#004578}html[dir] .ms-bgColor-themePrimary,html[dir] .ms-bgColor-themePrimary--hover:hover{background-color:#0078d7}html[dir] .ms-bgColor-themeSecondary,html[dir] .ms-bgColor-themeSecondary--hover:hover{background-color:#2488d8}html[dir] .ms-bgColor-themeTertiary,html[dir] .ms-bgColor-themeTertiary--hover:hover{background-color:#69afe5}html[dir] .ms-bgColor-themeLight,html[dir] .ms-bgColor-themeLight--hover:hover{background-color:#b3d6f2}html[dir] .ms-bgColor-themeLighter,html[dir] .ms-bgColor-themeLighter--hover:hover{background-color:#deecf9}html[dir] .ms-bgColor-themeLighterAlt,html[dir] .ms-bgColor-themeLighterAlt--hover:hover{background-color:#eff6fc}html[dir] .ms-bgColor-black,html[dir] .ms-bgColor-black--hover:hover{background-color:#000}html[dir] .ms-bgColor-neutralDark,html[dir] .ms-bgColor-neutralDark--hover:hover{background-color:#212121}html[dir] .ms-bgColor-neutralPrimary,html[dir] .ms-bgColor-neutralPrimary--hover:hover{background-color:#333}html[dir] .ms-bgColor-neutralPrimaryAlt,html[dir] .ms-bgColor-neutralPrimaryAlt--hover:hover{background-color:#3c3c3c}html[dir] .ms-bgColor-neutralSecondary,html[dir] .ms-bgColor-neutralSecondary--hover:hover{background-color:#666}html[dir] .ms-bgColor-neutralSecondaryAlt,html[dir] .ms-bgColor-neutralSecondaryAlt--hover:hover{background-color:#767676}html[dir] .ms-bgColor-neutralTertiary,html[dir] .ms-bgColor-neutralTertiary--hover:hover{background-color:#a6a6a6}html[dir] .ms-bgColor-neutralTertiaryAlt,html[dir] .ms-bgColor-neutralTertiaryAlt--hover:hover{background-color:#c8c8c8}html[dir] .ms-bgColor-neutralLight,html[dir] .ms-bgColor-neutralLight--hover:hover{background-color:#eaeaea}html[dir] .ms-bgColor-neutralLighter,html[dir] .ms-bgColor-neutralLighter--hover:hover{background-color:#f4f4f4}html[dir] .ms-bgColor-neutralLighterAlt,html[dir] .ms-bgColor-neutralLighterAlt--hover:hover{background-color:#f8f8f8}html[dir] .ms-bgColor-white,html[dir] .ms-bgColor-white--hover:hover{background-color:#fff}html[dir] .ms-bgColor-yellow{background-color:#ffb900}html[dir] .ms-bgColor-yellowLight{background-color:#fff100}html[dir] .ms-bgColor-orange{background-color:#d83b01}html[dir] .ms-bgColor-orangeLight{background-color:#ea4300}html[dir] .ms-bgColor-orangeLighter{background-color:#ff8c00}html[dir] .ms-bgColor-redDark{background-color:#a80000}html[dir] .ms-bgColor-red{background-color:#e81123}html[dir] .ms-bgColor-magentaDark{background-color:#5c005c}html[dir] .ms-bgColor-magenta{background-color:#b4009e}html[dir] .ms-bgColor-magentaLight{background-color:#e3008c}html[dir] .ms-bgColor-purpleDark{background-color:#32145a}html[dir] .ms-bgColor-purple{background-color:#5c2d91}html[dir] .ms-bgColor-purpleLight{background-color:#b4a0ff}html[dir] .ms-bgColor-blueDark{background-color:#002050}html[dir] .ms-bgColor-blueMid{background-color:#00188f}html[dir] .ms-bgColor-blue{background-color:#0078d7}html[dir] .ms-bgColor-blueLight{background-color:#00bcf2}html[dir] .ms-bgColor-tealDark{background-color:#004b50}html[dir] .ms-bgColor-teal{background-color:#008272}html[dir] .ms-bgColor-tealLight{background-color:#00b294}html[dir] .ms-bgColor-greenDark{background-color:#004b1c}html[dir] .ms-bgColor-green{background-color:#107c10}html[dir] .ms-bgColor-greenLight{background-color:#bad80a}html[dir] .ms-bgColor-info{background-color:#f4f4f4}html[dir] .ms-bgColor-success{background-color:#dff6dd}html[dir] .ms-bgColor-severeWarning{background-color:#fed9cc}html[dir] .ms-bgColor-warning{background-color:#fff4ce}html[dir] .ms-bgColor-error{background-color:#fde7e9}html[dir] .ms-borderColor-themeDark,html[dir] .ms-borderColor-themeDark--hover:hover{border-color:#005a9e}html[dir] .ms-borderColor-themeDarkAlt,html[dir] .ms-borderColor-themeDarkAlt--hover:hover{border-color:#106ebe}html[dir] .ms-borderColor-themeDarker,html[dir] .ms-borderColor-themeDarker--hover:hover{border-color:#004578}html[dir] .ms-borderColor-themePrimary,html[dir] .ms-borderColor-themePrimary--hover:hover{border-color:#0078d7}html[dir] .ms-borderColor-themeSecondary,html[dir] .ms-borderColor-themeSecondary--hover:hover{border-color:#2488d8}html[dir] .ms-borderColor-themeTertiary,html[dir] .ms-borderColor-themeTertiary--hover:hover{border-color:#69afe5}html[dir] .ms-borderColor-themeLight,html[dir] .ms-borderColor-themeLight--hover:hover{border-color:#b3d6f2}html[dir] .ms-borderColor-themeLighter,html[dir] .ms-borderColor-themeLighter--hover:hover{border-color:#deecf9}html[dir] .ms-borderColor-themeLighterAlt,html[dir] .ms-borderColor-themeLighterAlt--hover:hover{border-color:#eff6fc}html[dir] .ms-borderColor-black,html[dir] .ms-borderColor-black--hover:hover{border-color:#000}html[dir] .ms-borderColor-neutralDark,html[dir] .ms-borderColor-neutralDark--hover:hover{border-color:#212121}html[dir] .ms-borderColor-neutralPrimary,html[dir] .ms-borderColor-neutralPrimary--hover:hover{border-color:#333}html[dir] .ms-borderColor-neutralPrimaryAlt,html[dir] .ms-borderColor-neutralPrimaryAlt--hover:hover{border-color:#3c3c3c}html[dir] .ms-borderColor-neutralSecondary,html[dir] .ms-borderColor-neutralSecondary--hover:hover{border-color:#666}html[dir] .ms-borderColor-neutralSecondaryAlt,html[dir] .ms-borderColor-neutralSecondaryAlt--hover:hover{border-color:#767676}html[dir] .ms-borderColor-neutralTertiary,html[dir] .ms-borderColor-neutralTertiary--hover:hover{border-color:#a6a6a6}html[dir] .ms-borderColor-neutralTertiaryAlt,html[dir] .ms-borderColor-neutralTertiaryAlt--hover:hover{border-color:#c8c8c8}html[dir] .ms-borderColor-neutralLight,html[dir] .ms-borderColor-neutralLight--hover:hover{border-color:#eaeaea}html[dir] .ms-borderColor-neutralLighter,html[dir] .ms-borderColor-neutralLighter--hover:hover{border-color:#f4f4f4}html[dir] .ms-borderColor-neutralLighterAlt,html[dir] .ms-borderColor-neutralLighterAlt--hover:hover{border-color:#f8f8f8}html[dir] .ms-borderColor-white,html[dir] .ms-borderColor-white--hover:hover{border-color:#fff}html[dir] .ms-borderColor-yellow{border-color:#ffb900}html[dir] .ms-borderColor-yellowLight{border-color:#fff100}html[dir] .ms-borderColor-orange{border-color:#d83b01}html[dir] .ms-borderColor-orangeLight{border-color:#ea4300}html[dir] .ms-borderColor-orangeLighter{border-color:#ff8c00}html[dir] .ms-borderColor-redDark{border-color:#a80000}html[dir] .ms-borderColor-red{border-color:#e81123}html[dir] .ms-borderColor-magentaDark{border-color:#5c005c}html[dir] .ms-borderColor-magenta{border-color:#b4009e}html[dir] .ms-borderColor-magentaLight{border-color:#e3008c}html[dir] .ms-borderColor-purpleDark{border-color:#32145a}html[dir] .ms-borderColor-purple{border-color:#5c2d91}html[dir] .ms-borderColor-purpleLight{border-color:#b4a0ff}html[dir] .ms-borderColor-blueDark{border-color:#002050}html[dir] .ms-borderColor-blueMid{border-color:#00188f}html[dir] .ms-borderColor-blue{border-color:#0078d7}html[dir] .ms-borderColor-blueLight{border-color:#00bcf2}html[dir] .ms-borderColor-tealDark{border-color:#004b50}html[dir] .ms-borderColor-teal{border-color:#008272}html[dir] .ms-borderColor-tealLight{border-color:#00b294}html[dir] .ms-borderColor-greenDark{border-color:#004b1c}html[dir] .ms-borderColor-green{border-color:#107c10}html[dir] .ms-borderColor-greenLight{border-color:#bad80a}html[dir] .ms-borderColorTop-themePrimary,html[dir] .ms-borderColorTop-themePrimary--hover:hover{border-top-color:#0078d7}.ms-fontWeight-light,.ms-fontWeight-light--hover:hover{font-weight:100}.ms-fontWeight-semilight,.ms-fontWeight-semilight--hover:hover{font-weight:300}.ms-fontWeight-regular,.ms-fontWeight-regular--hover:hover{font-weight:400}.ms-fontWeight-semibold,.ms-fontWeight-semibold--hover:hover{font-weight:600}.ms-fontSize-su{font-size:42px}.ms-fontSize-xxl{font-size:28px}.ms-fontSize-xl{font-size:21px}.ms-fontSize-l{font-size:17px}.ms-fontSize-mPlus{font-size:15px}.ms-fontSize-m{font-size:14px}.ms-fontSize-sPlus{font-size:13px}.ms-fontSize-s{font-size:12px}.ms-fontSize-xs{font-size:11px}.ms-fontSize-mi{font-size:10px}.ms-fontColor-themeDarker,.ms-fontColor-themeDarker--hover:hover{color:#004578}.ms-fontColor-themeDark,.ms-fontColor-themeDark--hover:hover{color:#005a9e}.ms-fontColor-themeDarkAlt,.ms-fontColor-themeDarkAlt--hover:hover{color:#106ebe}.ms-fontColor-themePrimary,.ms-fontColor-themePrimary--hover:hover{color:#0078d7}.ms-fontColor-themeSecondary,.ms-fontColor-themeSecondary--hover:hover{color:#2488d8}.ms-fontColor-themeTertiary,.ms-fontColor-themeTertiary--hover:hover{color:#69afe5}.ms-fontColor-themeLight,.ms-fontColor-themeLight--hover:hover{color:#b3d6f2}.ms-fontColor-themeLighter,.ms-fontColor-themeLighter--hover:hover{color:#deecf9}.ms-fontColor-themeLighterAlt,.ms-fontColor-themeLighterAlt--hover:hover{color:#eff6fc}.ms-fontColor-black,.ms-fontColor-black--hover:hover{color:#000}.ms-fontColor-neutralDark,.ms-fontColor-neutralDark--hover:hover{color:#212121}.ms-fontColor-neutralPrimary,.ms-fontColor-neutralPrimary--hover:hover{color:#333}.ms-fontColor-neutralPrimaryAlt,.ms-fontColor-neutralPrimaryAlt--hover:hover{color:#3c3c3c}.ms-fontColor-neutralSecondary,.ms-fontColor-neutralSecondary--hover:hover{color:#666}.ms-fontColor-neutralSecondaryAlt,.ms-fontColor-neutralSecondaryAlt--hover:hover{color:#767676}.ms-fontColor-neutralTertiary,.ms-fontColor-neutralTertiary--hover:hover{color:#a6a6a6}.ms-fontColor-neutralTertiaryAlt,.ms-fontColor-neutralTertiaryAlt--hover:hover{color:#c8c8c8}.ms-fontColor-neutralLight,.ms-fontColor-neutralLight--hover:hover{color:#eaeaea}.ms-fontColor-neutralLighter,.ms-fontColor-neutralLighter--hover:hover{color:#f4f4f4}.ms-fontColor-neutralLighterAlt,.ms-fontColor-neutralLighterAlt--hover:hover{color:#f8f8f8}.ms-fontColor-white,.ms-fontColor-white--hover:hover{color:#fff}.ms-fontColor-yellow,.ms-fontColor-yellow--hover:hover{color:#ffb900}.ms-fontColor-yellowLight,.ms-fontColor-yellowLight--hover:hover{color:#fff100}.ms-fontColor-orange,.ms-fontColor-orange--hover:hover{color:#d83b01}.ms-fontColor-orangeLight,.ms-fontColor-orangeLight--hover:hover{color:#ea4300}.ms-fontColor-orangeLighter,.ms-fontColor-orangeLighter--hover:hover{color:#ff8c00}.ms-fontColor-redDark,.ms-fontColor-redDark--hover:hover{color:#a80000}.ms-fontColor-red,.ms-fontColor-red--hover:hover{color:#e81123}.ms-fontColor-magentaDark,.ms-fontColor-magentaDark--hover:hover{color:#5c005c}.ms-fontColor-magenta,.ms-fontColor-magenta--hover:hover{color:#b4009e}.ms-fontColor-magentaLight,.ms-fontColor-magentaLight--hover:hover{color:#e3008c}.ms-fontColor-purpleDark,.ms-fontColor-purpleDark--hover:hover{color:#32145a}.ms-fontColor-purple,.ms-fontColor-purple--hover:hover{color:#5c2d91}.ms-fontColor-purpleLight,.ms-fontColor-purpleLight--hover:hover{color:#b4a0ff}.ms-fontColor-blueDark,.ms-fontColor-blueDark--hover:hover{color:#002050}.ms-fontColor-blueMid,.ms-fontColor-blueMid--hover:hover{color:#00188f}.ms-fontColor-blue,.ms-fontColor-blue--hover:hover{color:#0078d7}.ms-fontColor-blueLight,.ms-fontColor-blueLight--hover:hover{color:#00bcf2}.ms-fontColor-tealDark,.ms-fontColor-tealDark--hover:hover{color:#004b50}.ms-fontColor-teal,.ms-fontColor-teal--hover:hover{color:#008272}.ms-fontColor-tealLight,.ms-fontColor-tealLight--hover:hover{color:#00b294}.ms-fontColor-greenDark,.ms-fontColor-greenDark--hover:hover{color:#004b1c}.ms-fontColor-green,.ms-fontColor-green--hover:hover{color:#107c10}.ms-fontColor-greenLight,.ms-fontColor-greenLight--hover:hover{color:#bad80a}.ms-fontColor-info,.ms-fontColor-info--hover:hover{color:#767676}.ms-fontColor-success,.ms-fontColor-success--hover:hover{color:#107c10}.ms-fontColor-alert,.ms-fontColor-alert--hover:hover{color:#d83b01}.ms-fontColor-warning,.ms-fontColor-warning--hover:hover{color:#767676}.ms-fontColor-severeWarning,.ms-fontColor-severeWarning--hover:hover{color:#d83b01}.ms-fontColor-error,.ms-fontColor-error--hover:hover{color:#a80000}.ms-Icon,.ms-Icon:before{-moz-osx-font-smoothing:grayscale;font-family:FabricMDL2Icons;font-style:normal;font-weight:400;speak:none}.ms-Icon,.ms-Icon--circle,.ms-Icon:before{-webkit-font-smoothing:antialiased;display:inline-block}.ms-Icon--circle{position:relative;font-size:1rem;width:1em;height:1em}html[dir] .ms-Icon--circle{padding:0}html[dir=ltr] .ms-Icon--circle{margin:0 .5em 0 0;text-align:left}html[dir=rtl] .ms-Icon--circle{margin:0 0 0 .5em;text-align:right}.ms-Icon--circle:after,.ms-Icon--circle:before{line-height:1;font-size:inherit}.ms-Icon--circle:before{display:block;width:100%;height:100%;vertical-align:top;position:absolute}html[dir] .ms-Icon--circle:before{margin:0;padding:0}.ms-Icon--circle:after{content:"\E000";position:absolute;top:0;z-index:0}html[dir] .ms-Icon--circle:after{transform:scale(2);transform-origin:50% 50%}html[dir=ltr] .ms-Icon--circle:after{left:0}html[dir=rtl] .ms-Icon--circle:after{right:0}.ms-Icon--xs{font-size:10px}.ms-Icon--s{font-size:12px}.ms-Icon--m{font-size:16px}.ms-Icon--l{font-size:20px}.ms-Icon--CarotRightSolid8:before{content:"\EDDA"}.ms-Icon--DynamicsCRMLogo:before{content:"\EDCC"}.ms-Icon--DecreaseIndentLegacy:before{content:"\E290"}.ms-Icon--IncreaseIndentLegacy:before{content:"\E291"}.ms-Icon--GlobalNavButton:before{content:"\E700"}.ms-Icon--InternetSharing:before{content:"\E704"}.ms-Icon--Brightness:before{content:"\E706"}.ms-Icon--MapPin:before{content:"\E707"}.ms-Icon--Airplane:before{content:"\E709"}.ms-Icon--Tablet:before{content:"\E70A"}.ms-Icon--QuickNote:before{content:"\E70B"}.ms-Icon--ChevronDown:before{content:"\E70D"}.ms-Icon--ChevronUp:before{content:"\E70E"}.ms-Icon--Edit:before{content:"\E70F"}.ms-Icon--Add:before{content:"\E710"}.ms-Icon--Cancel:before{content:"\E711"}.ms-Icon--More:before{content:"\E712"}.ms-Icon--Settings:before{content:"\E713"}.ms-Icon--Video:before{content:"\E714"}.ms-Icon--Mail:before{content:"\E715"}.ms-Icon--People:before{content:"\E716"}.ms-Icon--Phone:before{content:"\E717"}.ms-Icon--Pin:before{content:"\E718"}.ms-Icon--Shop:before{content:"\E719"}.ms-Icon--Link:before{content:"\E71B"}.ms-Icon--Filter:before{content:"\E71C"}.ms-Icon--Zoom:before{content:"\E71E"}.ms-Icon--ZoomOut:before{content:"\E71F"}.ms-Icon--Microphone:before{content:"\E720"}.ms-Icon--Search:before{content:"\E721"}.ms-Icon--Camera:before{content:"\E722"}.ms-Icon--Attach:before{content:"\E723"}.ms-Icon--Send:before{content:"\E724"}.ms-Icon--FavoriteList:before{content:"\E728"}.ms-Icon--PageSolid:before{content:"\E729"}.ms-Icon--Forward:before{content:"\E72A"}.ms-Icon--Back:before{content:"\E72B"}.ms-Icon--Refresh:before{content:"\E72C"}.ms-Icon--Share:before{content:"\E72D"}.ms-Icon--Lock:before{content:"\E72E"}.ms-Icon--EMI:before{content:"\E731"}.ms-Icon--MiniLink:before{content:"\E732"}.ms-Icon--Blocked:before{content:"\E733"}.ms-Icon--FavoriteStar:before{content:"\E734"}.ms-Icon--FavoriteStarFill:before{content:"\E735"}.ms-Icon--ReadingMode:before{content:"\E736"}.ms-Icon--Remove:before{content:"\E738"}.ms-Icon--Checkbox:before{content:"\E739"}.ms-Icon--CheckboxComposite:before{content:"\E73A"}.ms-Icon--CheckboxIndeterminate:before{content:"\E73C"}.ms-Icon--CheckMark:before{content:"\E73E"}.ms-Icon--BackToWindow:before{content:"\E73F"}.ms-Icon--FullScreen:before{content:"\E740"}.ms-Icon--Print:before{content:"\E749"}.ms-Icon--Up:before{content:"\E74A"}.ms-Icon--Down:before{content:"\E74B"}.ms-Icon--Delete:before{content:"\E74D"}.ms-Icon--Save:before{content:"\E74E"}.ms-Icon--Sad:before{content:"\E757"}.ms-Icon--SIPMove:before{content:"\E759"}.ms-Icon--EraseTool:before{content:"\E75C"}.ms-Icon--GripperTool:before{content:"\E75E"}.ms-Icon--Dialpad:before{content:"\E75F"}.ms-Icon--PageLeft:before{content:"\E760"}.ms-Icon--PageRight:before{content:"\E761"}.ms-Icon--MultiSelect:before{content:"\E762"}.ms-Icon--Play:before{content:"\E768"}.ms-Icon--Pause:before{content:"\E769"}.ms-Icon--ChevronLeft:before{content:"\E76B"}.ms-Icon--ChevronRight:before{content:"\E76C"}.ms-Icon--Emoji2:before{content:"\E76E"}.ms-Icon--System:before{content:"\E770"}.ms-Icon--Globe:before{content:"\E774"}.ms-Icon--ContactInfo:before{content:"\E779"}.ms-Icon--Unpin:before{content:"\E77A"}.ms-Icon--Contact:before{content:"\E77B"}.ms-Icon--Memo:before{content:"\E77C"}.ms-Icon--WindowsLogo:before{content:"\E782"}.ms-Icon--Error:before{content:"\E783"}.ms-Icon--Unlock:before{content:"\E785"}.ms-Icon--Calendar:before{content:"\E787"}.ms-Icon--Megaphone:before{content:"\E789"}.ms-Icon--AutoEnhanceOn:before{content:"\E78D"}.ms-Icon--AutoEnhanceOff:before{content:"\E78E"}.ms-Icon--Color:before{content:"\E790"}.ms-Icon--SaveAs:before{content:"\E792"}.ms-Icon--Light:before{content:"\E793"}.ms-Icon--Filters:before{content:"\E795"}.ms-Icon--Contrast:before{content:"\E7A1"}.ms-Icon--Redo:before{content:"\E7A6"}.ms-Icon--Undo:before{content:"\E7A7"}.ms-Icon--PhotoCollection:before{content:"\E7AA"}.ms-Icon--Album:before{content:"\E7AB"}.ms-Icon--Rotate:before{content:"\E7AD"}.ms-Icon--PanoIndicator:before{content:"\E7B0"}.ms-Icon--RedEye:before{content:"\E7B3"}.ms-Icon--ThumbnailView:before{content:"\E7B6"}.ms-Icon--Package:before{content:"\E7B8"}.ms-Icon--Warning:before{content:"\E7BA"}.ms-Icon--Financial:before{content:"\E7BB"}.ms-Icon--ShoppingCart:before{content:"\E7BF"}.ms-Icon--Train:before{content:"\E7C0"}.ms-Icon--Flag:before{content:"\E7C1"}.ms-Icon--Move:before{content:"\E7C2"}.ms-Icon--Page:before{content:"\E7C3"}.ms-Icon--TouchPointer:before{content:"\E7C9"}.ms-Icon--Merge:before{content:"\E7D5"}.ms-Icon--TurnRight:before{content:"\E7DB"}.ms-Icon--Ferry:before{content:"\E7E3"}.ms-Icon--Tab:before{content:"\E7E9"}.ms-Icon--Admin:before{content:"\E7EF"}.ms-Icon--TVMonitor:before{content:"\E7F4"}.ms-Icon--Speakers:before{content:"\E7F5"}.ms-Icon--Nav2DMapView:before{content:"\E800"}.ms-Icon--Car:before{content:"\E804"}.ms-Icon--EatDrink:before{content:"\E807"}.ms-Icon--LocationCircle:before{content:"\E80E"}.ms-Icon--Home:before{content:"\E80F"}.ms-Icon--SwitcherStartEnd:before{content:"\E810"}.ms-Icon--IncidentTriangle:before{content:"\E814"}.ms-Icon--Touch:before{content:"\E815"}.ms-Icon--MapDirections:before{content:"\E816"}.ms-Icon--History:before{content:"\E81C"}.ms-Icon--Location:before{content:"\E81D"}.ms-Icon--Work:before{content:"\E821"}.ms-Icon--Recent:before{content:"\E823"}.ms-Icon--Hotel:before{content:"\E824"}.ms-Icon--LocationDot:before{content:"\E827"}.ms-Icon--News:before{content:"\E900"}.ms-Icon--Chat:before{content:"\E901"}.ms-Icon--Group:before{content:"\E902"}.ms-Icon--View:before{content:"\E890"}.ms-Icon--Clear:before{content:"\E894"}.ms-Icon--Sync:before{content:"\E895"}.ms-Icon--Download:before{content:"\E896"}.ms-Icon--Help:before{content:"\E897"}.ms-Icon--Upload:before{content:"\E898"}.ms-Icon--Emoji:before{content:"\E899"}.ms-Icon--MailForward:before{content:"\E89C"}.ms-Icon--ClosePane:before{content:"\E89F"}.ms-Icon--OpenPane:before{content:"\E8A0"}.ms-Icon--PreviewLink:before{content:"\E8A1"}.ms-Icon--ZoomIn:before{content:"\E8A3"}.ms-Icon--Bookmarks:before{content:"\E8A4"}.ms-Icon--Document:before{content:"\E8A5"}.ms-Icon--ProtectedDocument:before{content:"\E8A6"}.ms-Icon--OpenInNewWindow:before{content:"\E8A7"}.ms-Icon--MailFill:before{content:"\E8A8"}.ms-Icon--ViewAll:before{content:"\E8A9"}.ms-Icon--Switch:before{content:"\E8AB"}.ms-Icon--Rename:before{content:"\E8AC"}.ms-Icon--Folder:before{content:"\E8B7"}.ms-Icon--Picture:before{content:"\E8B9"}.ms-Icon--ShowResults:before{content:"\E8BC"}.ms-Icon--Message:before{content:"\E8BD"}.ms-Icon--CalendarDay:before{content:"\E8BF"}.ms-Icon--CalendarWeek:before{content:"\E8C0"}.ms-Icon--MailReplyAll:before{content:"\E8C2"}.ms-Icon--Read:before{content:"\E8C3"}.ms-Icon--PaymentCard:before{content:"\E8C7"}.ms-Icon--Copy:before{content:"\E8C8"}.ms-Icon--Important:before{content:"\E8C9"}.ms-Icon--MailReply:before{content:"\E8CA"}.ms-Icon--Sort:before{content:"\E8CB"}.ms-Icon--GotoToday:before{content:"\E8D1"}.ms-Icon--Font:before{content:"\E8D2"}.ms-Icon--FontColor:before{content:"\E8D3"}.ms-Icon--FolderFill:before{content:"\E8D5"}.ms-Icon--Permissions:before{content:"\E8D7"}.ms-Icon--DisableUpdates:before{content:"\E8D8"}.ms-Icon--Unfavorite:before{content:"\E8D9"}.ms-Icon--Italic:before{content:"\E8DB"}.ms-Icon--Underline:before{content:"\E8DC"}.ms-Icon--Bold:before{content:"\E8DD"}.ms-Icon--MoveToFolder:before{content:"\E8DE"}.ms-Icon--Dislike:before{content:"\E8E0"}.ms-Icon--Like:before{content:"\E8E1"}.ms-Icon--AlignRight:before{content:"\E8E2"}.ms-Icon--AlignCenter:before{content:"\E8E3"}.ms-Icon--AlignLeft:before{content:"\E8E4"}.ms-Icon--OpenFile:before{content:"\E8E5"}.ms-Icon--FontDecrease:before{content:"\E8E7"}.ms-Icon--FontIncrease:before{content:"\E8E8"}.ms-Icon--FontSize:before{content:"\E8E9"}.ms-Icon--CellPhone:before{content:"\E8EA"}.ms-Icon--Tag:before{content:"\E8EC"}.ms-Icon--Library:before{content:"\E8F1"}.ms-Icon--PostUpdate:before{content:"\E8F3"}.ms-Icon--NewFolder:before{content:"\E8F4"}.ms-Icon--CalendarReply:before{content:"\E8F5"}.ms-Icon--UnsyncFolder:before{content:"\E8F6"}.ms-Icon--SyncFolder:before{content:"\E8F7"}.ms-Icon--BlockContact:before{content:"\E8F8"}.ms-Icon--AddFriend:before{content:"\E8FA"}.ms-Icon--BulletedList:before{content:"\E8FD"}.ms-Icon--Preview:before{content:"\E8FF"}.ms-Icon--DockLeft:before{content:"\E90C"}.ms-Icon--DockRight:before{content:"\E90D"}.ms-Icon--Repair:before{content:"\E90F"}.ms-Icon--Accounts:before{content:"\E910"}.ms-Icon--RadioBullet:before{content:"\E915"}.ms-Icon--Stopwatch:before{content:"\E916"}.ms-Icon--Clock:before{content:"\E917"}.ms-Icon--WorldClock:before{content:"\E918"}.ms-Icon--AlarmClock:before{content:"\E919"}.ms-Icon--Hospital:before{content:"\E91D"}.ms-Icon--Timer:before{content:"\E91E"}.ms-Icon--FullCircleMask:before{content:"\E91F"}.ms-Icon--LocationFill:before{content:"\E920"}.ms-Icon--ChromeMinimize:before{content:"\E921"}.ms-Icon--Annotation:before{content:"\E924"}.ms-Icon--ChromeClose:before{content:"\E8BB"}.ms-Icon--Accept:before{content:"\E8FB"}.ms-Icon--Fingerprint:before{content:"\E928"}.ms-Icon--Handwriting:before{content:"\E929"}.ms-Icon--StackIndicator:before{content:"\E7FF"}.ms-Icon--Completed:before{content:"\E930"}.ms-Icon--Label:before{content:"\E932"}.ms-Icon--FlickDown:before{content:"\E935"}.ms-Icon--FlickUp:before{content:"\E936"}.ms-Icon--FlickLeft:before{content:"\E937"}.ms-Icon--FlickRight:before{content:"\E938"}.ms-Icon--MusicInCollection:before{content:"\E940"}.ms-Icon--OneDrive:before{content:"\E941"}.ms-Icon--CompassNW:before{content:"\E942"}.ms-Icon--Code:before{content:"\E943"}.ms-Icon--LightningBolt:before{content:"\E945"}.ms-Icon--Info:before{content:"\E946"}.ms-Icon--CalculatorAddition:before{content:"\E948"}.ms-Icon--CalculatorSubtract:before{content:"\E949"}.ms-Icon--PrintfaxPrinterFile:before{content:"\E956"}.ms-Icon--Headset:before{content:"\E95B"}.ms-Icon--Health:before{content:"\E95E"}.ms-Icon--ChevronUpSmall:before{content:"\E96D"}.ms-Icon--ChevronDownSmall:before{content:"\E96E"}.ms-Icon--ChevronLeftSmall:before{content:"\E96F"}.ms-Icon--ChevronRightSmall:before{content:"\E970"}.ms-Icon--ChevronUpMed:before{content:"\E971"}.ms-Icon--ChevronDownMed:before{content:"\E972"}.ms-Icon--ChevronLeftMed:before{content:"\E973"}.ms-Icon--ChevronRightMed:before{content:"\E974"}.ms-Icon--Dictionary:before{content:"\E82D"}.ms-Icon--ChromeBack:before{content:"\E830"}.ms-Icon--PC1:before{content:"\E977"}.ms-Icon--PresenceChickletVideo:before{content:"\E979"}.ms-Icon--Reply:before{content:"\E97A"}.ms-Icon--DoubleChevronLeftMed:before{content:"\E991"}.ms-Icon--Volume0:before{content:"\E992"}.ms-Icon--Volume1:before{content:"\E993"}.ms-Icon--Volume2:before{content:"\E994"}.ms-Icon--Volume3:before{content:"\E995"}.ms-Icon--CaretHollow:before{content:"\E817"}.ms-Icon--CaretSolid:before{content:"\E818"}.ms-Icon--FolderOpen:before{content:"\E838"}.ms-Icon--Pinned:before{content:"\E840"}.ms-Icon--PinnedFill:before{content:"\E842"}.ms-Icon--Chart:before{content:"\E999"}.ms-Icon--BidiLtr:before{content:"\E9AA"}.ms-Icon--BidiRtl:before{content:"\E9AB"}.ms-Icon--RevToggleKey:before{content:"\E845"}.ms-Icon--RightDoubleQuote:before{content:"\E9B1"}.ms-Icon--Sunny:before{content:"\E9BD"}.ms-Icon--CloudWeather:before{content:"\E9BE"}.ms-Icon--Cloudy:before{content:"\E9BF"}.ms-Icon--PartlyCloudyDay:before{content:"\E9C0"}.ms-Icon--PartlyCloudyNight:before{content:"\E9C1"}.ms-Icon--ClearNight:before{content:"\E9C2"}.ms-Icon--RainShowersDay:before{content:"\E9C3"}.ms-Icon--Rain:before{content:"\E9C4"}.ms-Icon--Thunderstorms:before{content:"\E9C6"}.ms-Icon--RainSnow:before{content:"\E9C7"}.ms-Icon--BlowingSnow:before{content:"\E9C9"}.ms-Icon--Frigid:before{content:"\E9CA"}.ms-Icon--Fog:before{content:"\E9CB"}.ms-Icon--Squalls:before{content:"\E9CC"}.ms-Icon--Duststorm:before{content:"\E9CD"}.ms-Icon--Precipitation:before{content:"\E9CF"}.ms-Icon--Ringer:before{content:"\EA8F"}.ms-Icon--PDF:before{content:"\EA90"}.ms-Icon--SortLines:before{content:"\E9D0"}.ms-Icon--Ribbon:before{content:"\E9D1"}.ms-Icon--CheckList:before{content:"\E9D5"}.ms-Icon--Generate:before{content:"\E9DA"}.ms-Icon--Equalizer:before{content:"\E9E9"}.ms-Icon--BarChartHorizontal:before{content:"\E9EB"}.ms-Icon--Freezing:before{content:"\E9EF"}.ms-Icon--SnowShowerDay:before{content:"\E9FD"}.ms-Icon--HailDay:before{content:"\EA00"}.ms-Icon--WorkFlow:before{content:"\EA01"}.ms-Icon--StoreLogoMed:before{content:"\EA04"}.ms-Icon--RainShowersNight:before{content:"\EA0F"}.ms-Icon--SnowShowerNight:before{content:"\EA11"}.ms-Icon--HailNight:before{content:"\EA13"}.ms-Icon--Info2:before{content:"\EA1F"}.ms-Icon--StoreLogo:before{content:"\EA96"}.ms-Icon--MultiSelectMirrored:before{content:"\EA98"}.ms-Icon--Broom:before{content:"\EA99"}.ms-Icon--MusicInCollectionFill:before{content:"\EA36"}.ms-Icon--List:before{content:"\EA37"}.ms-Icon--Asterisk:before{content:"\EA38"}.ms-Icon--ErrorBadge:before{content:"\EA39"}.ms-Icon--CircleRing:before{content:"\EA3A"}.ms-Icon--CircleFill:before{content:"\EA3B"}.ms-Icon--BookmarksMirrored:before{content:"\EA41"}.ms-Icon--BulletedListMirrored:before{content:"\EA42"}.ms-Icon--CaretHollowMirrored:before{content:"\EA45"}.ms-Icon--CaretSolidMirrored:before{content:"\EA46"}.ms-Icon--ChromeBackMirrored:before{content:"\EA47"}.ms-Icon--ClosePaneMirrored:before{content:"\EA49"}.ms-Icon--DockLeftMirrored:before{content:"\EA4C"}.ms-Icon--DoubleChevronLeftMedMirrored:before{content:"\EA4D"}.ms-Icon--HelpMirrored:before{content:"\EA51"}.ms-Icon--ListMirrored:before{content:"\EA55"}.ms-Icon--MailForwardMirrored:before{content:"\EA56"}.ms-Icon--MailReplyMirrored:before{content:"\EA57"}.ms-Icon--MailReplyAllMirrored:before{content:"\EA58"}.ms-Icon--OpenPaneMirrored:before{content:"\EA5B"}.ms-Icon--SendMirrored:before{content:"\EA63"}.ms-Icon--ShowResultsMirrored:before{content:"\EA65"}.ms-Icon--ThumbnailViewMirrored:before{content:"\EA67"}.ms-Icon--Devices3:before{content:"\EA6C"}.ms-Icon--Lightbulb:before{content:"\EA80"}.ms-Icon--StatusTriangle:before{content:"\EA82"}.ms-Icon--VolumeDisabled:before{content:"\EA85"}.ms-Icon--Puzzle:before{content:"\EA86"}.ms-Icon--EmojiNeutral:before{content:"\EA87"}.ms-Icon--EmojiDisappointed:before{content:"\EA88"}.ms-Icon--HomeSolid:before{content:"\EA8A"}.ms-Icon--Cocktails:before{content:"\EA9D"}.ms-Icon--Articles:before{content:"\EAC1"}.ms-Icon--Cycling:before{content:"\EAC7"}.ms-Icon--DietPlanNotebook:before{content:"\EAC8"}.ms-Icon--Pill:before{content:"\EACB"}.ms-Icon--Running:before{content:"\EADA"}.ms-Icon--Weights:before{content:"\EADB"}.ms-Icon--BarChart4:before{content:"\EAE7"}.ms-Icon--CirclePlus:before{content:"\EAEE"}.ms-Icon--Coffee:before{content:"\EAEF"}.ms-Icon--Cotton:before{content:"\EAF3"}.ms-Icon--Market:before{content:"\EAFC"}.ms-Icon--Money:before{content:"\EAFD"}.ms-Icon--PieDouble:before{content:"\EB04"}.ms-Icon--RemoveFilter:before{content:"\EB08"}.ms-Icon--StockDown:before{content:"\EB0F"}.ms-Icon--StockUp:before{content:"\EB11"}.ms-Icon--Cricket:before{content:"\EB1E"}.ms-Icon--Golf:before{content:"\EB1F"}.ms-Icon--Baseball:before{content:"\EB20"}.ms-Icon--Soccer:before{content:"\EB21"}.ms-Icon--MoreSports:before{content:"\EB22"}.ms-Icon--AutoRacing:before{content:"\EB24"}.ms-Icon--CollegeHoops:before{content:"\EB25"}.ms-Icon--CollegeFootball:before{content:"\EB26"}.ms-Icon--ProFootball:before{content:"\EB27"}.ms-Icon--ProHockey:before{content:"\EB28"}.ms-Icon--Rugby:before{content:"\EB2D"}.ms-Icon--Tennis:before{content:"\EB33"}.ms-Icon--Arrivals:before{content:"\EB34"}.ms-Icon--Design:before{content:"\EB3C"}.ms-Icon--Website:before{content:"\EB41"}.ms-Icon--Drop:before{content:"\EB42"}.ms-Icon--Snow:before{content:"\EB46"}.ms-Icon--BusSolid:before{content:"\EB47"}.ms-Icon--FerrySolid:before{content:"\EB48"}.ms-Icon--TrainSolid:before{content:"\EB4D"}.ms-Icon--Heart:before{content:"\EB51"}.ms-Icon--HeartFill:before{content:"\EB52"}.ms-Icon--Ticket:before{content:"\EB54"}.ms-Icon--Devices4:before{content:"\EB66"}.ms-Icon--AzureLogo:before{content:"\EB6A"}.ms-Icon--BingLogo:before{content:"\EB6B"}.ms-Icon--MSNLogo:before{content:"\EB6C"}.ms-Icon--OutlookLogo:before{content:"\EB6D"}.ms-Icon--OfficeLogo:before{content:"\EB6E"}.ms-Icon--SkypeLogo:before{content:"\EB6F"}.ms-Icon--Door:before{content:"\EB75"}.ms-Icon--EditMirrored:before{content:"\EB7E"}.ms-Icon--GiftCard:before{content:"\EB8E"}.ms-Icon--DoubleBookmark:before{content:"\EB8F"}.ms-Icon--StatusErrorFull:before{content:"\EB90"}.ms-Icon--Certificate:before{content:"\EB95"}.ms-Icon--Photo2:before{content:"\EB9F"}.ms-Icon--CloudDownload:before{content:"\EBD3"}.ms-Icon--WindDirection:before{content:"\EBE6"}.ms-Icon--Family:before{content:"\EBDA"}.ms-Icon--CSS:before{content:"\EBEF"}.ms-Icon--JS:before{content:"\EBF0"}.ms-Icon--ReminderGroup:before{content:"\EBF8"}.ms-Icon--Section:before{content:"\EC0C"}.ms-Icon--OneNoteLogo:before{content:"\EC0D"}.ms-Icon--ToggleFilled:before{content:"\EC11"}.ms-Icon--ToggleBorder:before{content:"\EC12"}.ms-Icon--SliderThumb:before{content:"\EC13"}.ms-Icon--ToggleThumb:before{content:"\EC14"}.ms-Icon--Documentation:before{content:"\EC17"}.ms-Icon--Badge:before{content:"\EC1B"}.ms-Icon--Giftbox:before{content:"\EC1F"}.ms-Icon--ExcelLogo:before{content:"\EC28"}.ms-Icon--WordLogo:before{content:"\EC29"}.ms-Icon--PowerPointLogo:before{content:"\EC2A"}.ms-Icon--Cafe:before{content:"\EC32"}.ms-Icon--SpeedHigh:before{content:"\EC4A"}.ms-Icon--MusicNote:before{content:"\EC4F"}.ms-Icon--EdgeLogo:before{content:"\EC60"}.ms-Icon--CompletedSolid:before{content:"\EC61"}.ms-Icon--AlbumRemove:before{content:"\EC62"}.ms-Icon--MessageFill:before{content:"\EC70"}.ms-Icon--TabletSelected:before{content:"\EC74"}.ms-Icon--MobileSelected:before{content:"\EC75"}.ms-Icon--LaptopSelected:before{content:"\EC76"}.ms-Icon--TVMonitorSelected:before{content:"\EC77"}.ms-Icon--DeveloperTools:before{content:"\EC7A"}.ms-Icon--InsertTextBox:before{content:"\EC7D"}.ms-Icon--LowerBrightness:before{content:"\EC8A"}.ms-Icon--CloudUpload:before{content:"\EC8E"}.ms-Icon--DateTime:before{content:"\EC92"}.ms-Icon--Event:before{content:"\ECA3"}.ms-Icon--Cake:before{content:"\ECA4"}.ms-Icon--Tiles:before{content:"\ECA5"}.ms-Icon--Org:before{content:"\ECA6"}.ms-Icon--PartyLeader:before{content:"\ECA7"}.ms-Icon--DRM:before{content:"\ECA8"}.ms-Icon--CloudAdd:before{content:"\ECA9"}.ms-Icon--AppIconDefault:before{content:"\ECAA"}.ms-Icon--Photo2Add:before{content:"\ECAB"}.ms-Icon--Photo2Remove:before{content:"\ECAC"}.ms-Icon--POI:before{content:"\ECAF"}.ms-Icon--FacebookLogo:before{content:"\ECB3"}.ms-Icon--AddTo:before{content:"\ECC8"}.ms-Icon--RadioBtnOn:before{content:"\ECCB"}.ms-Icon--Embed:before{content:"\ECCE"}.ms-Icon--VideoSolid:before{content:"\EA0C"}.ms-Icon--Teamwork:before{content:"\EA12"}.ms-Icon--PeopleAdd:before{content:"\EA15"}.ms-Icon--Glasses:before{content:"\EA16"}.ms-Icon--DateTime2:before{content:"\EA17"}.ms-Icon--Shield:before{content:"\EA18"}.ms-Icon--Header1:before{content:"\EA19"}.ms-Icon--PageAdd:before{content:"\EA1A"}.ms-Icon--NumberedList:before{content:"\EA1C"}.ms-Icon--PowerBILogo:before{content:"\EA1E"}.ms-Icon--Product:before{content:"\ECDC"}.ms-Icon--Blocked2:before{content:"\ECE4"}.ms-Icon--FangBody:before{content:"\ECEB"}.ms-Icon--Glimmer:before{content:"\ECF4"}.ms-Icon--ChatInviteFriend:before{content:"\ECFE"}.ms-Icon--SharepointLogo:before{content:"\ED18"}.ms-Icon--YammerLogo:before{content:"\ED19"}.ms-Icon--Hide:before{content:"\ED1A"}.ms-Icon--ReturnToSession:before{content:"\ED24"}.ms-Icon--OpenFolderHorizontal:before{content:"\ED25"}.ms-Icon--CalendarMirrored:before{content:"\ED28"}.ms-Icon--SwayLogo:before{content:"\ED29"}.ms-Icon--OutOfOffice:before{content:"\ED34"}.ms-Icon--Trophy:before{content:"\ED3F"}.ms-Icon--ReopenPages:before{content:"\ED50"}.ms-Icon--AADLogo:before{content:"\ED68"}.ms-Icon--AccessLogo:before{content:"\ED69"}.ms-Icon--AdminALogo:before{content:"\ED6A"}.ms-Icon--AdminCLogo:before{content:"\ED6B"}.ms-Icon--AdminDLogo:before{content:"\ED6C"}.ms-Icon--AdminELogo:before{content:"\ED6D"}.ms-Icon--AdminLLogo:before{content:"\ED6E"}.ms-Icon--AdminMLogo:before{content:"\ED6F"}.ms-Icon--AdminOLogo:before{content:"\ED70"}.ms-Icon--AdminPLogo:before{content:"\ED71"}.ms-Icon--AdminSLogo:before{content:"\ED72"}.ms-Icon--AdminYLogo:before{content:"\ED73"}.ms-Icon--AlchemyLogo:before{content:"\ED74"}.ms-Icon--BoxLogo:before{content:"\ED75"}.ms-Icon--DelveLogo:before{content:"\ED76"}.ms-Icon--DropboxLogo:before{content:"\ED77"}.ms-Icon--ExchangeLogo:before{content:"\ED78"}.ms-Icon--LyncLogo:before{content:"\ED79"}.ms-Icon--OfficeVideoLogo:before{content:"\ED7A"}.ms-Icon--ParatureLogo:before{content:"\ED7B"}.ms-Icon--SocialListeningLogo:before{content:"\ED7C"}.ms-Icon--VisioLogo:before{content:"\ED7D"}.ms-Icon--Balloons:before{content:"\ED7E"}.ms-Icon--Cat:before{content:"\ED7F"}.ms-Icon--MailAlert:before{content:"\ED80"}.ms-Icon--MailCheck:before{content:"\ED81"}.ms-Icon--MailLowImportance:before{content:"\ED82"}.ms-Icon--MailPause:before{content:"\ED83"}.ms-Icon--MailRepeat:before{content:"\ED84"}.ms-Icon--SecurityGroup:before{content:"\ED85"}.ms-Icon--Table:before{content:"\ED86"}.ms-Icon--VoicemailForward:before{content:"\ED87"}.ms-Icon--VoicemailReply:before{content:"\ED88"}.ms-Icon--Waffle:before{content:"\ED89"}.ms-Icon--RemoveEvent:before{content:"\ED8A"}.ms-Icon--EventInfo:before{content:"\ED8B"}.ms-Icon--ForwardEvent:before{content:"\ED8C"}.ms-Icon--WipePhone:before{content:"\ED8D"}.ms-Icon--AddOnlineMeeting:before{content:"\ED8E"}.ms-Icon--JoinOnlineMeeting:before{content:"\ED8F"}.ms-Icon--RemoveLink:before{content:"\ED90"}.ms-Icon--PeopleBlock:before{content:"\ED91"}.ms-Icon--PeopleRepeat:before{content:"\ED92"}.ms-Icon--PeopleAlert:before{content:"\ED93"}.ms-Icon--PeoplePause:before{content:"\ED94"}.ms-Icon--TransferCall:before{content:"\ED95"}.ms-Icon--AddPhone:before{content:"\ED96"}.ms-Icon--UnknownCall:before{content:"\ED97"}.ms-Icon--NoteReply:before{content:"\ED98"}.ms-Icon--NoteForward:before{content:"\ED99"}.ms-Icon--NotePinned:before{content:"\ED9A"}.ms-Icon--RemoveOccurrence:before{content:"\ED9B"}.ms-Icon--Timeline:before{content:"\ED9C"}.ms-Icon--EditNote:before{content:"\ED9D"}.ms-Icon--CircleHalfFull:before{content:"\ED9E"}.ms-Icon--Room:before{content:"\ED9F"}.ms-Icon--Unsubscribe:before{content:"\EDA0"}.ms-Icon--Subscribe:before{content:"\EDA1"}.ms-Icon--RecurringTask:before{content:"\EDB2"}.ms-Icon--TaskManager:before{content:"\EDB7"}.ms-Icon--TaskManagerMirrored:before{content:"\EDB8"}.ms-Icon--Combine:before{content:"\EDBB"}.ms-Icon--Split:before{content:"\EDBC"}.ms-Icon--DoubleChevronUp:before{content:"\EDBD"}.ms-Icon--DoubleChevronLeft:before{content:"\EDBE"}.ms-Icon--DoubleChevronRight:before{content:"\EDBF"}.ms-Icon--Ascending:before{content:"\EDC0"}.ms-Icon--Descending:before{content:"\EDC1"}.ms-Icon--TextBox:before{content:"\EDC2"}.ms-Icon--TextField:before{content:"\EDC3"}.ms-Icon--NumberField:before{content:"\EDC4"}.ms-Icon--Dropdown:before{content:"\EDC5"}.ms-Icon--BookingsLogo:before{content:"\EDC7"}.ms-Icon--ClassNotebookLogo:before{content:"\EDC8"}.ms-Icon--CollabsDBLogo:before{content:"\EDC9"}.ms-Icon--DelveAnalyticsLogo:before{content:"\EDCA"}.ms-Icon--DocsLogo:before{content:"\EDCB"}.ms-Icon--Dynamics365Logo:before{content:"\EDCC"}.ms-Icon--DynamicSMBLogo:before{content:"\EDCD"}.ms-Icon--OfficeAssistantLogo:before{content:"\EDCE"}.ms-Icon--OfficeStoreLogo:before{content:"\EDCF"}.ms-Icon--OneNoteEduLogo:before{content:"\EDD0"}.ms-Icon--Planner:before{content:"\EDD1"}.ms-Icon--PowerApps:before{content:"\EDD2"}.ms-Icon--Suitcase:before{content:"\EDD3"}.ms-Icon--ProjectLogo:before{content:"\EDD4"}.ms-Icon--CaretLeft8:before{content:"\EDD5"}.ms-Icon--CaretRight8:before{content:"\EDD6"}.ms-Icon--CaretUp8:before{content:"\EDD7"}.ms-Icon--CaretDown8:before{content:"\EDD8"}.ms-Icon--CaretLeftSolid8:before{content:"\EDD9"}.ms-Icon--CaretRightSolid8:before{content:"\EDDA"}.ms-Icon--CaretUpSolid8:before{content:"\EDDB"}.ms-Icon--CaretDownSolid8:before{content:"\EDDC"}.ms-Icon--ClearFormatting:before{content:"\EDDD"}.ms-Icon--Superscript:before{content:"\EDDE"}.ms-Icon--Subscript:before{content:"\EDDF"}.ms-Icon--Strikethrough:before{content:"\EDE0"}.ms-Icon--SingleBookmark:before{content:"\EDFF"}.ms-Icon--DoubleChevronDown:before{content:"\EE04"}.ms-Icon--ReplyAll:before{content:"\EE0A"}.ms-Icon--GoogleDriveLogo:before{content:"\EE0B"}.ms-Icon--Questionnaire:before{content:"\EE19"}.ms-Icon--ReplyMirrored:before{content:"\EE35"}.ms-Icon--ReplyAllMirrored:before{content:"\EE36"}.ms-Icon--AddGroup:before{content:"\EE3D"}.ms-Icon--QuestionnaireMirrored:before{content:"\EE4B"}.ms-Icon--TemporaryUser:before{content:"\EE58"}.ms-Icon--GroupedDescending:before{content:"\EE66"}.ms-Icon--GroupedAscending:before{content:"\EE67"}.ms-Icon--SortUp:before{content:"\EE68"}.ms-Icon--SortDown:before{content:"\EE69"}.ms-Icon--AwayStatus:before{content:"\EE6A"}.ms-Icon--SyncToPC:before{content:"\EE6E"}.ms-Icon--AustralianRules:before{content:"\EE70"}.ms-Icon--DateTimeMirrored:before{content:"\EE93"}.ms-Icon--DoubleChevronUp12:before{content:"\EE96"}.ms-Icon--DoubleChevronDown12:before{content:"\EE97"}.ms-Icon--DoubleChevronLeft12:before{content:"\EE98"}.ms-Icon--DoubleChevronRight12:before{content:"\EE99"}.ms-Icon--CalendarAgenda:before{content:"\EE9A"}.ms-Icon--AddEvent:before{content:"\EEB5"}.ms-Icon--AssetLibrary:before{content:"\EEB6"}.ms-Icon--DataConnectionLibrary:before{content:"\EEB7"}.ms-Icon--DocLibrary:before{content:"\EEB8"}.ms-Icon--FormLibrary:before{content:"\EEB9"}.ms-Icon--FormLibraryMirrored:before{content:"\EEBA"}.ms-Icon--ReportLibrary:before{content:"\EEBB"}.ms-Icon--ReportLibraryMirrored:before{content:"\EEBC"}.ms-Icon--ContactCard:before{content:"\EEBD"}.ms-Icon--CustomList:before{content:"\EEBE"}.ms-Icon--CustomListMirrored:before{content:"\EEBF"}.ms-Icon--IssueTracking:before{content:"\EEC0"}.ms-Icon--IssueTrackingMirrored:before{content:"\EEC1"}.ms-Icon--PictureLibrary:before{content:"\EEC2"}.ms-Icon--AppForOfficeLogo:before{content:"\EEC7"}.ms-Icon--OfflineOneDriveParachute:before{content:"\EEC8"}.ms-Icon--OfflineOneDriveParachuteDisabled:before{content:"\EEC9"}.ms-Icon--LargeGrid:before{content:"\EECB"}.ms-Icon--TriangleSolidUp12:before{content:"\EECC"}.ms-Icon--TriangleSolidDown12:before{content:"\EECD"}.ms-Icon--TriangleSolidLeft12:before{content:"\EECE"}.ms-Icon--TriangleSolidRight12:before{content:"\EECF"}.ms-Icon--TriangleUp12:before{content:"\EED0"}.ms-Icon--TriangleDown12:before{content:"\EED1"}.ms-Icon--TriangleLeft12:before{content:"\EED2"}.ms-Icon--TriangleRight12:before{content:"\EED3"}.ms-Icon--ArrowUpRight8:before{content:"\EED4"}.ms-Icon--ArrowDownRight8:before{content:"\EED5"}.ms-Icon--DocumentSet:before{content:"\EED6"}.ms-Icon--DelveAnalytics:before{content:"\EEEE"}.ms-Icon--ArrowUpRightMirrored8:before{content:"\EEEF"}.ms-Icon--ArrowDownRightMirrored8:before{content:"\EEF0"}.ms-Icon--OneDriveAdd:before{content:"\EF32"}.ms-Icon--Header2:before{content:"\EF36"}.ms-Icon--Header3:before{content:"\EF37"}.ms-Icon--Header4:before{content:"\EF38"}.ms-Icon--MarketDown:before{content:"\EF42"}.ms-Icon--CalendarWorkWeek:before{content:"\EF51"}.ms-Icon--SidePanel:before{content:"\EF52"}.ms-Icon--GlobeFavorite:before{content:"\EF53"}.ms-Icon--CaretTopLeftSolid8:before{content:"\EF54"}.ms-Icon--CaretTopRightSolid8:before{content:"\EF55"}.ms-Icon--ViewAll2:before{content:"\EF56"}.ms-Icon--DocumentReply:before{content:"\EF57"}.ms-Icon--PlayerSettings:before{content:"\EF58"}.ms-Icon--ReceiptForward:before{content:"\EF59"}.ms-Icon--ReceiptReply:before{content:"\EF5A"}.ms-Icon--ReceiptCheck:before{content:"\EF5B"}.ms-Icon--Fax:before{content:"\EF5C"}.ms-Icon--RecurringEvent:before{content:"\EF5D"}.ms-Icon--ReplyAlt:before{content:"\EF5E"}.ms-Icon--ReplyAllAlt:before{content:"\EF5F"}.ms-Icon--EditStyle:before{content:"\EF60"}.ms-Icon--EditMail:before{content:"\EF61"}.ms-Icon--Lifesaver:before{content:"\EF62"}.ms-Icon--LifesaverLock:before{content:"\EF63"}.ms-Icon--InboxCheck:before{content:"\EF64"}.ms-Icon--FolderSearch:before{content:"\EF65"}.ms-Icon--CollapseMenu:before{content:"\EF66"}.ms-Icon--ExpandMenu:before{content:"\EF67"}.ms-Icon--Boards:before{content:"\EF68"}.ms-Icon--SunAdd:before{content:"\EF69"}.ms-Icon--SunQuestionMark:before{content:"\EF6A"}.ms-Icon--LandscapeOrientation:before{content:"\EF6B"}.ms-Icon--DocumentSearch:before{content:"\EF6C"}.ms-Icon--PublicCalendar:before{content:"\EF6D"}.ms-Icon--PublicContactCard:before{content:"\EF6E"}.ms-Icon--PublicEmail:before{content:"\EF6F"}.ms-Icon--PublicFolder:before{content:"\EF70"}.ms-Icon--WordDocument:before{content:"\EF71"}.ms-Icon--PowerPointDocument:before{content:"\EF72"}.ms-Icon--ExcelDocument:before{content:"\EF73"}.ms-Icon--GroupedList:before{content:"\EF74"}.ms-Icon--ClassroomLogo:before{content:"\EF75"}.ms-Icon--Sections:before{content:"\EF76"}.ms-Icon--EditPhoto:before{content:"\EF77"}.ms-Icon--Starburst:before{content:"\EF78"}.ms-Icon--ShareiOS:before{content:"\EF79"}.ms-Icon--AirTickets:before{content:"\EF7A"}.ms-Icon--PencilReply:before{content:"\EF7B"}.ms-Icon--Tiles2:before{content:"\EF7C"}.ms-Icon--SkypeCircleCheck:before{content:"\EF7D"}.ms-Icon--SkypeCircleClock:before{content:"\EF7E"}.ms-Icon--SkypeCircleMinus:before{content:"\EF7F"}.ms-Icon--SkypeCheck:before{content:"\EF80"}.ms-Icon--SkypeClock:before{content:"\EF81"}.ms-Icon--SkypeMinus:before{content:"\EF82"}.ms-Icon--SkypeMessage:before{content:"\EF83"}.ms-Icon--ClosedCaption:before{content:"\EF84"}.ms-Icon--ATPLogo:before{content:"\EF85"}.ms-Icon--OfficeFormLogo:before{content:"\EF86"}.ms-Icon--RecycleBin:before{content:"\EF87"}.ms-Icon--EmptyRecycleBin:before{content:"\EF88"}.ms-Icon--Hide2:before{content:"\EF89"}.ms-Icon--iOSAppStoreLogo:before{content:"\EF8A"}.ms-Icon--AndroidLogo:before{content:"\EF8B"}.ms-Icon--Breadcrumb:before{content:"\EF8C"}.ms-Icon--ClearFilter:before{content:"\EF8F"}.ms-Icon--Flow:before{content:"\EF90"}.ms-Icon--PageCheckedOut:before{content:"\F02C"}.ms-Icon--SetAction:before{content:"\F071"}.ms-Icon--PowerAppsLogo:before{content:"\F091"}.ms-Icon--PowerApps2Logo:before{content:"\F092"}.ms-Icon--FabricAssetLibrary:before{content:"\F09C"}.ms-Icon--FabricDataConnectionLibrary:before{content:"\F09D"}.ms-Icon--FabricDocLibrary:before{content:"\F09E"}.ms-Icon--FabricFormLibrary:before{content:"\F09F"}.ms-Icon--FabricFormLibraryMirrored:before{content:"\F0A0"}.ms-Icon--FabricReportLibrary:before{content:"\F0A1"}.ms-Icon--FabricReportLibraryMirrored:before{content:"\F0A2"}.ms-Icon--FabricPublicFolder:before{content:"\F0A3"}.ms-Icon--FabricFolderSearch:before{content:"\F0A4"}.ms-Icon--FabricMovetoFolder:before{content:"\F0A5"}.ms-Icon--FabricUnsyncFolder:before{content:"\F0A6"}.ms-Icon--FabricSyncFolder:before{content:"\F0A7"}.ms-Icon--FabricOpenFolderHorizontal:before{content:"\F0A8"}.ms-Icon--FabricFolder:before{content:"\F0A9"}.ms-Icon--FabricFolderFill:before{content:"\F0AA"}.ms-Icon--FabricNewFolder:before{content:"\F0AB"}.ms-Icon--FabricPictureLibrary:before{content:"\F0AC"}.ms-Icon--AddFavorite:before{content:"\F0C8"}.ms-Icon--AddFavoriteFill:before{content:"\F0C9"}.ms-Icon--BufferTimeBefore:before{content:"\F0CF"}.ms-Icon--BufferTimeAfter:before{content:"\F0D0"}.ms-Icon--BufferTimeBoth:before{content:"\F0D1"}.ms-Icon--PageCheckedin:before{content:"\F104"}.ms-Icon--CaretBottomLeftSolid8:before{content:"\F121"}.ms-Icon--CaretBottomRightSolid8:before{content:"\F122"}.ms-Icon--FolderHorizontal:before{content:"\F12B"}.ms-Icon--MicrosoftStaffhubLogo:before{content:"\F130"}.ms-Icon--CaloriesAdd:before{content:"\F172"}.ms-Icon--BranchFork:before{content:"\F173"}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x1.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x1.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x1.png)}.ms-BrandIcon--Icon16{width:16px;height:16px}html[dir] .ms-BrandIcon--Icon16{background-size:100% 100%}.ms-BrandIcon--Icon48{width:48px;height:48px}html[dir] .ms-BrandIcon--Icon48{background-size:100% 100%}.ms-BrandIcon--Icon96{width:96px;height:96px}html[dir] .ms-BrandIcon--Icon96{background-size:100% 100%}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x1_5.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x1_5.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x1_5.png)}}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:192dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x2.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x2.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x2.png)}}@media only screen and (-webkit-min-device-pixel-ratio:3),only screen and (min-resolution:288dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x3.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x3.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x3.png)}}.ms-u-slideRightIn10{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn10{animation-name:fadeIn,slideRightIn10}html[dir=rtl] .ms-u-slideRightIn10{animation-name:fadeIn-rtl,slideRightIn10-rtl}@keyframes slideRightIn10-rtl{0%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn10{0%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn20{animation-name:fadeIn,slideRightIn20}html[dir=rtl] .ms-u-slideRightIn20{animation-name:fadeIn-rtl,slideRightIn20-rtl}@keyframes slideRightIn20-rtl{0%{transform:translate3d(20px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn20{0%{transform:translate3d(-20px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn40{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn40{animation-name:fadeIn,slideRightIn40}html[dir=rtl] .ms-u-slideRightIn40{animation-name:fadeIn-rtl,slideRightIn40-rtl}@keyframes slideRightIn40-rtl{0%{transform:translate3d(40px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn40{0%{transform:translate3d(-40px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn10{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn10{animation-name:fadeIn,slideLeftIn10}html[dir=rtl] .ms-u-slideLeftIn10{animation-name:fadeIn-rtl,slideLeftIn10-rtl}@keyframes slideLeftIn10-rtl{0%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn10{0%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn20{animation-name:fadeIn,slideLeftIn20}html[dir=rtl] .ms-u-slideLeftIn20{animation-name:fadeIn-rtl,slideLeftIn20-rtl}@keyframes slideLeftIn20-rtl{0%{transform:translate3d(-20px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn20{0%{transform:translate3d(20px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn40{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn40{animation-name:fadeIn,slideLeftIn40}html[dir=rtl] .ms-u-slideLeftIn40{animation-name:fadeIn-rtl,slideLeftIn40-rtl}@keyframes slideLeftIn40-rtl{0%{transform:translate3d(-40px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn40{0%{transform:translate3d(40px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn400{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn400{animation-name:fadeIn,slideRightIn400}html[dir=rtl] .ms-u-slideRightIn400{animation-name:fadeIn-rtl,slideRightIn400-rtl}@keyframes slideRightIn400-rtl{0%{transform:translate3d(400px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn400{0%{transform:translate3d(-400px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn400{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn400{animation-name:fadeIn,slideLeft400}html[dir=rtl] .ms-u-slideLeftIn400{animation-name:fadeIn-rtl,slideLeft400-rtl}@keyframes slideLeft400-rtl{0%{transform:translate3d(-400px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeft400{0%{transform:translate3d(400px,0,0)}to{transform:translateZ(0)}}.ms-u-slideUpIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpIn20{animation-name:fadeIn,slideUpIn20}html[dir=rtl] .ms-u-slideUpIn20{animation-name:fadeIn-rtl,slideUpIn20-rtl}@keyframes slideUpIn20-rtl{0%{transform:translate3d(0,20px,0)}to{transform:translateZ(0)}}@keyframes slideUpIn20{0%{transform:translate3d(0,20px,0)}to{transform:translateZ(0)}}.ms-u-slideUpIn10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpIn10{animation-name:fadeIn,slideUpIn10}html[dir=rtl] .ms-u-slideUpIn10{animation-name:fadeIn-rtl,slideUpIn10-rtl}@keyframes slideUpIn10-rtl{0%{transform:translate3d(0,10px,0)}to{transform:translateZ(0)}}@keyframes slideUpIn10{0%{transform:translate3d(0,10px,0)}to{transform:translateZ(0)}}.ms-u-slideDownIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownIn20{animation-name:fadeIn,slideDownIn20}html[dir=rtl] .ms-u-slideDownIn20{animation-name:fadeIn-rtl,slideDownIn20-rtl}@keyframes slideDownIn20-rtl{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}@keyframes slideDownIn20{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}.ms-u-slideDownIn10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownIn10{animation-name:fadeIn,slideDownIn10}html[dir=rtl] .ms-u-slideDownIn10{animation-name:fadeIn-rtl,slideDownIn10-rtl}@keyframes slideDownIn10-rtl{0%{transform:translate3d(0,-10px,0)}to{transform:translateZ(0)}}@keyframes slideDownIn10{0%{transform:translate3d(0,-10px,0)}to{transform:translateZ(0)}}.ms-u-slideRightOut40{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightOut40{animation-name:fadeOut,slideRightOut40}html[dir=rtl] .ms-u-slideRightOut40{animation-name:fadeOut-rtl,slideRightOut40-rtl}@keyframes slideRightOut40-rtl{0%{transform:translateZ(0)}to{transform:translate3d(-40px,0,0)}}@keyframes slideRightOut40{0%{transform:translateZ(0)}to{transform:translate3d(40px,0,0)}}.ms-u-slideLeftOut40{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftOut40{animation-name:fadeOut,slideLeftOut40}html[dir=rtl] .ms-u-slideLeftOut40{animation-name:fadeOut-rtl,slideLeftOut40-rtl}@keyframes slideLeftOut40-rtl{0%{transform:translateZ(0)}to{transform:translate3d(40px,0,0)}}@keyframes slideLeftOut40{0%{transform:translateZ(0)}to{transform:translate3d(-40px,0,0)}}.ms-u-slideRightOut400{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightOut400{animation-name:fadeOut,slideRightOut400}html[dir=rtl] .ms-u-slideRightOut400{animation-name:fadeOut-rtl,slideRightOut400-rtl}@keyframes slideRightOut400-rtl{0%{transform:translateZ(0)}to{transform:translate3d(-400px,0,0)}}@keyframes slideRightOut400{0%{transform:translateZ(0)}to{transform:translate3d(400px,0,0)}}.ms-u-slideLeftOut400{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftOut400{animation-name:fadeOut,slideLeftOut400}html[dir=rtl] .ms-u-slideLeftOut400{animation-name:fadeOut-rtl,slideLeftOut400-rtl}@keyframes slideLeftOut400-rtl{0%{transform:translateZ(0)}to{transform:translate3d(400px,0,0)}}@keyframes slideLeftOut400{0%{transform:translateZ(0)}to{transform:translate3d(-400px,0,0)}}.ms-u-slideUpOut20{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpOut20{animation-name:fadeOut,slideUpOut20}html[dir=rtl] .ms-u-slideUpOut20{animation-name:fadeOut-rtl,slideUpOut20-rtl}@keyframes slideUpOut20-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}@keyframes slideUpOut20{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}.ms-u-slideUpOut10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpOut10{animation-name:fadeOut,slideUpOut10}html[dir=rtl] .ms-u-slideUpOut10{animation-name:fadeOut-rtl,slideUpOut10-rtl}@keyframes slideUpOut10-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,-10px,0)}}@keyframes slideUpOut10{0%{transform:translateZ(0)}to{transform:translate3d(0,-10px,0)}}.ms-u-slideDownOut20{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownOut20{animation-name:fadeOut,slideDownOut20}html[dir=rtl] .ms-u-slideDownOut20{animation-name:fadeOut-rtl,slideDownOut20-rtl}@keyframes slideDownOut20-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,20px,0)}}@keyframes slideDownOut20{0%{transform:translateZ(0)}to{transform:translate3d(0,20px,0)}}.ms-u-slideDownOut10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownOut10{animation-name:fadeOut,slideDownOut10}html[dir=rtl] .ms-u-slideDownOut10{animation-name:fadeOut-rtl,slideDownOut10-rtl}@keyframes slideDownOut10-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,10px,0)}}@keyframes slideDownOut10{0%{transform:translateZ(0)}to{transform:translate3d(0,10px,0)}}.ms-u-scaleUpIn100{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleUpIn100{animation-name:fadeIn,scaleUp100}html[dir=rtl] .ms-u-scaleUpIn100{animation-name:fadeIn-rtl,scaleUp100-rtl}@keyframes scaleUp100-rtl{0%{transform:scale3d(.98,.98,1)}to{transform:scaleX(1)}}@keyframes scaleUp100{0%{transform:scale3d(.98,.98,1)}to{transform:scaleX(1)}}.ms-u-scaleDownIn100{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleDownIn100{animation-name:fadeIn,scaleDown100}html[dir=rtl] .ms-u-scaleDownIn100{animation-name:fadeIn-rtl,scaleDown100-rtl}@keyframes scaleDown100-rtl{0%{transform:scale3d(1.03,1.03,1)}to{transform:scaleX(1)}}@keyframes scaleDown100{0%{transform:scale3d(1.03,1.03,1)}to{transform:scaleX(1)}}.ms-u-scaleUpOut103{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleUpOut103{animation-name:fadeOut,scaleUp103}html[dir=rtl] .ms-u-scaleUpOut103{animation-name:fadeOut-rtl,scaleUp103-rtl}@keyframes scaleUp103-rtl{0%{transform:scaleX(1)}to{transform:scale3d(1.03,1.03,1)}}@keyframes scaleUp103{0%{transform:scaleX(1)}to{transform:scale3d(1.03,1.03,1)}}.ms-u-scaleDownOut98{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleDownOut98{animation-name:fadeOut,scaleDown98}html[dir=rtl] .ms-u-scaleDownOut98{animation-name:fadeOut-rtl,scaleDown98-rtl}@keyframes scaleDown98-rtl{0%{transform:scaleX(1)}to{transform:scale3d(.98,.98,1)}}@keyframes scaleDown98{0%{transform:scaleX(1)}to{transform:scale3d(.98,.98,1)}}.ms-u-fadeIn100,.ms-u-fadeIn400{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both}html[dir=ltr] .ms-u-fadeIn100,html[dir=ltr] .ms-u-fadeIn400{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn100,html[dir=rtl] .ms-u-fadeIn400{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn100{animation-duration:.167s}.ms-u-fadeIn200{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.267s}html[dir=ltr] .ms-u-fadeIn200{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn200{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn500{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.467s}html[dir=ltr] .ms-u-fadeIn500{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn500{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}@keyframes fadeIn-rtl{0%{opacity:0;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:1}}@keyframes fadeIn{0%{opacity:0;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:1}}.ms-u-fadeOut100,.ms-u-fadeOut400{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both}html[dir=ltr] .ms-u-fadeOut100,html[dir=ltr] .ms-u-fadeOut400{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut100,html[dir=rtl] .ms-u-fadeOut400{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut100{animation-duration:.1s}.ms-u-fadeOut200{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.167s}html[dir=ltr] .ms-u-fadeOut200{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut200{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut500{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.467s}html[dir=ltr] .ms-u-fadeOut500{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut500{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}@keyframes fadeOut-rtl{0%{opacity:1;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:0}}@keyframes fadeOut{0%{opacity:1;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:0}}.ms-u-rotate90deg{-webkit-animation-duration:.1s;-moz-animation-duration:.1s;-ms-animation-duration:.1s;-o-animation-duration:.1s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-rotate90deg{animation-name:rotate90}html[dir=rtl] .ms-u-rotate90deg{animation-name:rotate90-rtl}@keyframes rotate90-rtl{0%{transform:rotate(0deg)}to{transform:rotate(-90deg)}}@keyframes rotate90{0%{transform:rotate(0deg)}to{transform:rotate(90deg)}}.ms-u-rotateN90deg{-webkit-animation-duration:.1s;-moz-animation-duration:.1s;-ms-animation-duration:.1s;-o-animation-duration:.1s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-rotateN90deg{animation-name:rotateN90}html[dir=rtl] .ms-u-rotateN90deg{animation-name:rotateN90-rtl}@keyframes rotateN90-rtl{0%{transform:rotate(-90deg)}to{transform:rotate(0deg)}}@keyframes rotateN90{0%{transform:rotate(90deg)}to{transform:rotate(0deg)}}html[dir] .ms-u-expandCollapse400{transition:height .367s cubic-bezier(.1,.25,.75,.9)}html[dir] .ms-u-expandCollapse200{transition:height .167s cubic-bezier(.1,.25,.75,.9)}html[dir] .ms-u-expandCollapse100{transition:height .1s cubic-bezier(.1,.25,.75,.9)}.ms-u-delay100{animation-delay:.167s}.ms-u-delay200{animation-delay:.267s}@media (max-width:479px){.ms-u-hiddenLgDown,.ms-u-hiddenMdDown,.ms-u-hiddenSm,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:480px) and (max-width:639px){.ms-u-hiddenLgDown,.ms-u-hiddenMd,.ms-u-hiddenMdDown,.ms-u-hiddenMdUp,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:640px) and (max-width:1023px){.ms-u-hiddenLg,.ms-u-hiddenLgDown,.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:1024px) and (max-width:1365px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXl,.ms-u-hiddenXlDown,.ms-u-hiddenXlUp,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:1366px) and (max-width:1919px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlUp,.ms-u-hiddenXxl,.ms-u-hiddenXxlDown,.ms-u-hiddenXxlUp{display:none!important}}@media (min-width:1920px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlUp,.ms-u-hiddenXxlUp,.ms-u-hiddenXxxl{display:none!important}}.ms-u-sm12{width:100%}.ms-u-sm11{width:91.66666666666666%}.ms-u-sm10{width:83.33333333333334%}.ms-u-sm9{width:75%}.ms-u-sm8{width:66.66666666666666%}.ms-u-sm7{width:58.333333333333336%}.ms-u-sm6{width:50%}.ms-u-sm5{width:41.66666666666667%}.ms-u-sm4{width:33.33333333333333%}.ms-u-sm3{width:25%}.ms-u-sm2{width:16.666666666666664%}.ms-u-sm1{width:8.333333333333332%}html[dir=ltr] .ms-u-smPull12{right:100%}html[dir=rtl] .ms-u-smPull12{left:100%}html[dir=ltr] .ms-u-smPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-smPull11{left:91.66666666666666%}html[dir=ltr] .ms-u-smPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-smPull10{left:83.33333333333334%}html[dir=ltr] .ms-u-smPull9{right:75%}html[dir=rtl] .ms-u-smPull9{left:75%}html[dir=ltr] .ms-u-smPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-smPull8{left:66.66666666666666%}html[dir=ltr] .ms-u-smPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-smPull7{left:58.333333333333336%}html[dir=ltr] .ms-u-smPull6{right:50%}html[dir=rtl] .ms-u-smPull6{left:50%}html[dir=ltr] .ms-u-smPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-smPull5{left:41.66666666666667%}html[dir=ltr] .ms-u-smPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-smPull4{left:33.33333333333333%}html[dir=ltr] .ms-u-smPull3{right:25%}html[dir=rtl] .ms-u-smPull3{left:25%}html[dir=ltr] .ms-u-smPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-smPull2{left:16.666666666666664%}html[dir=ltr] .ms-u-smPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-smPull1{left:8.333333333333332%}html[dir=ltr] .ms-u-smPull0{right:auto}html[dir=rtl] .ms-u-smPull0{left:auto}html[dir=ltr] .ms-u-smPush12{left:100%}html[dir=rtl] .ms-u-smPush12{right:100%}html[dir=ltr] .ms-u-smPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-smPush11{right:91.66666666666666%}html[dir=ltr] .ms-u-smPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-smPush10{right:83.33333333333334%}html[dir=ltr] .ms-u-smPush9{left:75%}html[dir=rtl] .ms-u-smPush9{right:75%}html[dir=ltr] .ms-u-smPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-smPush8{right:66.66666666666666%}html[dir=ltr] .ms-u-smPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-smPush7{right:58.333333333333336%}html[dir=ltr] .ms-u-smPush6{left:50%}html[dir=rtl] .ms-u-smPush6{right:50%}html[dir=ltr] .ms-u-smPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-smPush5{right:41.66666666666667%}html[dir=ltr] .ms-u-smPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-smPush4{right:33.33333333333333%}html[dir=ltr] .ms-u-smPush3{left:25%}html[dir=rtl] .ms-u-smPush3{right:25%}html[dir=ltr] .ms-u-smPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-smPush2{right:16.666666666666664%}html[dir=ltr] .ms-u-smPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-smPush1{right:8.333333333333332%}html[dir=ltr] .ms-u-smPush0{left:auto}html[dir=rtl] .ms-u-smPush0{right:auto}html[dir=ltr] .ms-u-smOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-smOffset11{margin-right:91.66666666666666%}html[dir=ltr] .ms-u-smOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-smOffset10{margin-right:83.33333333333334%}html[dir=ltr] .ms-u-smOffset9{margin-left:75%}html[dir=rtl] .ms-u-smOffset9{margin-right:75%}html[dir=ltr] .ms-u-smOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-smOffset8{margin-right:66.66666666666666%}html[dir=ltr] .ms-u-smOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-smOffset7{margin-right:58.333333333333336%}html[dir=ltr] .ms-u-smOffset6{margin-left:50%}html[dir=rtl] .ms-u-smOffset6{margin-right:50%}html[dir=ltr] .ms-u-smOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-smOffset5{margin-right:41.66666666666667%}html[dir=ltr] .ms-u-smOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-smOffset4{margin-right:33.33333333333333%}html[dir=ltr] .ms-u-smOffset3{margin-left:25%}html[dir=rtl] .ms-u-smOffset3{margin-right:25%}html[dir=ltr] .ms-u-smOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-smOffset2{margin-right:16.666666666666664%}html[dir=ltr] .ms-u-smOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-smOffset1{margin-right:8.333333333333332%}html[dir=ltr] .ms-u-smOffset0{margin-left:0}html[dir=rtl] .ms-u-smOffset0{margin-right:0}@media (min-width:480px){.ms-u-md12{width:100%}}@media (min-width:480px){.ms-u-md11{width:91.66666666666666%}}@media (min-width:480px){.ms-u-md10{width:83.33333333333334%}}@media (min-width:480px){.ms-u-md9{width:75%}}@media (min-width:480px){.ms-u-md8{width:66.66666666666666%}}@media (min-width:480px){.ms-u-md7{width:58.333333333333336%}}@media (min-width:480px){.ms-u-md6{width:50%}}@media (min-width:480px){.ms-u-md5{width:41.66666666666667%}}@media (min-width:480px){.ms-u-md4{width:33.33333333333333%}}@media (min-width:480px){.ms-u-md3{width:25%}}@media (min-width:480px){.ms-u-md2{width:16.666666666666664%}}@media (min-width:480px){.ms-u-md1{width:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull12{right:100%}html[dir=rtl] .ms-u-mdPull12{left:100%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-mdPull11{left:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-mdPull10{left:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull9{right:75%}html[dir=rtl] .ms-u-mdPull9{left:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-mdPull8{left:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-mdPull7{left:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull6{right:50%}html[dir=rtl] .ms-u-mdPull6{left:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-mdPull5{left:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-mdPull4{left:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull3{right:25%}html[dir=rtl] .ms-u-mdPull3{left:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-mdPull2{left:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-mdPull1{left:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull0{right:auto}html[dir=rtl] .ms-u-mdPull0{left:auto}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush12{left:100%}html[dir=rtl] .ms-u-mdPush12{right:100%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-mdPush11{right:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-mdPush10{right:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush9{left:75%}html[dir=rtl] .ms-u-mdPush9{right:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-mdPush8{right:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-mdPush7{right:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush6{left:50%}html[dir=rtl] .ms-u-mdPush6{right:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-mdPush5{right:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-mdPush4{right:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush3{left:25%}html[dir=rtl] .ms-u-mdPush3{right:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-mdPush2{right:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-mdPush1{right:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush0{left:auto}html[dir=rtl] .ms-u-mdPush0{right:auto}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-mdOffset11{margin-right:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-mdOffset10{margin-right:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset9{margin-left:75%}html[dir=rtl] .ms-u-mdOffset9{margin-right:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-mdOffset8{margin-right:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-mdOffset7{margin-right:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset6{margin-left:50%}html[dir=rtl] .ms-u-mdOffset6{margin-right:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-mdOffset5{margin-right:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-mdOffset4{margin-right:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset3{margin-left:25%}html[dir=rtl] .ms-u-mdOffset3{margin-right:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-mdOffset2{margin-right:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-mdOffset1{margin-right:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset0{margin-left:0}html[dir=rtl] .ms-u-mdOffset0{margin-right:0}}@media (min-width:640px){.ms-u-lg12{width:100%}}@media (min-width:640px){.ms-u-lg11{width:91.66666666666666%}}@media (min-width:640px){.ms-u-lg10{width:83.33333333333334%}}@media (min-width:640px){.ms-u-lg9{width:75%}}@media (min-width:640px){.ms-u-lg8{width:66.66666666666666%}}@media (min-width:640px){.ms-u-lg7{width:58.333333333333336%}}@media (min-width:640px){.ms-u-lg6{width:50%}}@media (min-width:640px){.ms-u-lg5{width:41.66666666666667%}}@media (min-width:640px){.ms-u-lg4{width:33.33333333333333%}}@media (min-width:640px){.ms-u-lg3{width:25%}}@media (min-width:640px){.ms-u-lg2{width:16.666666666666664%}}@media (min-width:640px){.ms-u-lg1{width:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull12{right:100%}html[dir=rtl] .ms-u-lgPull12{left:100%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-lgPull11{left:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-lgPull10{left:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull9{right:75%}html[dir=rtl] .ms-u-lgPull9{left:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-lgPull8{left:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-lgPull7{left:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull6{right:50%}html[dir=rtl] .ms-u-lgPull6{left:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-lgPull5{left:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-lgPull4{left:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull3{right:25%}html[dir=rtl] .ms-u-lgPull3{left:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-lgPull2{left:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-lgPull1{left:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull0{right:auto}html[dir=rtl] .ms-u-lgPull0{left:auto}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush12{left:100%}html[dir=rtl] .ms-u-lgPush12{right:100%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-lgPush11{right:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-lgPush10{right:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush9{left:75%}html[dir=rtl] .ms-u-lgPush9{right:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-lgPush8{right:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-lgPush7{right:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush6{left:50%}html[dir=rtl] .ms-u-lgPush6{right:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-lgPush5{right:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-lgPush4{right:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush3{left:25%}html[dir=rtl] .ms-u-lgPush3{right:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-lgPush2{right:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-lgPush1{right:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush0{left:auto}html[dir=rtl] .ms-u-lgPush0{right:auto}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-lgOffset11{margin-right:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-lgOffset10{margin-right:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset9{margin-left:75%}html[dir=rtl] .ms-u-lgOffset9{margin-right:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-lgOffset8{margin-right:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-lgOffset7{margin-right:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset6{margin-left:50%}html[dir=rtl] .ms-u-lgOffset6{margin-right:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-lgOffset5{margin-right:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-lgOffset4{margin-right:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset3{margin-left:25%}html[dir=rtl] .ms-u-lgOffset3{margin-right:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-lgOffset2{margin-right:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-lgOffset1{margin-right:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset0{margin-left:0}html[dir=rtl] .ms-u-lgOffset0{margin-right:0}}@media (min-width:1024px){.ms-u-xl12{width:100%}}@media (min-width:1024px){.ms-u-xl11{width:91.66666666666666%}}@media (min-width:1024px){.ms-u-xl10{width:83.33333333333334%}}@media (min-width:1024px){.ms-u-xl9{width:75%}}@media (min-width:1024px){.ms-u-xl8{width:66.66666666666666%}}@media (min-width:1024px){.ms-u-xl7{width:58.333333333333336%}}@media (min-width:1024px){.ms-u-xl6{width:50%}}@media (min-width:1024px){.ms-u-xl5{width:41.66666666666667%}}@media (min-width:1024px){.ms-u-xl4{width:33.33333333333333%}}@media (min-width:1024px){.ms-u-xl3{width:25%}}@media (min-width:1024px){.ms-u-xl2{width:16.666666666666664%}}@media (min-width:1024px){.ms-u-xl1{width:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull12{right:100%}html[dir=rtl] .ms-u-xlPull12{left:100%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xlPull11{left:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xlPull10{left:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull9{right:75%}html[dir=rtl] .ms-u-xlPull9{left:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xlPull8{left:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xlPull7{left:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull6{right:50%}html[dir=rtl] .ms-u-xlPull6{left:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xlPull5{left:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xlPull4{left:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull3{right:25%}html[dir=rtl] .ms-u-xlPull3{left:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xlPull2{left:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xlPull1{left:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull0{right:auto}html[dir=rtl] .ms-u-xlPull0{left:auto}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush12{left:100%}html[dir=rtl] .ms-u-xlPush12{right:100%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xlPush11{right:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xlPush10{right:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush9{left:75%}html[dir=rtl] .ms-u-xlPush9{right:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xlPush8{right:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xlPush7{right:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush6{left:50%}html[dir=rtl] .ms-u-xlPush6{right:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xlPush5{right:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xlPush4{right:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush3{left:25%}html[dir=rtl] .ms-u-xlPush3{right:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xlPush2{right:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xlPush1{right:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush0{left:auto}html[dir=rtl] .ms-u-xlPush0{right:auto}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xlOffset11{margin-right:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xlOffset10{margin-right:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xlOffset9{margin-right:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xlOffset8{margin-right:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xlOffset7{margin-right:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xlOffset6{margin-right:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xlOffset5{margin-right:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xlOffset4{margin-right:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xlOffset3{margin-right:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xlOffset2{margin-right:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xlOffset1{margin-right:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset0{margin-left:0}html[dir=rtl] .ms-u-xlOffset0{margin-right:0}}@media (min-width:1366px){.ms-u-xxl12{width:100%}}@media (min-width:1366px){.ms-u-xxl11{width:91.66666666666666%}}@media (min-width:1366px){.ms-u-xxl10{width:83.33333333333334%}}@media (min-width:1366px){.ms-u-xxl9{width:75%}}@media (min-width:1366px){.ms-u-xxl8{width:66.66666666666666%}}@media (min-width:1366px){.ms-u-xxl7{width:58.333333333333336%}}@media (min-width:1366px){.ms-u-xxl6{width:50%}}@media (min-width:1366px){.ms-u-xxl5{width:41.66666666666667%}}@media (min-width:1366px){.ms-u-xxl4{width:33.33333333333333%}}@media (min-width:1366px){.ms-u-xxl3{width:25%}}@media (min-width:1366px){.ms-u-xxl2{width:16.666666666666664%}}@media (min-width:1366px){.ms-u-xxl1{width:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull12{right:100%}html[dir=rtl] .ms-u-xxlPull12{left:100%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xxlPull11{left:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xxlPull10{left:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull9{right:75%}html[dir=rtl] .ms-u-xxlPull9{left:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xxlPull8{left:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xxlPull7{left:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull6{right:50%}html[dir=rtl] .ms-u-xxlPull6{left:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xxlPull5{left:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xxlPull4{left:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull3{right:25%}html[dir=rtl] .ms-u-xxlPull3{left:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xxlPull2{left:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xxlPull1{left:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull0{right:auto}html[dir=rtl] .ms-u-xxlPull0{left:auto}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush12{left:100%}html[dir=rtl] .ms-u-xxlPush12{right:100%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xxlPush11{right:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xxlPush10{right:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush9{left:75%}html[dir=rtl] .ms-u-xxlPush9{right:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xxlPush8{right:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xxlPush7{right:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush6{left:50%}html[dir=rtl] .ms-u-xxlPush6{right:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xxlPush5{right:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xxlPush4{right:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush3{left:25%}html[dir=rtl] .ms-u-xxlPush3{right:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xxlPush2{right:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xxlPush1{right:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush0{left:auto}html[dir=rtl] .ms-u-xxlPush0{right:auto}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xxlOffset11{margin-right:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xxlOffset10{margin-right:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xxlOffset9{margin-right:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xxlOffset8{margin-right:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xxlOffset7{margin-right:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xxlOffset6{margin-right:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xxlOffset5{margin-right:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xxlOffset4{margin-right:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xxlOffset3{margin-right:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xxlOffset2{margin-right:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xxlOffset1{margin-right:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset0{margin-left:0}html[dir=rtl] .ms-u-xxlOffset0{margin-right:0}}@media (min-width:1920px){.ms-u-xxxl12{width:100%}}@media (min-width:1920px){.ms-u-xxxl11{width:91.66666666666666%}}@media (min-width:1920px){.ms-u-xxxl10{width:83.33333333333334%}}@media (min-width:1920px){.ms-u-xxxl9{width:75%}}@media (min-width:1920px){.ms-u-xxxl8{width:66.66666666666666%}}@media (min-width:1920px){.ms-u-xxxl7{width:58.333333333333336%}}@media (min-width:1920px){.ms-u-xxxl6{width:50%}}@media (min-width:1920px){.ms-u-xxxl5{width:41.66666666666667%}}@media (min-width:1920px){.ms-u-xxxl4{width:33.33333333333333%}}@media (min-width:1920px){.ms-u-xxxl3{width:25%}}@media (min-width:1920px){.ms-u-xxxl2{width:16.666666666666664%}}@media (min-width:1920px){.ms-u-xxxl1{width:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull12{right:100%}html[dir=rtl] .ms-u-xxxlPull12{left:100%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xxxlPull11{left:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xxxlPull10{left:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull9{right:75%}html[dir=rtl] .ms-u-xxxlPull9{left:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xxxlPull8{left:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xxxlPull7{left:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull6{right:50%}html[dir=rtl] .ms-u-xxxlPull6{left:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xxxlPull5{left:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xxxlPull4{left:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull3{right:25%}html[dir=rtl] .ms-u-xxxlPull3{left:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xxxlPull2{left:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xxxlPull1{left:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull0{right:auto}html[dir=rtl] .ms-u-xxxlPull0{left:auto}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush12{left:100%}html[dir=rtl] .ms-u-xxxlPush12{right:100%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xxxlPush11{right:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xxxlPush10{right:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush9{left:75%}html[dir=rtl] .ms-u-xxxlPush9{right:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xxxlPush8{right:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xxxlPush7{right:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush6{left:50%}html[dir=rtl] .ms-u-xxxlPush6{right:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xxxlPush5{right:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xxxlPush4{right:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush3{left:25%}html[dir=rtl] .ms-u-xxxlPush3{right:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xxxlPush2{right:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xxxlPush1{right:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush0{left:auto}html[dir=rtl] .ms-u-xxxlPush0{right:auto}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xxxlOffset11{margin-right:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xxxlOffset10{margin-right:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xxxlOffset9{margin-right:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xxxlOffset8{margin-right:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xxxlOffset7{margin-right:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xxxlOffset6{margin-right:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xxxlOffset5{margin-right:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xxxlOffset4{margin-right:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xxxlOffset3{margin-right:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xxxlOffset2{margin-right:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xxxlOffset1{margin-right:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset0{margin-left:0}html[dir=rtl] .ms-u-xxxlOffset0{margin-right:0}}.ms-Grid{box-sizing:border-box;*zoom:1}html[dir] .ms-Grid{padding:0 8px}.ms-Grid:after,.ms-Grid:before{display:table;content:"";line-height:0}.ms-Grid:after{clear:both}.ms-Grid-row{box-sizing:border-box;*zoom:1}html[dir] .ms-Grid-row{margin:0 -8px}.ms-Grid-row:after,.ms-Grid-row:before{display:table;content:"";line-height:0}.ms-Grid-row:after{clear:both}.ms-Grid-col{position:relative;min-height:1px;box-sizing:border-box}html[dir=ltr] .ms-Grid-col{padding-left:8px;padding-right:8px;float:left}html[dir=rtl] .ms-Grid-col{padding-right:8px;padding-left:8px;float:right}html[dir] .ms-Grid-col .ms-Grid{padding:0}.ms-Fabric{color:#333}-->

    <!--.fkDATHPs67KecPZTWjyC5{display:block;box-sizing:border-box;line-height:30px;width:100%}html[dir] .fkDATHPs67KecPZTWjyC5{border:none;margin:0}html[dir=ltr] .fkDATHPs67KecPZTWjyC5{text-align:left}html[dir=rtl] .fkDATHPs67KecPZTWjyC5{text-align:right}.fkDATHPs67KecPZTWjyC5 :first-child{line-height:30px;height:30px}.fkDATHPs67KecPZTWjyC5 span{font-size:11px}._3WqwqkAHXbeawL_HRTV850 :first-child{color:#0078d7;cursor:default}html[dir] ._3WqwqkAHXbeawL_HRTV850 :first-child{background-color:inherit}html[dir=ltr] ._3WqwqkAHXbeawL_HRTV850 :first-child{background:0 0}html[dir=rtl] ._3WqwqkAHXbeawL_HRTV850 :first-child{background:100% 0}html[dir] ._2Z0C7fbHGKQAz3VrYnCM2p{border:none}._2Z0C7fbHGKQAz3VrYnCM2p ul{overflow:hidden}._2cdS7ynh8ypFb3vCm5ruAj :first-child{line-height:30px;height:30px}._2cdS7ynh8ypFb3vCm5ruAj :first-child span{font-size:12px}._2cdS7ynh8ypFb3vCm5ruAj :first-child i{line-height:30px;height:30px}html[dir] ._2cdS7ynh8ypFb3vCm5ruAj button{background-color:inherit}.ms-LayerHost-overlay div{z-index:2000!important}.ms-Dialog-button.ms-Dialog-button--close{z-index:2001!important}.ms-Dialog{z-index:2000!important}--><!--._1ZK5qz71rnRbVDWBQXxSbL{display:block}html[dir] ._1ZK5qz71rnRbVDWBQXxSbL{background:transparent;border:none}html[dir=ltr] ._1ZK5qz71rnRbVDWBQXxSbL{margin-right:5px}html[dir=rtl] ._1ZK5qz71rnRbVDWBQXxSbL{margin-left:5px}.iUrQ8xvQuVGBkYlnuJW8i{height:16px;width:0}html[dir] .iUrQ8xvQuVGBkYlnuJW8i{padding:0;margin:7px 0}html[dir=ltr] .iUrQ8xvQuVGBkYlnuJW8i{border-right-width:1px;border-right-style:solid;float:left}html[dir=rtl] .iUrQ8xvQuVGBkYlnuJW8i{border-left-width:1px;border-left-style:solid;float:right}._1pNkfPiuQJ-FIKn0Vb8roY{display:inline-block;width:30px;height:30px}._1NUpqxTtvfjqe2cXAJrJl_{width:16px;height:16px}--><!--._3InrqsNczfVzST1g2rD0jq{display:block;cursor:pointer}html[dir=ltr] ._3InrqsNczfVzST1g2rD0jq{margin:0 5px 0 0}html[dir=rtl] ._3InrqsNczfVzST1g2rD0jq{margin:0 0 0 5px}._1lcq5WOFQSOc3pAP9-QSU-{width:16px;height:16px}html[dir] ._1lcq5WOFQSOc3pAP9-QSU-{padding:7px}._2eBUN7HrrPwqc-9visTxwO{width:30px;height:30px}--><!--._1sXebP9dhDeSRDu_ykstQ{display:-ms-flexbox;display:flex;display:-webkit-flex;height:30px}--><!--.Nr_OEkeERSs4g3KmXglLs{display:-ms-flexbox;display:flex;display:-webkit-flex}--><!--._3OH24vPORLvOxW6VNaj7tk{width:100%;height:100%}--><!--._37cHtDIuxCJ6YLGmDZry9u{max-width:none}._1fdP-gn4bP3Klri8dd8u47{height:190px}._2e73G9uLYEJxo3Xn4EHeLs{width:550px;height:400px}._1aWP3GHQ3wdn65AEBmYgPD{display:none!important}--><!--.ms-u-borderBox,.ms-u-borderBox:after,.ms-u-borderBox:before{box-sizing:border-box}html[dir] .ms-u-borderBase{border:1px solid}.ms-u-clearfix{*zoom:1}.ms-u-clearfix:after,.ms-u-clearfix:before{display:table;content:"";line-height:0}.ms-u-clearfix:after{clear:both}.ms-u-normalize{box-sizing:border-box}html[dir] .ms-u-normalize{margin:0;padding:0;box-shadow:none}html[dir=ltr] .ms-u-textAlignLeft{text-align:left}html[dir=rtl] .ms-u-textAlignLeft{text-align:right}html[dir] .ms-u-textAlignCenter{text-align:center}html[dir=ltr] .ms-u-textAlignRight{text-align:right}html[dir=rtl] .ms-u-textAlignRight{text-align:left}.ms-u-screenReaderOnly{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}html[dir] .ms-u-screenReaderOnly{padding:0;margin:-1px;border:0}.ms-u-textTruncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal}.ms-u-noWrap{white-space:nowrap}html[dir] .ms-bgColor-themeDark,html[dir] .ms-bgColor-themeDark--hover:hover{background-color:#005a9e}html[dir] .ms-bgColor-themeDarkAlt,html[dir] .ms-bgColor-themeDarkAlt--hover:hover{background-color:#106ebe}html[dir] .ms-bgColor-themeDarker,html[dir] .ms-bgColor-themeDarker--hover:hover{background-color:#004578}html[dir] .ms-bgColor-themePrimary,html[dir] .ms-bgColor-themePrimary--hover:hover{background-color:#0078d7}html[dir] .ms-bgColor-themeSecondary,html[dir] .ms-bgColor-themeSecondary--hover:hover{background-color:#2488d8}html[dir] .ms-bgColor-themeTertiary,html[dir] .ms-bgColor-themeTertiary--hover:hover{background-color:#69afe5}html[dir] .ms-bgColor-themeLight,html[dir] .ms-bgColor-themeLight--hover:hover{background-color:#b3d6f2}html[dir] .ms-bgColor-themeLighter,html[dir] .ms-bgColor-themeLighter--hover:hover{background-color:#deecf9}html[dir] .ms-bgColor-themeLighterAlt,html[dir] .ms-bgColor-themeLighterAlt--hover:hover{background-color:#eff6fc}html[dir] .ms-bgColor-black,html[dir] .ms-bgColor-black--hover:hover{background-color:#000}html[dir] .ms-bgColor-neutralDark,html[dir] .ms-bgColor-neutralDark--hover:hover{background-color:#212121}html[dir] .ms-bgColor-neutralPrimary,html[dir] .ms-bgColor-neutralPrimary--hover:hover{background-color:#333}html[dir] .ms-bgColor-neutralPrimaryAlt,html[dir] .ms-bgColor-neutralPrimaryAlt--hover:hover{background-color:#3c3c3c}html[dir] .ms-bgColor-neutralSecondary,html[dir] .ms-bgColor-neutralSecondary--hover:hover{background-color:#666}html[dir] .ms-bgColor-neutralSecondaryAlt,html[dir] .ms-bgColor-neutralSecondaryAlt--hover:hover{background-color:#767676}html[dir] .ms-bgColor-neutralTertiary,html[dir] .ms-bgColor-neutralTertiary--hover:hover{background-color:#a6a6a6}html[dir] .ms-bgColor-neutralTertiaryAlt,html[dir] .ms-bgColor-neutralTertiaryAlt--hover:hover{background-color:#c8c8c8}html[dir] .ms-bgColor-neutralLight,html[dir] .ms-bgColor-neutralLight--hover:hover{background-color:#eaeaea}html[dir] .ms-bgColor-neutralLighter,html[dir] .ms-bgColor-neutralLighter--hover:hover{background-color:#f4f4f4}html[dir] .ms-bgColor-neutralLighterAlt,html[dir] .ms-bgColor-neutralLighterAlt--hover:hover{background-color:#f8f8f8}html[dir] .ms-bgColor-white,html[dir] .ms-bgColor-white--hover:hover{background-color:#fff}html[dir] .ms-bgColor-yellow{background-color:#ffb900}html[dir] .ms-bgColor-yellowLight{background-color:#fff100}html[dir] .ms-bgColor-orange{background-color:#d83b01}html[dir] .ms-bgColor-orangeLight{background-color:#ea4300}html[dir] .ms-bgColor-orangeLighter{background-color:#ff8c00}html[dir] .ms-bgColor-redDark{background-color:#a80000}html[dir] .ms-bgColor-red{background-color:#e81123}html[dir] .ms-bgColor-magentaDark{background-color:#5c005c}html[dir] .ms-bgColor-magenta{background-color:#b4009e}html[dir] .ms-bgColor-magentaLight{background-color:#e3008c}html[dir] .ms-bgColor-purpleDark{background-color:#32145a}html[dir] .ms-bgColor-purple{background-color:#5c2d91}html[dir] .ms-bgColor-purpleLight{background-color:#b4a0ff}html[dir] .ms-bgColor-blueDark{background-color:#002050}html[dir] .ms-bgColor-blueMid{background-color:#00188f}html[dir] .ms-bgColor-blue{background-color:#0078d7}html[dir] .ms-bgColor-blueLight{background-color:#00bcf2}html[dir] .ms-bgColor-tealDark{background-color:#004b50}html[dir] .ms-bgColor-teal{background-color:#008272}html[dir] .ms-bgColor-tealLight{background-color:#00b294}html[dir] .ms-bgColor-greenDark{background-color:#004b1c}html[dir] .ms-bgColor-green{background-color:#107c10}html[dir] .ms-bgColor-greenLight{background-color:#bad80a}html[dir] .ms-bgColor-info{background-color:#f4f4f4}html[dir] .ms-bgColor-success{background-color:#dff6dd}html[dir] .ms-bgColor-severeWarning{background-color:#fed9cc}html[dir] .ms-bgColor-warning{background-color:#fff4ce}html[dir] .ms-bgColor-error{background-color:#fde7e9}html[dir] .ms-borderColor-themeDark,html[dir] .ms-borderColor-themeDark--hover:hover{border-color:#005a9e}html[dir] .ms-borderColor-themeDarkAlt,html[dir] .ms-borderColor-themeDarkAlt--hover:hover{border-color:#106ebe}html[dir] .ms-borderColor-themeDarker,html[dir] .ms-borderColor-themeDarker--hover:hover{border-color:#004578}html[dir] .ms-borderColor-themePrimary,html[dir] .ms-borderColor-themePrimary--hover:hover{border-color:#0078d7}html[dir] .ms-borderColor-themeSecondary,html[dir] .ms-borderColor-themeSecondary--hover:hover{border-color:#2488d8}html[dir] .ms-borderColor-themeTertiary,html[dir] .ms-borderColor-themeTertiary--hover:hover{border-color:#69afe5}html[dir] .ms-borderColor-themeLight,html[dir] .ms-borderColor-themeLight--hover:hover{border-color:#b3d6f2}html[dir] .ms-borderColor-themeLighter,html[dir] .ms-borderColor-themeLighter--hover:hover{border-color:#deecf9}html[dir] .ms-borderColor-themeLighterAlt,html[dir] .ms-borderColor-themeLighterAlt--hover:hover{border-color:#eff6fc}html[dir] .ms-borderColor-black,html[dir] .ms-borderColor-black--hover:hover{border-color:#000}html[dir] .ms-borderColor-neutralDark,html[dir] .ms-borderColor-neutralDark--hover:hover{border-color:#212121}html[dir] .ms-borderColor-neutralPrimary,html[dir] .ms-borderColor-neutralPrimary--hover:hover{border-color:#333}html[dir] .ms-borderColor-neutralPrimaryAlt,html[dir] .ms-borderColor-neutralPrimaryAlt--hover:hover{border-color:#3c3c3c}html[dir] .ms-borderColor-neutralSecondary,html[dir] .ms-borderColor-neutralSecondary--hover:hover{border-color:#666}html[dir] .ms-borderColor-neutralSecondaryAlt,html[dir] .ms-borderColor-neutralSecondaryAlt--hover:hover{border-color:#767676}html[dir] .ms-borderColor-neutralTertiary,html[dir] .ms-borderColor-neutralTertiary--hover:hover{border-color:#a6a6a6}html[dir] .ms-borderColor-neutralTertiaryAlt,html[dir] .ms-borderColor-neutralTertiaryAlt--hover:hover{border-color:#c8c8c8}html[dir] .ms-borderColor-neutralLight,html[dir] .ms-borderColor-neutralLight--hover:hover{border-color:#eaeaea}html[dir] .ms-borderColor-neutralLighter,html[dir] .ms-borderColor-neutralLighter--hover:hover{border-color:#f4f4f4}html[dir] .ms-borderColor-neutralLighterAlt,html[dir] .ms-borderColor-neutralLighterAlt--hover:hover{border-color:#f8f8f8}html[dir] .ms-borderColor-white,html[dir] .ms-borderColor-white--hover:hover{border-color:#fff}html[dir] .ms-borderColor-yellow{border-color:#ffb900}html[dir] .ms-borderColor-yellowLight{border-color:#fff100}html[dir] .ms-borderColor-orange{border-color:#d83b01}html[dir] .ms-borderColor-orangeLight{border-color:#ea4300}html[dir] .ms-borderColor-orangeLighter{border-color:#ff8c00}html[dir] .ms-borderColor-redDark{border-color:#a80000}html[dir] .ms-borderColor-red{border-color:#e81123}html[dir] .ms-borderColor-magentaDark{border-color:#5c005c}html[dir] .ms-borderColor-magenta{border-color:#b4009e}html[dir] .ms-borderColor-magentaLight{border-color:#e3008c}html[dir] .ms-borderColor-purpleDark{border-color:#32145a}html[dir] .ms-borderColor-purple{border-color:#5c2d91}html[dir] .ms-borderColor-purpleLight{border-color:#b4a0ff}html[dir] .ms-borderColor-blueDark{border-color:#002050}html[dir] .ms-borderColor-blueMid{border-color:#00188f}html[dir] .ms-borderColor-blue{border-color:#0078d7}html[dir] .ms-borderColor-blueLight{border-color:#00bcf2}html[dir] .ms-borderColor-tealDark{border-color:#004b50}html[dir] .ms-borderColor-teal{border-color:#008272}html[dir] .ms-borderColor-tealLight{border-color:#00b294}html[dir] .ms-borderColor-greenDark{border-color:#004b1c}html[dir] .ms-borderColor-green{border-color:#107c10}html[dir] .ms-borderColor-greenLight{border-color:#bad80a}html[dir] .ms-borderColorTop-themePrimary,html[dir] .ms-borderColorTop-themePrimary--hover:hover{border-top-color:#0078d7}.ms-fontWeight-light,.ms-fontWeight-light--hover:hover{font-weight:100}.ms-fontWeight-semilight,.ms-fontWeight-semilight--hover:hover{font-weight:300}.ms-fontWeight-regular,.ms-fontWeight-regular--hover:hover{font-weight:400}.ms-fontWeight-semibold,.ms-fontWeight-semibold--hover:hover{font-weight:600}.ms-fontSize-su{font-size:42px}.ms-fontSize-xxl{font-size:28px}.ms-fontSize-xl{font-size:21px}.ms-fontSize-l{font-size:17px}.ms-fontSize-mPlus{font-size:15px}.ms-fontSize-m{font-size:14px}.ms-fontSize-sPlus{font-size:13px}.ms-fontSize-s{font-size:12px}.ms-fontSize-xs{font-size:11px}.ms-fontSize-mi{font-size:10px}.ms-fontColor-themeDarker,.ms-fontColor-themeDarker--hover:hover{color:#004578}.ms-fontColor-themeDark,.ms-fontColor-themeDark--hover:hover{color:#005a9e}.ms-fontColor-themeDarkAlt,.ms-fontColor-themeDarkAlt--hover:hover{color:#106ebe}.ms-fontColor-themePrimary,.ms-fontColor-themePrimary--hover:hover{color:#0078d7}.ms-fontColor-themeSecondary,.ms-fontColor-themeSecondary--hover:hover{color:#2488d8}.ms-fontColor-themeTertiary,.ms-fontColor-themeTertiary--hover:hover{color:#69afe5}.ms-fontColor-themeLight,.ms-fontColor-themeLight--hover:hover{color:#b3d6f2}.ms-fontColor-themeLighter,.ms-fontColor-themeLighter--hover:hover{color:#deecf9}.ms-fontColor-themeLighterAlt,.ms-fontColor-themeLighterAlt--hover:hover{color:#eff6fc}.ms-fontColor-black,.ms-fontColor-black--hover:hover{color:#000}.ms-fontColor-neutralDark,.ms-fontColor-neutralDark--hover:hover{color:#212121}.ms-fontColor-neutralPrimary,.ms-fontColor-neutralPrimary--hover:hover{color:#333}.ms-fontColor-neutralPrimaryAlt,.ms-fontColor-neutralPrimaryAlt--hover:hover{color:#3c3c3c}.ms-fontColor-neutralSecondary,.ms-fontColor-neutralSecondary--hover:hover{color:#666}.ms-fontColor-neutralSecondaryAlt,.ms-fontColor-neutralSecondaryAlt--hover:hover{color:#767676}.ms-fontColor-neutralTertiary,.ms-fontColor-neutralTertiary--hover:hover{color:#a6a6a6}.ms-fontColor-neutralTertiaryAlt,.ms-fontColor-neutralTertiaryAlt--hover:hover{color:#c8c8c8}.ms-fontColor-neutralLight,.ms-fontColor-neutralLight--hover:hover{color:#eaeaea}.ms-fontColor-neutralLighter,.ms-fontColor-neutralLighter--hover:hover{color:#f4f4f4}.ms-fontColor-neutralLighterAlt,.ms-fontColor-neutralLighterAlt--hover:hover{color:#f8f8f8}.ms-fontColor-white,.ms-fontColor-white--hover:hover{color:#fff}.ms-fontColor-yellow,.ms-fontColor-yellow--hover:hover{color:#ffb900}.ms-fontColor-yellowLight,.ms-fontColor-yellowLight--hover:hover{color:#fff100}.ms-fontColor-orange,.ms-fontColor-orange--hover:hover{color:#d83b01}.ms-fontColor-orangeLight,.ms-fontColor-orangeLight--hover:hover{color:#ea4300}.ms-fontColor-orangeLighter,.ms-fontColor-orangeLighter--hover:hover{color:#ff8c00}.ms-fontColor-redDark,.ms-fontColor-redDark--hover:hover{color:#a80000}.ms-fontColor-red,.ms-fontColor-red--hover:hover{color:#e81123}.ms-fontColor-magentaDark,.ms-fontColor-magentaDark--hover:hover{color:#5c005c}.ms-fontColor-magenta,.ms-fontColor-magenta--hover:hover{color:#b4009e}.ms-fontColor-magentaLight,.ms-fontColor-magentaLight--hover:hover{color:#e3008c}.ms-fontColor-purpleDark,.ms-fontColor-purpleDark--hover:hover{color:#32145a}.ms-fontColor-purple,.ms-fontColor-purple--hover:hover{color:#5c2d91}.ms-fontColor-purpleLight,.ms-fontColor-purpleLight--hover:hover{color:#b4a0ff}.ms-fontColor-blueDark,.ms-fontColor-blueDark--hover:hover{color:#002050}.ms-fontColor-blueMid,.ms-fontColor-blueMid--hover:hover{color:#00188f}.ms-fontColor-blue,.ms-fontColor-blue--hover:hover{color:#0078d7}.ms-fontColor-blueLight,.ms-fontColor-blueLight--hover:hover{color:#00bcf2}.ms-fontColor-tealDark,.ms-fontColor-tealDark--hover:hover{color:#004b50}.ms-fontColor-teal,.ms-fontColor-teal--hover:hover{color:#008272}.ms-fontColor-tealLight,.ms-fontColor-tealLight--hover:hover{color:#00b294}.ms-fontColor-greenDark,.ms-fontColor-greenDark--hover:hover{color:#004b1c}.ms-fontColor-green,.ms-fontColor-green--hover:hover{color:#107c10}.ms-fontColor-greenLight,.ms-fontColor-greenLight--hover:hover{color:#bad80a}.ms-fontColor-info,.ms-fontColor-info--hover:hover{color:#767676}.ms-fontColor-success,.ms-fontColor-success--hover:hover{color:#107c10}.ms-fontColor-alert,.ms-fontColor-alert--hover:hover{color:#d83b01}.ms-fontColor-warning,.ms-fontColor-warning--hover:hover{color:#767676}.ms-fontColor-severeWarning,.ms-fontColor-severeWarning--hover:hover{color:#d83b01}.ms-fontColor-error,.ms-fontColor-error--hover:hover{color:#a80000}@font-face{font-family:FabricMDL2Icons;src:url("https://static2.sharepointonline.com/files/fabric/assets/icons/fabricmdl2icons.woff2") format("woff2"),url("https://static2.sharepointonline.com/files/fabric/assets/icons/fabricmdl2icons.woff") format("woff"),url("https://static2.sharepointonline.com/files/fabric/assets/icons/fabricmdl2icons.ttf") format("truetype");font-weight:400;font-style:normal}.ms-Icon,.ms-Icon:before{-moz-osx-font-smoothing:grayscale;font-family:FabricMDL2Icons;font-style:normal;font-weight:400;speak:none}.ms-Icon,.ms-Icon--circle,.ms-Icon:before{-webkit-font-smoothing:antialiased;display:inline-block}.ms-Icon--circle{position:relative;font-size:1rem;width:1em;height:1em}html[dir] .ms-Icon--circle{padding:0}html[dir=ltr] .ms-Icon--circle{margin:0 .5em 0 0;text-align:left}html[dir=rtl] .ms-Icon--circle{margin:0 0 0 .5em;text-align:right}.ms-Icon--circle:after,.ms-Icon--circle:before{line-height:1;font-size:inherit}.ms-Icon--circle:before{display:block;width:100%;height:100%;vertical-align:top;position:absolute}html[dir] .ms-Icon--circle:before{margin:0;padding:0}.ms-Icon--circle:after{content:"\E000";position:absolute;top:0;z-index:0}html[dir] .ms-Icon--circle:after{transform:scale(2);transform-origin:50% 50%}html[dir=ltr] .ms-Icon--circle:after{left:0}html[dir=rtl] .ms-Icon--circle:after{right:0}.ms-Icon--xs{font-size:10px}.ms-Icon--s{font-size:12px}.ms-Icon--m{font-size:16px}.ms-Icon--l{font-size:20px}.ms-Icon--CarotRightSolid8:before{content:"\EDDA"}.ms-Icon--DynamicsCRMLogo:before{content:"\EDCC"}.ms-Icon--DecreaseIndentLegacy:before{content:"\E290"}.ms-Icon--IncreaseIndentLegacy:before{content:"\E291"}.ms-Icon--GlobalNavButton:before{content:"\E700"}.ms-Icon--InternetSharing:before{content:"\E704"}.ms-Icon--Brightness:before{content:"\E706"}.ms-Icon--MapPin:before{content:"\E707"}.ms-Icon--Airplane:before{content:"\E709"}.ms-Icon--Tablet:before{content:"\E70A"}.ms-Icon--QuickNote:before{content:"\E70B"}.ms-Icon--ChevronDown:before{content:"\E70D"}.ms-Icon--ChevronUp:before{content:"\E70E"}.ms-Icon--Edit:before{content:"\E70F"}.ms-Icon--Add:before{content:"\E710"}.ms-Icon--Cancel:before{content:"\E711"}.ms-Icon--More:before{content:"\E712"}.ms-Icon--Settings:before{content:"\E713"}.ms-Icon--Video:before{content:"\E714"}.ms-Icon--Mail:before{content:"\E715"}.ms-Icon--People:before{content:"\E716"}.ms-Icon--Phone:before{content:"\E717"}.ms-Icon--Pin:before{content:"\E718"}.ms-Icon--Shop:before{content:"\E719"}.ms-Icon--Link:before{content:"\E71B"}.ms-Icon--Filter:before{content:"\E71C"}.ms-Icon--Zoom:before{content:"\E71E"}.ms-Icon--ZoomOut:before{content:"\E71F"}.ms-Icon--Microphone:before{content:"\E720"}.ms-Icon--Search:before{content:"\E721"}.ms-Icon--Camera:before{content:"\E722"}.ms-Icon--Attach:before{content:"\E723"}.ms-Icon--Send:before{content:"\E724"}.ms-Icon--FavoriteList:before{content:"\E728"}.ms-Icon--PageSolid:before{content:"\E729"}.ms-Icon--Forward:before{content:"\E72A"}.ms-Icon--Back:before{content:"\E72B"}.ms-Icon--Refresh:before{content:"\E72C"}.ms-Icon--Share:before{content:"\E72D"}.ms-Icon--Lock:before{content:"\E72E"}.ms-Icon--EMI:before{content:"\E731"}.ms-Icon--MiniLink:before{content:"\E732"}.ms-Icon--Blocked:before{content:"\E733"}.ms-Icon--FavoriteStar:before{content:"\E734"}.ms-Icon--FavoriteStarFill:before{content:"\E735"}.ms-Icon--ReadingMode:before{content:"\E736"}.ms-Icon--Remove:before{content:"\E738"}.ms-Icon--Checkbox:before{content:"\E739"}.ms-Icon--CheckboxComposite:before{content:"\E73A"}.ms-Icon--CheckboxIndeterminate:before{content:"\E73C"}.ms-Icon--CheckMark:before{content:"\E73E"}.ms-Icon--BackToWindow:before{content:"\E73F"}.ms-Icon--FullScreen:before{content:"\E740"}.ms-Icon--Print:before{content:"\E749"}.ms-Icon--Up:before{content:"\E74A"}.ms-Icon--Down:before{content:"\E74B"}.ms-Icon--Delete:before{content:"\E74D"}.ms-Icon--Save:before{content:"\E74E"}.ms-Icon--Sad:before{content:"\E757"}.ms-Icon--SIPMove:before{content:"\E759"}.ms-Icon--EraseTool:before{content:"\E75C"}.ms-Icon--GripperTool:before{content:"\E75E"}.ms-Icon--Dialpad:before{content:"\E75F"}.ms-Icon--PageLeft:before{content:"\E760"}.ms-Icon--PageRight:before{content:"\E761"}.ms-Icon--MultiSelect:before{content:"\E762"}.ms-Icon--Play:before{content:"\E768"}.ms-Icon--Pause:before{content:"\E769"}.ms-Icon--ChevronLeft:before{content:"\E76B"}.ms-Icon--ChevronRight:before{content:"\E76C"}.ms-Icon--Emoji2:before{content:"\E76E"}.ms-Icon--System:before{content:"\E770"}.ms-Icon--Globe:before{content:"\E774"}.ms-Icon--ContactInfo:before{content:"\E779"}.ms-Icon--Unpin:before{content:"\E77A"}.ms-Icon--Contact:before{content:"\E77B"}.ms-Icon--Memo:before{content:"\E77C"}.ms-Icon--WindowsLogo:before{content:"\E782"}.ms-Icon--Error:before{content:"\E783"}.ms-Icon--Unlock:before{content:"\E785"}.ms-Icon--Calendar:before{content:"\E787"}.ms-Icon--Megaphone:before{content:"\E789"}.ms-Icon--AutoEnhanceOn:before{content:"\E78D"}.ms-Icon--AutoEnhanceOff:before{content:"\E78E"}.ms-Icon--Color:before{content:"\E790"}.ms-Icon--SaveAs:before{content:"\E792"}.ms-Icon--Light:before{content:"\E793"}.ms-Icon--Filters:before{content:"\E795"}.ms-Icon--Contrast:before{content:"\E7A1"}.ms-Icon--Redo:before{content:"\E7A6"}.ms-Icon--Undo:before{content:"\E7A7"}.ms-Icon--PhotoCollection:before{content:"\E7AA"}.ms-Icon--Album:before{content:"\E7AB"}.ms-Icon--Rotate:before{content:"\E7AD"}.ms-Icon--PanoIndicator:before{content:"\E7B0"}.ms-Icon--RedEye:before{content:"\E7B3"}.ms-Icon--ThumbnailView:before{content:"\E7B6"}.ms-Icon--Package:before{content:"\E7B8"}.ms-Icon--Warning:before{content:"\E7BA"}.ms-Icon--Financial:before{content:"\E7BB"}.ms-Icon--ShoppingCart:before{content:"\E7BF"}.ms-Icon--Train:before{content:"\E7C0"}.ms-Icon--Flag:before{content:"\E7C1"}.ms-Icon--Move:before{content:"\E7C2"}.ms-Icon--Page:before{content:"\E7C3"}.ms-Icon--TouchPointer:before{content:"\E7C9"}.ms-Icon--Merge:before{content:"\E7D5"}.ms-Icon--TurnRight:before{content:"\E7DB"}.ms-Icon--Ferry:before{content:"\E7E3"}.ms-Icon--Tab:before{content:"\E7E9"}.ms-Icon--Admin:before{content:"\E7EF"}.ms-Icon--TVMonitor:before{content:"\E7F4"}.ms-Icon--Speakers:before{content:"\E7F5"}.ms-Icon--Nav2DMapView:before{content:"\E800"}.ms-Icon--Car:before{content:"\E804"}.ms-Icon--EatDrink:before{content:"\E807"}.ms-Icon--LocationCircle:before{content:"\E80E"}.ms-Icon--Home:before{content:"\E80F"}.ms-Icon--SwitcherStartEnd:before{content:"\E810"}.ms-Icon--IncidentTriangle:before{content:"\E814"}.ms-Icon--Touch:before{content:"\E815"}.ms-Icon--MapDirections:before{content:"\E816"}.ms-Icon--History:before{content:"\E81C"}.ms-Icon--Location:before{content:"\E81D"}.ms-Icon--Work:before{content:"\E821"}.ms-Icon--Recent:before{content:"\E823"}.ms-Icon--Hotel:before{content:"\E824"}.ms-Icon--LocationDot:before{content:"\E827"}.ms-Icon--News:before{content:"\E900"}.ms-Icon--Chat:before{content:"\E901"}.ms-Icon--Group:before{content:"\E902"}.ms-Icon--View:before{content:"\E890"}.ms-Icon--Clear:before{content:"\E894"}.ms-Icon--Sync:before{content:"\E895"}.ms-Icon--Download:before{content:"\E896"}.ms-Icon--Help:before{content:"\E897"}.ms-Icon--Upload:before{content:"\E898"}.ms-Icon--Emoji:before{content:"\E899"}.ms-Icon--MailForward:before{content:"\E89C"}.ms-Icon--ClosePane:before{content:"\E89F"}.ms-Icon--OpenPane:before{content:"\E8A0"}.ms-Icon--PreviewLink:before{content:"\E8A1"}.ms-Icon--ZoomIn:before{content:"\E8A3"}.ms-Icon--Bookmarks:before{content:"\E8A4"}.ms-Icon--Document:before{content:"\E8A5"}.ms-Icon--ProtectedDocument:before{content:"\E8A6"}.ms-Icon--OpenInNewWindow:before{content:"\E8A7"}.ms-Icon--MailFill:before{content:"\E8A8"}.ms-Icon--ViewAll:before{content:"\E8A9"}.ms-Icon--Switch:before{content:"\E8AB"}.ms-Icon--Rename:before{content:"\E8AC"}.ms-Icon--Folder:before{content:"\E8B7"}.ms-Icon--Picture:before{content:"\E8B9"}.ms-Icon--ShowResults:before{content:"\E8BC"}.ms-Icon--Message:before{content:"\E8BD"}.ms-Icon--CalendarDay:before{content:"\E8BF"}.ms-Icon--CalendarWeek:before{content:"\E8C0"}.ms-Icon--MailReplyAll:before{content:"\E8C2"}.ms-Icon--Read:before{content:"\E8C3"}.ms-Icon--PaymentCard:before{content:"\E8C7"}.ms-Icon--Copy:before{content:"\E8C8"}.ms-Icon--Important:before{content:"\E8C9"}.ms-Icon--MailReply:before{content:"\E8CA"}.ms-Icon--Sort:before{content:"\E8CB"}.ms-Icon--GotoToday:before{content:"\E8D1"}.ms-Icon--Font:before{content:"\E8D2"}.ms-Icon--FontColor:before{content:"\E8D3"}.ms-Icon--FolderFill:before{content:"\E8D5"}.ms-Icon--Permissions:before{content:"\E8D7"}.ms-Icon--DisableUpdates:before{content:"\E8D8"}.ms-Icon--Unfavorite:before{content:"\E8D9"}.ms-Icon--Italic:before{content:"\E8DB"}.ms-Icon--Underline:before{content:"\E8DC"}.ms-Icon--Bold:before{content:"\E8DD"}.ms-Icon--MoveToFolder:before{content:"\E8DE"}.ms-Icon--Dislike:before{content:"\E8E0"}.ms-Icon--Like:before{content:"\E8E1"}.ms-Icon--AlignRight:before{content:"\E8E2"}.ms-Icon--AlignCenter:before{content:"\E8E3"}.ms-Icon--AlignLeft:before{content:"\E8E4"}.ms-Icon--OpenFile:before{content:"\E8E5"}.ms-Icon--FontDecrease:before{content:"\E8E7"}.ms-Icon--FontIncrease:before{content:"\E8E8"}.ms-Icon--FontSize:before{content:"\E8E9"}.ms-Icon--CellPhone:before{content:"\E8EA"}.ms-Icon--Tag:before{content:"\E8EC"}.ms-Icon--Library:before{content:"\E8F1"}.ms-Icon--PostUpdate:before{content:"\E8F3"}.ms-Icon--NewFolder:before{content:"\E8F4"}.ms-Icon--CalendarReply:before{content:"\E8F5"}.ms-Icon--UnsyncFolder:before{content:"\E8F6"}.ms-Icon--SyncFolder:before{content:"\E8F7"}.ms-Icon--BlockContact:before{content:"\E8F8"}.ms-Icon--AddFriend:before{content:"\E8FA"}.ms-Icon--BulletedList:before{content:"\E8FD"}.ms-Icon--Preview:before{content:"\E8FF"}.ms-Icon--DockLeft:before{content:"\E90C"}.ms-Icon--DockRight:before{content:"\E90D"}.ms-Icon--Repair:before{content:"\E90F"}.ms-Icon--Accounts:before{content:"\E910"}.ms-Icon--RadioBullet:before{content:"\E915"}.ms-Icon--Stopwatch:before{content:"\E916"}.ms-Icon--Clock:before{content:"\E917"}.ms-Icon--WorldClock:before{content:"\E918"}.ms-Icon--AlarmClock:before{content:"\E919"}.ms-Icon--Hospital:before{content:"\E91D"}.ms-Icon--Timer:before{content:"\E91E"}.ms-Icon--FullCircleMask:before{content:"\E91F"}.ms-Icon--LocationFill:before{content:"\E920"}.ms-Icon--ChromeMinimize:before{content:"\E921"}.ms-Icon--Annotation:before{content:"\E924"}.ms-Icon--ChromeClose:before{content:"\E8BB"}.ms-Icon--Accept:before{content:"\E8FB"}.ms-Icon--Fingerprint:before{content:"\E928"}.ms-Icon--Handwriting:before{content:"\E929"}.ms-Icon--StackIndicator:before{content:"\E7FF"}.ms-Icon--Completed:before{content:"\E930"}.ms-Icon--Label:before{content:"\E932"}.ms-Icon--FlickDown:before{content:"\E935"}.ms-Icon--FlickUp:before{content:"\E936"}.ms-Icon--FlickLeft:before{content:"\E937"}.ms-Icon--FlickRight:before{content:"\E938"}.ms-Icon--MusicInCollection:before{content:"\E940"}.ms-Icon--OneDrive:before{content:"\E941"}.ms-Icon--CompassNW:before{content:"\E942"}.ms-Icon--Code:before{content:"\E943"}.ms-Icon--LightningBolt:before{content:"\E945"}.ms-Icon--Info:before{content:"\E946"}.ms-Icon--CalculatorAddition:before{content:"\E948"}.ms-Icon--CalculatorSubtract:before{content:"\E949"}.ms-Icon--PrintfaxPrinterFile:before{content:"\E956"}.ms-Icon--Headset:before{content:"\E95B"}.ms-Icon--Health:before{content:"\E95E"}.ms-Icon--ChevronUpSmall:before{content:"\E96D"}.ms-Icon--ChevronDownSmall:before{content:"\E96E"}.ms-Icon--ChevronLeftSmall:before{content:"\E96F"}.ms-Icon--ChevronRightSmall:before{content:"\E970"}.ms-Icon--ChevronUpMed:before{content:"\E971"}.ms-Icon--ChevronDownMed:before{content:"\E972"}.ms-Icon--ChevronLeftMed:before{content:"\E973"}.ms-Icon--ChevronRightMed:before{content:"\E974"}.ms-Icon--Dictionary:before{content:"\E82D"}.ms-Icon--ChromeBack:before{content:"\E830"}.ms-Icon--PC1:before{content:"\E977"}.ms-Icon--PresenceChickletVideo:before{content:"\E979"}.ms-Icon--Reply:before{content:"\E97A"}.ms-Icon--DoubleChevronLeftMed:before{content:"\E991"}.ms-Icon--Volume0:before{content:"\E992"}.ms-Icon--Volume1:before{content:"\E993"}.ms-Icon--Volume2:before{content:"\E994"}.ms-Icon--Volume3:before{content:"\E995"}.ms-Icon--CaretHollow:before{content:"\E817"}.ms-Icon--CaretSolid:before{content:"\E818"}.ms-Icon--FolderOpen:before{content:"\E838"}.ms-Icon--Pinned:before{content:"\E840"}.ms-Icon--PinnedFill:before{content:"\E842"}.ms-Icon--Chart:before{content:"\E999"}.ms-Icon--BidiLtr:before{content:"\E9AA"}.ms-Icon--BidiRtl:before{content:"\E9AB"}.ms-Icon--RevToggleKey:before{content:"\E845"}.ms-Icon--RightDoubleQuote:before{content:"\E9B1"}.ms-Icon--Sunny:before{content:"\E9BD"}.ms-Icon--CloudWeather:before{content:"\E9BE"}.ms-Icon--Cloudy:before{content:"\E9BF"}.ms-Icon--PartlyCloudyDay:before{content:"\E9C0"}.ms-Icon--PartlyCloudyNight:before{content:"\E9C1"}.ms-Icon--ClearNight:before{content:"\E9C2"}.ms-Icon--RainShowersDay:before{content:"\E9C3"}.ms-Icon--Rain:before{content:"\E9C4"}.ms-Icon--Thunderstorms:before{content:"\E9C6"}.ms-Icon--RainSnow:before{content:"\E9C7"}.ms-Icon--BlowingSnow:before{content:"\E9C9"}.ms-Icon--Frigid:before{content:"\E9CA"}.ms-Icon--Fog:before{content:"\E9CB"}.ms-Icon--Squalls:before{content:"\E9CC"}.ms-Icon--Duststorm:before{content:"\E9CD"}.ms-Icon--Precipitation:before{content:"\E9CF"}.ms-Icon--Ringer:before{content:"\EA8F"}.ms-Icon--PDF:before{content:"\EA90"}.ms-Icon--SortLines:before{content:"\E9D0"}.ms-Icon--Ribbon:before{content:"\E9D1"}.ms-Icon--CheckList:before{content:"\E9D5"}.ms-Icon--Generate:before{content:"\E9DA"}.ms-Icon--Equalizer:before{content:"\E9E9"}.ms-Icon--BarChartHorizontal:before{content:"\E9EB"}.ms-Icon--Freezing:before{content:"\E9EF"}.ms-Icon--SnowShowerDay:before{content:"\E9FD"}.ms-Icon--HailDay:before{content:"\EA00"}.ms-Icon--WorkFlow:before{content:"\EA01"}.ms-Icon--StoreLogoMed:before{content:"\EA04"}.ms-Icon--RainShowersNight:before{content:"\EA0F"}.ms-Icon--SnowShowerNight:before{content:"\EA11"}.ms-Icon--HailNight:before{content:"\EA13"}.ms-Icon--Info2:before{content:"\EA1F"}.ms-Icon--StoreLogo:before{content:"\EA96"}.ms-Icon--MultiSelectMirrored:before{content:"\EA98"}.ms-Icon--Broom:before{content:"\EA99"}.ms-Icon--MusicInCollectionFill:before{content:"\EA36"}.ms-Icon--List:before{content:"\EA37"}.ms-Icon--Asterisk:before{content:"\EA38"}.ms-Icon--ErrorBadge:before{content:"\EA39"}.ms-Icon--CircleRing:before{content:"\EA3A"}.ms-Icon--CircleFill:before{content:"\EA3B"}.ms-Icon--BookmarksMirrored:before{content:"\EA41"}.ms-Icon--BulletedListMirrored:before{content:"\EA42"}.ms-Icon--CaretHollowMirrored:before{content:"\EA45"}.ms-Icon--CaretSolidMirrored:before{content:"\EA46"}.ms-Icon--ChromeBackMirrored:before{content:"\EA47"}.ms-Icon--ClosePaneMirrored:before{content:"\EA49"}.ms-Icon--DockLeftMirrored:before{content:"\EA4C"}.ms-Icon--DoubleChevronLeftMedMirrored:before{content:"\EA4D"}.ms-Icon--HelpMirrored:before{content:"\EA51"}.ms-Icon--ListMirrored:before{content:"\EA55"}.ms-Icon--MailForwardMirrored:before{content:"\EA56"}.ms-Icon--MailReplyMirrored:before{content:"\EA57"}.ms-Icon--MailReplyAllMirrored:before{content:"\EA58"}.ms-Icon--OpenPaneMirrored:before{content:"\EA5B"}.ms-Icon--SendMirrored:before{content:"\EA63"}.ms-Icon--ShowResultsMirrored:before{content:"\EA65"}.ms-Icon--ThumbnailViewMirrored:before{content:"\EA67"}.ms-Icon--Devices3:before{content:"\EA6C"}.ms-Icon--Lightbulb:before{content:"\EA80"}.ms-Icon--StatusTriangle:before{content:"\EA82"}.ms-Icon--VolumeDisabled:before{content:"\EA85"}.ms-Icon--Puzzle:before{content:"\EA86"}.ms-Icon--EmojiNeutral:before{content:"\EA87"}.ms-Icon--EmojiDisappointed:before{content:"\EA88"}.ms-Icon--HomeSolid:before{content:"\EA8A"}.ms-Icon--Cocktails:before{content:"\EA9D"}.ms-Icon--Articles:before{content:"\EAC1"}.ms-Icon--Cycling:before{content:"\EAC7"}.ms-Icon--DietPlanNotebook:before{content:"\EAC8"}.ms-Icon--Pill:before{content:"\EACB"}.ms-Icon--Running:before{content:"\EADA"}.ms-Icon--Weights:before{content:"\EADB"}.ms-Icon--BarChart4:before{content:"\EAE7"}.ms-Icon--CirclePlus:before{content:"\EAEE"}.ms-Icon--Coffee:before{content:"\EAEF"}.ms-Icon--Cotton:before{content:"\EAF3"}.ms-Icon--Market:before{content:"\EAFC"}.ms-Icon--Money:before{content:"\EAFD"}.ms-Icon--PieDouble:before{content:"\EB04"}.ms-Icon--RemoveFilter:before{content:"\EB08"}.ms-Icon--StockDown:before{content:"\EB0F"}.ms-Icon--StockUp:before{content:"\EB11"}.ms-Icon--Cricket:before{content:"\EB1E"}.ms-Icon--Golf:before{content:"\EB1F"}.ms-Icon--Baseball:before{content:"\EB20"}.ms-Icon--Soccer:before{content:"\EB21"}.ms-Icon--MoreSports:before{content:"\EB22"}.ms-Icon--AutoRacing:before{content:"\EB24"}.ms-Icon--CollegeHoops:before{content:"\EB25"}.ms-Icon--CollegeFootball:before{content:"\EB26"}.ms-Icon--ProFootball:before{content:"\EB27"}.ms-Icon--ProHockey:before{content:"\EB28"}.ms-Icon--Rugby:before{content:"\EB2D"}.ms-Icon--Tennis:before{content:"\EB33"}.ms-Icon--Arrivals:before{content:"\EB34"}.ms-Icon--Design:before{content:"\EB3C"}.ms-Icon--Website:before{content:"\EB41"}.ms-Icon--Drop:before{content:"\EB42"}.ms-Icon--Snow:before{content:"\EB46"}.ms-Icon--BusSolid:before{content:"\EB47"}.ms-Icon--FerrySolid:before{content:"\EB48"}.ms-Icon--TrainSolid:before{content:"\EB4D"}.ms-Icon--Heart:before{content:"\EB51"}.ms-Icon--HeartFill:before{content:"\EB52"}.ms-Icon--Ticket:before{content:"\EB54"}.ms-Icon--Devices4:before{content:"\EB66"}.ms-Icon--AzureLogo:before{content:"\EB6A"}.ms-Icon--BingLogo:before{content:"\EB6B"}.ms-Icon--MSNLogo:before{content:"\EB6C"}.ms-Icon--OutlookLogo:before{content:"\EB6D"}.ms-Icon--OfficeLogo:before{content:"\EB6E"}.ms-Icon--SkypeLogo:before{content:"\EB6F"}.ms-Icon--Door:before{content:"\EB75"}.ms-Icon--EditMirrored:before{content:"\EB7E"}.ms-Icon--GiftCard:before{content:"\EB8E"}.ms-Icon--DoubleBookmark:before{content:"\EB8F"}.ms-Icon--StatusErrorFull:before{content:"\EB90"}.ms-Icon--Certificate:before{content:"\EB95"}.ms-Icon--Photo2:before{content:"\EB9F"}.ms-Icon--CloudDownload:before{content:"\EBD3"}.ms-Icon--WindDirection:before{content:"\EBE6"}.ms-Icon--Family:before{content:"\EBDA"}.ms-Icon--CSS:before{content:"\EBEF"}.ms-Icon--JS:before{content:"\EBF0"}.ms-Icon--ReminderGroup:before{content:"\EBF8"}.ms-Icon--Section:before{content:"\EC0C"}.ms-Icon--OneNoteLogo:before{content:"\EC0D"}.ms-Icon--ToggleFilled:before{content:"\EC11"}.ms-Icon--ToggleBorder:before{content:"\EC12"}.ms-Icon--SliderThumb:before{content:"\EC13"}.ms-Icon--ToggleThumb:before{content:"\EC14"}.ms-Icon--Documentation:before{content:"\EC17"}.ms-Icon--Badge:before{content:"\EC1B"}.ms-Icon--Giftbox:before{content:"\EC1F"}.ms-Icon--ExcelLogo:before{content:"\EC28"}.ms-Icon--WordLogo:before{content:"\EC29"}.ms-Icon--PowerPointLogo:before{content:"\EC2A"}.ms-Icon--Cafe:before{content:"\EC32"}.ms-Icon--SpeedHigh:before{content:"\EC4A"}.ms-Icon--MusicNote:before{content:"\EC4F"}.ms-Icon--EdgeLogo:before{content:"\EC60"}.ms-Icon--CompletedSolid:before{content:"\EC61"}.ms-Icon--AlbumRemove:before{content:"\EC62"}.ms-Icon--MessageFill:before{content:"\EC70"}.ms-Icon--TabletSelected:before{content:"\EC74"}.ms-Icon--MobileSelected:before{content:"\EC75"}.ms-Icon--LaptopSelected:before{content:"\EC76"}.ms-Icon--TVMonitorSelected:before{content:"\EC77"}.ms-Icon--DeveloperTools:before{content:"\EC7A"}.ms-Icon--InsertTextBox:before{content:"\EC7D"}.ms-Icon--LowerBrightness:before{content:"\EC8A"}.ms-Icon--CloudUpload:before{content:"\EC8E"}.ms-Icon--DateTime:before{content:"\EC92"}.ms-Icon--Event:before{content:"\ECA3"}.ms-Icon--Cake:before{content:"\ECA4"}.ms-Icon--Tiles:before{content:"\ECA5"}.ms-Icon--Org:before{content:"\ECA6"}.ms-Icon--PartyLeader:before{content:"\ECA7"}.ms-Icon--DRM:before{content:"\ECA8"}.ms-Icon--CloudAdd:before{content:"\ECA9"}.ms-Icon--AppIconDefault:before{content:"\ECAA"}.ms-Icon--Photo2Add:before{content:"\ECAB"}.ms-Icon--Photo2Remove:before{content:"\ECAC"}.ms-Icon--POI:before{content:"\ECAF"}.ms-Icon--FacebookLogo:before{content:"\ECB3"}.ms-Icon--AddTo:before{content:"\ECC8"}.ms-Icon--RadioBtnOn:before{content:"\ECCB"}.ms-Icon--Embed:before{content:"\ECCE"}.ms-Icon--VideoSolid:before{content:"\EA0C"}.ms-Icon--Teamwork:before{content:"\EA12"}.ms-Icon--PeopleAdd:before{content:"\EA15"}.ms-Icon--Glasses:before{content:"\EA16"}.ms-Icon--DateTime2:before{content:"\EA17"}.ms-Icon--Shield:before{content:"\EA18"}.ms-Icon--Header1:before{content:"\EA19"}.ms-Icon--PageAdd:before{content:"\EA1A"}.ms-Icon--NumberedList:before{content:"\EA1C"}.ms-Icon--PowerBILogo:before{content:"\EA1E"}.ms-Icon--Product:before{content:"\ECDC"}.ms-Icon--Blocked2:before{content:"\ECE4"}.ms-Icon--FangBody:before{content:"\ECEB"}.ms-Icon--Glimmer:before{content:"\ECF4"}.ms-Icon--ChatInviteFriend:before{content:"\ECFE"}.ms-Icon--SharepointLogo:before{content:"\ED18"}.ms-Icon--YammerLogo:before{content:"\ED19"}.ms-Icon--Hide:before{content:"\ED1A"}.ms-Icon--ReturnToSession:before{content:"\ED24"}.ms-Icon--OpenFolderHorizontal:before{content:"\ED25"}.ms-Icon--CalendarMirrored:before{content:"\ED28"}.ms-Icon--SwayLogo:before{content:"\ED29"}.ms-Icon--OutOfOffice:before{content:"\ED34"}.ms-Icon--Trophy:before{content:"\ED3F"}.ms-Icon--ReopenPages:before{content:"\ED50"}.ms-Icon--AADLogo:before{content:"\ED68"}.ms-Icon--AccessLogo:before{content:"\ED69"}.ms-Icon--AdminALogo:before{content:"\ED6A"}.ms-Icon--AdminCLogo:before{content:"\ED6B"}.ms-Icon--AdminDLogo:before{content:"\ED6C"}.ms-Icon--AdminELogo:before{content:"\ED6D"}.ms-Icon--AdminLLogo:before{content:"\ED6E"}.ms-Icon--AdminMLogo:before{content:"\ED6F"}.ms-Icon--AdminOLogo:before{content:"\ED70"}.ms-Icon--AdminPLogo:before{content:"\ED71"}.ms-Icon--AdminSLogo:before{content:"\ED72"}.ms-Icon--AdminYLogo:before{content:"\ED73"}.ms-Icon--AlchemyLogo:before{content:"\ED74"}.ms-Icon--BoxLogo:before{content:"\ED75"}.ms-Icon--DelveLogo:before{content:"\ED76"}.ms-Icon--DropboxLogo:before{content:"\ED77"}.ms-Icon--ExchangeLogo:before{content:"\ED78"}.ms-Icon--LyncLogo:before{content:"\ED79"}.ms-Icon--OfficeVideoLogo:before{content:"\ED7A"}.ms-Icon--ParatureLogo:before{content:"\ED7B"}.ms-Icon--SocialListeningLogo:before{content:"\ED7C"}.ms-Icon--VisioLogo:before{content:"\ED7D"}.ms-Icon--Balloons:before{content:"\ED7E"}.ms-Icon--Cat:before{content:"\ED7F"}.ms-Icon--MailAlert:before{content:"\ED80"}.ms-Icon--MailCheck:before{content:"\ED81"}.ms-Icon--MailLowImportance:before{content:"\ED82"}.ms-Icon--MailPause:before{content:"\ED83"}.ms-Icon--MailRepeat:before{content:"\ED84"}.ms-Icon--SecurityGroup:before{content:"\ED85"}.ms-Icon--Table:before{content:"\ED86"}.ms-Icon--VoicemailForward:before{content:"\ED87"}.ms-Icon--VoicemailReply:before{content:"\ED88"}.ms-Icon--Waffle:before{content:"\ED89"}.ms-Icon--RemoveEvent:before{content:"\ED8A"}.ms-Icon--EventInfo:before{content:"\ED8B"}.ms-Icon--ForwardEvent:before{content:"\ED8C"}.ms-Icon--WipePhone:before{content:"\ED8D"}.ms-Icon--AddOnlineMeeting:before{content:"\ED8E"}.ms-Icon--JoinOnlineMeeting:before{content:"\ED8F"}.ms-Icon--RemoveLink:before{content:"\ED90"}.ms-Icon--PeopleBlock:before{content:"\ED91"}.ms-Icon--PeopleRepeat:before{content:"\ED92"}.ms-Icon--PeopleAlert:before{content:"\ED93"}.ms-Icon--PeoplePause:before{content:"\ED94"}.ms-Icon--TransferCall:before{content:"\ED95"}.ms-Icon--AddPhone:before{content:"\ED96"}.ms-Icon--UnknownCall:before{content:"\ED97"}.ms-Icon--NoteReply:before{content:"\ED98"}.ms-Icon--NoteForward:before{content:"\ED99"}.ms-Icon--NotePinned:before{content:"\ED9A"}.ms-Icon--RemoveOccurrence:before{content:"\ED9B"}.ms-Icon--Timeline:before{content:"\ED9C"}.ms-Icon--EditNote:before{content:"\ED9D"}.ms-Icon--CircleHalfFull:before{content:"\ED9E"}.ms-Icon--Room:before{content:"\ED9F"}.ms-Icon--Unsubscribe:before{content:"\EDA0"}.ms-Icon--Subscribe:before{content:"\EDA1"}.ms-Icon--RecurringTask:before{content:"\EDB2"}.ms-Icon--TaskManager:before{content:"\EDB7"}.ms-Icon--TaskManagerMirrored:before{content:"\EDB8"}.ms-Icon--Combine:before{content:"\EDBB"}.ms-Icon--Split:before{content:"\EDBC"}.ms-Icon--DoubleChevronUp:before{content:"\EDBD"}.ms-Icon--DoubleChevronLeft:before{content:"\EDBE"}.ms-Icon--DoubleChevronRight:before{content:"\EDBF"}.ms-Icon--Ascending:before{content:"\EDC0"}.ms-Icon--Descending:before{content:"\EDC1"}.ms-Icon--TextBox:before{content:"\EDC2"}.ms-Icon--TextField:before{content:"\EDC3"}.ms-Icon--NumberField:before{content:"\EDC4"}.ms-Icon--Dropdown:before{content:"\EDC5"}.ms-Icon--BookingsLogo:before{content:"\EDC7"}.ms-Icon--ClassNotebookLogo:before{content:"\EDC8"}.ms-Icon--CollabsDBLogo:before{content:"\EDC9"}.ms-Icon--DelveAnalyticsLogo:before{content:"\EDCA"}.ms-Icon--DocsLogo:before{content:"\EDCB"}.ms-Icon--Dynamics365Logo:before{content:"\EDCC"}.ms-Icon--DynamicSMBLogo:before{content:"\EDCD"}.ms-Icon--OfficeAssistantLogo:before{content:"\EDCE"}.ms-Icon--OfficeStoreLogo:before{content:"\EDCF"}.ms-Icon--OneNoteEduLogo:before{content:"\EDD0"}.ms-Icon--Planner:before{content:"\EDD1"}.ms-Icon--PowerApps:before{content:"\EDD2"}.ms-Icon--Suitcase:before{content:"\EDD3"}.ms-Icon--ProjectLogo:before{content:"\EDD4"}.ms-Icon--CaretLeft8:before{content:"\EDD5"}.ms-Icon--CaretRight8:before{content:"\EDD6"}.ms-Icon--CaretUp8:before{content:"\EDD7"}.ms-Icon--CaretDown8:before{content:"\EDD8"}.ms-Icon--CaretLeftSolid8:before{content:"\EDD9"}.ms-Icon--CaretRightSolid8:before{content:"\EDDA"}.ms-Icon--CaretUpSolid8:before{content:"\EDDB"}.ms-Icon--CaretDownSolid8:before{content:"\EDDC"}.ms-Icon--ClearFormatting:before{content:"\EDDD"}.ms-Icon--Superscript:before{content:"\EDDE"}.ms-Icon--Subscript:before{content:"\EDDF"}.ms-Icon--Strikethrough:before{content:"\EDE0"}.ms-Icon--SingleBookmark:before{content:"\EDFF"}.ms-Icon--DoubleChevronDown:before{content:"\EE04"}.ms-Icon--ReplyAll:before{content:"\EE0A"}.ms-Icon--GoogleDriveLogo:before{content:"\EE0B"}.ms-Icon--Questionnaire:before{content:"\EE19"}.ms-Icon--ReplyMirrored:before{content:"\EE35"}.ms-Icon--ReplyAllMirrored:before{content:"\EE36"}.ms-Icon--AddGroup:before{content:"\EE3D"}.ms-Icon--QuestionnaireMirrored:before{content:"\EE4B"}.ms-Icon--TemporaryUser:before{content:"\EE58"}.ms-Icon--GroupedDescending:before{content:"\EE66"}.ms-Icon--GroupedAscending:before{content:"\EE67"}.ms-Icon--SortUp:before{content:"\EE68"}.ms-Icon--SortDown:before{content:"\EE69"}.ms-Icon--AwayStatus:before{content:"\EE6A"}.ms-Icon--SyncToPC:before{content:"\EE6E"}.ms-Icon--AustralianRules:before{content:"\EE70"}.ms-Icon--DateTimeMirrored:before{content:"\EE93"}.ms-Icon--DoubleChevronUp12:before{content:"\EE96"}.ms-Icon--DoubleChevronDown12:before{content:"\EE97"}.ms-Icon--DoubleChevronLeft12:before{content:"\EE98"}.ms-Icon--DoubleChevronRight12:before{content:"\EE99"}.ms-Icon--CalendarAgenda:before{content:"\EE9A"}.ms-Icon--AddEvent:before{content:"\EEB5"}.ms-Icon--AssetLibrary:before{content:"\EEB6"}.ms-Icon--DataConnectionLibrary:before{content:"\EEB7"}.ms-Icon--DocLibrary:before{content:"\EEB8"}.ms-Icon--FormLibrary:before{content:"\EEB9"}.ms-Icon--FormLibraryMirrored:before{content:"\EEBA"}.ms-Icon--ReportLibrary:before{content:"\EEBB"}.ms-Icon--ReportLibraryMirrored:before{content:"\EEBC"}.ms-Icon--ContactCard:before{content:"\EEBD"}.ms-Icon--CustomList:before{content:"\EEBE"}.ms-Icon--CustomListMirrored:before{content:"\EEBF"}.ms-Icon--IssueTracking:before{content:"\EEC0"}.ms-Icon--IssueTrackingMirrored:before{content:"\EEC1"}.ms-Icon--PictureLibrary:before{content:"\EEC2"}.ms-Icon--AppForOfficeLogo:before{content:"\EEC7"}.ms-Icon--OfflineOneDriveParachute:before{content:"\EEC8"}.ms-Icon--OfflineOneDriveParachuteDisabled:before{content:"\EEC9"}.ms-Icon--LargeGrid:before{content:"\EECB"}.ms-Icon--TriangleSolidUp12:before{content:"\EECC"}.ms-Icon--TriangleSolidDown12:before{content:"\EECD"}.ms-Icon--TriangleSolidLeft12:before{content:"\EECE"}.ms-Icon--TriangleSolidRight12:before{content:"\EECF"}.ms-Icon--TriangleUp12:before{content:"\EED0"}.ms-Icon--TriangleDown12:before{content:"\EED1"}.ms-Icon--TriangleLeft12:before{content:"\EED2"}.ms-Icon--TriangleRight12:before{content:"\EED3"}.ms-Icon--ArrowUpRight8:before{content:"\EED4"}.ms-Icon--ArrowDownRight8:before{content:"\EED5"}.ms-Icon--DocumentSet:before{content:"\EED6"}.ms-Icon--DelveAnalytics:before{content:"\EEEE"}.ms-Icon--ArrowUpRightMirrored8:before{content:"\EEEF"}.ms-Icon--ArrowDownRightMirrored8:before{content:"\EEF0"}.ms-Icon--OneDriveAdd:before{content:"\EF32"}.ms-Icon--Header2:before{content:"\EF36"}.ms-Icon--Header3:before{content:"\EF37"}.ms-Icon--Header4:before{content:"\EF38"}.ms-Icon--MarketDown:before{content:"\EF42"}.ms-Icon--CalendarWorkWeek:before{content:"\EF51"}.ms-Icon--SidePanel:before{content:"\EF52"}.ms-Icon--GlobeFavorite:before{content:"\EF53"}.ms-Icon--CaretTopLeftSolid8:before{content:"\EF54"}.ms-Icon--CaretTopRightSolid8:before{content:"\EF55"}.ms-Icon--ViewAll2:before{content:"\EF56"}.ms-Icon--DocumentReply:before{content:"\EF57"}.ms-Icon--PlayerSettings:before{content:"\EF58"}.ms-Icon--ReceiptForward:before{content:"\EF59"}.ms-Icon--ReceiptReply:before{content:"\EF5A"}.ms-Icon--ReceiptCheck:before{content:"\EF5B"}.ms-Icon--Fax:before{content:"\EF5C"}.ms-Icon--RecurringEvent:before{content:"\EF5D"}.ms-Icon--ReplyAlt:before{content:"\EF5E"}.ms-Icon--ReplyAllAlt:before{content:"\EF5F"}.ms-Icon--EditStyle:before{content:"\EF60"}.ms-Icon--EditMail:before{content:"\EF61"}.ms-Icon--Lifesaver:before{content:"\EF62"}.ms-Icon--LifesaverLock:before{content:"\EF63"}.ms-Icon--InboxCheck:before{content:"\EF64"}.ms-Icon--FolderSearch:before{content:"\EF65"}.ms-Icon--CollapseMenu:before{content:"\EF66"}.ms-Icon--ExpandMenu:before{content:"\EF67"}.ms-Icon--Boards:before{content:"\EF68"}.ms-Icon--SunAdd:before{content:"\EF69"}.ms-Icon--SunQuestionMark:before{content:"\EF6A"}.ms-Icon--LandscapeOrientation:before{content:"\EF6B"}.ms-Icon--DocumentSearch:before{content:"\EF6C"}.ms-Icon--PublicCalendar:before{content:"\EF6D"}.ms-Icon--PublicContactCard:before{content:"\EF6E"}.ms-Icon--PublicEmail:before{content:"\EF6F"}.ms-Icon--PublicFolder:before{content:"\EF70"}.ms-Icon--WordDocument:before{content:"\EF71"}.ms-Icon--PowerPointDocument:before{content:"\EF72"}.ms-Icon--ExcelDocument:before{content:"\EF73"}.ms-Icon--GroupedList:before{content:"\EF74"}.ms-Icon--ClassroomLogo:before{content:"\EF75"}.ms-Icon--Sections:before{content:"\EF76"}.ms-Icon--EditPhoto:before{content:"\EF77"}.ms-Icon--Starburst:before{content:"\EF78"}.ms-Icon--ShareiOS:before{content:"\EF79"}.ms-Icon--AirTickets:before{content:"\EF7A"}.ms-Icon--PencilReply:before{content:"\EF7B"}.ms-Icon--Tiles2:before{content:"\EF7C"}.ms-Icon--SkypeCircleCheck:before{content:"\EF7D"}.ms-Icon--SkypeCircleClock:before{content:"\EF7E"}.ms-Icon--SkypeCircleMinus:before{content:"\EF7F"}.ms-Icon--SkypeCheck:before{content:"\EF80"}.ms-Icon--SkypeClock:before{content:"\EF81"}.ms-Icon--SkypeMinus:before{content:"\EF82"}.ms-Icon--SkypeMessage:before{content:"\EF83"}.ms-Icon--ClosedCaption:before{content:"\EF84"}.ms-Icon--ATPLogo:before{content:"\EF85"}.ms-Icon--OfficeFormLogo:before{content:"\EF86"}.ms-Icon--RecycleBin:before{content:"\EF87"}.ms-Icon--EmptyRecycleBin:before{content:"\EF88"}.ms-Icon--Hide2:before{content:"\EF89"}.ms-Icon--iOSAppStoreLogo:before{content:"\EF8A"}.ms-Icon--AndroidLogo:before{content:"\EF8B"}.ms-Icon--Breadcrumb:before{content:"\EF8C"}.ms-Icon--ClearFilter:before{content:"\EF8F"}.ms-Icon--Flow:before{content:"\EF90"}.ms-Icon--PageCheckedOut:before{content:"\F02C"}.ms-Icon--SetAction:before{content:"\F071"}.ms-Icon--PowerAppsLogo:before{content:"\F091"}.ms-Icon--PowerApps2Logo:before{content:"\F092"}.ms-Icon--FabricAssetLibrary:before{content:"\F09C"}.ms-Icon--FabricDataConnectionLibrary:before{content:"\F09D"}.ms-Icon--FabricDocLibrary:before{content:"\F09E"}.ms-Icon--FabricFormLibrary:before{content:"\F09F"}.ms-Icon--FabricFormLibraryMirrored:before{content:"\F0A0"}.ms-Icon--FabricReportLibrary:before{content:"\F0A1"}.ms-Icon--FabricReportLibraryMirrored:before{content:"\F0A2"}.ms-Icon--FabricPublicFolder:before{content:"\F0A3"}.ms-Icon--FabricFolderSearch:before{content:"\F0A4"}.ms-Icon--FabricMovetoFolder:before{content:"\F0A5"}.ms-Icon--FabricUnsyncFolder:before{content:"\F0A6"}.ms-Icon--FabricSyncFolder:before{content:"\F0A7"}.ms-Icon--FabricOpenFolderHorizontal:before{content:"\F0A8"}.ms-Icon--FabricFolder:before{content:"\F0A9"}.ms-Icon--FabricFolderFill:before{content:"\F0AA"}.ms-Icon--FabricNewFolder:before{content:"\F0AB"}.ms-Icon--FabricPictureLibrary:before{content:"\F0AC"}.ms-Icon--AddFavorite:before{content:"\F0C8"}.ms-Icon--AddFavoriteFill:before{content:"\F0C9"}.ms-Icon--BufferTimeBefore:before{content:"\F0CF"}.ms-Icon--BufferTimeAfter:before{content:"\F0D0"}.ms-Icon--BufferTimeBoth:before{content:"\F0D1"}.ms-Icon--PageCheckedin:before{content:"\F104"}.ms-Icon--CaretBottomLeftSolid8:before{content:"\F121"}.ms-Icon--CaretBottomRightSolid8:before{content:"\F122"}.ms-Icon--FolderHorizontal:before{content:"\F12B"}.ms-Icon--MicrosoftStaffhubLogo:before{content:"\F130"}.ms-Icon--CaloriesAdd:before{content:"\F172"}.ms-Icon--BranchFork:before{content:"\F173"}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x1.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x1.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x1.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x1.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x1.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x1.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x1.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x1.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x1.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x1.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x1.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x1.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x1.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x1.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x1.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x1.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x1.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x1.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x1.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x1.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x1.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x1.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x1.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x1.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x1.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x1.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x1.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x1.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x1.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x1.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x1.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x1.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x1.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x1.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x1.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x1.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x1.png)}.ms-BrandIcon--Icon16{width:16px;height:16px}html[dir] .ms-BrandIcon--Icon16{background-size:100% 100%}.ms-BrandIcon--Icon48{width:48px;height:48px}html[dir] .ms-BrandIcon--Icon48{background-size:100% 100%}.ms-BrandIcon--Icon96{width:96px;height:96px}html[dir] .ms-BrandIcon--Icon96{background-size:100% 100%}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x1_5.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x1_5.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x1_5.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x1_5.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x1_5.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x1_5.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x1_5.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x1_5.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x1_5.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x1_5.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x1_5.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x1_5.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x1_5.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x1_5.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x1_5.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x1_5.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x1_5.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x1_5.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x1_5.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x1_5.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x1_5.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x1_5.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x1_5.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x1_5.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x1_5.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x1_5.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x1_5.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x1_5.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x1_5.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x1_5.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x1_5.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x1_5.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x1_5.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x1_5.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x1_5.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x1_5.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x1_5.png)}}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:192dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x2.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x2.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x2.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x2.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x2.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x2.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x2.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x2.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x2.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x2.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x2.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x2.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x2.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x2.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x2.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x2.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x2.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x2.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x2.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x2.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x2.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x2.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x2.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x2.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x2.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x2.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x2.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x2.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x2.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x2.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x2.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x2.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x2.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x2.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x2.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x2.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x2.png)}}@media only screen and (-webkit-min-device-pixel-ratio:3),only screen and (min-resolution:288dpi){html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_16x3.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_48x3.png)}html[dir] .ms-BrandIcon--access.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/access_96x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_16x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_48x3.png)}html[dir] .ms-BrandIcon--excel.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/excel_96x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_16x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_48x3.png)}html[dir] .ms-BrandIcon--infopath.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/infopath_96x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_16x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_48x3.png)}html[dir] .ms-BrandIcon--office.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/office_96x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_16x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_48x3.png)}html[dir] .ms-BrandIcon--onedrive.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onedrive_96x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_16x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_48x3.png)}html[dir] .ms-BrandIcon--onenote.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/onenote_96x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_16x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_48x3.png)}html[dir] .ms-BrandIcon--outlook.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/outlook_96x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_16x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_48x3.png)}html[dir] .ms-BrandIcon--powerpoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/powerpoint_96x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_16x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_48x3.png)}html[dir] .ms-BrandIcon--project.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/project_96x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_16x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_48x3.png)}html[dir] .ms-BrandIcon--sharepoint.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/sharepoint_96x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_16x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_48x3.png)}html[dir] .ms-BrandIcon--visio.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/visio_96x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_16x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_48x3.png)}html[dir] .ms-BrandIcon--word.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/product/png/word_96x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_16x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_48x3.png)}html[dir] .ms-BrandIcon--accdb.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/accdb_96x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_16x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_48x3.png)}html[dir] .ms-BrandIcon--csv.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/csv_96x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_16x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_48x3.png)}html[dir] .ms-BrandIcon--docx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/docx_96x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_16x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_48x3.png)}html[dir] .ms-BrandIcon--dotx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/dotx_96x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_16x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_48x3.png)}html[dir] .ms-BrandIcon--mpp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpp_96x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_16x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_48x3.png)}html[dir] .ms-BrandIcon--mpt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/mpt_96x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_16x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_48x3.png)}html[dir] .ms-BrandIcon--odp.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odp_96x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_16x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_48x3.png)}html[dir] .ms-BrandIcon--ods.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ods_96x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_16x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_48x3.png)}html[dir] .ms-BrandIcon--odt.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/odt_96x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_16x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_48x3.png)}html[dir] .ms-BrandIcon--one.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/one_96x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_16x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_48x3.png)}html[dir] .ms-BrandIcon--onepkg.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onepkg_96x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_16x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_48x3.png)}html[dir] .ms-BrandIcon--onetoc.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/onetoc_96x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_16x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_48x3.png)}html[dir] .ms-BrandIcon--potx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/potx_96x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_16x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_48x3.png)}html[dir] .ms-BrandIcon--ppsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/ppsx_96x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_16x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_48x3.png)}html[dir] .ms-BrandIcon--pptx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pptx_96x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_16x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_48x3.png)}html[dir] .ms-BrandIcon--pub.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/pub_96x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_16x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_48x3.png)}html[dir] .ms-BrandIcon--vsdx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vsdx_96x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_16x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_48x3.png)}html[dir] .ms-BrandIcon--vssx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vssx_96x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_16x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_48x3.png)}html[dir] .ms-BrandIcon--vstx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/vstx_96x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_16x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_48x3.png)}html[dir] .ms-BrandIcon--xls.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xls_96x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_16x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_48x3.png)}html[dir] .ms-BrandIcon--xlsx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xlsx_96x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_16x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_48x3.png)}html[dir] .ms-BrandIcon--xltx.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xltx_96x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon16{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_16x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon48{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_48x3.png)}html[dir] .ms-BrandIcon--xsn.ms-BrandIcon--Icon96{background-image:url(https://static2.sharepointonline.com/files/fabric/assets/brand-icons/document/png/xsn_96x3.png)}}.ms-u-slideRightIn10{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn10{animation-name:fadeIn,slideRightIn10}html[dir=rtl] .ms-u-slideRightIn10{animation-name:fadeIn-rtl,slideRightIn10-rtl}@keyframes slideRightIn10-rtl{0%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn10{0%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn20{animation-name:fadeIn,slideRightIn20}html[dir=rtl] .ms-u-slideRightIn20{animation-name:fadeIn-rtl,slideRightIn20-rtl}@keyframes slideRightIn20-rtl{0%{transform:translate3d(20px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn20{0%{transform:translate3d(-20px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn40{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn40{animation-name:fadeIn,slideRightIn40}html[dir=rtl] .ms-u-slideRightIn40{animation-name:fadeIn-rtl,slideRightIn40-rtl}@keyframes slideRightIn40-rtl{0%{transform:translate3d(40px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn40{0%{transform:translate3d(-40px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn10{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn10{animation-name:fadeIn,slideLeftIn10}html[dir=rtl] .ms-u-slideLeftIn10{animation-name:fadeIn-rtl,slideLeftIn10-rtl}@keyframes slideLeftIn10-rtl{0%{transform:translate3d(-10px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn10{0%{transform:translate3d(10px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn20{animation-name:fadeIn,slideLeftIn20}html[dir=rtl] .ms-u-slideLeftIn20{animation-name:fadeIn-rtl,slideLeftIn20-rtl}@keyframes slideLeftIn20-rtl{0%{transform:translate3d(-20px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn20{0%{transform:translate3d(20px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn40{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn40{animation-name:fadeIn,slideLeftIn40}html[dir=rtl] .ms-u-slideLeftIn40{animation-name:fadeIn-rtl,slideLeftIn40-rtl}@keyframes slideLeftIn40-rtl{0%{transform:translate3d(-40px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeftIn40{0%{transform:translate3d(40px,0,0)}to{transform:translateZ(0)}}.ms-u-slideRightIn400{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightIn400{animation-name:fadeIn,slideRightIn400}html[dir=rtl] .ms-u-slideRightIn400{animation-name:fadeIn-rtl,slideRightIn400-rtl}@keyframes slideRightIn400-rtl{0%{transform:translate3d(400px,0,0)}to{transform:translateZ(0)}}@keyframes slideRightIn400{0%{transform:translate3d(-400px,0,0)}to{transform:translateZ(0)}}.ms-u-slideLeftIn400{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftIn400{animation-name:fadeIn,slideLeft400}html[dir=rtl] .ms-u-slideLeftIn400{animation-name:fadeIn-rtl,slideLeft400-rtl}@keyframes slideLeft400-rtl{0%{transform:translate3d(-400px,0,0)}to{transform:translateZ(0)}}@keyframes slideLeft400{0%{transform:translate3d(400px,0,0)}to{transform:translateZ(0)}}.ms-u-slideUpIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpIn20{animation-name:fadeIn,slideUpIn20}html[dir=rtl] .ms-u-slideUpIn20{animation-name:fadeIn-rtl,slideUpIn20-rtl}@keyframes slideUpIn20-rtl{0%{transform:translate3d(0,20px,0)}to{transform:translateZ(0)}}@keyframes slideUpIn20{0%{transform:translate3d(0,20px,0)}to{transform:translateZ(0)}}.ms-u-slideUpIn10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpIn10{animation-name:fadeIn,slideUpIn10}html[dir=rtl] .ms-u-slideUpIn10{animation-name:fadeIn-rtl,slideUpIn10-rtl}@keyframes slideUpIn10-rtl{0%{transform:translate3d(0,10px,0)}to{transform:translateZ(0)}}@keyframes slideUpIn10{0%{transform:translate3d(0,10px,0)}to{transform:translateZ(0)}}.ms-u-slideDownIn20{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownIn20{animation-name:fadeIn,slideDownIn20}html[dir=rtl] .ms-u-slideDownIn20{animation-name:fadeIn-rtl,slideDownIn20-rtl}@keyframes slideDownIn20-rtl{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}@keyframes slideDownIn20{0%{transform:translate3d(0,-20px,0)}to{transform:translateZ(0)}}.ms-u-slideDownIn10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownIn10{animation-name:fadeIn,slideDownIn10}html[dir=rtl] .ms-u-slideDownIn10{animation-name:fadeIn-rtl,slideDownIn10-rtl}@keyframes slideDownIn10-rtl{0%{transform:translate3d(0,-10px,0)}to{transform:translateZ(0)}}@keyframes slideDownIn10{0%{transform:translate3d(0,-10px,0)}to{transform:translateZ(0)}}.ms-u-slideRightOut40{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightOut40{animation-name:fadeOut,slideRightOut40}html[dir=rtl] .ms-u-slideRightOut40{animation-name:fadeOut-rtl,slideRightOut40-rtl}@keyframes slideRightOut40-rtl{0%{transform:translateZ(0)}to{transform:translate3d(-40px,0,0)}}@keyframes slideRightOut40{0%{transform:translateZ(0)}to{transform:translate3d(40px,0,0)}}.ms-u-slideLeftOut40{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftOut40{animation-name:fadeOut,slideLeftOut40}html[dir=rtl] .ms-u-slideLeftOut40{animation-name:fadeOut-rtl,slideLeftOut40-rtl}@keyframes slideLeftOut40-rtl{0%{transform:translateZ(0)}to{transform:translate3d(40px,0,0)}}@keyframes slideLeftOut40{0%{transform:translateZ(0)}to{transform:translate3d(-40px,0,0)}}.ms-u-slideRightOut400{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideRightOut400{animation-name:fadeOut,slideRightOut400}html[dir=rtl] .ms-u-slideRightOut400{animation-name:fadeOut-rtl,slideRightOut400-rtl}@keyframes slideRightOut400-rtl{0%{transform:translateZ(0)}to{transform:translate3d(-400px,0,0)}}@keyframes slideRightOut400{0%{transform:translateZ(0)}to{transform:translate3d(400px,0,0)}}.ms-u-slideLeftOut400{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideLeftOut400{animation-name:fadeOut,slideLeftOut400}html[dir=rtl] .ms-u-slideLeftOut400{animation-name:fadeOut-rtl,slideLeftOut400-rtl}@keyframes slideLeftOut400-rtl{0%{transform:translateZ(0)}to{transform:translate3d(400px,0,0)}}@keyframes slideLeftOut400{0%{transform:translateZ(0)}to{transform:translate3d(-400px,0,0)}}.ms-u-slideUpOut20{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpOut20{animation-name:fadeOut,slideUpOut20}html[dir=rtl] .ms-u-slideUpOut20{animation-name:fadeOut-rtl,slideUpOut20-rtl}@keyframes slideUpOut20-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}@keyframes slideUpOut20{0%{transform:translateZ(0)}to{transform:translate3d(0,-20px,0)}}.ms-u-slideUpOut10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideUpOut10{animation-name:fadeOut,slideUpOut10}html[dir=rtl] .ms-u-slideUpOut10{animation-name:fadeOut-rtl,slideUpOut10-rtl}@keyframes slideUpOut10-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,-10px,0)}}@keyframes slideUpOut10{0%{transform:translateZ(0)}to{transform:translate3d(0,-10px,0)}}.ms-u-slideDownOut20{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownOut20{animation-name:fadeOut,slideDownOut20}html[dir=rtl] .ms-u-slideDownOut20{animation-name:fadeOut-rtl,slideDownOut20-rtl}@keyframes slideDownOut20-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,20px,0)}}@keyframes slideDownOut20{0%{transform:translateZ(0)}to{transform:translate3d(0,20px,0)}}.ms-u-slideDownOut10{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-slideDownOut10{animation-name:fadeOut,slideDownOut10}html[dir=rtl] .ms-u-slideDownOut10{animation-name:fadeOut-rtl,slideDownOut10-rtl}@keyframes slideDownOut10-rtl{0%{transform:translateZ(0)}to{transform:translate3d(0,10px,0)}}@keyframes slideDownOut10{0%{transform:translateZ(0)}to{transform:translate3d(0,10px,0)}}.ms-u-scaleUpIn100{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleUpIn100{animation-name:fadeIn,scaleUp100}html[dir=rtl] .ms-u-scaleUpIn100{animation-name:fadeIn-rtl,scaleUp100-rtl}@keyframes scaleUp100-rtl{0%{transform:scale3d(.98,.98,1)}to{transform:scaleX(1)}}@keyframes scaleUp100{0%{transform:scale3d(.98,.98,1)}to{transform:scaleX(1)}}.ms-u-scaleDownIn100{-webkit-animation-duration:.367s;-moz-animation-duration:.367s;-ms-animation-duration:.367s;-o-animation-duration:.367s;animation-timing-function:cubic-bezier(.1,.9,.2,1);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleDownIn100{animation-name:fadeIn,scaleDown100}html[dir=rtl] .ms-u-scaleDownIn100{animation-name:fadeIn-rtl,scaleDown100-rtl}@keyframes scaleDown100-rtl{0%{transform:scale3d(1.03,1.03,1)}to{transform:scaleX(1)}}@keyframes scaleDown100{0%{transform:scale3d(1.03,1.03,1)}to{transform:scaleX(1)}}.ms-u-scaleUpOut103{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleUpOut103{animation-name:fadeOut,scaleUp103}html[dir=rtl] .ms-u-scaleUpOut103{animation-name:fadeOut-rtl,scaleUp103-rtl}@keyframes scaleUp103-rtl{0%{transform:scaleX(1)}to{transform:scale3d(1.03,1.03,1)}}@keyframes scaleUp103{0%{transform:scaleX(1)}to{transform:scale3d(1.03,1.03,1)}}.ms-u-scaleDownOut98{-webkit-animation-duration:.167s;-moz-animation-duration:.167s;-ms-animation-duration:.167s;-o-animation-duration:.167s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-scaleDownOut98{animation-name:fadeOut,scaleDown98}html[dir=rtl] .ms-u-scaleDownOut98{animation-name:fadeOut-rtl,scaleDown98-rtl}@keyframes scaleDown98-rtl{0%{transform:scaleX(1)}to{transform:scale3d(.98,.98,1)}}@keyframes scaleDown98{0%{transform:scaleX(1)}to{transform:scale3d(.98,.98,1)}}.ms-u-fadeIn400{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both}html[dir=ltr] .ms-u-fadeIn400{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn400{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn100{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.167s}html[dir=ltr] .ms-u-fadeIn100{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn100{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn200{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.267s}html[dir=ltr] .ms-u-fadeIn200{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn200{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}.ms-u-fadeIn500{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.467s}html[dir=ltr] .ms-u-fadeIn500{-webkit-animation-name:fadeIn;animation-name:fadeIn}html[dir=rtl] .ms-u-fadeIn500{-webkit-animation-name:fadeIn-rtl;animation-name:fadeIn-rtl}@keyframes fadeIn-rtl{0%{opacity:0;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:1}}@keyframes fadeIn{0%{opacity:0;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:1}}.ms-u-fadeOut400{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both}html[dir=ltr] .ms-u-fadeOut400{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut400{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut100{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.1s}html[dir=ltr] .ms-u-fadeOut100{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut100{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut200{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.167s}html[dir=ltr] .ms-u-fadeOut200{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut200{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}.ms-u-fadeOut500{-webkit-animation-duration:.367s;-webkit-animation-fill-mode:both;animation-duration:.367s;animation-fill-mode:both;animation-duration:.467s}html[dir=ltr] .ms-u-fadeOut500{-webkit-animation-name:fadeOut;animation-name:fadeOut}html[dir=rtl] .ms-u-fadeOut500{-webkit-animation-name:fadeOut-rtl;animation-name:fadeOut-rtl}@keyframes fadeOut-rtl{0%{opacity:1;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:0}}@keyframes fadeOut{0%{opacity:1;animation-timing-function:cubic-bezier(.1,.25,.75,.9)}to{opacity:0}}.ms-u-rotate90deg{-webkit-animation-duration:.1s;-moz-animation-duration:.1s;-ms-animation-duration:.1s;-o-animation-duration:.1s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-rotate90deg{animation-name:rotate90}html[dir=rtl] .ms-u-rotate90deg{animation-name:rotate90-rtl}@keyframes rotate90-rtl{0%{transform:rotate(0deg)}to{transform:rotate(-90deg)}}@keyframes rotate90{0%{transform:rotate(0deg)}to{transform:rotate(90deg)}}.ms-u-rotateN90deg{-webkit-animation-duration:.1s;-moz-animation-duration:.1s;-ms-animation-duration:.1s;-o-animation-duration:.1s;animation-timing-function:cubic-bezier(.1,.25,.75,.9);animation-fill-mode:both}html[dir=ltr] .ms-u-rotateN90deg{animation-name:rotateN90}html[dir=rtl] .ms-u-rotateN90deg{animation-name:rotateN90-rtl}@keyframes rotateN90-rtl{0%{transform:rotate(-90deg)}to{transform:rotate(0deg)}}@keyframes rotateN90{0%{transform:rotate(90deg)}to{transform:rotate(0deg)}}html[dir] .ms-u-expandCollapse400{transition:height .367s cubic-bezier(.1,.25,.75,.9)}html[dir] .ms-u-expandCollapse200{transition:height .167s cubic-bezier(.1,.25,.75,.9)}html[dir] .ms-u-expandCollapse100{transition:height .1s cubic-bezier(.1,.25,.75,.9)}.ms-u-delay100{animation-delay:.167s}.ms-u-delay200{animation-delay:.267s}@media (max-width:479px){.ms-u-hiddenLgDown,.ms-u-hiddenMdDown,.ms-u-hiddenSm,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:480px) and (max-width:639px){.ms-u-hiddenLgDown,.ms-u-hiddenMd,.ms-u-hiddenMdDown,.ms-u-hiddenMdUp,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:640px) and (max-width:1023px){.ms-u-hiddenLg,.ms-u-hiddenLgDown,.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlDown,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:1024px) and (max-width:1365px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXl,.ms-u-hiddenXlDown,.ms-u-hiddenXlUp,.ms-u-hiddenXxlDown{display:none!important}}@media (min-width:1366px) and (max-width:1919px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlUp,.ms-u-hiddenXxl,.ms-u-hiddenXxlDown,.ms-u-hiddenXxlUp{display:none!important}}@media (min-width:1920px){.ms-u-hiddenLgUp,.ms-u-hiddenMdUp,.ms-u-hiddenXlUp,.ms-u-hiddenXxlUp,.ms-u-hiddenXxxl{display:none!important}}.ms-u-sm12{width:100%}.ms-u-sm11{width:91.66666666666666%}.ms-u-sm10{width:83.33333333333334%}.ms-u-sm9{width:75%}.ms-u-sm8{width:66.66666666666666%}.ms-u-sm7{width:58.333333333333336%}.ms-u-sm6{width:50%}.ms-u-sm5{width:41.66666666666667%}.ms-u-sm4{width:33.33333333333333%}.ms-u-sm3{width:25%}.ms-u-sm2{width:16.666666666666664%}.ms-u-sm1{width:8.333333333333332%}html[dir=ltr] .ms-u-smPull12{right:100%}html[dir=rtl] .ms-u-smPull12{left:100%}html[dir=ltr] .ms-u-smPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-smPull11{left:91.66666666666666%}html[dir=ltr] .ms-u-smPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-smPull10{left:83.33333333333334%}html[dir=ltr] .ms-u-smPull9{right:75%}html[dir=rtl] .ms-u-smPull9{left:75%}html[dir=ltr] .ms-u-smPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-smPull8{left:66.66666666666666%}html[dir=ltr] .ms-u-smPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-smPull7{left:58.333333333333336%}html[dir=ltr] .ms-u-smPull6{right:50%}html[dir=rtl] .ms-u-smPull6{left:50%}html[dir=ltr] .ms-u-smPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-smPull5{left:41.66666666666667%}html[dir=ltr] .ms-u-smPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-smPull4{left:33.33333333333333%}html[dir=ltr] .ms-u-smPull3{right:25%}html[dir=rtl] .ms-u-smPull3{left:25%}html[dir=ltr] .ms-u-smPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-smPull2{left:16.666666666666664%}html[dir=ltr] .ms-u-smPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-smPull1{left:8.333333333333332%}html[dir=ltr] .ms-u-smPull0{right:auto}html[dir=rtl] .ms-u-smPull0{left:auto}html[dir=ltr] .ms-u-smPush12{left:100%}html[dir=rtl] .ms-u-smPush12{right:100%}html[dir=ltr] .ms-u-smPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-smPush11{right:91.66666666666666%}html[dir=ltr] .ms-u-smPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-smPush10{right:83.33333333333334%}html[dir=ltr] .ms-u-smPush9{left:75%}html[dir=rtl] .ms-u-smPush9{right:75%}html[dir=ltr] .ms-u-smPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-smPush8{right:66.66666666666666%}html[dir=ltr] .ms-u-smPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-smPush7{right:58.333333333333336%}html[dir=ltr] .ms-u-smPush6{left:50%}html[dir=rtl] .ms-u-smPush6{right:50%}html[dir=ltr] .ms-u-smPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-smPush5{right:41.66666666666667%}html[dir=ltr] .ms-u-smPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-smPush4{right:33.33333333333333%}html[dir=ltr] .ms-u-smPush3{left:25%}html[dir=rtl] .ms-u-smPush3{right:25%}html[dir=ltr] .ms-u-smPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-smPush2{right:16.666666666666664%}html[dir=ltr] .ms-u-smPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-smPush1{right:8.333333333333332%}html[dir=ltr] .ms-u-smPush0{left:auto}html[dir=rtl] .ms-u-smPush0{right:auto}html[dir=ltr] .ms-u-smOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-smOffset11{margin-right:91.66666666666666%}html[dir=ltr] .ms-u-smOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-smOffset10{margin-right:83.33333333333334%}html[dir=ltr] .ms-u-smOffset9{margin-left:75%}html[dir=rtl] .ms-u-smOffset9{margin-right:75%}html[dir=ltr] .ms-u-smOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-smOffset8{margin-right:66.66666666666666%}html[dir=ltr] .ms-u-smOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-smOffset7{margin-right:58.333333333333336%}html[dir=ltr] .ms-u-smOffset6{margin-left:50%}html[dir=rtl] .ms-u-smOffset6{margin-right:50%}html[dir=ltr] .ms-u-smOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-smOffset5{margin-right:41.66666666666667%}html[dir=ltr] .ms-u-smOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-smOffset4{margin-right:33.33333333333333%}html[dir=ltr] .ms-u-smOffset3{margin-left:25%}html[dir=rtl] .ms-u-smOffset3{margin-right:25%}html[dir=ltr] .ms-u-smOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-smOffset2{margin-right:16.666666666666664%}html[dir=ltr] .ms-u-smOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-smOffset1{margin-right:8.333333333333332%}html[dir=ltr] .ms-u-smOffset0{margin-left:0}html[dir=rtl] .ms-u-smOffset0{margin-right:0}@media (min-width:480px){.ms-u-md12{width:100%}}@media (min-width:480px){.ms-u-md11{width:91.66666666666666%}}@media (min-width:480px){.ms-u-md10{width:83.33333333333334%}}@media (min-width:480px){.ms-u-md9{width:75%}}@media (min-width:480px){.ms-u-md8{width:66.66666666666666%}}@media (min-width:480px){.ms-u-md7{width:58.333333333333336%}}@media (min-width:480px){.ms-u-md6{width:50%}}@media (min-width:480px){.ms-u-md5{width:41.66666666666667%}}@media (min-width:480px){.ms-u-md4{width:33.33333333333333%}}@media (min-width:480px){.ms-u-md3{width:25%}}@media (min-width:480px){.ms-u-md2{width:16.666666666666664%}}@media (min-width:480px){.ms-u-md1{width:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull12{right:100%}html[dir=rtl] .ms-u-mdPull12{left:100%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-mdPull11{left:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-mdPull10{left:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull9{right:75%}html[dir=rtl] .ms-u-mdPull9{left:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-mdPull8{left:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-mdPull7{left:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull6{right:50%}html[dir=rtl] .ms-u-mdPull6{left:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-mdPull5{left:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-mdPull4{left:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull3{right:25%}html[dir=rtl] .ms-u-mdPull3{left:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-mdPull2{left:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-mdPull1{left:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPull0{right:auto}html[dir=rtl] .ms-u-mdPull0{left:auto}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush12{left:100%}html[dir=rtl] .ms-u-mdPush12{right:100%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-mdPush11{right:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-mdPush10{right:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush9{left:75%}html[dir=rtl] .ms-u-mdPush9{right:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-mdPush8{right:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-mdPush7{right:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush6{left:50%}html[dir=rtl] .ms-u-mdPush6{right:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-mdPush5{right:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-mdPush4{right:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush3{left:25%}html[dir=rtl] .ms-u-mdPush3{right:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-mdPush2{right:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-mdPush1{right:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdPush0{left:auto}html[dir=rtl] .ms-u-mdPush0{right:auto}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-mdOffset11{margin-right:91.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-mdOffset10{margin-right:83.33333333333334%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset9{margin-left:75%}html[dir=rtl] .ms-u-mdOffset9{margin-right:75%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-mdOffset8{margin-right:66.66666666666666%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-mdOffset7{margin-right:58.333333333333336%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset6{margin-left:50%}html[dir=rtl] .ms-u-mdOffset6{margin-right:50%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-mdOffset5{margin-right:41.66666666666667%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-mdOffset4{margin-right:33.33333333333333%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset3{margin-left:25%}html[dir=rtl] .ms-u-mdOffset3{margin-right:25%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-mdOffset2{margin-right:16.666666666666664%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-mdOffset1{margin-right:8.333333333333332%}}@media (min-width:480px){html[dir=ltr] .ms-u-mdOffset0{margin-left:0}html[dir=rtl] .ms-u-mdOffset0{margin-right:0}}@media (min-width:640px){.ms-u-lg12{width:100%}}@media (min-width:640px){.ms-u-lg11{width:91.66666666666666%}}@media (min-width:640px){.ms-u-lg10{width:83.33333333333334%}}@media (min-width:640px){.ms-u-lg9{width:75%}}@media (min-width:640px){.ms-u-lg8{width:66.66666666666666%}}@media (min-width:640px){.ms-u-lg7{width:58.333333333333336%}}@media (min-width:640px){.ms-u-lg6{width:50%}}@media (min-width:640px){.ms-u-lg5{width:41.66666666666667%}}@media (min-width:640px){.ms-u-lg4{width:33.33333333333333%}}@media (min-width:640px){.ms-u-lg3{width:25%}}@media (min-width:640px){.ms-u-lg2{width:16.666666666666664%}}@media (min-width:640px){.ms-u-lg1{width:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull12{right:100%}html[dir=rtl] .ms-u-lgPull12{left:100%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-lgPull11{left:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-lgPull10{left:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull9{right:75%}html[dir=rtl] .ms-u-lgPull9{left:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-lgPull8{left:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-lgPull7{left:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull6{right:50%}html[dir=rtl] .ms-u-lgPull6{left:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-lgPull5{left:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-lgPull4{left:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull3{right:25%}html[dir=rtl] .ms-u-lgPull3{left:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-lgPull2{left:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-lgPull1{left:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPull0{right:auto}html[dir=rtl] .ms-u-lgPull0{left:auto}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush12{left:100%}html[dir=rtl] .ms-u-lgPush12{right:100%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-lgPush11{right:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-lgPush10{right:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush9{left:75%}html[dir=rtl] .ms-u-lgPush9{right:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-lgPush8{right:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-lgPush7{right:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush6{left:50%}html[dir=rtl] .ms-u-lgPush6{right:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-lgPush5{right:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-lgPush4{right:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush3{left:25%}html[dir=rtl] .ms-u-lgPush3{right:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-lgPush2{right:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-lgPush1{right:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgPush0{left:auto}html[dir=rtl] .ms-u-lgPush0{right:auto}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-lgOffset11{margin-right:91.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-lgOffset10{margin-right:83.33333333333334%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset9{margin-left:75%}html[dir=rtl] .ms-u-lgOffset9{margin-right:75%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-lgOffset8{margin-right:66.66666666666666%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-lgOffset7{margin-right:58.333333333333336%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset6{margin-left:50%}html[dir=rtl] .ms-u-lgOffset6{margin-right:50%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-lgOffset5{margin-right:41.66666666666667%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-lgOffset4{margin-right:33.33333333333333%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset3{margin-left:25%}html[dir=rtl] .ms-u-lgOffset3{margin-right:25%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-lgOffset2{margin-right:16.666666666666664%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-lgOffset1{margin-right:8.333333333333332%}}@media (min-width:640px){html[dir=ltr] .ms-u-lgOffset0{margin-left:0}html[dir=rtl] .ms-u-lgOffset0{margin-right:0}}@media (min-width:1024px){.ms-u-xl12{width:100%}}@media (min-width:1024px){.ms-u-xl11{width:91.66666666666666%}}@media (min-width:1024px){.ms-u-xl10{width:83.33333333333334%}}@media (min-width:1024px){.ms-u-xl9{width:75%}}@media (min-width:1024px){.ms-u-xl8{width:66.66666666666666%}}@media (min-width:1024px){.ms-u-xl7{width:58.333333333333336%}}@media (min-width:1024px){.ms-u-xl6{width:50%}}@media (min-width:1024px){.ms-u-xl5{width:41.66666666666667%}}@media (min-width:1024px){.ms-u-xl4{width:33.33333333333333%}}@media (min-width:1024px){.ms-u-xl3{width:25%}}@media (min-width:1024px){.ms-u-xl2{width:16.666666666666664%}}@media (min-width:1024px){.ms-u-xl1{width:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull12{right:100%}html[dir=rtl] .ms-u-xlPull12{left:100%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xlPull11{left:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xlPull10{left:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull9{right:75%}html[dir=rtl] .ms-u-xlPull9{left:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xlPull8{left:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xlPull7{left:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull6{right:50%}html[dir=rtl] .ms-u-xlPull6{left:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xlPull5{left:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xlPull4{left:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull3{right:25%}html[dir=rtl] .ms-u-xlPull3{left:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xlPull2{left:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xlPull1{left:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPull0{right:auto}html[dir=rtl] .ms-u-xlPull0{left:auto}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush12{left:100%}html[dir=rtl] .ms-u-xlPush12{right:100%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xlPush11{right:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xlPush10{right:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush9{left:75%}html[dir=rtl] .ms-u-xlPush9{right:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xlPush8{right:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xlPush7{right:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush6{left:50%}html[dir=rtl] .ms-u-xlPush6{right:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xlPush5{right:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xlPush4{right:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush3{left:25%}html[dir=rtl] .ms-u-xlPush3{right:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xlPush2{right:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xlPush1{right:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlPush0{left:auto}html[dir=rtl] .ms-u-xlPush0{right:auto}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xlOffset11{margin-right:91.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xlOffset10{margin-right:83.33333333333334%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xlOffset9{margin-right:75%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xlOffset8{margin-right:66.66666666666666%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xlOffset7{margin-right:58.333333333333336%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xlOffset6{margin-right:50%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xlOffset5{margin-right:41.66666666666667%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xlOffset4{margin-right:33.33333333333333%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xlOffset3{margin-right:25%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xlOffset2{margin-right:16.666666666666664%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xlOffset1{margin-right:8.333333333333332%}}@media (min-width:1024px){html[dir=ltr] .ms-u-xlOffset0{margin-left:0}html[dir=rtl] .ms-u-xlOffset0{margin-right:0}}@media (min-width:1366px){.ms-u-xxl12{width:100%}}@media (min-width:1366px){.ms-u-xxl11{width:91.66666666666666%}}@media (min-width:1366px){.ms-u-xxl10{width:83.33333333333334%}}@media (min-width:1366px){.ms-u-xxl9{width:75%}}@media (min-width:1366px){.ms-u-xxl8{width:66.66666666666666%}}@media (min-width:1366px){.ms-u-xxl7{width:58.333333333333336%}}@media (min-width:1366px){.ms-u-xxl6{width:50%}}@media (min-width:1366px){.ms-u-xxl5{width:41.66666666666667%}}@media (min-width:1366px){.ms-u-xxl4{width:33.33333333333333%}}@media (min-width:1366px){.ms-u-xxl3{width:25%}}@media (min-width:1366px){.ms-u-xxl2{width:16.666666666666664%}}@media (min-width:1366px){.ms-u-xxl1{width:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull12{right:100%}html[dir=rtl] .ms-u-xxlPull12{left:100%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xxlPull11{left:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xxlPull10{left:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull9{right:75%}html[dir=rtl] .ms-u-xxlPull9{left:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xxlPull8{left:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xxlPull7{left:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull6{right:50%}html[dir=rtl] .ms-u-xxlPull6{left:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xxlPull5{left:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xxlPull4{left:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull3{right:25%}html[dir=rtl] .ms-u-xxlPull3{left:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xxlPull2{left:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xxlPull1{left:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPull0{right:auto}html[dir=rtl] .ms-u-xxlPull0{left:auto}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush12{left:100%}html[dir=rtl] .ms-u-xxlPush12{right:100%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xxlPush11{right:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xxlPush10{right:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush9{left:75%}html[dir=rtl] .ms-u-xxlPush9{right:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xxlPush8{right:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xxlPush7{right:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush6{left:50%}html[dir=rtl] .ms-u-xxlPush6{right:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xxlPush5{right:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xxlPush4{right:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush3{left:25%}html[dir=rtl] .ms-u-xxlPush3{right:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xxlPush2{right:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xxlPush1{right:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlPush0{left:auto}html[dir=rtl] .ms-u-xxlPush0{right:auto}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xxlOffset11{margin-right:91.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xxlOffset10{margin-right:83.33333333333334%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xxlOffset9{margin-right:75%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xxlOffset8{margin-right:66.66666666666666%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xxlOffset7{margin-right:58.333333333333336%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xxlOffset6{margin-right:50%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xxlOffset5{margin-right:41.66666666666667%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xxlOffset4{margin-right:33.33333333333333%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xxlOffset3{margin-right:25%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xxlOffset2{margin-right:16.666666666666664%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xxlOffset1{margin-right:8.333333333333332%}}@media (min-width:1366px){html[dir=ltr] .ms-u-xxlOffset0{margin-left:0}html[dir=rtl] .ms-u-xxlOffset0{margin-right:0}}@media (min-width:1920px){.ms-u-xxxl12{width:100%}}@media (min-width:1920px){.ms-u-xxxl11{width:91.66666666666666%}}@media (min-width:1920px){.ms-u-xxxl10{width:83.33333333333334%}}@media (min-width:1920px){.ms-u-xxxl9{width:75%}}@media (min-width:1920px){.ms-u-xxxl8{width:66.66666666666666%}}@media (min-width:1920px){.ms-u-xxxl7{width:58.333333333333336%}}@media (min-width:1920px){.ms-u-xxxl6{width:50%}}@media (min-width:1920px){.ms-u-xxxl5{width:41.66666666666667%}}@media (min-width:1920px){.ms-u-xxxl4{width:33.33333333333333%}}@media (min-width:1920px){.ms-u-xxxl3{width:25%}}@media (min-width:1920px){.ms-u-xxxl2{width:16.666666666666664%}}@media (min-width:1920px){.ms-u-xxxl1{width:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull12{right:100%}html[dir=rtl] .ms-u-xxxlPull12{left:100%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull11{right:91.66666666666666%}html[dir=rtl] .ms-u-xxxlPull11{left:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull10{right:83.33333333333334%}html[dir=rtl] .ms-u-xxxlPull10{left:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull9{right:75%}html[dir=rtl] .ms-u-xxxlPull9{left:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull8{right:66.66666666666666%}html[dir=rtl] .ms-u-xxxlPull8{left:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull7{right:58.333333333333336%}html[dir=rtl] .ms-u-xxxlPull7{left:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull6{right:50%}html[dir=rtl] .ms-u-xxxlPull6{left:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull5{right:41.66666666666667%}html[dir=rtl] .ms-u-xxxlPull5{left:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull4{right:33.33333333333333%}html[dir=rtl] .ms-u-xxxlPull4{left:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull3{right:25%}html[dir=rtl] .ms-u-xxxlPull3{left:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull2{right:16.666666666666664%}html[dir=rtl] .ms-u-xxxlPull2{left:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull1{right:8.333333333333332%}html[dir=rtl] .ms-u-xxxlPull1{left:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPull0{right:auto}html[dir=rtl] .ms-u-xxxlPull0{left:auto}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush12{left:100%}html[dir=rtl] .ms-u-xxxlPush12{right:100%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush11{left:91.66666666666666%}html[dir=rtl] .ms-u-xxxlPush11{right:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush10{left:83.33333333333334%}html[dir=rtl] .ms-u-xxxlPush10{right:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush9{left:75%}html[dir=rtl] .ms-u-xxxlPush9{right:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush8{left:66.66666666666666%}html[dir=rtl] .ms-u-xxxlPush8{right:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush7{left:58.333333333333336%}html[dir=rtl] .ms-u-xxxlPush7{right:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush6{left:50%}html[dir=rtl] .ms-u-xxxlPush6{right:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush5{left:41.66666666666667%}html[dir=rtl] .ms-u-xxxlPush5{right:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush4{left:33.33333333333333%}html[dir=rtl] .ms-u-xxxlPush4{right:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush3{left:25%}html[dir=rtl] .ms-u-xxxlPush3{right:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush2{left:16.666666666666664%}html[dir=rtl] .ms-u-xxxlPush2{right:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush1{left:8.333333333333332%}html[dir=rtl] .ms-u-xxxlPush1{right:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlPush0{left:auto}html[dir=rtl] .ms-u-xxxlPush0{right:auto}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset11{margin-left:91.66666666666666%}html[dir=rtl] .ms-u-xxxlOffset11{margin-right:91.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset10{margin-left:83.33333333333334%}html[dir=rtl] .ms-u-xxxlOffset10{margin-right:83.33333333333334%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset9{margin-left:75%}html[dir=rtl] .ms-u-xxxlOffset9{margin-right:75%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset8{margin-left:66.66666666666666%}html[dir=rtl] .ms-u-xxxlOffset8{margin-right:66.66666666666666%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset7{margin-left:58.333333333333336%}html[dir=rtl] .ms-u-xxxlOffset7{margin-right:58.333333333333336%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset6{margin-left:50%}html[dir=rtl] .ms-u-xxxlOffset6{margin-right:50%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset5{margin-left:41.66666666666667%}html[dir=rtl] .ms-u-xxxlOffset5{margin-right:41.66666666666667%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset4{margin-left:33.33333333333333%}html[dir=rtl] .ms-u-xxxlOffset4{margin-right:33.33333333333333%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset3{margin-left:25%}html[dir=rtl] .ms-u-xxxlOffset3{margin-right:25%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset2{margin-left:16.666666666666664%}html[dir=rtl] .ms-u-xxxlOffset2{margin-right:16.666666666666664%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset1{margin-left:8.333333333333332%}html[dir=rtl] .ms-u-xxxlOffset1{margin-right:8.333333333333332%}}@media (min-width:1920px){html[dir=ltr] .ms-u-xxxlOffset0{margin-left:0}html[dir=rtl] .ms-u-xxxlOffset0{margin-right:0}}.ms-Grid{box-sizing:border-box;*zoom:1}html[dir] .ms-Grid{padding:0 8px}.ms-Grid:after,.ms-Grid:before{display:table;content:"";line-height:0}.ms-Grid:after{clear:both}.ms-Grid-row{box-sizing:border-box;*zoom:1}html[dir] .ms-Grid-row{margin:0 -8px}.ms-Grid-row:after,.ms-Grid-row:before{display:table;content:"";line-height:0}.ms-Grid-row:after{clear:both}.ms-Grid-col{position:relative;min-height:1px;box-sizing:border-box}html[dir=ltr] .ms-Grid-col{padding-left:8px;padding-right:8px;float:left}html[dir=rtl] .ms-Grid-col{padding-right:8px;padding-left:8px;float:right}html[dir] .ms-Grid-col .ms-Grid{padding:0}.ms-Fabric{color:#333}--><!--._2oCGj93haij-ioEI0V2boL{display:none}.v7XN5-sLUO3TS4AKvX4al{max-width:none}--><!--._1niWwYsHCqgirsD8-yhn3x .ms-Callout-main{overflow:hidden}._35P67Bqt2-_9UkBhnkjCED{height:32px;color:inherit}html[dir] ._35P67Bqt2-_9UkBhnkjCED{background-color:transparent;border-bottom-style:solid;border-bottom-width:1px}._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-primaryCommands,._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-sideCommands{line-height:32px;height:32px}html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-primaryCommands,html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-sideCommands{margin:0}._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem{line-height:32px;height:100%}._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem-link{line-height:32px}._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-primaryCommands,._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem-link:hover,._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem:hover,._35P67Bqt2-_9UkBhnkjCED .ms-FocusZone{color:inherit!important}html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBar-primaryCommands,html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem-link:hover,html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-CommandBarItem:hover,html[dir] ._35P67Bqt2-_9UkBhnkjCED .ms-FocusZone{background-color:inherit!important}._35P67Bqt2-_9UkBhnkjCED .is-expanded .ms-CommandBarItem-overflow,._35P67Bqt2-_9UkBhnkjCED button[id$=selected]{color:inherit!important}._35P67Bqt2-_9UkBhnkjCED button[id$=overflow]{line-height:0}html[dir] ._1m82QbHRaGJFOXY42dCJPO{padding:8px}html[dir=ltr] ._1m82QbHRaGJFOXY42dCJPO{float:left}html[dir=rtl] ._1m82QbHRaGJFOXY42dCJPO{float:right}._1Qa9aZNTwzhCtGC9Xqr9o4{height:16px;width:0}html[dir] ._1Qa9aZNTwzhCtGC9Xqr9o4{padding:0;margin:8px 0}html[dir=ltr] ._1Qa9aZNTwzhCtGC9Xqr9o4{border-right-width:1px;border-right-style:solid;float:left}html[dir=rtl] ._1Qa9aZNTwzhCtGC9Xqr9o4{border-left-width:1px;border-left-style:solid;float:right}-->

    <!--.swx .tab_id_002_noname_0ad8092f-344e-4db3-b2df-1a027e29d61a{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_0ad8092f-344e-4db3-b2df-1a027e29d61a/views/thumbnail'); } .swx .tab_id_002_noname_2268d166-680f-4143-8b9e-8a235f9f580f{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_2268d166-680f-4143-8b9e-8a235f9f580f/views/thumbnail'); } .swx span.moji.id_d5d28e2b5e074db6a7e046f62b338a55 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d5d28e2b5e074db6a7e046f62b338a55/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d5d28e2b5e074db6a7e046f62b338a55 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d5d28e2b5e074db6a7e046f62b338a55/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ac21a0dc632e4a16a99146d19dbd5f10 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ac21a0dc632e4a16a99146d19dbd5f10/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ac21a0dc632e4a16a99146d19dbd5f10 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ac21a0dc632e4a16a99146d19dbd5f10/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_91370e2cdd514a4da59a3f2d1d18d4d3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/91370e2cdd514a4da59a3f2d1d18d4d3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_91370e2cdd514a4da59a3f2d1d18d4d3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/91370e2cdd514a4da59a3f2d1d18d4d3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b0d2b732bf2d47eca34d4dfe161069d6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b0d2b732bf2d47eca34d4dfe161069d6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b0d2b732bf2d47eca34d4dfe161069d6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b0d2b732bf2d47eca34d4dfe161069d6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_12d0b3d20dd94365b37d3c8e88a53c48 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/12d0b3d20dd94365b37d3c8e88a53c48/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_12d0b3d20dd94365b37d3c8e88a53c48 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/12d0b3d20dd94365b37d3c8e88a53c48/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a7d562054d2540eaa3b4613c2f6165c7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a7d562054d2540eaa3b4613c2f6165c7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a7d562054d2540eaa3b4613c2f6165c7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a7d562054d2540eaa3b4613c2f6165c7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c4df6315084241088f660dbb1a14e893 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c4df6315084241088f660dbb1a14e893/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c4df6315084241088f660dbb1a14e893 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c4df6315084241088f660dbb1a14e893/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_25f557ed5522484fa7d780af7d51737d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/25f557ed5522484fa7d780af7d51737d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_25f557ed5522484fa7d780af7d51737d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/25f557ed5522484fa7d780af7d51737d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a4adecdd9c284db7b248071bc7cd4ce0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a4adecdd9c284db7b248071bc7cd4ce0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a4adecdd9c284db7b248071bc7cd4ce0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a4adecdd9c284db7b248071bc7cd4ce0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_93ef3bf9986a4978b046bbdb2f5a6019 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93ef3bf9986a4978b046bbdb2f5a6019/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_93ef3bf9986a4978b046bbdb2f5a6019 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93ef3bf9986a4978b046bbdb2f5a6019/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d8219495416d40b7babb116f8a384525 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d8219495416d40b7babb116f8a384525/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d8219495416d40b7babb116f8a384525 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d8219495416d40b7babb116f8a384525/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5288231ba9974653891e6e0b5dae5c01 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5288231ba9974653891e6e0b5dae5c01/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5288231ba9974653891e6e0b5dae5c01 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5288231ba9974653891e6e0b5dae5c01/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5fb9940952fb45218aeb7765e489c13b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5fb9940952fb45218aeb7765e489c13b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5fb9940952fb45218aeb7765e489c13b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5fb9940952fb45218aeb7765e489c13b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cbd4b2307b6546fea9a0afe08bf1d45e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cbd4b2307b6546fea9a0afe08bf1d45e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cbd4b2307b6546fea9a0afe08bf1d45e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cbd4b2307b6546fea9a0afe08bf1d45e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_636c5e8fbdd14e04ade630c5b6152275 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/636c5e8fbdd14e04ade630c5b6152275/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_636c5e8fbdd14e04ade630c5b6152275 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/636c5e8fbdd14e04ade630c5b6152275/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_eb7fed2ffeab4d339064e67dfc9a783b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eb7fed2ffeab4d339064e67dfc9a783b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_eb7fed2ffeab4d339064e67dfc9a783b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eb7fed2ffeab4d339064e67dfc9a783b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_dc3acfadbb994d3793cfe905a0dec482 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dc3acfadbb994d3793cfe905a0dec482/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_dc3acfadbb994d3793cfe905a0dec482 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dc3acfadbb994d3793cfe905a0dec482/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bd31f2f059ce41bca5dfb9b969d7e1ea span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd31f2f059ce41bca5dfb9b969d7e1ea/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bd31f2f059ce41bca5dfb9b969d7e1ea span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd31f2f059ce41bca5dfb9b969d7e1ea/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ef8a8e4599ca4591a96a67f23c23abd1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef8a8e4599ca4591a96a67f23c23abd1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ef8a8e4599ca4591a96a67f23c23abd1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef8a8e4599ca4591a96a67f23c23abd1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5d7807e764e14f6ea102ddfdd30acf34 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d7807e764e14f6ea102ddfdd30acf34/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5d7807e764e14f6ea102ddfdd30acf34 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d7807e764e14f6ea102ddfdd30acf34/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_201ca95718f34012b6d76bb7b388c652 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/201ca95718f34012b6d76bb7b388c652/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_201ca95718f34012b6d76bb7b388c652 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/201ca95718f34012b6d76bb7b388c652/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5d3fd81f22b341299881072c627533d5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d3fd81f22b341299881072c627533d5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5d3fd81f22b341299881072c627533d5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d3fd81f22b341299881072c627533d5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f305b50326b34f07a0c2dd0c27325cea span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f305b50326b34f07a0c2dd0c27325cea/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f305b50326b34f07a0c2dd0c27325cea span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f305b50326b34f07a0c2dd0c27325cea/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_83bf44f0d867434fb296d77bf9488828 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/83bf44f0d867434fb296d77bf9488828/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_83bf44f0d867434fb296d77bf9488828 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/83bf44f0d867434fb296d77bf9488828/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb677fa811474474ad19fd9cf34afd8e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb677fa811474474ad19fd9cf34afd8e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb677fa811474474ad19fd9cf34afd8e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb677fa811474474ad19fd9cf34afd8e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d796450ddff1496a9d43eb7d1ee795c6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d796450ddff1496a9d43eb7d1ee795c6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d796450ddff1496a9d43eb7d1ee795c6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d796450ddff1496a9d43eb7d1ee795c6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0ebd46c04fa641df8be24bb42d911c6b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ebd46c04fa641df8be24bb42d911c6b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0ebd46c04fa641df8be24bb42d911c6b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ebd46c04fa641df8be24bb42d911c6b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5db6bfb50b064e739f068d407d207ca0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5db6bfb50b064e739f068d407d207ca0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5db6bfb50b064e739f068d407d207ca0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5db6bfb50b064e739f068d407d207ca0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_df369f9ec4a7475396e5c1deabe21167 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df369f9ec4a7475396e5c1deabe21167/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_df369f9ec4a7475396e5c1deabe21167 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df369f9ec4a7475396e5c1deabe21167/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9401c7f9c12944e49daa82fc1e92ec31 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9401c7f9c12944e49daa82fc1e92ec31/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9401c7f9c12944e49daa82fc1e92ec31 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9401c7f9c12944e49daa82fc1e92ec31/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5e4b15ed51244c5daae58114abeda46c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5e4b15ed51244c5daae58114abeda46c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5e4b15ed51244c5daae58114abeda46c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5e4b15ed51244c5daae58114abeda46c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e0734f17138c46a693b00a2b58babc12 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e0734f17138c46a693b00a2b58babc12/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e0734f17138c46a693b00a2b58babc12 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e0734f17138c46a693b00a2b58babc12/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_80a3b4c737e1461b87f86d385084fc84 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80a3b4c737e1461b87f86d385084fc84/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_80a3b4c737e1461b87f86d385084fc84 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80a3b4c737e1461b87f86d385084fc84/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_eadac0775ce3428197104734ef87a481 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eadac0775ce3428197104734ef87a481/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_eadac0775ce3428197104734ef87a481 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eadac0775ce3428197104734ef87a481/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c8d2e2ae0da64a4d8e3bf4fc854c8d25 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c8d2e2ae0da64a4d8e3bf4fc854c8d25/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c8d2e2ae0da64a4d8e3bf4fc854c8d25 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c8d2e2ae0da64a4d8e3bf4fc854c8d25/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c3b6afa09a544c7a8dfd5ff1eaec0bd5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c3b6afa09a544c7a8dfd5ff1eaec0bd5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c3b6afa09a544c7a8dfd5ff1eaec0bd5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c3b6afa09a544c7a8dfd5ff1eaec0bd5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_03987e97cdbd42ffad88e93a648eb7bb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/03987e97cdbd42ffad88e93a648eb7bb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_03987e97cdbd42ffad88e93a648eb7bb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/03987e97cdbd42ffad88e93a648eb7bb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_026491323f50430aabfc3937e3ca3d83 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/026491323f50430aabfc3937e3ca3d83/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_026491323f50430aabfc3937e3ca3d83 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/026491323f50430aabfc3937e3ca3d83/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_34a59afcf88c487db7069f4f88c93a60 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/34a59afcf88c487db7069f4f88c93a60/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_34a59afcf88c487db7069f4f88c93a60 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/34a59afcf88c487db7069f4f88c93a60/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1f60a428906f49d3b9fbaee16b95a63a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1f60a428906f49d3b9fbaee16b95a63a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1f60a428906f49d3b9fbaee16b95a63a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1f60a428906f49d3b9fbaee16b95a63a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_85f3bcfcffe64a5d8440ec21f13a78a1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/85f3bcfcffe64a5d8440ec21f13a78a1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_85f3bcfcffe64a5d8440ec21f13a78a1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/85f3bcfcffe64a5d8440ec21f13a78a1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7757cab2e26e435194c5269358eadda7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7757cab2e26e435194c5269358eadda7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7757cab2e26e435194c5269358eadda7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7757cab2e26e435194c5269358eadda7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8719fee79e884e3aa923bf3140a99d3b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8719fee79e884e3aa923bf3140a99d3b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8719fee79e884e3aa923bf3140a99d3b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8719fee79e884e3aa923bf3140a99d3b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7676b8cb7afc44529d144f7455f2ef8e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7676b8cb7afc44529d144f7455f2ef8e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7676b8cb7afc44529d144f7455f2ef8e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7676b8cb7afc44529d144f7455f2ef8e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_391e60f5ca004b0aa7956478df92eae8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/391e60f5ca004b0aa7956478df92eae8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_391e60f5ca004b0aa7956478df92eae8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/391e60f5ca004b0aa7956478df92eae8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f96a75da9440429ca22baef01ac76685 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f96a75da9440429ca22baef01ac76685/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f96a75da9440429ca22baef01ac76685 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f96a75da9440429ca22baef01ac76685/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_11a49ac0c55b43028d7b64b1bc80543d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11a49ac0c55b43028d7b64b1bc80543d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_11a49ac0c55b43028d7b64b1bc80543d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11a49ac0c55b43028d7b64b1bc80543d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_47eb153b8113466f9a68eaa1e47d21ef span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/47eb153b8113466f9a68eaa1e47d21ef/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_47eb153b8113466f9a68eaa1e47d21ef span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/47eb153b8113466f9a68eaa1e47d21ef/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e245fced1cba4ae18fa0d449de6a89e4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e245fced1cba4ae18fa0d449de6a89e4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e245fced1cba4ae18fa0d449de6a89e4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e245fced1cba4ae18fa0d449de6a89e4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e5f6bbce978749b4947e30cc9688aa50 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5f6bbce978749b4947e30cc9688aa50/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e5f6bbce978749b4947e30cc9688aa50 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5f6bbce978749b4947e30cc9688aa50/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_18884340c2414c62b00bc318504260ed span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/18884340c2414c62b00bc318504260ed/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_18884340c2414c62b00bc318504260ed span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/18884340c2414c62b00bc318504260ed/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6e7f4035a885437fa3fcfd5fc024f907 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6e7f4035a885437fa3fcfd5fc024f907/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6e7f4035a885437fa3fcfd5fc024f907 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6e7f4035a885437fa3fcfd5fc024f907/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8b5e994fbb6c4524983959023879081a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8b5e994fbb6c4524983959023879081a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8b5e994fbb6c4524983959023879081a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8b5e994fbb6c4524983959023879081a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3ea11083ab4b4590876f509701b7f3f6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ea11083ab4b4590876f509701b7f3f6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3ea11083ab4b4590876f509701b7f3f6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ea11083ab4b4590876f509701b7f3f6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9ab2b5d1ff374cea970c22f08aedbe0e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ab2b5d1ff374cea970c22f08aedbe0e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9ab2b5d1ff374cea970c22f08aedbe0e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ab2b5d1ff374cea970c22f08aedbe0e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b23b5804a04e41af8a77deffba126720 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b23b5804a04e41af8a77deffba126720/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b23b5804a04e41af8a77deffba126720 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b23b5804a04e41af8a77deffba126720/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f87b8f95bf4142c281874a8b0d06feff span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f87b8f95bf4142c281874a8b0d06feff/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f87b8f95bf4142c281874a8b0d06feff span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f87b8f95bf4142c281874a8b0d06feff/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a660dab08a73453f89eaba5531ed8db2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a660dab08a73453f89eaba5531ed8db2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a660dab08a73453f89eaba5531ed8db2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a660dab08a73453f89eaba5531ed8db2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9dc9b765760948378c7d749f229a0cce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9dc9b765760948378c7d749f229a0cce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9dc9b765760948378c7d749f229a0cce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9dc9b765760948378c7d749f229a0cce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5dd08aa8fc4e43529a6e1e303899a73e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5dd08aa8fc4e43529a6e1e303899a73e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5dd08aa8fc4e43529a6e1e303899a73e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5dd08aa8fc4e43529a6e1e303899a73e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d817b63981fb4d0fbf47b3d93e29acb4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d817b63981fb4d0fbf47b3d93e29acb4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d817b63981fb4d0fbf47b3d93e29acb4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d817b63981fb4d0fbf47b3d93e29acb4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2b3bd2ed622e443c8ff98c5df55b4e31 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2b3bd2ed622e443c8ff98c5df55b4e31/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2b3bd2ed622e443c8ff98c5df55b4e31 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2b3bd2ed622e443c8ff98c5df55b4e31/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ad5e3abb979a411399d82f622e542ea6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ad5e3abb979a411399d82f622e542ea6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ad5e3abb979a411399d82f622e542ea6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ad5e3abb979a411399d82f622e542ea6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cb52f32d32eb49f2861c6d575338a4f0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cb52f32d32eb49f2861c6d575338a4f0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cb52f32d32eb49f2861c6d575338a4f0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cb52f32d32eb49f2861c6d575338a4f0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c9001322cacf481680807243df386e39 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9001322cacf481680807243df386e39/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c9001322cacf481680807243df386e39 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9001322cacf481680807243df386e39/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_594b92fd85b34d2d95fc895c5a9a0bb3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/594b92fd85b34d2d95fc895c5a9a0bb3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_594b92fd85b34d2d95fc895c5a9a0bb3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/594b92fd85b34d2d95fc895c5a9a0bb3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_dfeb195419d142029f217bbd6dbb6cc6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dfeb195419d142029f217bbd6dbb6cc6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_dfeb195419d142029f217bbd6dbb6cc6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dfeb195419d142029f217bbd6dbb6cc6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3a732810e2724bd68d904eb44dc2bb29 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3a732810e2724bd68d904eb44dc2bb29/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3a732810e2724bd68d904eb44dc2bb29 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3a732810e2724bd68d904eb44dc2bb29/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_beef2d6ecacd4201807f8671d356649e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/beef2d6ecacd4201807f8671d356649e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_beef2d6ecacd4201807f8671d356649e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/beef2d6ecacd4201807f8671d356649e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb1c2f628c504c4b94065f3c960b5bae span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb1c2f628c504c4b94065f3c960b5bae/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb1c2f628c504c4b94065f3c960b5bae span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb1c2f628c504c4b94065f3c960b5bae/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0e644c87b7f54177b5c9256fed2925d5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0e644c87b7f54177b5c9256fed2925d5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0e644c87b7f54177b5c9256fed2925d5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0e644c87b7f54177b5c9256fed2925d5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c94e49b572144fa79fbb82d918a2c831 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c94e49b572144fa79fbb82d918a2c831/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c94e49b572144fa79fbb82d918a2c831 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c94e49b572144fa79fbb82d918a2c831/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9ebcc3c17e43443989bfdc00ea0c89e7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ebcc3c17e43443989bfdc00ea0c89e7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9ebcc3c17e43443989bfdc00ea0c89e7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ebcc3c17e43443989bfdc00ea0c89e7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_05990448feea47169c832857356868b7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05990448feea47169c832857356868b7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_05990448feea47169c832857356868b7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05990448feea47169c832857356868b7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_70f9799e55d840b58a99dc831ffdc859 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/70f9799e55d840b58a99dc831ffdc859/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_70f9799e55d840b58a99dc831ffdc859 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/70f9799e55d840b58a99dc831ffdc859/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a6f985f1052b486fbd34983a86f2de10 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6f985f1052b486fbd34983a86f2de10/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a6f985f1052b486fbd34983a86f2de10 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6f985f1052b486fbd34983a86f2de10/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4c959df8b4404d759ba3ea250d551b55 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c959df8b4404d759ba3ea250d551b55/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4c959df8b4404d759ba3ea250d551b55 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c959df8b4404d759ba3ea250d551b55/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_64417822e3d64dfb83d68f80766cbad4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64417822e3d64dfb83d68f80766cbad4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_64417822e3d64dfb83d68f80766cbad4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64417822e3d64dfb83d68f80766cbad4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f19cdd4dd3924506841263d11191f8df span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f19cdd4dd3924506841263d11191f8df/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f19cdd4dd3924506841263d11191f8df span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f19cdd4dd3924506841263d11191f8df/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a32cb52b18a84bf69e2d3cca0c312384 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a32cb52b18a84bf69e2d3cca0c312384/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a32cb52b18a84bf69e2d3cca0c312384 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a32cb52b18a84bf69e2d3cca0c312384/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ef67bb6d812747928f86a198bac84d33 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef67bb6d812747928f86a198bac84d33/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ef67bb6d812747928f86a198bac84d33 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef67bb6d812747928f86a198bac84d33/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_05c5681f761d4ecfbd3f31e903463a56 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05c5681f761d4ecfbd3f31e903463a56/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_05c5681f761d4ecfbd3f31e903463a56 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05c5681f761d4ecfbd3f31e903463a56/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_81c62925e8f943a386c6bb959b133281 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81c62925e8f943a386c6bb959b133281/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_81c62925e8f943a386c6bb959b133281 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81c62925e8f943a386c6bb959b133281/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_958d5310-cd1b-41bb-a23e-888fab5491ba{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_958d5310-cd1b-41bb-a23e-888fab5491ba/views/thumbnail'); } .swx span.moji.id_e70058351dfa4c59b66e46e34b1c4cc7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e70058351dfa4c59b66e46e34b1c4cc7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e70058351dfa4c59b66e46e34b1c4cc7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e70058351dfa4c59b66e46e34b1c4cc7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_09b6ddfd09214089b0c0196b8675efce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/09b6ddfd09214089b0c0196b8675efce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_09b6ddfd09214089b0c0196b8675efce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/09b6ddfd09214089b0c0196b8675efce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_14b0b0e3dd8340bc86ee51b67bf07649 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/14b0b0e3dd8340bc86ee51b67bf07649/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_14b0b0e3dd8340bc86ee51b67bf07649 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/14b0b0e3dd8340bc86ee51b67bf07649/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1cb97ee73b8a465cbe93090a427c522d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1cb97ee73b8a465cbe93090a427c522d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1cb97ee73b8a465cbe93090a427c522d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1cb97ee73b8a465cbe93090a427c522d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fbefd5e5569b4b21a268138073efa3f7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fbefd5e5569b4b21a268138073efa3f7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fbefd5e5569b4b21a268138073efa3f7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fbefd5e5569b4b21a268138073efa3f7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_949d0c90966d4ab1bb934833fda2a8c1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/949d0c90966d4ab1bb934833fda2a8c1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_949d0c90966d4ab1bb934833fda2a8c1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/949d0c90966d4ab1bb934833fda2a8c1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_dcb8b97d4fcb4ad48828477e56791670 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dcb8b97d4fcb4ad48828477e56791670/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_dcb8b97d4fcb4ad48828477e56791670 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dcb8b97d4fcb4ad48828477e56791670/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_51a1005cca6e46b09e59bbb8ac760350 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/51a1005cca6e46b09e59bbb8ac760350/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_51a1005cca6e46b09e59bbb8ac760350 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/51a1005cca6e46b09e59bbb8ac760350/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fe866a5f7d3649b08a3af18636d999ce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fe866a5f7d3649b08a3af18636d999ce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fe866a5f7d3649b08a3af18636d999ce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fe866a5f7d3649b08a3af18636d999ce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e239655d37964392aac78778215fbc8b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e239655d37964392aac78778215fbc8b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e239655d37964392aac78778215fbc8b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e239655d37964392aac78778215fbc8b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_efd7748c7df44228b4247ecb993f6a63 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/efd7748c7df44228b4247ecb993f6a63/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_efd7748c7df44228b4247ecb993f6a63 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/efd7748c7df44228b4247ecb993f6a63/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9ae183167d594bcba640cf5d9f167a6d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ae183167d594bcba640cf5d9f167a6d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9ae183167d594bcba640cf5d9f167a6d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ae183167d594bcba640cf5d9f167a6d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8a6827ff43e4489188e8cdc28e09f635 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8a6827ff43e4489188e8cdc28e09f635/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8a6827ff43e4489188e8cdc28e09f635 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8a6827ff43e4489188e8cdc28e09f635/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9f5c23a7922a4e54887eb4489344c164 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9f5c23a7922a4e54887eb4489344c164/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9f5c23a7922a4e54887eb4489344c164 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9f5c23a7922a4e54887eb4489344c164/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cedcd9e099014abe91162991edc1d563 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cedcd9e099014abe91162991edc1d563/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cedcd9e099014abe91162991edc1d563 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cedcd9e099014abe91162991edc1d563/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5b01a75a60864c339416187eb51d2d12 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5b01a75a60864c339416187eb51d2d12/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5b01a75a60864c339416187eb51d2d12 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5b01a75a60864c339416187eb51d2d12/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_17c776c766fc449aa9c7e7e6f5d1ed53 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/17c776c766fc449aa9c7e7e6f5d1ed53/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_17c776c766fc449aa9c7e7e6f5d1ed53 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/17c776c766fc449aa9c7e7e6f5d1ed53/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2822aeddd78447d0be51841e8e850cf2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2822aeddd78447d0be51841e8e850cf2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2822aeddd78447d0be51841e8e850cf2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2822aeddd78447d0be51841e8e850cf2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0b915a9734d14dc0a674e1e0f053f6aa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0b915a9734d14dc0a674e1e0f053f6aa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0b915a9734d14dc0a674e1e0f053f6aa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0b915a9734d14dc0a674e1e0f053f6aa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e5443de4193848a09a4014404ca63de6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5443de4193848a09a4014404ca63de6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e5443de4193848a09a4014404ca63de6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5443de4193848a09a4014404ca63de6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0ca8ffd2e17b408fa66f5bf4d94b199e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ca8ffd2e17b408fa66f5bf4d94b199e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0ca8ffd2e17b408fa66f5bf4d94b199e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ca8ffd2e17b408fa66f5bf4d94b199e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8bd884e2726f4121812bdc7c94bbe870 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8bd884e2726f4121812bdc7c94bbe870/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8bd884e2726f4121812bdc7c94bbe870 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8bd884e2726f4121812bdc7c94bbe870/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7ab4107dac6c4f399867b78bb1387740 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7ab4107dac6c4f399867b78bb1387740/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7ab4107dac6c4f399867b78bb1387740 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7ab4107dac6c4f399867b78bb1387740/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_68713b838afb44f497982b9f7a43aad7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/68713b838afb44f497982b9f7a43aad7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_68713b838afb44f497982b9f7a43aad7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/68713b838afb44f497982b9f7a43aad7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9fcd7c6dc5a44aaea0533151f5dbea3a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9fcd7c6dc5a44aaea0533151f5dbea3a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9fcd7c6dc5a44aaea0533151f5dbea3a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9fcd7c6dc5a44aaea0533151f5dbea3a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_848c7fe5ce5c4affbc58343e0b607065 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/848c7fe5ce5c4affbc58343e0b607065/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_848c7fe5ce5c4affbc58343e0b607065 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/848c7fe5ce5c4affbc58343e0b607065/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f49a981d136745eebd793760930b2026 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f49a981d136745eebd793760930b2026/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f49a981d136745eebd793760930b2026 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f49a981d136745eebd793760930b2026/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_21024d3e6e50455e8ebe5fe842c2a12c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21024d3e6e50455e8ebe5fe842c2a12c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_21024d3e6e50455e8ebe5fe842c2a12c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21024d3e6e50455e8ebe5fe842c2a12c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2fc1fdcbcd30482185157dceaced8014 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2fc1fdcbcd30482185157dceaced8014/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2fc1fdcbcd30482185157dceaced8014 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2fc1fdcbcd30482185157dceaced8014/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_549d9551d9e64ab19e480de462797946 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/549d9551d9e64ab19e480de462797946/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_549d9551d9e64ab19e480de462797946 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/549d9551d9e64ab19e480de462797946/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69d5a839b5a945bba62aeac9382aad91 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69d5a839b5a945bba62aeac9382aad91/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69d5a839b5a945bba62aeac9382aad91 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69d5a839b5a945bba62aeac9382aad91/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9445d780f15f4c838c9385031626e652 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9445d780f15f4c838c9385031626e652/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9445d780f15f4c838c9385031626e652 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9445d780f15f4c838c9385031626e652/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6cc1dc76cb944247b5e358e91645b754 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6cc1dc76cb944247b5e358e91645b754/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6cc1dc76cb944247b5e358e91645b754 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6cc1dc76cb944247b5e358e91645b754/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c145bbcd0d344ee6b61ce9a166dd2459 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c145bbcd0d344ee6b61ce9a166dd2459/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c145bbcd0d344ee6b61ce9a166dd2459 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c145bbcd0d344ee6b61ce9a166dd2459/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5eaab9720bfb4698b976dec5e77f25a6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5eaab9720bfb4698b976dec5e77f25a6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5eaab9720bfb4698b976dec5e77f25a6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5eaab9720bfb4698b976dec5e77f25a6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_88635eebac244c59a4a629b46c5b4fae span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/88635eebac244c59a4a629b46c5b4fae/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_88635eebac244c59a4a629b46c5b4fae span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/88635eebac244c59a4a629b46c5b4fae/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_040add8720a84dccb298bb4fbcde0f20 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/040add8720a84dccb298bb4fbcde0f20/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_040add8720a84dccb298bb4fbcde0f20 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/040add8720a84dccb298bb4fbcde0f20/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9f2a04d6acb04848a1fecca6d5cfc792 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9f2a04d6acb04848a1fecca6d5cfc792/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9f2a04d6acb04848a1fecca6d5cfc792 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9f2a04d6acb04848a1fecca6d5cfc792/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_be1d0aa377614975b16509068dd37804 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/be1d0aa377614975b16509068dd37804/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_be1d0aa377614975b16509068dd37804 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/be1d0aa377614975b16509068dd37804/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3a6f31f2e9264c089142ce6f94989ea6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3a6f31f2e9264c089142ce6f94989ea6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3a6f31f2e9264c089142ce6f94989ea6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3a6f31f2e9264c089142ce6f94989ea6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5f8a8496c2c44e69802c45235184d679 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5f8a8496c2c44e69802c45235184d679/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5f8a8496c2c44e69802c45235184d679 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5f8a8496c2c44e69802c45235184d679/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d8f9062690b74b118c3f313d93c9a4a5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d8f9062690b74b118c3f313d93c9a4a5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d8f9062690b74b118c3f313d93c9a4a5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d8f9062690b74b118c3f313d93c9a4a5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_11070ed6f6df4d1fb22ebe1e425685aa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11070ed6f6df4d1fb22ebe1e425685aa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_11070ed6f6df4d1fb22ebe1e425685aa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11070ed6f6df4d1fb22ebe1e425685aa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a70dd6ee1f41414bab2f8add4a5418ff span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a70dd6ee1f41414bab2f8add4a5418ff/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a70dd6ee1f41414bab2f8add4a5418ff span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a70dd6ee1f41414bab2f8add4a5418ff/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7473cd905bf94b15a8db01e50a240138 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7473cd905bf94b15a8db01e50a240138/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7473cd905bf94b15a8db01e50a240138 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7473cd905bf94b15a8db01e50a240138/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69a0a917cf0f47feb8714d85093484d6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69a0a917cf0f47feb8714d85093484d6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69a0a917cf0f47feb8714d85093484d6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69a0a917cf0f47feb8714d85093484d6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6afc571194704870a44cd8ff58545d2e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6afc571194704870a44cd8ff58545d2e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6afc571194704870a44cd8ff58545d2e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6afc571194704870a44cd8ff58545d2e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_187e1d82ff13425693589e6a50783e5c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/187e1d82ff13425693589e6a50783e5c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_187e1d82ff13425693589e6a50783e5c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/187e1d82ff13425693589e6a50783e5c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_63f7e941be294b7993a3bcf46cdf89cb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/63f7e941be294b7993a3bcf46cdf89cb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_63f7e941be294b7993a3bcf46cdf89cb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/63f7e941be294b7993a3bcf46cdf89cb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ecfcc40d42c948279d1cd037fb6d9fe4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ecfcc40d42c948279d1cd037fb6d9fe4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ecfcc40d42c948279d1cd037fb6d9fe4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ecfcc40d42c948279d1cd037fb6d9fe4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2425c945fdbf4a6ab386304ee74683f0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2425c945fdbf4a6ab386304ee74683f0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2425c945fdbf4a6ab386304ee74683f0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2425c945fdbf4a6ab386304ee74683f0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_725f0b5d99ec40af888527ac42ceb99f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/725f0b5d99ec40af888527ac42ceb99f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_725f0b5d99ec40af888527ac42ceb99f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/725f0b5d99ec40af888527ac42ceb99f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_923e0ceafdcd4d278ad501719b2f5a6b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/923e0ceafdcd4d278ad501719b2f5a6b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_923e0ceafdcd4d278ad501719b2f5a6b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/923e0ceafdcd4d278ad501719b2f5a6b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e417fc5820294105963ea6c71cc94cbb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e417fc5820294105963ea6c71cc94cbb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e417fc5820294105963ea6c71cc94cbb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e417fc5820294105963ea6c71cc94cbb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_98732a8744774c86a324d21d86d2051c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/98732a8744774c86a324d21d86d2051c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_98732a8744774c86a324d21d86d2051c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/98732a8744774c86a324d21d86d2051c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_73c8114935344fa0879e01e0a9821f64 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/73c8114935344fa0879e01e0a9821f64/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_73c8114935344fa0879e01e0a9821f64 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/73c8114935344fa0879e01e0a9821f64/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_30c197b4173c4fc09fffbec84a6b366f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/30c197b4173c4fc09fffbec84a6b366f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_30c197b4173c4fc09fffbec84a6b366f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/30c197b4173c4fc09fffbec84a6b366f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_175fd19cacb74bbba1a53c6be6f06b35 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/175fd19cacb74bbba1a53c6be6f06b35/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_175fd19cacb74bbba1a53c6be6f06b35 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/175fd19cacb74bbba1a53c6be6f06b35/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_64e5bded0052435d92b87bdd070939cb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64e5bded0052435d92b87bdd070939cb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_64e5bded0052435d92b87bdd070939cb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64e5bded0052435d92b87bdd070939cb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e12a86f86adf47769f8e8eb08d680531 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e12a86f86adf47769f8e8eb08d680531/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e12a86f86adf47769f8e8eb08d680531 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e12a86f86adf47769f8e8eb08d680531/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0f29275aab324fe2b8128b0cd1bef28c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0f29275aab324fe2b8128b0cd1bef28c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0f29275aab324fe2b8128b0cd1bef28c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0f29275aab324fe2b8128b0cd1bef28c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_198427d4b6fb41998a36d8553714ac97 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/198427d4b6fb41998a36d8553714ac97/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_198427d4b6fb41998a36d8553714ac97 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/198427d4b6fb41998a36d8553714ac97/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3e28ea82de214ab5ab64f109f9a2a91e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3e28ea82de214ab5ab64f109f9a2a91e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3e28ea82de214ab5ab64f109f9a2a91e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3e28ea82de214ab5ab64f109f9a2a91e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1dba82a7e1f842e994138582eaeff9e2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1dba82a7e1f842e994138582eaeff9e2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1dba82a7e1f842e994138582eaeff9e2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1dba82a7e1f842e994138582eaeff9e2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_796baec988c943569cff3b0e91c7bcf9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/796baec988c943569cff3b0e91c7bcf9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_796baec988c943569cff3b0e91c7bcf9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/796baec988c943569cff3b0e91c7bcf9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cf27ae06fe0f430689df6fccd68b6fad span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cf27ae06fe0f430689df6fccd68b6fad/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cf27ae06fe0f430689df6fccd68b6fad span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cf27ae06fe0f430689df6fccd68b6fad/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4060021b522145a281f5ad7c194e8359 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4060021b522145a281f5ad7c194e8359/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4060021b522145a281f5ad7c194e8359 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4060021b522145a281f5ad7c194e8359/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9b34855ca4264825bacb3374e5cc5ef0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9b34855ca4264825bacb3374e5cc5ef0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9b34855ca4264825bacb3374e5cc5ef0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9b34855ca4264825bacb3374e5cc5ef0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5981f482c86949f286eaaf9c787525fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5981f482c86949f286eaaf9c787525fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5981f482c86949f286eaaf9c787525fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5981f482c86949f286eaaf9c787525fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3b3584c6b7324fd580dc3e38e485d8ce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3b3584c6b7324fd580dc3e38e485d8ce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3b3584c6b7324fd580dc3e38e485d8ce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3b3584c6b7324fd580dc3e38e485d8ce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69e5864bdccc4b4e9be230a9d7a84b01 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69e5864bdccc4b4e9be230a9d7a84b01/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69e5864bdccc4b4e9be230a9d7a84b01 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69e5864bdccc4b4e9be230a9d7a84b01/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb93beb00bae4940a52133b934a66164 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb93beb00bae4940a52133b934a66164/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb93beb00bae4940a52133b934a66164 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb93beb00bae4940a52133b934a66164/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e5a88c46af5f4b4a81f9f53eabdb18e3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5a88c46af5f4b4a81f9f53eabdb18e3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e5a88c46af5f4b4a81f9f53eabdb18e3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e5a88c46af5f4b4a81f9f53eabdb18e3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_006732094eb5439c957f6e1b60b6e80d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/006732094eb5439c957f6e1b60b6e80d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_006732094eb5439c957f6e1b60b6e80d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/006732094eb5439c957f6e1b60b6e80d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8ba76350eaff44339fe69ce03d139337 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8ba76350eaff44339fe69ce03d139337/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8ba76350eaff44339fe69ce03d139337 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8ba76350eaff44339fe69ce03d139337/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_17f3d267617b46c7ae735a2b31a332f2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/17f3d267617b46c7ae735a2b31a332f2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_17f3d267617b46c7ae735a2b31a332f2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/17f3d267617b46c7ae735a2b31a332f2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4c7cfb904c7c4902975156bfaf6dee55 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c7cfb904c7c4902975156bfaf6dee55/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4c7cfb904c7c4902975156bfaf6dee55 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c7cfb904c7c4902975156bfaf6dee55/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7c06975dd0cb46ec9e1040ac3fd3921d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7c06975dd0cb46ec9e1040ac3fd3921d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7c06975dd0cb46ec9e1040ac3fd3921d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7c06975dd0cb46ec9e1040ac3fd3921d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_3f0899b2-8969-4887-8a71-d1b1ca3e1345{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_3f0899b2-8969-4887-8a71-d1b1ca3e1345/views/thumbnail'); } .swx span.moji.id_71473939cf2a4a249bfffb0c61d5b52e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/71473939cf2a4a249bfffb0c61d5b52e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_71473939cf2a4a249bfffb0c61d5b52e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/71473939cf2a4a249bfffb0c61d5b52e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_428cb1701e594cfab12b003fb92818ac span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/428cb1701e594cfab12b003fb92818ac/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_428cb1701e594cfab12b003fb92818ac span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/428cb1701e594cfab12b003fb92818ac/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_84a856e7cf024f1e8d288eb35a6e5509 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/84a856e7cf024f1e8d288eb35a6e5509/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_84a856e7cf024f1e8d288eb35a6e5509 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/84a856e7cf024f1e8d288eb35a6e5509/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_85edb35e56cf4ff7acf10803b33b99da span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/85edb35e56cf4ff7acf10803b33b99da/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_85edb35e56cf4ff7acf10803b33b99da span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/85edb35e56cf4ff7acf10803b33b99da/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bba3513bc75549ff9117940f52e547f3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bba3513bc75549ff9117940f52e547f3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bba3513bc75549ff9117940f52e547f3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bba3513bc75549ff9117940f52e547f3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_206b27c757e74fc784d34a276864b48e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/206b27c757e74fc784d34a276864b48e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_206b27c757e74fc784d34a276864b48e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/206b27c757e74fc784d34a276864b48e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e02b3419253e462daafd19d5774b26a7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e02b3419253e462daafd19d5774b26a7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e02b3419253e462daafd19d5774b26a7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e02b3419253e462daafd19d5774b26a7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ab7391c6e7f94b6686c3aee7b3bd59f2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ab7391c6e7f94b6686c3aee7b3bd59f2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ab7391c6e7f94b6686c3aee7b3bd59f2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ab7391c6e7f94b6686c3aee7b3bd59f2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bfbe7722aa8c4c86b0c6f3bff9737670 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bfbe7722aa8c4c86b0c6f3bff9737670/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bfbe7722aa8c4c86b0c6f3bff9737670 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bfbe7722aa8c4c86b0c6f3bff9737670/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c08321b3b07b467f81bd11d912892bfa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c08321b3b07b467f81bd11d912892bfa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c08321b3b07b467f81bd11d912892bfa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c08321b3b07b467f81bd11d912892bfa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2f81038cf33f46b491e7972a01d0f852 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2f81038cf33f46b491e7972a01d0f852/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2f81038cf33f46b491e7972a01d0f852 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2f81038cf33f46b491e7972a01d0f852/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d026be1d8edb48a5aea251d335bfb2cf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d026be1d8edb48a5aea251d335bfb2cf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d026be1d8edb48a5aea251d335bfb2cf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d026be1d8edb48a5aea251d335bfb2cf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cec481bb17544214a4427fac86db4d99 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cec481bb17544214a4427fac86db4d99/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cec481bb17544214a4427fac86db4d99 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cec481bb17544214a4427fac86db4d99/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ddca5fcdb71d4a1ba3076f618638bb2e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ddca5fcdb71d4a1ba3076f618638bb2e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ddca5fcdb71d4a1ba3076f618638bb2e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ddca5fcdb71d4a1ba3076f618638bb2e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_249439bb868e47d7ad274ae821bfee75 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/249439bb868e47d7ad274ae821bfee75/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_249439bb868e47d7ad274ae821bfee75 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/249439bb868e47d7ad274ae821bfee75/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4d68acf9a31f40eb86b415bf9347201e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4d68acf9a31f40eb86b415bf9347201e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4d68acf9a31f40eb86b415bf9347201e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4d68acf9a31f40eb86b415bf9347201e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_29d3dd4cc5704de396cf4ffc984651af span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/29d3dd4cc5704de396cf4ffc984651af/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_29d3dd4cc5704de396cf4ffc984651af span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/29d3dd4cc5704de396cf4ffc984651af/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c4946db4ec39440682ab31e984b8fb81 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c4946db4ec39440682ab31e984b8fb81/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c4946db4ec39440682ab31e984b8fb81 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c4946db4ec39440682ab31e984b8fb81/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b3e318618785404b8177157f089d4c9c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b3e318618785404b8177157f089d4c9c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b3e318618785404b8177157f089d4c9c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b3e318618785404b8177157f089d4c9c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f7cd7a504bad47c894b35a73f25a638d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f7cd7a504bad47c894b35a73f25a638d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f7cd7a504bad47c894b35a73f25a638d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f7cd7a504bad47c894b35a73f25a638d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1fdfc400fc234e9fb09dc3d706b6c3f7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1fdfc400fc234e9fb09dc3d706b6c3f7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1fdfc400fc234e9fb09dc3d706b6c3f7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1fdfc400fc234e9fb09dc3d706b6c3f7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_df0a569902b84e549e3675000441b2ef span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df0a569902b84e549e3675000441b2ef/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_df0a569902b84e549e3675000441b2ef span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df0a569902b84e549e3675000441b2ef/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2a92334f21eb4bc68be6961636102456 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2a92334f21eb4bc68be6961636102456/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2a92334f21eb4bc68be6961636102456 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2a92334f21eb4bc68be6961636102456/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fb6fd15bd3e24d8d9e4feb5c372eb03a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fb6fd15bd3e24d8d9e4feb5c372eb03a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fb6fd15bd3e24d8d9e4feb5c372eb03a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fb6fd15bd3e24d8d9e4feb5c372eb03a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_05990448feea47169c832857356868b7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05990448feea47169c832857356868b7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_05990448feea47169c832857356868b7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05990448feea47169c832857356868b7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_70f9799e55d840b58a99dc831ffdc859 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/70f9799e55d840b58a99dc831ffdc859/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_70f9799e55d840b58a99dc831ffdc859 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/70f9799e55d840b58a99dc831ffdc859/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_64417822e3d64dfb83d68f80766cbad4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64417822e3d64dfb83d68f80766cbad4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_64417822e3d64dfb83d68f80766cbad4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/64417822e3d64dfb83d68f80766cbad4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f19cdd4dd3924506841263d11191f8df span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f19cdd4dd3924506841263d11191f8df/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f19cdd4dd3924506841263d11191f8df span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f19cdd4dd3924506841263d11191f8df/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a32cb52b18a84bf69e2d3cca0c312384 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a32cb52b18a84bf69e2d3cca0c312384/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a32cb52b18a84bf69e2d3cca0c312384 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a32cb52b18a84bf69e2d3cca0c312384/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ef67bb6d812747928f86a198bac84d33 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef67bb6d812747928f86a198bac84d33/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ef67bb6d812747928f86a198bac84d33 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ef67bb6d812747928f86a198bac84d33/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_05c5681f761d4ecfbd3f31e903463a56 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05c5681f761d4ecfbd3f31e903463a56/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_05c5681f761d4ecfbd3f31e903463a56 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/05c5681f761d4ecfbd3f31e903463a56/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_81c62925e8f943a386c6bb959b133281 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81c62925e8f943a386c6bb959b133281/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_81c62925e8f943a386c6bb959b133281 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81c62925e8f943a386c6bb959b133281/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_4c959df8b4404d759ba3ea250d551b55 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c959df8b4404d759ba3ea250d551b55/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_4c959df8b4404d759ba3ea250d551b55 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/4c959df8b4404d759ba3ea250d551b55/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a6f985f1052b486fbd34983a86f2de10 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6f985f1052b486fbd34983a86f2de10/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a6f985f1052b486fbd34983a86f2de10 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6f985f1052b486fbd34983a86f2de10/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d6dca45ec9424423964cc8c28958e0b9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d6dca45ec9424423964cc8c28958e0b9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d6dca45ec9424423964cc8c28958e0b9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d6dca45ec9424423964cc8c28958e0b9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_65118840c45e406f834c93118e1f47ab span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/65118840c45e406f834c93118e1f47ab/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_65118840c45e406f834c93118e1f47ab span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/65118840c45e406f834c93118e1f47ab/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d686d6e036534406a1646710717eecf3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d686d6e036534406a1646710717eecf3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d686d6e036534406a1646710717eecf3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d686d6e036534406a1646710717eecf3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_21cd328a8ba440fd833ef01204a38bca span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21cd328a8ba440fd833ef01204a38bca/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_21cd328a8ba440fd833ef01204a38bca span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21cd328a8ba440fd833ef01204a38bca/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f3e0e5efcb47446693a34db91f029f20 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f3e0e5efcb47446693a34db91f029f20/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f3e0e5efcb47446693a34db91f029f20 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f3e0e5efcb47446693a34db91f029f20/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c5f05c3e1b464e4e93bae0219769bcec span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c5f05c3e1b464e4e93bae0219769bcec/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c5f05c3e1b464e4e93bae0219769bcec span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c5f05c3e1b464e4e93bae0219769bcec/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_712b4523e3e44de7950d939b320516d3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/712b4523e3e44de7950d939b320516d3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_712b4523e3e44de7950d939b320516d3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/712b4523e3e44de7950d939b320516d3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fa8f0046afd44fe0bbc263d702501172 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fa8f0046afd44fe0bbc263d702501172/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fa8f0046afd44fe0bbc263d702501172 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fa8f0046afd44fe0bbc263d702501172/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d5e1e45f386a4c28b1813a3528c0b99c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d5e1e45f386a4c28b1813a3528c0b99c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d5e1e45f386a4c28b1813a3528c0b99c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d5e1e45f386a4c28b1813a3528c0b99c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_014b9e432fd442e98bc0f3a07a68e9ad span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/014b9e432fd442e98bc0f3a07a68e9ad/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_014b9e432fd442e98bc0f3a07a68e9ad span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/014b9e432fd442e98bc0f3a07a68e9ad/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_187c5506169542e1b984da2e505e955b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/187c5506169542e1b984da2e505e955b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_187c5506169542e1b984da2e505e955b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/187c5506169542e1b984da2e505e955b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d59e0c965d03465c99febb40c82213ae span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d59e0c965d03465c99febb40c82213ae/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d59e0c965d03465c99febb40c82213ae span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d59e0c965d03465c99febb40c82213ae/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_9140db0c-bc25-4ff2-a9d7-9e9721215cf0{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_9140db0c-bc25-4ff2-a9d7-9e9721215cf0/views/thumbnail'); } .swx span.moji.id_673c4b8b466c4774b4c84808b2670263 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/673c4b8b466c4774b4c84808b2670263/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_673c4b8b466c4774b4c84808b2670263 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/673c4b8b466c4774b4c84808b2670263/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_179f82faf6924d37bdb6a04a9a186078 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/179f82faf6924d37bdb6a04a9a186078/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_179f82faf6924d37bdb6a04a9a186078 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/179f82faf6924d37bdb6a04a9a186078/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_829ad138bc524595a9b7b6a1b95a4d79 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/829ad138bc524595a9b7b6a1b95a4d79/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_829ad138bc524595a9b7b6a1b95a4d79 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/829ad138bc524595a9b7b6a1b95a4d79/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_075bac49af93448aae6a17693b6c06a3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/075bac49af93448aae6a17693b6c06a3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_075bac49af93448aae6a17693b6c06a3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/075bac49af93448aae6a17693b6c06a3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_74bd2c325ae14ef38119146cf1d5e338 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/74bd2c325ae14ef38119146cf1d5e338/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_74bd2c325ae14ef38119146cf1d5e338 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/74bd2c325ae14ef38119146cf1d5e338/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5bbf7a2c060849fc8588a725aa4c4a2f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5bbf7a2c060849fc8588a725aa4c4a2f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5bbf7a2c060849fc8588a725aa4c4a2f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5bbf7a2c060849fc8588a725aa4c4a2f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6e0bf7ee73d047deb12a13fa51b48a5b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6e0bf7ee73d047deb12a13fa51b48a5b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6e0bf7ee73d047deb12a13fa51b48a5b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6e0bf7ee73d047deb12a13fa51b48a5b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d72b5430ea5f4dcfb9c28fed21043fd4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d72b5430ea5f4dcfb9c28fed21043fd4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d72b5430ea5f4dcfb9c28fed21043fd4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d72b5430ea5f4dcfb9c28fed21043fd4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d50ae14ad8394880beebd304e5228fc8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d50ae14ad8394880beebd304e5228fc8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d50ae14ad8394880beebd304e5228fc8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d50ae14ad8394880beebd304e5228fc8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e679b2e74ac14b089a97e70ba58e12cb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e679b2e74ac14b089a97e70ba58e12cb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e679b2e74ac14b089a97e70ba58e12cb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e679b2e74ac14b089a97e70ba58e12cb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6d80b24e9d8b442b81d16349a070d4ff span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6d80b24e9d8b442b81d16349a070d4ff/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6d80b24e9d8b442b81d16349a070d4ff span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6d80b24e9d8b442b81d16349a070d4ff/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c940426316eb42ec8278831cc18486fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c940426316eb42ec8278831cc18486fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c940426316eb42ec8278831cc18486fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c940426316eb42ec8278831cc18486fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_93bc04ed1df04ace986840df7dc97cb1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93bc04ed1df04ace986840df7dc97cb1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_93bc04ed1df04ace986840df7dc97cb1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93bc04ed1df04ace986840df7dc97cb1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6a6ea5af9d2046168749d1d689d3bfd3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6a6ea5af9d2046168749d1d689d3bfd3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6a6ea5af9d2046168749d1d689d3bfd3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6a6ea5af9d2046168749d1d689d3bfd3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5d7807e764e14f6ea102ddfdd30acf34 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d7807e764e14f6ea102ddfdd30acf34/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5d7807e764e14f6ea102ddfdd30acf34 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d7807e764e14f6ea102ddfdd30acf34/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_83bf44f0d867434fb296d77bf9488828 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/83bf44f0d867434fb296d77bf9488828/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_83bf44f0d867434fb296d77bf9488828 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/83bf44f0d867434fb296d77bf9488828/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f305b50326b34f07a0c2dd0c27325cea span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f305b50326b34f07a0c2dd0c27325cea/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f305b50326b34f07a0c2dd0c27325cea span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f305b50326b34f07a0c2dd0c27325cea/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_81918ab3b0f441f5a5c2c497958408cb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81918ab3b0f441f5a5c2c497958408cb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_81918ab3b0f441f5a5c2c497958408cb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/81918ab3b0f441f5a5c2c497958408cb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5d3fd81f22b341299881072c627533d5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d3fd81f22b341299881072c627533d5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5d3fd81f22b341299881072c627533d5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5d3fd81f22b341299881072c627533d5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_650dddb218fa49e58b37365b70f2f2fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/650dddb218fa49e58b37365b70f2f2fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_650dddb218fa49e58b37365b70f2f2fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/650dddb218fa49e58b37365b70f2f2fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b1040c09b5064088916c769fdec01ae7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b1040c09b5064088916c769fdec01ae7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b1040c09b5064088916c769fdec01ae7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b1040c09b5064088916c769fdec01ae7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_19a9ea11ee2045988b3302668054bf05 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/19a9ea11ee2045988b3302668054bf05/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_19a9ea11ee2045988b3302668054bf05 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/19a9ea11ee2045988b3302668054bf05/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb11876c0c0047a69b9200b6e0efd78a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb11876c0c0047a69b9200b6e0efd78a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb11876c0c0047a69b9200b6e0efd78a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb11876c0c0047a69b9200b6e0efd78a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9cfe64021d374cf5b96421b69643c080 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9cfe64021d374cf5b96421b69643c080/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9cfe64021d374cf5b96421b69643c080 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9cfe64021d374cf5b96421b69643c080/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69dbdd78ac32446b956da89856469e65 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69dbdd78ac32446b956da89856469e65/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69dbdd78ac32446b956da89856469e65 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69dbdd78ac32446b956da89856469e65/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c78954a018954f7ea698df876c6a8b3f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c78954a018954f7ea698df876c6a8b3f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c78954a018954f7ea698df876c6a8b3f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c78954a018954f7ea698df876c6a8b3f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f06cb8bc97b54669a43bbd2149cd61bd span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f06cb8bc97b54669a43bbd2149cd61bd/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f06cb8bc97b54669a43bbd2149cd61bd span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f06cb8bc97b54669a43bbd2149cd61bd/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2cf4c86d50ab4945b6f761b3da41e36c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2cf4c86d50ab4945b6f761b3da41e36c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2cf4c86d50ab4945b6f761b3da41e36c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2cf4c86d50ab4945b6f761b3da41e36c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3f8400211a9945ed89b8d6bb14cb0994 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3f8400211a9945ed89b8d6bb14cb0994/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3f8400211a9945ed89b8d6bb14cb0994 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3f8400211a9945ed89b8d6bb14cb0994/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0f22c385ca22484d9bfbb3cbab48beea span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0f22c385ca22484d9bfbb3cbab48beea/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0f22c385ca22484d9bfbb3cbab48beea span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0f22c385ca22484d9bfbb3cbab48beea/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6b781277ee4b466db2fc8d2465e11e73 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6b781277ee4b466db2fc8d2465e11e73/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6b781277ee4b466db2fc8d2465e11e73 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6b781277ee4b466db2fc8d2465e11e73/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0228740c3c714b48a739e7f23085c6cd span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0228740c3c714b48a739e7f23085c6cd/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0228740c3c714b48a739e7f23085c6cd span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0228740c3c714b48a739e7f23085c6cd/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a03e417766214c759167f2248d4a61d6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a03e417766214c759167f2248d4a61d6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a03e417766214c759167f2248d4a61d6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a03e417766214c759167f2248d4a61d6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f54ad605536242908a5a0d41c9c1b067 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f54ad605536242908a5a0d41c9c1b067/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f54ad605536242908a5a0d41c9c1b067 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f54ad605536242908a5a0d41c9c1b067/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_aff5b84ab7274da687f581c3f1e0df62 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/aff5b84ab7274da687f581c3f1e0df62/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_aff5b84ab7274da687f581c3f1e0df62 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/aff5b84ab7274da687f581c3f1e0df62/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b9191f54eda54cf1bc866906f44f88bc span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b9191f54eda54cf1bc866906f44f88bc/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b9191f54eda54cf1bc866906f44f88bc span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b9191f54eda54cf1bc866906f44f88bc/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7ee81d5c2d674bb5a15dc472cea34855 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7ee81d5c2d674bb5a15dc472cea34855/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7ee81d5c2d674bb5a15dc472cea34855 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7ee81d5c2d674bb5a15dc472cea34855/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3208293a51b649d496870f8aa12a134b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3208293a51b649d496870f8aa12a134b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3208293a51b649d496870f8aa12a134b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3208293a51b649d496870f8aa12a134b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_aeac21728808419db8762f0668726a46 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/aeac21728808419db8762f0668726a46/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_aeac21728808419db8762f0668726a46 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/aeac21728808419db8762f0668726a46/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cdd18ea4871e43d496e160ad4965f27e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cdd18ea4871e43d496e160ad4965f27e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cdd18ea4871e43d496e160ad4965f27e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cdd18ea4871e43d496e160ad4965f27e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_44328e9107284bd48dde0eb680c0cae9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/44328e9107284bd48dde0eb680c0cae9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_44328e9107284bd48dde0eb680c0cae9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/44328e9107284bd48dde0eb680c0cae9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d21ac7501aa749d5b8e7a8aec0ed90f0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d21ac7501aa749d5b8e7a8aec0ed90f0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d21ac7501aa749d5b8e7a8aec0ed90f0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d21ac7501aa749d5b8e7a8aec0ed90f0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e986a374294e4fb0b99b789eaebad67a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e986a374294e4fb0b99b789eaebad67a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e986a374294e4fb0b99b789eaebad67a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e986a374294e4fb0b99b789eaebad67a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fc4e775f2e0d4f0395f09b58827d2605 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fc4e775f2e0d4f0395f09b58827d2605/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fc4e775f2e0d4f0395f09b58827d2605 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fc4e775f2e0d4f0395f09b58827d2605/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ffe8af5342c54a9491bb5c7fe5f787bf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ffe8af5342c54a9491bb5c7fe5f787bf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ffe8af5342c54a9491bb5c7fe5f787bf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ffe8af5342c54a9491bb5c7fe5f787bf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c2aadc9747af4d47ae8e885a9e6f287a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c2aadc9747af4d47ae8e885a9e6f287a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c2aadc9747af4d47ae8e885a9e6f287a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c2aadc9747af4d47ae8e885a9e6f287a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_58505e34009947878396f1423ba55a4b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/58505e34009947878396f1423ba55a4b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_58505e34009947878396f1423ba55a4b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/58505e34009947878396f1423ba55a4b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_34bacd320f1c4a9c88bee38a62898b20 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/34bacd320f1c4a9c88bee38a62898b20/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_34bacd320f1c4a9c88bee38a62898b20 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/34bacd320f1c4a9c88bee38a62898b20/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cc7d0be304be4cf584078df6b70f3e36 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cc7d0be304be4cf584078df6b70f3e36/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cc7d0be304be4cf584078df6b70f3e36 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cc7d0be304be4cf584078df6b70f3e36/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5077996932954f3db31d339c1babbc68 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5077996932954f3db31d339c1babbc68/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5077996932954f3db31d339c1babbc68 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5077996932954f3db31d339c1babbc68/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_762c55d69b184dda8743b07a02fac9f9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/762c55d69b184dda8743b07a02fac9f9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_762c55d69b184dda8743b07a02fac9f9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/762c55d69b184dda8743b07a02fac9f9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b6b857539d1646288934df53a153c141 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b6b857539d1646288934df53a153c141/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b6b857539d1646288934df53a153c141 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b6b857539d1646288934df53a153c141/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_689d5408da2d4da6b77a6af46e1afd88 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/689d5408da2d4da6b77a6af46e1afd88/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_689d5408da2d4da6b77a6af46e1afd88 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/689d5408da2d4da6b77a6af46e1afd88/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2100e28ed09e4775a8f526407c688d1a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2100e28ed09e4775a8f526407c688d1a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2100e28ed09e4775a8f526407c688d1a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2100e28ed09e4775a8f526407c688d1a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_76441168f9104465ae8f7c82a5caee39 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/76441168f9104465ae8f7c82a5caee39/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_76441168f9104465ae8f7c82a5caee39 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/76441168f9104465ae8f7c82a5caee39/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_00317bf44db34abfa94f94ecc7188fa1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/00317bf44db34abfa94f94ecc7188fa1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_00317bf44db34abfa94f94ecc7188fa1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/00317bf44db34abfa94f94ecc7188fa1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_60221d3288e84567a2616c9bb0d3d0e2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/60221d3288e84567a2616c9bb0d3d0e2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_60221d3288e84567a2616c9bb0d3d0e2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/60221d3288e84567a2616c9bb0d3d0e2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a84a3172a87443f7a33a6586a58c1dc5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a84a3172a87443f7a33a6586a58c1dc5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a84a3172a87443f7a33a6586a58c1dc5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a84a3172a87443f7a33a6586a58c1dc5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3468419d02f14bbdb16dc55670357608 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3468419d02f14bbdb16dc55670357608/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3468419d02f14bbdb16dc55670357608 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3468419d02f14bbdb16dc55670357608/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d2f6fe7561ad4af9ae89e6644509614d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d2f6fe7561ad4af9ae89e6644509614d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d2f6fe7561ad4af9ae89e6644509614d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d2f6fe7561ad4af9ae89e6644509614d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_21d60ed7dc4647838a301aa21c328e3c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21d60ed7dc4647838a301aa21c328e3c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_21d60ed7dc4647838a301aa21c328e3c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/21d60ed7dc4647838a301aa21c328e3c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0d3f576c6f244ab79ef7b6ad65e7fd64 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0d3f576c6f244ab79ef7b6ad65e7fd64/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0d3f576c6f244ab79ef7b6ad65e7fd64 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0d3f576c6f244ab79ef7b6ad65e7fd64/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_24abb925bd7344ff8e0078f4cdef7c16 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/24abb925bd7344ff8e0078f4cdef7c16/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_24abb925bd7344ff8e0078f4cdef7c16 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/24abb925bd7344ff8e0078f4cdef7c16/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_55ae8db8fc214ece88be5cad13934456 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/55ae8db8fc214ece88be5cad13934456/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_55ae8db8fc214ece88be5cad13934456 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/55ae8db8fc214ece88be5cad13934456/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c8d5659530cb4e029a52ed39c451c81d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c8d5659530cb4e029a52ed39c451c81d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c8d5659530cb4e029a52ed39c451c81d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c8d5659530cb4e029a52ed39c451c81d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bd75ea973fb041f2aa8842b7b883380d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd75ea973fb041f2aa8842b7b883380d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bd75ea973fb041f2aa8842b7b883380d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd75ea973fb041f2aa8842b7b883380d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cec8eeff6e1342e19ebad603d3dd6222 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cec8eeff6e1342e19ebad603d3dd6222/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cec8eeff6e1342e19ebad603d3dd6222 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cec8eeff6e1342e19ebad603d3dd6222/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2e4502d4475d402695c253acf62deff5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2e4502d4475d402695c253acf62deff5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2e4502d4475d402695c253acf62deff5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2e4502d4475d402695c253acf62deff5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_47c9ad2d-6808-452e-9c8a-8edf6cd6d206{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_47c9ad2d-6808-452e-9c8a-8edf6cd6d206/views/thumbnail'); } .swx span.moji.id_d56cc53636294519a89d199cabb901df span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d56cc53636294519a89d199cabb901df/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d56cc53636294519a89d199cabb901df span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d56cc53636294519a89d199cabb901df/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f13557045fc9495bb4622e341a6d8e50 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f13557045fc9495bb4622e341a6d8e50/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f13557045fc9495bb4622e341a6d8e50 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f13557045fc9495bb4622e341a6d8e50/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d318c3ae43ac41c28e494c936b26237f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d318c3ae43ac41c28e494c936b26237f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d318c3ae43ac41c28e494c936b26237f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d318c3ae43ac41c28e494c936b26237f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_dc13520d028a4482bdb6d1d8f345346d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dc13520d028a4482bdb6d1d8f345346d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_dc13520d028a4482bdb6d1d8f345346d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/dc13520d028a4482bdb6d1d8f345346d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d45faa770d5c48a78c3b96609aeab752 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d45faa770d5c48a78c3b96609aeab752/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d45faa770d5c48a78c3b96609aeab752 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d45faa770d5c48a78c3b96609aeab752/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_01b90af5efaa4a329ba5fb9fc11a8214 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/01b90af5efaa4a329ba5fb9fc11a8214/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_01b90af5efaa4a329ba5fb9fc11a8214 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/01b90af5efaa4a329ba5fb9fc11a8214/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_afccd49ff27d440e9eb04a7fa0486af0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/afccd49ff27d440e9eb04a7fa0486af0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_afccd49ff27d440e9eb04a7fa0486af0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/afccd49ff27d440e9eb04a7fa0486af0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a40f1059859645098c3b2bf5b60ea6d2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a40f1059859645098c3b2bf5b60ea6d2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a40f1059859645098c3b2bf5b60ea6d2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a40f1059859645098c3b2bf5b60ea6d2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9db38710de1e4baf81d4716c4adf91ae span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9db38710de1e4baf81d4716c4adf91ae/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9db38710de1e4baf81d4716c4adf91ae span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9db38710de1e4baf81d4716c4adf91ae/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c9d5c75397dc4b4e8208d9453e2a3a73 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9d5c75397dc4b4e8208d9453e2a3a73/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c9d5c75397dc4b4e8208d9453e2a3a73 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9d5c75397dc4b4e8208d9453e2a3a73/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fe932a77c25244ccbe18e50782e7a664 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fe932a77c25244ccbe18e50782e7a664/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fe932a77c25244ccbe18e50782e7a664 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fe932a77c25244ccbe18e50782e7a664/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c0c5a61511fd48abb28c0c3f06ba8804 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c0c5a61511fd48abb28c0c3f06ba8804/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c0c5a61511fd48abb28c0c3f06ba8804 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c0c5a61511fd48abb28c0c3f06ba8804/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8027dfb48ed34e2bba262bb3201764c1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8027dfb48ed34e2bba262bb3201764c1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8027dfb48ed34e2bba262bb3201764c1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8027dfb48ed34e2bba262bb3201764c1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3cb8024cb3544ccbb3e15047b15cee5c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3cb8024cb3544ccbb3e15047b15cee5c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3cb8024cb3544ccbb3e15047b15cee5c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3cb8024cb3544ccbb3e15047b15cee5c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b58c1b2e1b8b4783872e827002a6d750 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b58c1b2e1b8b4783872e827002a6d750/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b58c1b2e1b8b4783872e827002a6d750 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b58c1b2e1b8b4783872e827002a6d750/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_314d4a0ddc3a4d4db2fbae0d8600835b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/314d4a0ddc3a4d4db2fbae0d8600835b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_314d4a0ddc3a4d4db2fbae0d8600835b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/314d4a0ddc3a4d4db2fbae0d8600835b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7996182e84444a4dba0d0f0a0d539605 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7996182e84444a4dba0d0f0a0d539605/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7996182e84444a4dba0d0f0a0d539605 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7996182e84444a4dba0d0f0a0d539605/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6a02f7b0e5cd4f96889708ddd0373502 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6a02f7b0e5cd4f96889708ddd0373502/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6a02f7b0e5cd4f96889708ddd0373502 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6a02f7b0e5cd4f96889708ddd0373502/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a39a393f0351424089b2336d90bd31a0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a39a393f0351424089b2336d90bd31a0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a39a393f0351424089b2336d90bd31a0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a39a393f0351424089b2336d90bd31a0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f1147fcaef6d44ff95f79490e33a0bca span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f1147fcaef6d44ff95f79490e33a0bca/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f1147fcaef6d44ff95f79490e33a0bca span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f1147fcaef6d44ff95f79490e33a0bca/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5de66b6d601f49c592e6b05d51800bd3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5de66b6d601f49c592e6b05d51800bd3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5de66b6d601f49c592e6b05d51800bd3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5de66b6d601f49c592e6b05d51800bd3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_29c47595fcd64bf48e9094f043fd910b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/29c47595fcd64bf48e9094f043fd910b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_29c47595fcd64bf48e9094f043fd910b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/29c47595fcd64bf48e9094f043fd910b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_89f6866e23f444ea9d952211fd7556fd span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/89f6866e23f444ea9d952211fd7556fd/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_89f6866e23f444ea9d952211fd7556fd span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/89f6866e23f444ea9d952211fd7556fd/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e87e2280d045412ca423a39518976409 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e87e2280d045412ca423a39518976409/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e87e2280d045412ca423a39518976409 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e87e2280d045412ca423a39518976409/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2cd3d1b5da9a4cbb8c92e4eb0ae63edc span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2cd3d1b5da9a4cbb8c92e4eb0ae63edc/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2cd3d1b5da9a4cbb8c92e4eb0ae63edc span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2cd3d1b5da9a4cbb8c92e4eb0ae63edc/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_10279447f732471d99fb35dd3b5fcbf6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/10279447f732471d99fb35dd3b5fcbf6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_10279447f732471d99fb35dd3b5fcbf6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/10279447f732471d99fb35dd3b5fcbf6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f4432a0e21dd4396b89d80ea6d59c530 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f4432a0e21dd4396b89d80ea6d59c530/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f4432a0e21dd4396b89d80ea6d59c530 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f4432a0e21dd4396b89d80ea6d59c530/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0a7f800771c047a4b7fc70cd5db96f6a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a7f800771c047a4b7fc70cd5db96f6a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0a7f800771c047a4b7fc70cd5db96f6a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a7f800771c047a4b7fc70cd5db96f6a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7c92f2f5f73944b9abdd00f7bebf2f6d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7c92f2f5f73944b9abdd00f7bebf2f6d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7c92f2f5f73944b9abdd00f7bebf2f6d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7c92f2f5f73944b9abdd00f7bebf2f6d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0c51e8b06af641b9be78f21b6423f64f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0c51e8b06af641b9be78f21b6423f64f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0c51e8b06af641b9be78f21b6423f64f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0c51e8b06af641b9be78f21b6423f64f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d128b5f888764c06ab4fa4413d9f782e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d128b5f888764c06ab4fa4413d9f782e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d128b5f888764c06ab4fa4413d9f782e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d128b5f888764c06ab4fa4413d9f782e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5c5234c2364247c886f71f58f395dc4a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5c5234c2364247c886f71f58f395dc4a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5c5234c2364247c886f71f58f395dc4a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5c5234c2364247c886f71f58f395dc4a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a39cca0a78224bc09fa3e1fb1646181a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a39cca0a78224bc09fa3e1fb1646181a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a39cca0a78224bc09fa3e1fb1646181a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a39cca0a78224bc09fa3e1fb1646181a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_599742270f5d4673a8242b83ff4d38be span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/599742270f5d4673a8242b83ff4d38be/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_599742270f5d4673a8242b83ff4d38be span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/599742270f5d4673a8242b83ff4d38be/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8c9c913bd0e9491f9c95b29860b13570 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8c9c913bd0e9491f9c95b29860b13570/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8c9c913bd0e9491f9c95b29860b13570 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8c9c913bd0e9491f9c95b29860b13570/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8bd527b823384392a8ba47e345a386c2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8bd527b823384392a8ba47e345a386c2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8bd527b823384392a8ba47e345a386c2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8bd527b823384392a8ba47e345a386c2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_38939ff08daa4331ac99a4fb58e2ab7b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/38939ff08daa4331ac99a4fb58e2ab7b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_38939ff08daa4331ac99a4fb58e2ab7b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/38939ff08daa4331ac99a4fb58e2ab7b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0a62f2035a5d4000aaca26b1ed3b0491 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a62f2035a5d4000aaca26b1ed3b0491/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0a62f2035a5d4000aaca26b1ed3b0491 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a62f2035a5d4000aaca26b1ed3b0491/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1dd204076b16496393ba936b22e3861f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1dd204076b16496393ba936b22e3861f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1dd204076b16496393ba936b22e3861f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1dd204076b16496393ba936b22e3861f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_14f03002-b78b-4bb3-875a-caf90f336962{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_14f03002-b78b-4bb3-875a-caf90f336962/views/thumbnail'); } .swx span.moji.id_5e4b15ed51244c5daae58114abeda46c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5e4b15ed51244c5daae58114abeda46c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5e4b15ed51244c5daae58114abeda46c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5e4b15ed51244c5daae58114abeda46c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e0734f17138c46a693b00a2b58babc12 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e0734f17138c46a693b00a2b58babc12/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e0734f17138c46a693b00a2b58babc12 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e0734f17138c46a693b00a2b58babc12/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9401c7f9c12944e49daa82fc1e92ec31 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9401c7f9c12944e49daa82fc1e92ec31/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9401c7f9c12944e49daa82fc1e92ec31 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9401c7f9c12944e49daa82fc1e92ec31/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0ebd46c04fa641df8be24bb42d911c6b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ebd46c04fa641df8be24bb42d911c6b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0ebd46c04fa641df8be24bb42d911c6b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0ebd46c04fa641df8be24bb42d911c6b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2c954e3931b84b88b23be618aad04d60 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2c954e3931b84b88b23be618aad04d60/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2c954e3931b84b88b23be618aad04d60 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2c954e3931b84b88b23be618aad04d60/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d796450ddff1496a9d43eb7d1ee795c6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d796450ddff1496a9d43eb7d1ee795c6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d796450ddff1496a9d43eb7d1ee795c6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d796450ddff1496a9d43eb7d1ee795c6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_df369f9ec4a7475396e5c1deabe21167 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df369f9ec4a7475396e5c1deabe21167/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_df369f9ec4a7475396e5c1deabe21167 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/df369f9ec4a7475396e5c1deabe21167/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bd44b6dc2e784f6eac5db538a15a5d8c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd44b6dc2e784f6eac5db538a15a5d8c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bd44b6dc2e784f6eac5db538a15a5d8c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bd44b6dc2e784f6eac5db538a15a5d8c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_80a3b4c737e1461b87f86d385084fc84 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80a3b4c737e1461b87f86d385084fc84/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_80a3b4c737e1461b87f86d385084fc84 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80a3b4c737e1461b87f86d385084fc84/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_bb677fa811474474ad19fd9cf34afd8e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb677fa811474474ad19fd9cf34afd8e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_bb677fa811474474ad19fd9cf34afd8e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/bb677fa811474474ad19fd9cf34afd8e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5db6bfb50b064e739f068d407d207ca0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5db6bfb50b064e739f068d407d207ca0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5db6bfb50b064e739f068d407d207ca0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5db6bfb50b064e739f068d407d207ca0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3bf5fa39f6504adf83135118d40896bc span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3bf5fa39f6504adf83135118d40896bc/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3bf5fa39f6504adf83135118d40896bc span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3bf5fa39f6504adf83135118d40896bc/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3e36be2d9396496ea6e8dc7f6a9acad7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3e36be2d9396496ea6e8dc7f6a9acad7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3e36be2d9396496ea6e8dc7f6a9acad7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3e36be2d9396496ea6e8dc7f6a9acad7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_eadac0775ce3428197104734ef87a481 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eadac0775ce3428197104734ef87a481/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_eadac0775ce3428197104734ef87a481 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/eadac0775ce3428197104734ef87a481/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fdff4a0706474dc0a09124a20a4d4df1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fdff4a0706474dc0a09124a20a4d4df1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fdff4a0706474dc0a09124a20a4d4df1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fdff4a0706474dc0a09124a20a4d4df1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7a43b13d029342ef8377421e67467be4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7a43b13d029342ef8377421e67467be4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7a43b13d029342ef8377421e67467be4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7a43b13d029342ef8377421e67467be4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_75063885ecac46e5858d78e952081db8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/75063885ecac46e5858d78e952081db8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_75063885ecac46e5858d78e952081db8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/75063885ecac46e5858d78e952081db8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c9c96f5f116644169c3b7dc18e420427 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9c96f5f116644169c3b7dc18e420427/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c9c96f5f116644169c3b7dc18e420427 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c9c96f5f116644169c3b7dc18e420427/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8f5cb164036544bba48aa99934b070bf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8f5cb164036544bba48aa99934b070bf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8f5cb164036544bba48aa99934b070bf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8f5cb164036544bba48aa99934b070bf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fed32aeaa317437ebd2b0a2d7d9036a9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fed32aeaa317437ebd2b0a2d7d9036a9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fed32aeaa317437ebd2b0a2d7d9036a9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fed32aeaa317437ebd2b0a2d7d9036a9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_93ef3bf9986a4978b046bbdb2f5a6019 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93ef3bf9986a4978b046bbdb2f5a6019/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_93ef3bf9986a4978b046bbdb2f5a6019 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/93ef3bf9986a4978b046bbdb2f5a6019/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a4adecdd9c284db7b248071bc7cd4ce0 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a4adecdd9c284db7b248071bc7cd4ce0/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a4adecdd9c284db7b248071bc7cd4ce0 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a4adecdd9c284db7b248071bc7cd4ce0/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_2fc67e28-34b3-4068-8040-724564b07476{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_2fc67e28-34b3-4068-8040-724564b07476/views/thumbnail'); } .swx span.moji.id_9dc9b765760948378c7d749f229a0cce span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9dc9b765760948378c7d749f229a0cce/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9dc9b765760948378c7d749f229a0cce span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9dc9b765760948378c7d749f229a0cce/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2b3bd2ed622e443c8ff98c5df55b4e31 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2b3bd2ed622e443c8ff98c5df55b4e31/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2b3bd2ed622e443c8ff98c5df55b4e31 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2b3bd2ed622e443c8ff98c5df55b4e31/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c73b191c08504b9c933b76f58707b550 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c73b191c08504b9c933b76f58707b550/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c73b191c08504b9c933b76f58707b550 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c73b191c08504b9c933b76f58707b550/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3af445b6d4ac46f5a885c6b3f871801c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3af445b6d4ac46f5a885c6b3f871801c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3af445b6d4ac46f5a885c6b3f871801c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3af445b6d4ac46f5a885c6b3f871801c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5dd08aa8fc4e43529a6e1e303899a73e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5dd08aa8fc4e43529a6e1e303899a73e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5dd08aa8fc4e43529a6e1e303899a73e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5dd08aa8fc4e43529a6e1e303899a73e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d817b63981fb4d0fbf47b3d93e29acb4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d817b63981fb4d0fbf47b3d93e29acb4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d817b63981fb4d0fbf47b3d93e29acb4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d817b63981fb4d0fbf47b3d93e29acb4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e86ec46981574373baeca9af544e1dd8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e86ec46981574373baeca9af544e1dd8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e86ec46981574373baeca9af544e1dd8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e86ec46981574373baeca9af544e1dd8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f35ebf0ddd1d4da8b5de712adb3083ba span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f35ebf0ddd1d4da8b5de712adb3083ba/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f35ebf0ddd1d4da8b5de712adb3083ba span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f35ebf0ddd1d4da8b5de712adb3083ba/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_194a1e4d44b242e58367749dcb90326a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/194a1e4d44b242e58367749dcb90326a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_194a1e4d44b242e58367749dcb90326a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/194a1e4d44b242e58367749dcb90326a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9023ca489ef3473b81f5bb44eb3d8d73 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9023ca489ef3473b81f5bb44eb3d8d73/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9023ca489ef3473b81f5bb44eb3d8d73 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9023ca489ef3473b81f5bb44eb3d8d73/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_68138afc5fda4ef79b91a3ca40b05502 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/68138afc5fda4ef79b91a3ca40b05502/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_68138afc5fda4ef79b91a3ca40b05502 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/68138afc5fda4ef79b91a3ca40b05502/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ad5e3abb979a411399d82f622e542ea6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ad5e3abb979a411399d82f622e542ea6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ad5e3abb979a411399d82f622e542ea6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ad5e3abb979a411399d82f622e542ea6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx .tab_id_002_noname_2cd836d1-956e-4ca9-afbe-0531dcdca505{ -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/tabs/002_noname_2cd836d1-956e-4ca9-afbe-0531dcdca505/views/thumbnail'); } .swx span.moji.id_18884340c2414c62b00bc318504260ed span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/18884340c2414c62b00bc318504260ed/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_18884340c2414c62b00bc318504260ed span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/18884340c2414c62b00bc318504260ed/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9ab2b5d1ff374cea970c22f08aedbe0e span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ab2b5d1ff374cea970c22f08aedbe0e/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9ab2b5d1ff374cea970c22f08aedbe0e span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9ab2b5d1ff374cea970c22f08aedbe0e/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_03a045222ce34b90b58e4bf180c2284a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/03a045222ce34b90b58e4bf180c2284a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_03a045222ce34b90b58e4bf180c2284a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/03a045222ce34b90b58e4bf180c2284a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7cfb161c33234356bcda36b1a3062b39 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7cfb161c33234356bcda36b1a3062b39/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7cfb161c33234356bcda36b1a3062b39 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7cfb161c33234356bcda36b1a3062b39/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e53595ec70754b01a9b0a8c077d2e5ad span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e53595ec70754b01a9b0a8c077d2e5ad/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e53595ec70754b01a9b0a8c077d2e5ad span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e53595ec70754b01a9b0a8c077d2e5ad/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_5120b685cdba4f50b91ecce8327c57c2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5120b685cdba4f50b91ecce8327c57c2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_5120b685cdba4f50b91ecce8327c57c2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/5120b685cdba4f50b91ecce8327c57c2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_391e60f5ca004b0aa7956478df92eae8 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/391e60f5ca004b0aa7956478df92eae8/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_391e60f5ca004b0aa7956478df92eae8 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/391e60f5ca004b0aa7956478df92eae8/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a660dab08a73453f89eaba5531ed8db2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a660dab08a73453f89eaba5531ed8db2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a660dab08a73453f89eaba5531ed8db2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a660dab08a73453f89eaba5531ed8db2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7fb1910129484e31a4ae54346c84e206 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7fb1910129484e31a4ae54346c84e206/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7fb1910129484e31a4ae54346c84e206 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7fb1910129484e31a4ae54346c84e206/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_87b5c8f795064f7da0da22a59af95680 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/87b5c8f795064f7da0da22a59af95680/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_87b5c8f795064f7da0da22a59af95680 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/87b5c8f795064f7da0da22a59af95680/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_40e49ed72f3f4c53b898102fdbfc2c03 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/40e49ed72f3f4c53b898102fdbfc2c03/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_40e49ed72f3f4c53b898102fdbfc2c03 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/40e49ed72f3f4c53b898102fdbfc2c03/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_9956c4564c8e4fa0a1f0abdecf23d5b2 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9956c4564c8e4fa0a1f0abdecf23d5b2/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_9956c4564c8e4fa0a1f0abdecf23d5b2 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/9956c4564c8e4fa0a1f0abdecf23d5b2/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3bf8b7a4e9c347708d25c5f0069dea3f span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3bf8b7a4e9c347708d25c5f0069dea3f/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3bf8b7a4e9c347708d25c5f0069dea3f span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3bf8b7a4e9c347708d25c5f0069dea3f/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c0c8700df236443ab100d1963c22f192 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c0c8700df236443ab100d1963c22f192/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c0c8700df236443ab100d1963c22f192 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c0c8700df236443ab100d1963c22f192/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b23b5804a04e41af8a77deffba126720 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b23b5804a04e41af8a77deffba126720/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b23b5804a04e41af8a77deffba126720 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b23b5804a04e41af8a77deffba126720/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e1d534825cff456eb54edfe06fc673cf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e1d534825cff456eb54edfe06fc673cf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e1d534825cff456eb54edfe06fc673cf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e1d534825cff456eb54edfe06fc673cf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_96aabeaf71b44e6faa3c6f141b5f34f9 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/96aabeaf71b44e6faa3c6f141b5f34f9/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_96aabeaf71b44e6faa3c6f141b5f34f9 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/96aabeaf71b44e6faa3c6f141b5f34f9/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_7964e7a51ee44e9c8536016e70563fdc span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7964e7a51ee44e9c8536016e70563fdc/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_7964e7a51ee44e9c8536016e70563fdc span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/7964e7a51ee44e9c8536016e70563fdc/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f96a75da9440429ca22baef01ac76685 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f96a75da9440429ca22baef01ac76685/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f96a75da9440429ca22baef01ac76685 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f96a75da9440429ca22baef01ac76685/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fef63f9addcc47bd8e16e5fef8d4a1fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fef63f9addcc47bd8e16e5fef8d4a1fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fef63f9addcc47bd8e16e5fef8d4a1fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fef63f9addcc47bd8e16e5fef8d4a1fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_11a49ac0c55b43028d7b64b1bc80543d span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11a49ac0c55b43028d7b64b1bc80543d/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_11a49ac0c55b43028d7b64b1bc80543d span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/11a49ac0c55b43028d7b64b1bc80543d/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0972745a71fd428fb4265e31c3bd1bef span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0972745a71fd428fb4265e31c3bd1bef/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0972745a71fd428fb4265e31c3bd1bef span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0972745a71fd428fb4265e31c3bd1bef/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_80864926eae84cc1b44623185ef2d757 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80864926eae84cc1b44623185ef2d757/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_80864926eae84cc1b44623185ef2d757 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/80864926eae84cc1b44623185ef2d757/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_a6b6cceccbd34d0498dafd7fd4bc51d7 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6b6cceccbd34d0498dafd7fd4bc51d7/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_a6b6cceccbd34d0498dafd7fd4bc51d7 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/a6b6cceccbd34d0498dafd7fd4bc51d7/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_1d88bbe54b7247f0b2f303c7dd4da0fa span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1d88bbe54b7247f0b2f303c7dd4da0fa/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_1d88bbe54b7247f0b2f303c7dd4da0fa span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/1d88bbe54b7247f0b2f303c7dd4da0fa/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_678da6cda87145f1bc9b96954a3562cf span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/678da6cda87145f1bc9b96954a3562cf/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_678da6cda87145f1bc9b96954a3562cf span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/678da6cda87145f1bc9b96954a3562cf/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_33cf47a4af8e436da5efe3e9f2a249a1 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/33cf47a4af8e436da5efe3e9f2a249a1/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_33cf47a4af8e436da5efe3e9f2a249a1 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/33cf47a4af8e436da5efe3e9f2a249a1/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_008f01b9135a4441a8249f5d003c14a3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/008f01b9135a4441a8249f5d003c14a3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_008f01b9135a4441a8249f5d003c14a3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/008f01b9135a4441a8249f5d003c14a3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_2a7b74e34fe04d9d8b171c61199dbed3 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2a7b74e34fe04d9d8b171c61199dbed3/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_2a7b74e34fe04d9d8b171c61199dbed3 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/2a7b74e34fe04d9d8b171c61199dbed3/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_ccbdfa5036ff4d61a51d87acb294aa03 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ccbdfa5036ff4d61a51d87acb294aa03/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_ccbdfa5036ff4d61a51d87acb294aa03 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/ccbdfa5036ff4d61a51d87acb294aa03/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_0a122fcbe9e148fdb3ca527c0fd330fb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a122fcbe9e148fdb3ca527c0fd330fb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_0a122fcbe9e148fdb3ca527c0fd330fb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/0a122fcbe9e148fdb3ca527c0fd330fb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d934e84022054927a10617d9c68b5f15 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d934e84022054927a10617d9c68b5f15/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d934e84022054927a10617d9c68b5f15 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d934e84022054927a10617d9c68b5f15/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3ed454a895f046e3ab8065cfda006729 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ed454a895f046e3ab8065cfda006729/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3ed454a895f046e3ab8065cfda006729 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ed454a895f046e3ab8065cfda006729/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_556d61fc9e414c0c84d6ae38a9c01659 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/556d61fc9e414c0c84d6ae38a9c01659/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_556d61fc9e414c0c84d6ae38a9c01659 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/556d61fc9e414c0c84d6ae38a9c01659/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_45626156ed244e2093f262ef05de7500 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/45626156ed244e2093f262ef05de7500/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_45626156ed244e2093f262ef05de7500 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/45626156ed244e2093f262ef05de7500/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_d7e5b0d9f6ad4554b7585863166516bb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d7e5b0d9f6ad4554b7585863166516bb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_d7e5b0d9f6ad4554b7585863166516bb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/d7e5b0d9f6ad4554b7585863166516bb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_40d32ff12d044343b6576049a9c85188 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/40d32ff12d044343b6576049a9c85188/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_40d32ff12d044343b6576049a9c85188 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/40d32ff12d044343b6576049a9c85188/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_c552a516696a48fabc97caf091cc1bd5 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c552a516696a48fabc97caf091cc1bd5/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_c552a516696a48fabc97caf091cc1bd5 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/c552a516696a48fabc97caf091cc1bd5/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_6feba691dd4a44398bffb5075ab12923 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6feba691dd4a44398bffb5075ab12923/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_6feba691dd4a44398bffb5075ab12923 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/6feba691dd4a44398bffb5075ab12923/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_02ea7e8b82f545928b11285544095d6a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/02ea7e8b82f545928b11285544095d6a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_02ea7e8b82f545928b11285544095d6a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/02ea7e8b82f545928b11285544095d6a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_69b140433d7b4358923629e259f7c3eb span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69b140433d7b4358923629e259f7c3eb/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_69b140433d7b4358923629e259f7c3eb span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/69b140433d7b4358923629e259f7c3eb/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f6e477f5171548349bd36f72c9d40b9a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f6e477f5171548349bd36f72c9d40b9a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f6e477f5171548349bd36f72c9d40b9a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f6e477f5171548349bd36f72c9d40b9a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_e245fced1cba4ae18fa0d449de6a89e4 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e245fced1cba4ae18fa0d449de6a89e4/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_e245fced1cba4ae18fa0d449de6a89e4 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/e245fced1cba4ae18fa0d449de6a89e4/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b55b85cc25e34675ba8ed0c50050951c span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b55b85cc25e34675ba8ed0c50050951c/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b55b85cc25e34675ba8ed0c50050951c span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b55b85cc25e34675ba8ed0c50050951c/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f540c8eb9b524b92966ec9367fc9b939 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f540c8eb9b524b92966ec9367fc9b939/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f540c8eb9b524b92966ec9367fc9b939 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f540c8eb9b524b92966ec9367fc9b939/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_cf65bd5003004764b30c8c2b7274bb18 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cf65bd5003004764b30c8c2b7274bb18/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_cf65bd5003004764b30c8c2b7274bb18 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/cf65bd5003004764b30c8c2b7274bb18/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_48049a964c6947d398fbc42005288e89 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/48049a964c6947d398fbc42005288e89/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_48049a964c6947d398fbc42005288e89 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/48049a964c6947d398fbc42005288e89/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_fd966c6f0d7247d98441e66e66104a15 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fd966c6f0d7247d98441e66e66104a15/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_fd966c6f0d7247d98441e66e66104a15 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/fd966c6f0d7247d98441e66e66104a15/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8b5e994fbb6c4524983959023879081a span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8b5e994fbb6c4524983959023879081a/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8b5e994fbb6c4524983959023879081a span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8b5e994fbb6c4524983959023879081a/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_b2d0489dd19046a585ab3b9fb12eb952 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b2d0489dd19046a585ab3b9fb12eb952/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_b2d0489dd19046a585ab3b9fb12eb952 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/b2d0489dd19046a585ab3b9fb12eb952/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_8ae2ef5b828447c3a6c9832b2c51160b span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8ae2ef5b828447c3a6c9832b2c51160b/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_8ae2ef5b828447c3a6c9832b2c51160b span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/8ae2ef5b828447c3a6c9832b2c51160b/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_f87b8f95bf4142c281874a8b0d06feff span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f87b8f95bf4142c281874a8b0d06feff/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_f87b8f95bf4142c281874a8b0d06feff span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/f87b8f95bf4142c281874a8b0d06feff/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }.swx span.moji.id_3ea11083ab4b4590876f509701b7f3f6 span.mojiThumbnail { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ea11083ab4b4590876f509701b7f3f6/views/thumbnail'); height: 40px; background-size: 100%; }.swx span.moji.id_3ea11083ab4b4590876f509701b7f3f6 span.keyframe { -ms-high-contrast-adjust: none; background-image: url('https://static-asm.secure.skypeassets.com/pes/v1/items/3ea11083ab4b4590876f509701b7f3f6/views/thumbnail'); height: 100%; background-size: 100%; border-radius: 8px; display: block; }-->

    +
    +

    +
    +]]>
    Things To Do This Weekend In London: 1-2 July 2017http://londonist.com/london/things-to-do/things-to-do-this-weekend-in-london-1-2-july-2017http://londonist.com/london/things-to-do/things-to-do-this-weekend-in-london-1-2-july-2017#commentsMon, 26 Jun 2017 13:15:00 +0100http://londonist.com/?p=d7334e7c19e02424024f +

    Things to do this weekend is sponsored by Alexandra Palace

    +

    All weekend

    + +

    FOOD FESTIVAL: Bask in the sunshine and sample a range of delectable treats as this walking banquet of gourmet traders descend on Ealing Common. A bandstand provides the soundtrack to the afternoon while you globe-trot between cuisines — be sure to turn up hungry. Ealing Common, £3 entry, just turn up, 1-2 July

    +

    CITY AGRICULTURE: Ditch city life for the weekend and enjoy the delights of the countryside. A fresh produce marquee, an equestrian show, fairground rides, a birds of prey display and a rare sheep show all feature in this agricultural festival right in the city. Mudchute Park and Farm, free, just turn up, 1-2 July

    +

    GLUTEN-FREE:London's original gluten-free street food celebration returns to Camden. Featuring innovative and delicious dishes, enjoy the best in gluten-free cakes, bread, desserts and worldwide foods. Jamestown Road (Camden), free, just turn up, 1-2 July

    +

    RIVERS WEEK: This week-long festival celebrating London's waterways comes to an end this weekend. The full programme is here — pick from walks, talks, river dipping and more.26 June-2 July

    +

    PRIDE: The parade isn't until next weekend, but there are plenty of Pride in London events this weekend including a cycle ride, video game day, museum tour, Victoria Park picnic and much more. 24 June-9 July

    +
    +

    Sponsor message

    +

    Dance to The Craig Charles Funk & Soul Club at this FREE summer festival

    +
    +

    There's a day of music, theatre and craft beer galore at Alexandra Palace on 22 July. The free entry summer festival boasts three live music stages, delicious street food and theatre performances for all the family.

    +

    Book tickets for the outdoor cinema where Austin Powers will be screened under the stars against a backdrop of stunning views, or get ready for a show of colourful acrobatics thanks to Jackson's Lane. With children's activities, silent discos, a giant waterslide, and a headline act of The Craig Charles Funk & Soul Club, this festival is not to be missed.

    +

    Check out what’s on for this day of summer celebrations.

    +
    +

    Saturday 1 July

    + +

    STOCKWELL FESTIVAL: Back after a two-year hiatus, Stockwell Festival brings together an eclectic mix of local street food, crafts and activities. There's no better way to witness the unique creativity, energy and diversity of the local area. Larkhall Park, free, just turn up, 12pm-6pm

    +

    HENDRIX'S FOOTSTEPS: On the first in a series of tours about the rock star, begin at Jimi Hendrix's flat on Brook Street and mosey over to Mayfair and Marble Arch areas as you visit the places that meant a lot to him. Start at 23 Brook Street, £15, book ahead,12.30pm-2pm or 3.30pm-5pm

    +

    THEY DON'T SING: This Finnish choir is an odd one — they don't sing a single note. Join them on a four-hour workshop and learn their unique style, shouting, screaming and bellowing excerpts from a diverse range of texts. Royal Festival Hall, £12, book ahead, 1.30pm-5.30pm

    +

    ICANDANCE: icandance is a charity which offers dance and performance opportunities to children and young people with varying disabilities. Today, watch 14 year old Ellie, who has cerebal palsy, take to the stage with her heroes, BalletBoyz in solo section of the School of Rock inspired performance. Artsdepot (North Finchley), £13, book ahead, 2.30pm

    +

    PUPS PICNIC: Bring your own blanket, food and dog for a pawsome meet up on Hampstead Heath. This afternoon is filled with dogs, delicious food and gorgeous views, and is the perfect opportunity to get to know other dog lovers in the area. Parliament Hill, free, book ahead, 2.30pm-4.30pm

    +

    CRAFT BEER:A ticket to the Craft Beer Cares' inaugural beer festival will net you a keepsake glass and tokens to spend on the huge variety of beer on offer. The festival celebrates all the good that is being done in the craft beer industry while raising money for charities Mind and the Newman Trust. Brew Club, 38-40 Upper Clapton Road, £14.40, book ahead, 6pm-11.30pm

    +

    ART NIGHT: Some of the world's leading artists transform the City with free art, performance and music. Taking place in locations such as the Bascule Chamber at Tower Bridge and the Masonic Temple at Andaz Liverpool Street, it's a great chance to explore London's history, culture and architecture. Various locations around the City of London, free, just turn up,6pm-6am

    +

    LA LA LAND: London has had pretty good weather recently, but it's still not quite LA, is it? Experience the glitz and glamour of the jazz soaked City of Angels with a screening of Damien Chazelle's award-winning film La La Land. St John the Evangelist Church (South Norwood), £20, book ahead, 7pm-11.30pm

    +

    Sunday 2 July

    + +

    SUMMER STREETS: Every Londoner's wish comes true, as Regent Street becomes pedestrianised for a day, in a bid to encourage visitors to relax, unwind and enjoy the fantastic range of entertainment along the street. This year's theme of culture, style, wellness and food and drink promises a bold day out. Regent Street, free, just turn up, all day

    +

    HAMPSTEAD BEACH: JW3 Jewish Centre in North Finchley is getting a beach for the summer. Golden sand, tasty food and cocktails set the mood for long evenings of sun, fun and holiday vibes. JW3, free entry, just turn up, 9am-10.30pm

    +

    CITY SOUND: This two mile guided walk explores the City of London through the medium of sound. From church bells to road crossings, this sonic tour will introduce you to sounds of the past, present and future, and show you how London's soundscape is changing through time. St Paul's tube, £18, book ahead,11am-1.15pm

    +

    MODERNIST HAMPSTEAD: Discover the best of the revolutionary Modernist architecture in Hampstead on the guided walk, from the 1930s Sun House by Maxwell Fry and the the iconic Isokon flats in Belsize Park. Mainly echoing European design trends, eighteenth-century design was also a strong influence for architects of these buildings. Hampstead Station, £9-£12, book ahead, 11.30am-1.30pm

    +

    EID FESTIVAL: As Ramadan draws to a close, everyone is invited to come together in Trafalgar Square for entertainment and attractions for the whole family to enjoy. With a global food festival, live music, arts and crafts and calligraphy, there is no better way to celebrate Eid. Trafalgar Square, free, just turn up, 12pm-6pm

    +

    LET ME TAKE A SELFIE:Unprecedented social pressure to look slim, prosperous, happy, extroverted and popular has led to an increase in depression and suicide. This talk charts the ride of narcissism and the selfie generation, taking us back to its origins on the shores of Ancient Greece. Conway Hall, £3, book ahead,2pm-3.30pm

    +

    WOODY ALLEN: Spend a heady night listening to New Orleans style jazz in the splendour of the Royal Albert Hall in a one-off concert headed by none other than American director Woody Allen. Allen once famously missed accepting a 'Best Picture' Academy Award as he was performing a concert on the same evening. Royal Albert Hall, various prices, book ahead, 4.15pm

    +

    DRUNKEN PERFORMANCE: You've heard of Sh*t-Faced Shakespeare, but how about its sibling, Sh*t-Faced Showtime? Enjoy a performance of The Wonderful Wizard of Oz with one actor selected at random to drink themselves silly before the performance. Sounds like a recipe for disaster, and a whole lot of laughs. Leicester Square Theatre, £15, book ahead, 8pm

    +

    The weather is looking great too, so why not take a look at our pub database and find a nice beer garden to kick back in?

    +

    +

    Funzing

    +

    Fun things to do with our friends and sponsor Funzing.

    +LDN Talks @ Night | The Science of Psychedelics
    +
    +
    Scientific research is resuming on how psychedelics affect the weirder aspects of human consciousness. This talk from Dr David Luke engages in current study into pyschedelics and their historical use in shamanic rituals. Be prepared, you might leave with more questions than answers. Get tickets +
    +
    +
    Talk: Neuroscience of Powerful Habits
    +
    +
    Every January you do the same thing. You make a New Year's resolution to lose weight, be thriftier, quit smoking or possibly even to start exercising. Yet how many of us find ourselves in the exact spot we started in once the month is up? This talk by Dr Gabija Toleikyte, explains why the brain resists changing habits of a lifetime. She'll also explain how to create long lasting change, by working with your brain rather than against it. Get tickets +
    +
    +
    LDN Talks@Night |Insights of a War Crime Investigator
    +
    +
    What would you say face-to-face to Saddam Hussein? How would you feel digging up the mass graves of Kosovo? Jonathan Tait-Harris will share experiences from his jobs as a policeman, soldier, war-crimes investigator and adviser to UK and Iraqi governments. £10 Get tickets +
    +
    +
    +
    +]]>
    BP Portrait Award Is Back - But It's Much The Samehttp://londonist.com/london/art-and-photography/portraits-abound-in-this-annual-free-exhibitionhttp://londonist.com/london/art-and-photography/portraits-abound-in-this-annual-free-exhibition#commentsMon, 26 Jun 2017 13:00:07 +0100http://londonist.com/?p=05c70db88433d45583a5 +
    +
    A 'double portrait' of the artist's wife who was eight months pregnant at the time. Copyright: Thomas Ehretsmann
    +
    +

    The BP Portrait Award is a stalwart in the art calendar. This free exhibition brings together portrait painters from across the world to compete for the top prizes.

    +

    This year there were over 2,500 entries from across 87 countries, which have been whittled down to the 53 on display at the National Portrait Gallery.

    +
    +
    This painting of a breastfeeding mother, the artist's wife, was the overall winner. Copyright: Benjamin Sullivan
    +
    +

    While the painting quality of the entries is always to a high standard, the prize itself is quite staid. We've suggested how it can be improved, but this year is more of the same.

    +

    There are some exceptions, including one entry where the background is reflective, thus making the subject of the portrait into one of the crowd of gallery-goers.

    +
    +
    Vulnerability and determination meet in the third prize winner. Copyright Antony Williams.
    +
    +

    But on the whole it's all very same-y and not much stands out in this year's prize.

    +

    BP Portrait Award 2017 is on at National Portrait Gallery until 24 September. Entrance is free.

    +
    +]]>
    7 Things To Do At Alexandra Palace's Summer Festivalhttp://londonist.com/london/7-things-to-do-at-alexandra-palace-s-summer-festivalhttp://londonist.com/london/7-things-to-do-at-alexandra-palace-s-summer-festival#commentsMon, 26 Jun 2017 12:00:05 +0100http://londonist.com/?p=9ca31f17ecf0acdc1dc1 +

    This is a sponsored article on behalf of Alexandra Palace.

    +

    Alexandra Palace's Summer Festival is back, and this year promises to be the best one yet. Head there on 22 July for theatre performances, street food and craft beer.

    +

    Be sure to check out the giant waterslide and book tickets for the outdoor film screening of Austin Powers. If you're up for some serious dancing, grab a prime spot for the Craig Charles Funk & Soul Club set.

    +
    +
    +

    There'll be so much to do and see, so we've put together this guide to 7 things you won't want to miss on the day.

    +

    1. Giant waterslide

    +
    +

    Grab a dinghy and get ready to be a big kid, as there's a giant waterslide popping up for the Summer Festival. The grounds of Alexandra Palace will host this 100m waterslide for one day only — it'll be popular, so book before your visit, and prepare to get wet.

    +

    2. Outdoor cinema

    +
    +

    This has got to be one of the best places to settle down and watch a blockbuster. Austin Powers will be screened under the stars on the slopes. Grab a beer and a blanket, and enjoy this example of comedy gold on a huge pop-up screen against the stunning backdrop of the London skyline. Tickets for this are sure to sell out so get them while you can.

    +

    3. Silent disco

    +
    +

    Step inside the secret forest, pop on your headphones and prepare for some serious moves at this disco with a difference. There are eight sessions to choose from, and sets include Cartoon Classics, Summer of Love, and guilty pleasure Club de Fromage.

    +

    4. Theatre

    +
    +

    There'll be some fantastic performances thanks to Chickenshed and Jackson's Lane, with dedicated shows for kids as well. Lost in Translation Circus, Cirque Bordello, is the offering from Jackson's Lane, which will see colourful and chaotic acrobatics and aerial performances.

    +

    5. Family raves

    +
    +

    Why should the adults have all the fun? Big Fish Little Fish family raves are for all ages. With sensory dancefloors, summer of love vibes and plenty of fairy lights, this is techno for the tots. There'll also be hula hoop workshops and craft areas, plus the all important licensed bar — grab your tickets now.

    +

    6. Live music

    +
    +

    The Summer Festival will have three live music stages offering everything from Dat Brass to JJ SoulX and Let The Drum Beat. Listen to classic songs reworked, as Cash Cows put a quirky spin on tunes we all know and love. If folk is more up your street, be sure to keep Ogre Melodies on your radar. The best bit about all the music is that it's completely free. Now this is the sort of festival we like.

    +

    7. Street food and craft beer

    +
    +

    A festival wouldn't be complete without lots of delicious food and drink to choose from — pizza from Arancina, BBQ delights from Bob the Griller, and Oli Baba's legendary halloumi fries are among the vast selection of traders, which have options for veggies, vegans and fussy kids alike. With 20 different craft and cask ales as well as plenty of Pimms and cocktails, we'd come with a stash of cash if we were you.

    +

    Convinced? Alexandra Palace's Summer Festival is set to be an epic day out — check out the schedule full schedule here, and be sure to book for the ticketed events.

    +
    +]]>
    A Spinning Artwork Hovers Over St Pancrashttp://londonist.com/london/art-and-photography/a-spinning-artwork-hovers-over-st-pancrashttp://londonist.com/london/art-and-photography/a-spinning-artwork-hovers-over-st-pancras#commentsMon, 26 Jun 2017 11:30:10 +0100http://londonist.com/?p=a574070221be703ed94a +
    +

    Next time you've got a few minutes to kill at St Pancras station, head up to Platforms 1-4 (or the Eurostar platforms, if you're lucky enough to have a ticket), and look up to the clock behind you to see the station's new artwork.

    +

    Three large metal arms spin slowly while the blue lattices on each arm arrange themselves both in and out along each arm.

    +
    +
    A close up of the new artwork. Image courtesy the artist, Royal Academy of Arts and Terrace Wires.
    +
    +

    This hypnotic artwork is by Conrad Shawcross. If the artist's name seems familiar, it's because he's pretty much everywhere these days, having designed the massive sculpture outside the Crick institute, a robotic arm in the Sci-Fi blockbuster at Barbican and designed the Optic Cloak in Greenwich.

    +

    The Terrace Wires project brings artworks into the station. Past projects include a companion clock by Cornelia Parker, a spinning shimmering silver object by Ron Arad and bright blocks by David Batchelor.

    +
    +
    The lattice structures move to the inside of the arms. Image courtesy the artist, Royal Academy of Arts and Terrace Wires.
    +
    +

    The new addition by Conrad Shawcross has been compared to a wind turbine and a fidget spinner. Our opinion is it's not Shawcross's finest work as his strength lies in complexity, and this looks like a much simpler work — but it's still great to have something to look at while waiting for a train.

    +
    +
    Here they are extended to full width. Image courtesy the artist, Royal Academy of Arts and Terrace Wires.
    +
    +

    Conrad Shawcross: The Interpretation of Movement (a 9:8 in blue) is at St Pancras station.

    +
    +]]>
    The London Areas That Don't Want To Be In London At Allhttp://londonist.com/london/features/areas-that-don-t-want-to-be-in-londonhttp://londonist.com/london/features/areas-that-don-t-want-to-be-in-london#commentsMon, 26 Jun 2017 11:00:06 +0100http://londonist.com/?p=7aa9299aa57b7cd988fc +
    + +
    +

    We love London. Heck, we love it so much we run a website dedicated to it. Some other people... let's just say they're not huge fans. Time to run through the London neighbourhoods who'd like to divorce themselves from the city.

    +

    Croydon

    +

    Croydon has applied to become its own city six times. You feel like after five, one would get the message and move on, but Croydon hasn't. Let's clarify, this is six times and counting. Don't put it past the wily south London borough to give it another go in the near future.

    +
    +
    Croydon Trams. Photo: Andrew Smith +
    +
    +

    This article in the Croydon Advertiser laments the fact that city status hasn't been granted, has a particularly poignant quote from local historian John Hickman.

    +

    Croydon should become a city because it has all that a city requires.However, I think our big disadvantage is we are too close to London to be a city.

    +

    Lets examine this carefully. He uses the phrase "too close to London". Not: "we are already in London", or "being a London borough". No. These people are in denial. Having your own trams doth not a city make.

    +

    Romford

    +
    +
    Photo: Matt Brown +
    +
    +

    This one's a tad more divisive. As with most of the areas on this list, London subsumed Romford in 1965 through the London Government Act. Before then Romford was firmly entrenched in Essex and some haven't quite adapted to that change.

    +

    TV show The Apprentice stoked the embers of the debate by referring to Romford as Essex in a 2012 episode. Romford residents are firmly split down the middle as to whether they consider themselves Londoners or Essexonians. Some (correctly) point out that they're in a London borough, and pay council tax. Perhaps other just want a personal connection to TOWIE.

    +

    Even as time goes on, the media still refers to Romford as Essex. Evening Standard's property section used the incorrect "Romford, Essex" terminology in their 2015 guide to the area. The confusion rages on.

    +

    Orpington, Bromley and Biggin Hill

    +
    +
    Admittedly, the rest of London doesn't have these. Photo: David Howard +
    +
    +

    These three neighbours contain many citizens just clawing at the chance to be in Kent. They don't seem to realise that not having a traditional London postcode, doesn't mean you're not in London. See an explanation of that below.

    +
    +

    We'll excuse a couple of locals incorrectly believing they're in Kent, but the same cannot be said of the Post Office. The addresses for their Bromley branches all end in Kent. The way we see it, if you're in a London borough you're in London. Surely these are the people that are supposed to be setting an example. Shame on you Post Office, shame on you.

    +
    +]]>
    Londoners' Share Their Break-Up Storieshttp://londonist.com/london/features/londoners-break-up-storieshttp://londonist.com/london/features/londoners-break-up-stories#commentsMon, 26 Jun 2017 10:00:14 +0100http://londonist.com/?p=dfcfa3d0b2aabec20fc6 +
    +
    Broken dreams. Photo: Bart Booms +
    +
    +

    For every beautiful romantic moment at the blossom of a relationship just remember there's likely to be an equally awful break-up at the end. We asked our readers to send in their London break-up stories and here are some of our favourites:

    +

    Leave right now

    +

    Eli had a little help from a B-list pop star with his break up. "Back during the 2012 Olympics, they had a concert every night in Hyde Park. Just outside the fence separating the concert area from the rest of the park, I had a conversation with a girl where I told her that I didn't want to continue seeing her. Will Young was performing that night and this conversation, completely coincidentally, was happening while he was singing Leave Right Now. She was (understandably) upset and got up and slowly walked away right as the second chorus started."

    +

    An innocent mistake to be sure, but it's got us pumping out some Will Young at Londonist towers Eli, so thank you.

    +
    +

    Dangers of subletting

    +

    Jasmine says she "had been dating a Northern Irish guy for over four years. I also had a German friend who was planning to move to London to study media (like my partner). I suggested they chat and she could stay in the flat while she sorted accommodation out."

    +

    "One month later I got dumped and replaced by said German friend. Quite a bitter pill to swallow, never been able to visit some areas of London afterwards, it all got a bit awkward."

    +

    A tough one to take for sure, but please don't let these two traitors put you off any parts of London. That's letting them win.

    +

    The masterstroke

    +

    "So I walked my girlfriend to Kingsbury tube and as the doors were closing I chucked a note on board saying we're done. Didn't hear from her again!"

    +

    That gem is from Danny. We're actually quite annoyed we've never thought of this ourselves, though we did once recommend something quite similar. It's incredible to think that there's a romantic movie that heavily relies on tube doors shutting — Sliding Doors — and this doesn't happen in it.

    +
    +
    Ahh sliding tube doors. The perfect London break-up spot. Photo: chutney bannister +
    +
    +

    Just taking care of some last minute business before I go

    +

    Tony's ex left him in a non-confrontational but nevertheless determined style. "My girlfriend drove all the way from Earls Court to Slough at 4am to stick a post-it note on my front door telling me I was dumped because she was moving back to New York. And leaving on the 7am flight. I didn't get up until 8..."

    +

    Well clearly she didn't want to put either of you off any London locales by doing the deed in the city, which as we've seen above, can happen. She had no qualms with putting you off Slough however, which come to think of it, might not be the worst move in the world.

    +

    Play it off as laugh

    +

    "I got dumped at a restaurant in Covent Garden at our two year anniversary meal... half way through main course. I thought he was joking. He wasn't. We didn't have dessert."

    +

    That's seriously cold from Natalie's partner. However, not cold enough for ice cream as he's not a dessert guy.

    +
    +
    Hammersmith's 'Spoons, The William Morris. Photo: SteHLiverpool +
    +
    +

    The tearjerker

    +

    Susan's one brought a tear to our eye. "I got dumped by my partner of 2.5 yrs who I thought I was going to marry. This happened while I was having treatment for cancer, two days after I'd been in hospital again. He lied about the fact he was seeing someone else; younger model obviously, who wasn't chemo-bald like me. And where did he choose to do this? Wetherspoons in Hammersmith. Classy."

    +

    Definitely an awful situation and we sincerely hope you're doing better Susan.

    +

    Prying ears

    +

    Elysse tells us: "Once I was in Abney Park Cemetery and overheard a couple going through a breakup. Not sure if that was the perfect location or if it just made things worse."

    +

    Thanks for keeping an ear out and sending in that one Elysse. Little known fact about Abney Park Cemetery is that it's where Amy Winehouse's Back to Black video was shot. Which, is a song about a break-up. Coincidence? We think not.

    +
    +

    Melancholic museum

    +

    Dawn, "studied abroad in London from the US in the mid '90s. A day or two before Valentine's Day, I got a breakup letter from my boyfriend in the States. I was devastated. The next day our class went on a field trip to the British Museum. I remember being amazed at the collection but overwhelmed by sadness. Recently had the chance to revisit the museum with my husband (not the '90s boyfriend) and had a wonderful experience."

    +

    That's what we like to hear. Don't let anyone put you off the British Museum, it's just got so much great stuff.

    +
    +
    Photo: Steve Barnet +
    +
    +

    Dodgy barnet

    +

    "I once went on a date with a guy whilst living in London. He had a bright red mohawk and it wasn't the eighties. No second date. We bid adieu at Charing Cross. Still one of my favourite stations despite the unfortunate hair."

    +

    Rachael's date's transgression might've been forgiven were he to catching the Central line, but as it is that's truly disgraceful. We're with you Rachael.

    +

    If you've got any more London break-up stories, we'd love to hear them in the comments beneath.

    +

    See also: Where to break-up with someone in London

    +
    +]]>
    Things To Do Today In London: Monday 26 June 2017http://londonist.com/london/things-to-do/things-to-do-today-in-london-monday-26-june-2017http://londonist.com/london/things-to-do/things-to-do-today-in-london-monday-26-june-2017#commentsSun, 25 Jun 2017 19:00:25 +0100http://londonist.com/?p=d48cae75949e692a1e04 +

    Things to do today is sponsored by BFI Southbank.

    +
    +
    +Dreams of Freedom at the Royal Albert Hall
    +
    +

    What we're reading

    + +

    Things to do

    +

    DEREGULATION: Discover how the deregulation revolution brought us much of the technology and free expression that we take for granted today. From FM radio to the iPhone, these gadgets wouldn't exist if special interests and regulators had their way. Adam Smith Institute, free, book ahead, 6pm-8pm

    +

    GRAFFITI AND MEMORY: This panel discussion tackles the subject of graffiti and memory, and how they work in the context of the city. Featuring 100 Days of Leake Street, a presentation that shows changes on 10 different walls in a legal graffiti spot over 100 days. London Metropolitan University, free, book ahead, 6pm-8pm

    +

    MUSIC AND DANCE: The Barbican plays host to over 69 schools taking part in a two week programme of singing, instrumental and dance events. Performances from bands, vocal groups, choirs and orchestras feature, and this evening concert kicks off the event. Barbican, £7, book ahead, 6.30pm

    +

    DREAMS OF FREEDOM: Hundreds of young voices become one at a special concert inspired by Amnesty International UK's children's book Dreams of Freedom. Children's thoughts, opinions, ideas and dreams of freedom and human rights have been turned into a musical, theatrical performance of hope for a better world. Royal Albert Hall, £10-£25, book ahead, 7pm

    +

    VIDEO GAMES: Do video games have the solutions to some of our most complex scientific problems? From a game where players manipulate 3D proteins, to one where astronomers predict how complex star patterns appear, it certainly seems so. Museum of London, £12, book ahead, 7pm-8.30pm

    +

    FEMINIST STITCHING: Embroidery is not an activity for women stuck in their parlours in the 19th century, a point especially stressed in this workshop. Dedication, perseverance, care, skill, patience and creativity are all going to be needed as you stitch to success. Drink, Shop & Do (King's Cross) £39, book ahead, 7pm-9.30pm

    +

    MONDAY BLUES: It might be Monday, but that's no excuse not to kick back and enjoy some live music from talented jazz and soul musician James Junior. Having performed for Royal Family and the England rugby team, you're sure to be entertained. 100 Wardour Street, 8pm-10pm

    +

    FILM SCREENING: Filmed on huge, complex sets including a prison-like office block of glass and steel, and a chaotic city restaurant, this film tackles the dehumanising effects of technology and design on modern life during a day in Paris. British Film Institute, £8, book ahead, 8.30pm-10.30pm

    +
    +

    Sponsor message

    +

    Get 2-for-1 tickets for Dustin Hoffman season at BFI Southbank

    +
    +

    It's Hollywood legend Dustin Hoffman's 80th birthday and BFI Southbank is celebrating by running a whole season of films dedicated to him. Join in on the party and catch the actor in hits such as All the President's Men and Midnight Cowboy.

    +

    There'll be classics including Rain Man and Tootsie, but also newer hits such as Roald Dahl's Esio Trot and Hoffman's directing debut, Quartet. In true celebratory spirit, BFI Southbank is offering two tickets for the price of one to see these epic films — simply enter the code LONDONIST241 when booking. Check out the full Hoffman line-up here.

    +
    +

    Art review: abstract kites

    +
    +
    Image courtesy Flowers gallery
    +
    +

    This exhibition brings together five decades of abstract painter Richard Smith's work. The central installation looks like a series of kites painted, thus making abstract painting much more immersive than it could be placed on walls. Richard Smith at Flowers, 21 Cork Street, W1S 3LZ, free. Until 15 July ★★★☆☆ (Monday-Saturday) Tabish Khan

    +

    Food review: mini plates of goodness

    +
    +

    The Bird In Hand may be a little out of the way, tucked down a side street in West Kensington, but it's a favourite with locals and once you know about it, you'll be telling all your friends. With terracotta hues and funky chic decor, it won't surprise you that they specialise in tapas style food to share, and great wine. Plates are small so ordering three per person seems to be the right balance, but delicacies such as padron peppers with paprika salt and pan fried seabass with saffron risotto and rice will certainly tickle your tastebuds. The Bird In Hand, 88 Hasbro Road, W14 0LR ★★★☆☆ Eleana Overett

    +

    Art review: Indian marble

    +
    +
    Courtesy Amar gallery
    +
    +

    Amar Gallery is located in Angel and its current show focuses on two Indian artists. The star of the show is Parul Thacker who has created two intricate works made entirely of Indian materials, from crystal to marble. Stunning works, and we do love coming across a new gallery. Form: Flow at Amar Gallery, 48 Penton Street, N1 9QA. Until 3 August, free. ★★★☆☆ (Monday-Friday)

    +

    Good cause of the day

    +
    +

    CRAFT BEER CARES: Book ahead to celebrate all the good being done in the craft beer industry whilst raising money for Mind and the Newman Trust. A ticket will get you a keepsake glass and seven beer tokens to spend on a huge variety of craft beer. Brew Club (Upper Clapton Road), £14.40, book ahead, 1 July

    +

    +

    Funzing

    +

    Fun things to do with our friends and sponsor Funzing.

    +LDN Talks @ Night | The Science of Psychedelics
    +
    +
    Scientific research is resuming on how psychedelics affect the weirder aspects of human consciousness. This talk from Dr David Luke engages in current study into pyschedelics and their historical use in shamanic rituals. Be prepared, you might leave with more questions than answers. Get tickets +
    +
    +
    Talk: Neuroscience of Powerful Habits
    +
    +
    Every January you do the same thing. You make a New Year's resolution to lose weight, be thriftier, quit smoking or possibly even to start exercising. Yet how many of us find ourselves in the exact spot we started in once the month is up? This talk by Dr Gabija Toleikyte, explains why the brain resists changing habits of a lifetime. She'll also explain how to create long lasting change, by working with your brain rather than against it. Get tickets +
    +
    +
    LDN Talks@Night |Insights of a War Crime Investigator
    +
    +
    What would you say face-to-face to Saddam Hussein? How would you feel digging up the mass graves of Kosovo? Jonathan Tait-Harris will share experiences from his jobs as a policeman, soldier, war-crimes investigator and adviser to UK and Iraqi governments. £10 Get tickets +
    +
    +
    +
    +]]>
    In Photos: St Paul's At Its Besthttp://londonist.com/london/art-and-photography/in-photos-st-paul-s-at-it-s-besthttp://londonist.com/london/art-and-photography/in-photos-st-paul-s-at-it-s-best#commentsSun, 25 Jun 2017 14:00:23 +0100http://londonist.com/?p=e84905bba28eeac43a51 +

    The London skyline sure has changed a lot over the years, but St Paul's has been standing tall over it for many years. While not as tall nor shiny as some of its newer city counterparts, it's an instantly recognisable icon — you can spot this beauty from all over the city.

    +

    +

    + + + + + + + +
    +
    St Paul's Cathedral, 1896
    Source Wikimedia +
    +
    + + + + + +
    + +
    +
    +
    St Paul's during heavy attacks by the German Luftwaffe on 29 December 1940
    Source Theatlantic +
    +
    + +
    +
    Cantilever staircase in the western bell tower, St. Paul’s Cathedral
    Source Fuckitandmovetobritain +
    +
    +
    +
    Views of St Paul's Cathedral
    Source Pinspopulars +
    +
    + +
    +
    St Paul's in 1947
    Source Sir William Davenant +
    +
    + + + + +
    +
    The Millennium Bridge
    Source Richard Eaton +
    +
    + + +
    +
    Explore St Paul's Cathedral
    Source Planetware +
    +
    + + +
    +]]>
    Weird Sculptures Fill The Square Milehttp://londonist.com/london/great-outdoors/weird-sculptures-fill-the-square-milehttp://londonist.com/london/great-outdoors/weird-sculptures-fill-the-square-mile#commentsSat, 24 Jun 2017 15:00:00 +0100http://londonist.com/?p=5a644d77def852b520fb +

    Every summer, a motley collection of sculptures is grafted onto the City of London's pavements. This year's crop for Sculpture in the City is now in place. Head over to Bishopsgate, and the streets around it, to find the following curiosities.

    +
    +
    The plum spot for Sculpture in the City is to hang out here in front of the Gherkin. This year's contribution is from Paul McCarthy and is entitled 'Apple Tree Boy Apple Tree Girl' (the girl figure is not pictured in our shot, to keep things consistent with this year's woeful under-representation of women artists).
    +
    +
    +
    Close by, you'll find the mother of all suspicious packages dangling from a tree. It's meant to be an air-dropped parcel, whose contents are listed on a difficult-to-read plaque beneath the tree. This is the work of Ryan Gander and its deeper meaning is hard to translate from the accompanying artspeak. Something about 'the disparity between research based practices and production based practices'. Right.
    +
    +
    +
    This is The Black Horse, by Mark Wallinger. It is a black horse — nothing more, nothing less. This is the same artist who was supposed to have a 50 metre-tall horse at Ebbsfleet as a notional Angel of the South. That isn't happening, but at least he's got an equine onto this important crossroads in the City. We've walked past a few times now and this one seems to be getting more attention than some of its peers.
    +
    +
    +
    Man in pink shirt: "Hello, security... there's an exploding shed full of light outside my office. What? Art? By Nathaniel Rackowe? Oh. Sorry to trouble you."
    +
    +
    +
    Fernando Casasempere contributes this curious cube to the collection. A mix of building blocks and scrunched up forms are arranged into a white cube, which apparently 'evokes not only geology but the remains of a once-grand ruined structure or even a construction site'. Nah. We're thinking 'roughed-up Santa Claus'.
    +
    +
    +
    Gavin Turk's 'Ajar' is a leftover from last year's bunch. We don't mind its stubborn persistence, as it's one of the more intriguing works. What does it mean to have a door frame standing in open space? Should you walk through it? Why is the handle so low? Is it a portal to another dimension? Who is that man, and is he part of the artwork? What do the pigeons make of it all? Ah, the mysteries of the Universe.
    +
    +
    +
    Karen Tang's Synapsid resembles a triumphant bobsledder with pustulous yellow armpits. In a good way. These two Fenchurch Street workers certainly seem happy enough, eating their lunch beneath the oozing axillae.
    +
    +

    Further works, including a piece by Damien Hirst, will be added to the roll-call over the coming weeks. Head on down to the Square Mile any time in 2017 and early 2018 to view the sculptures. Full information on the Sculpture in the City website.

    +
    +]]>
    Free And Cheap London Events This Week: 26 June - 2 July 2017http://londonist.com/london/things-to-do/free-and-cheap-london-events-this-week-26-jun-2-julyhttp://londonist.com/london/things-to-do/free-and-cheap-london-events-this-week-26-jun-2-july#commentsSat, 24 Jun 2017 13:15:23 +0100http://londonist.com/?p=d55a9b4ae63ffd51be17 +

    All week

    + +

    DOODLEMANIA: What do you get when you take a hotel corridor and a professional doodler? A bloody exciting walkway, that's what. The Doodle corridor at The Exhibitionist Hotel is open to the public for a month as part of the ART CORRIDORS programme. The Exhibitionist Hotel, free, just turn up, all day

    +

    RIVER WEEK: A week long chance to celebrate London's waterways, and all the hard work that goes in to maintaining them. Did you know that over 66 Shards-worth of river has been rewilded? More than 30 free events take place across the week, from canoeing to boat tours. See programme for details, 25 June-2 July

    +

    PRIDE IN LONDON: Pride Festival gets underway this week with loads going on around the capital, including film screenings, exhibitions, tours, talks, sports, museum lates and more, all celebrating LGBT+ culture in the capital. See the full programme here. 24 June-9 July

    +

    LONDON RIVIERA: Dance workshops, mass karaoke, comedy and more are part of this week's free entertainment line-up at the London Riviera, a summer festival next to City Hall. Free, just turn up, until 31 August

    +

    Monday 26 June

    + +

    +

    SHADOW WORLD: This documentary screening reveals how the international trade in weapons fosters corruption, determines foreign policy, undermines democracy and creates suffering. Followed by a Q&A session. The Scout Hut, 106 Cottenham Park Road (Raynes Park), £5, book ahead, 7pm-10pm

    +

    MONDAY BLUES: It might be Monday, but that's no excuse not to kick back and enjoy some live music from talented jazz and soul musician James Junior. Having performed for Royal Family and the England rugby team, you're sure to be entertained. 100 Wardour Street, 8pm-10pm

    +

    Tuesday 27 June

    +

    POETRY EVENING: Poetry slam winner and Glastonbury performer Vanessa Kisuule headlines this poetry evening. Those with something to say can perform their own poetry in a five minute slot — those who don't can simply sit back and take in the words. Love & Dye, free, just turn up, 8pm

    +

    FREE COMEDY: You like laughing, right? And you like free things? Then we're set. Barry Ferns presents a mix of comic favourites performing longer sets for a laugh out loud evening. The Camden Head, free, just turn up, 8pm-10pm

    +

    Wednesday 28 June

    + +

    DNA REPAIR: Spend your lunch hour feeding your curiosity. Geneticist Charlotte Mykura speaks on how the DNA in our cells is broken down tens of thousands of times a day, and how these breaks are repaired to prevent the cells from dying or becoming cancerous. Wellcome Collection, free, just turn up, 1pm-2pm

    +

    PAPYRUS COLLECTION: Take a look at the Petrie Museum's behind the scenes collection of letters, drawings and tales on papyrus. A delicate yet transformative material, find out how this plant based material has been conserved over time. Petrie Museum, free, just turn up, 6pm-8pm

    +

    Thursday 29 June

    + +

    FOOD MONTH: A whole month of food celebrations? Our stomachs are rumbling at the thought of it. Kick off Waterloo Food Month in style at this launch party on Lower Marsh, with live entertainment, demonstrations and free tasting sessions from stallholders including Greenport Kitchen, Sticky Mango and Yo! Sushi. Lower Marsh, free, just turn up, 5pm-9pm

    +

    ACROSS THE CHANNEL: The newly installed UK Ambassador in Paris, Edward Llewellyn — who was David Cameron's former Chief of Staff — will reflect on Anglo-French relations in the first Maurice Fraser Memorial Lecture. LSE, free, just turn up, 6.30pm-8pm

    +

    HYDRAULIC ECONOMY: Explore the background of two famous economists, Walter Newlyn and Bill Phillips and how they built their hydraulic model of the economy, and how it fits in with economic thinking about the macroeconomy. LSE, free, just turn up, 6.30pm-8pm

    +

    MYSTERY MOCKUMENTARY: If you're the sort of person who says 'I wonder what that was?', then this is the show for you. Will Close and Rose Robinson present a live mockumentary adventure investigating monsters, myths and Noel Edmonds. Prepare to be mildly unnerved. Pleasance Theatre, £5, book ahead, 7.45pm-8.45pm

    +

    Friday 30 June

    + +

    JEWISH REFUGEES: To mark Refugee Week, this presentation highlights the plight of thousands of Jewish refugees from Nazi-occupied Europe, as they joined the fight against fascism by joining the British Army. Images, memories and objects help tell their extraordinary tales. National Army Museum, free, book ahead, 11.30am

    +

    REVEAL FESTIVAL: Today is the launch of REVEAL, a free, week long festival celebrating the V&A's 165th anniversary and opening of its brand new Exhibition Road Quarter. Explore the new space through events and activities designed to bring the architecture and collections to life. V&A Museum, free, just turn up, 5pm-10pm

    +

    CAR CANYONS: ...or beautiful boulevards? Need we accept that our major roads will be unpleasant and polluted if that is the price we have to pay for getting around smoothly? Explore whether we can free our streets from the tyranny of traffic, and make them attractive places people want to be in and live on. The Gallery (Cowcross Street), free, book ahead, 5.30pm-8pm

    +

    Saturday 1 July

    + +

    SUMMER TAP: Hang out on the deck at the launch party for Summer Tap Saturdays — enjoy some nosh from a rotating line-up of guests from the street food scene, boogie to some tunes and drink some excellent beer. Sounds like a good combo. The Five Points Brewing Company (Hackney), free, book ahead, 1pm-8pm

    +

    STOCKWELL FESTIVAL: Back after a two-year hiatus, Stockwell Festival brings together an eclectic mix of local street food, crafts and activities. There's no better way to witness the unique creativity, energy and diversity of the local area. Larkhall Park, free, just turn up, 12pm-6pm

    +

    WOMEN IN THE ARMY: 1917 marked the first time that women could join the army outside of nursing roles, and only recently was a ban on combat roles lifted for women. This 30 minute guided tour explored the theme of women in the army. National Army Museum, free, just turn up, 2.30pm

    +

    ART NIGHT: Some of the world's leading artists transform the City with free art, performance and music. Taking place in locations such as the Bascule Chamber at Tower Bridge and the Masonic Temple at Andaz Liverpool Street, it's a great chance to explore London's history, culture and architecture. Various locations around the City of London, free, just turn up, 6pm-6am

    +

    Sunday 2 July

    + +

    SUMMER STREETS: Every Londoner's wish comes true, as Regent Street becomes pedestrianised for a day, in a bid to encourage visitors to relax, unwind and enjoy the fantastic range of entertainment along the street. This year's theme of culture, style, wellness and food and drink promises a bold day out. Regent Street, free, just turn up, all day

    +

    HAMPSTEAD BEACH: The year round popular swimming spot Hampstead is now getting a beach. Golden sand, amazing food and cocktails set the mood for long evenings of sun, fun and holiday vibes at JW3 Jewish Centre. Free, just turn up, 9am-10.30pm

    +

    EID FESTIVAL: As Ramadan comes to a close, everyone is invited to come together in Trafalgar Square for entertainment and attractions for the whole family to enjoy. With a global food festival, live music, arts and crafts and calligraphy, there is no better way to celebrate Eid. Trafalgar Square, free, just turn up, 12pm-6pm

    +

    Funzing

    +

    Fun things to do with our friends and sponsor Funzing.

    +LDN Talks @ Night | The Science of Psychedelics
    +
    +
    Scientific research is resuming on how psychedelics affect the weirder aspects of human consciousness. This talk from Dr David Luke engages in current study into pyschedelics and their historical use in shamanic rituals. Be prepared, you might leave with more questions than answers. Get tickets +
    +
    +
    Talk: Neuroscience of Powerful Habits
    +
    +
    Every January you do the same thing. You make a New Year's resolution to lose weight, be thriftier, quit smoking or possibly even to start exercising. Yet how many of us find ourselves in the exact spot we started in once the month is up? This talk by Dr Gabija Toleikyte, explains why the brain resists changing habits of a lifetime. She'll also explain how to create long lasting change, by working with your brain rather than against it. Get tickets +
    +
    +
    LDN Talks@Night |Insights of a War Crime Investigator
    +
    +
    What would you say face-to-face to Saddam Hussein? How would you feel digging up the mass graves of Kosovo? Jonathan Tait-Harris will share experiences from his jobs as a policeman, soldier, war-crimes investigator and adviser to UK and Iraqi governments. £10 Get tickets +
    +
    +

    +
    +]]>
    In Photos: Tower Bridge, You Beautyhttp://londonist.com/london/art-and-photography/in-photos-tower-bridge-at-its-besthttp://londonist.com/london/art-and-photography/in-photos-tower-bridge-at-its-best#commentsSat, 24 Jun 2017 11:30:20 +0100http://londonist.com/?p=f166671e9cacc2a151b7 +

    Unfortunately for its little cousin, Tower Bridge is so magnificent that people often mistake it for London Bridge. Is it any wonder, though? This is THE London bridge, the biggest and most beautiful of them all...

    +

    +

    +
    +
    Tower Bridge in silhouette
    Source Akamaihd +
    +
    + +
    +
    Tower Bridge
    Source Miriadna +
    +
    + + + + + + +
    +
    Tower Bridge is one of just two Grade I listed bridges over the Thames
    Source Flickriver +
    +
    + + + + + + + + +
    +
    An interesting perspective on Tower Bridge.
    Source Booking +
    +
    + + + + + + +
    +]]>
    Things To Do This Weekend In London: 24-25 June 2017http://londonist.com/london/things-to-do/things-to-do-this-weekend-in-london-24-25-june-2017http://londonist.com/london/things-to-do/things-to-do-this-weekend-in-london-24-25-june-2017#commentsFri, 23 Jun 2017 19:00:00 +0100http://londonist.com/?p=bbd030589d623e5cd48d +

    All weekend

    +
    +
    Catch Me (Attrape Moi) at Underbelly Festival +
    +
    +

    IT'S ALL INSTRUMENTAL: Whether you've never touched an instrument or once put a violin down and forgot to pick it up again, Learn to Play Weekend is offering free music lessons for both adults and children on piano, guitar, violin, trumpet and drums — or try something new on the Yamaha Venova. Yamaha Music Store (Wardour Street), free, just turn up, 24-25 June

    +

    CROYDON HERITAGE: In the run up to the Croydon Heritage Festival , a host of events will get your brains in gear, from archaeological displays to talks on attracting bees to your garden. Hear an introduction to the River Wandle or find out about Croydon's part in gaming history. 16-30 June

    +

    PALACE FESTIVAL:Soak up the atmosphere of this impressive Tudor palace as performers take to the stage in Hampton Court's beautiful open-air courtyard. Highlights include Will Young, Van Morrison, James Morrison and the Royal Philharmonic Orchestra. Hampton Court, various prices, book ahead, 7-24 June

    +

    PRIDE FESTIVAL: The parade may not be for a couple of weeks, but Pride in London events begin this weekend with the official festival launch, film screenings, exhibitions, tours and more. See programme for full details. 24 June-9 July

    +

    UNDERBELLY FESTIVAL: The best in live circus, comedy, cabaret and family entertainment is at South Bank. Have a tipple in one of London's largest outdoor bars before you kick back and watch some of the amazing performances. South Bank, various prices, book ahead,until 30 September

    +

    Saturday 24 June

    + +

    BILINGUAL: If you've always wanted to try learning Spanish, German, Italian or Brazilian-Portuguese but haven't been able to convince yourself to take lessons yet, Lingua Diversa is offering one-hour taster sessions to get you started. Conway Hall (Holborn), £10, book ahead, various times

    +

    EMERGING ARTISTS: Split between the Royal College of Art's two campuses in Battersea and Kensington, emerging contemporary art and design is on show from over 600 postgraduate students. Much of the work will also be on sale or commission, so get yourself a piece of the action before they're famous. Free, just turn up,noon-6pm

    +

    REBEL GARDENING: Did you know you can grow new plants from your supermarket leftovers? Just because you're a city-dweller, doesn't mean you can't get into a spot of gardening. Learn how to create seedbombs and green spaces in this urban gardening session. Museum of London, £25, book ahead, 1.30pm-4pm

    +

    PRESERVING HISTORY: Discover one of the most severely bombed areas of the city in the second world war — from the buildings they tried to rescue, to the ones that have been lovingly restored, and even those that remain as damaged monuments. Moorgate Station, £12, book ahead, 2.30pm-4.30pm

    +

    SERPENTINE PAVILION: This year's Serpentine Pavilion has been revealed, and we love it. Tour round Francis Kéré's bold, innovative structure and see how he brings his characteristic sense of light and life to the lawns of Kensington Gardens. Serpentine Pavilion, free, just turn up, 3pm

    +

    ART AT WAR: Explore the different ways war can be depicted through art, featuring photographs of recent conflicts and a discussion on the challenges of being an artist in a war zone. Royal College of Nursing Library and Heritage Centre, free, book ahead,5.30pm-8pm

    +

    LONDON SWEDES: Sit back and chill out on fluffy bean bags under flower arches at this Midsummer House party, with live music, authentic Swedish food and what every summer party needs - a chocolate fountain. Loft Studios (Kensal Green), £25/£30, book ahead, 5.30pm-3am

    +

    MASKED MAYHEM: Head to Mexico this weekend via York Hall, where legendary and newly-masked wrestling stars battle it out in flamboyant capes and outlandish suits. The Greatest Spectacle of Lucha Libre has everything from high-flying moves to catapulting off ropes. York Hall (Bethnal Green), various prices, book ahead, 7pm

    +

    GAP YEAR COMEDY: Comedian Jordan Brookes brings his Edinburgh Fringe show to Soho as he tells the tales of a gap year gone wrong, with daft faces, uncomfortable poses, and unnecessary confessions. Soho Theatre, £10/£12, book ahead, 9.15pm

    +

    Sunday 25 June

    + +

    DRAGON BOAT: It's a race to the finish line at this year's London Hong Kong Dragon Boat Festival, a fun-filled day out that promises traditional Chinese lion dancing, martial arts displays, Tai Chi, cultural theatrical acts and dance performances, and of course the dragon boat race itself. London Regatta Centre, free, just turn up, 8.30am-6pm

    +

    AMAZING ANTIQUES:Explore the longest running antiques fair in London and find a hidden treasure you just have to have. This particular fair specialises in fine jewellery, silver, ceramics and paintings. The Royal Horticultural Halls and Conference Centre, £4, just turn up, 10am-4.30pm

    +

    LOCAL MARKET: Enjoy a plethora of delicious foods, beautiful handmade goods, unique clothes, and even some pet fashion accessories at East Village Market, accompanied by the pleasing notes of musicians from across London. Victory Park, free, just turn up, 11am-4pm

    +

    VINTAGE SURPRISES: Find a one of a kind treasure at the Big London Flea with over 50 vintage traders in north London's biggest vintage market. From curiosities and collectibles to lost and found objects, you may come across something quite unexpected. EPIC Dalston, free, just turn up, 11am-6pm

    +

    DISMEMBERED:Should we be alarmed at the ideological attack on the state since 2010, by a series of governments to the right of the Thatcher administration? Or were these cuts a pragmatic response to the deficit crisis? Polly Toynbee and David Walker, authors of a book on the topic, discuss. Kings Place, £15-£29.50, book ahead,11.30am

    +

    KEATS HOUSE: Hear the stories of John Keats and his good friend Charles Brown on this tour of the basement and first floor areas of their former home, and discover how it was transformed into the building we know and love today. Keats House, free with admission, just turn up, 11.30am-12.15pm

    +

    SECRET SPIES: Immerse yourself in a world of danger and intrigue as you evade undercover surveillance to carry out a series of missions in the heart of the city. Undercover London will make all your spy career fantasies come true and is sure to keep you on your toes. Have you got what it takes? Secret Venue (Orange Street), £25, book ahead, 1.45pm-4.30pm

    +

    REFLECTING WITH ED: Ed Miliband reflects on his political career and looks ahead to what might happen next. Is there a future for the centre left? How does he explain the current position of the Labour party? Features a Q&A session with the audience. Kings Place, £19.50-£29.50, book ahead, 2pm

    +

    SUPPORT GRENFELL: Join in a West End fundraising gala evening of song, dance and comedy for those made homeless and the relatives of those who lost their lives in the Grenfell Tower fire. Songs of Solidarity stars Jason Manford, Dreamgirls star Tyrone Huntley, Wicked star Rachel Tucker and others. All proceeds will go to the Grenfell Tower Fire fundraiser. Trafalgar Studios, £25-£45, book ahead, 7.30pm

    +

    Good cause for the weekend: Amnesty International UK

    +
    +

    Raising money for Amnesty International UK to help them promote their vision of unity and universal human rights, Ben Oakley Gallery and friends are hosting a special two day show launching an exclusive limited edition print release donated by contemporary artist Guy Denning. There is also a showcase of art throughout the weekend as various artists interpret what unity means to them. Ben Oakley Gallery, free, just turn up, 24-25 June, 11am-6pm

    +

    +

    Funzing

    +

    Fun things to do with our friends and sponsor Funzing.

    +LDN Talks @ Night | The Science of Psychedelics
    +
    +
    Scientific research is resuming on how psychedelics affect the weirder aspects of human consciousness. This talk from Dr David Luke engages in current study into pyschedelics and their historical use in shamanic rituals. Be prepared, you might leave with more questions than answers. Get tickets +
    +
    +
    Talk: Neuroscience of Powerful Habits
    +
    +
    Every January you do the same thing. You make a New Year's resolution to lose weight, be thriftier, quit smoking or possibly even to start exercising. Yet how many of us find ourselves in the exact spot we started in once the month is up? This talk by Dr Gabija Toleikyte, explains why the brain resists changing habits of a lifetime. She'll also explain how to create long lasting change, by working with your brain rather than against it. Get tickets +
    +
    +
    LDN Talks@Night |Insights of a War Crime Investigator
    +
    +
    What would you say face-to-face to Saddam Hussein? How would you feel digging up the mass graves of Kosovo? Jonathan Tait-Harris will share experiences from his jobs as a policeman, soldier, war-crimes investigator and adviser to UK and Iraqi governments. £10 Get tickets +
    +
    +
    +
    +]]>
    What's Our Relationship With Nature? Wellcome Collection Investigateshttp://londonist.com/london/museums-and-galleries/what-s-our-relationship-with-nature-head-to-the-wellcome-collection-to-find-outhttp://londonist.com/london/museums-and-galleries/what-s-our-relationship-with-nature-head-to-the-wellcome-collection-to-find-out#commentsFri, 23 Jun 2017 16:00:00 +0100http://londonist.com/?p=c18e3d202c28002ffac4 +
    +
    How does collecting cars equate with collecting beetles?
    +
    +

    How do we relate to nature? It's a great question to ask to an exhibition audience in the Big Smoke.

    +
    +

    But rather than tell us how we should interact with nature, this exhibition at Wellcome Collection has sourced the stories from Londoners.

    +
    +
    The antler of a Fallow Deer donated by nature presenter Chris Packham.
    +
    +

    The objects in this show were all donated by members of the public. They range from the eye-catching antler of a deer to the rather mundane looking pair of beaten up trainers.

    +
    +
    The story behind these crab coffins is very sad. Image courtesy Wellcome Collection.
    +
    +

    These objects themselves are only one half of the show — each one also has a story behind it that you can read about or listen to as to how these items helped the donating individual connect with nature. Some objects have brought people closer to the natural world, other helped them get over a difficult time in their life.

    +
    +
    A collection of Jersey Kale waking sticks. But what's the story behind it.
    +
    +

    Great stories abound and the tale of two sisters about crab coffins is heartbreaking. It's a moving and deeply personal exhibition, and well worth a visit.

    +

    A Museum of Modern Nature is on at Wellcome Collection until 8 October. Entrance is free.

    +
    +]]>
    What's It Like Inside The Supreme Court?http://londonist.com/london/things-to-do/what-s-it-like-inside-the-supreme-courthttp://londonist.com/london/things-to-do/what-s-it-like-inside-the-supreme-court#commentsFri, 23 Jun 2017 15:00:05 +0100http://londonist.com/?p=514cbe5d1a0df6ae515b +

    London Historians director Mike Paterson visited the Supreme Court.

    +
    +

    Ever been in the Supreme Court? Apart from the airport-style security screening, there's nothing to stop you going in.

    +

    The neo-Gothic style building is newer than it looks, having been built in 1913. Architect: James Gibson. Its original purpose was as the Middlesex Guildhall and as a denizen of Brentford, it’s this aspect which particularly interests me. What many don’t realise — even today — is that Middlesex no longer exists as a legal entity, since it and all its functions were swallowed up by the new Greater London Council in 1965. But in days gone by, all of London north of the Thames and west of the River Lea was Middlesex (hence Middlesex Station — Surrey Station in the Boat Race). The little county was small of size, big of population, a quite relatively powerful entity with a proud history.

    +
    +
    Pendant celebrating the Middlesex Regiment at the Battle of Albuhera (1811) during the Peninsular War.
    +
    +

    In the building there are lots of references to Middlesex history, in particular portraits of local worthies (including two portraits of Hugh Percy, 1st Duke of Northumberland – one by Reynolds, the other by Gainsborough). In the foyer there's a war memorial of the Middlesex Regiment, and in the basement display there are quite a few historical objects from the lamented county’s past. Not forgetting the building’s additional past business as a law court, there are portraits of legal notables too. Very pleasing to see the Blind Beak of Bow Street, John Fielding.

    +
    +

    But all that’s in the past. The Supreme Court was set up in late 2009 to take over the functions previously carried out by the Law Lords in Parliament. This building was chosen because it was still close to the seat of Parliament while giving some separation from the House which was in many senses remote from the public.

    +
    +
    The Library
    +
    +

    Unlike all other courts, cases here are filmed and broadcast live. There are twelve Justices who normally hear and judge cases in panels of five, although seven and nine are occasionally used for more complicated or important cases. The justices do not wear robes or wigs except on ceremonial occasions.

    +
    +
    Court Room 1. Beautiful medieval style carved wood ceiling decor with art nouveau style lanterns.
    +
    +

    From the time of the Act in 2005 to set up the Supreme Court and its actual opening four years later, the building had to be extensively renovated. Eight courtrooms needed to be combined and reduced to three; a quite large library and cafeteria-restaurant were introduced. This was extremely controversial and widely unpopular. Having not seen the “before”, it’s difficult for me to comment, but I would say what we have today is a pleasing blend of the old and the new – this coming from a usually reactionary fuddy-duddy.

    +

    You can visit the Supreme Court any time during its stated opening hours for free. Access to the court rooms will depend on whether the court is in session, so the best time to visit is on a Friday when it is not. If you wish to have a guided tour as group like we did, they charge a very reasonable £5. I’d like to thank our guide, Simon Josiffe, who imparted great knowledge and hospitality.

    +

    This article originally appeared on London Historians. You can become a London Historians member here.

    +
    +]]>
    Vegan Doners Make Triumphant Shoreditch Returnhttp://londonist.com/london/food/vegan-doners-make-triumphant-shoreditch-returnhttp://londonist.com/london/food/vegan-doners-make-triumphant-shoreditch-return#commentsFri, 23 Jun 2017 13:00:00 +0100http://londonist.com/?p=c9d4d2f4a812d30e97c1 +
    +

    Vegans wept protein-deficient tears when street food market The Pump shut a couple of months ago, all for the loss of the incredible What The Pitta.

    +

    Their prayers have been answered, as What The Pitta has reopened just around the corner, in Boxpark. With this new stall they’ve added more to the menu. The doner box with “meat” and chips is an attractive form of vegan carbicide for sure. However, for our money it’s still the kebab wrap that tops the bunch, which is both healthier and tastier.

    +
    +

    What The Pitta, Boxpark Shoreditch, 2-10 Bethnal Green Rd, E1 6GY

    +
    +]]>
    Learn All About London At The Bishopsgate Institutehttp://londonist.com/london/learn-all-about-london-at-the-bishopsgate-institutehttp://londonist.com/london/learn-all-about-london-at-the-bishopsgate-institute#commentsFri, 23 Jun 2017 12:30:06 +0100http://londonist.com/?p=4b45e90692cc58285132 +

    This is a sponsored article on behalf of the Bishopsgate Institute.

    +
    +

    If you're a London obsessive like us, then the upcoming events at the Bishopsgate Institute will be right up your frog and toad.

    +

    There's a new series of talks coming up —London Talks —celebrating the history and diversity of our incredible city. Events cover everything from sexuality to suffrage, the East End and protest history — it's time to satisfy your inner London geek.

    +
    +

    +
    +

    First up is a brief but contentious history of the East End— if you think you know your Shoreditch, then prepare to be surprised.

    +

    This covers some of the East End's best secrets and stories, from criminality and degeneracy, myths and questions, right up to its gentrification — it's on 5 July, and a complete bargain at under a tenner.

    +
    +

    The colourful city is the order of the day for From 'Evil Men' To 'Disco Divas'. The second in the London Talks series will remap queer London from persecution to liberation —the event on 19 July covers basement clubs and the highs of Heaven, focusing on the city between 1950 and the 1980s.

    +
    +

    We bet you never thought that swimming galas would be part of the Votes for Women campaign — London's suffrage movement and popular culture is the topic of conversation on 26 July and features the unlikely activities of Ju Jitsu and rollerskating.

    +
    +

    These London Talks promise to be some fascinating snapshots into what makes our city so great. As well as these, upcoming events at the Bishopsgate Institute look worth checking out.

    +
    +

    Get rebellious on 13 July with We Are Angry, an evening which looks at large scale protests throughout history, starting from the early nineteenth century. Learn about how London coped with the Great Strike in the 1920s as you explore the archive material.

    +

    Rebels are also the subject of the Institute's art night, The Revolution Will Be Photocopied on 1 July, giving you the chance to get the lowdown on London's radical past before creating your own piece of angry artwork.

    +
    +

    The event's open to those who don't fancy being creative too — visitors are welcome to just enjoy a drink and take a look at the exhibitions without getting stuck in with the sticking and gluing.

    +
    +

    There's a lot more to London than meets the eye. Get below the surface of the city and explore some of the more fascinating sides of our glorious capital with these talks, events and the incredible archives the Bishopsgate Institute holds.

    +

    Check out the full schedule at the Bishopsgate Institute here.

    +
    +]]>
    In Photos: The Best Of Rush Hour Crushhttp://londonist.com/london/art-and-photography/the-best-of-the-metro-s-rush-hour-crushhttp://londonist.com/london/art-and-photography/the-best-of-the-metro-s-rush-hour-crush#commentsFri, 23 Jun 2017 12:00:05 +0100http://londonist.com/?p=a221b91e687a62304993 +

    Sometimes a long tube journey can leave you staring longingly into the eyes of a fellow commuter. Here are some of our favourite submissions to Metro's Rush Hour Crush section. We wonder if any of these couples have gone the distance?

    +

    +

    + + +
    +
    Rush Hour Crush in the Clapham Common Metro
    Source Nao93x +
    +
    + + + + + +
    +
    Flatulent guy in a tank top
    Source Buzzfeed +
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    +]]>
    Tuck Into Glorious Grub At London's 'Gastronomic Glastonbury'http://londonist.com/london/glorious-grub-at-these-london-food-festivalshttp://londonist.com/london/glorious-grub-at-these-london-food-festivals#commentsFri, 23 Jun 2017 11:30:00 +0100http://londonist.com/?p=d09d4ca67942dedfda8b +

    This is a sponsored article on behalf of Foodies Festival.

    +
    +

    Discover foodie heaven at Foodies Festival Festival this summer. Live demonstrations from world-class Michelin Star and celebrity chefs, flavours of the world from London’s best street food and prosecco trucks, award-winning produce at the artisan markets and London's best unsigned bands on the Live Music Stage. There will also be masterclasses including everything from healthy gin cocktails to craft beer and cheese pairing or afternoon tea and gin jam.

    +
    +

    Foodies Festival is the UK’s favourite celebration of food, drink and wellbeing, and is popping up on Blackheath (7-9 July) and Alexandra Palace (26-28 August) for the Bank Holiday Weekend. Take home recipe tips from big names like Great British Bake Off Winner Candice Brown, food blogger and Healthy Eating sensation Deliciously Ella, top TV chefs Rosemary Shrager of The Big Family Cooking Showdown and Matt Tebutt ofSaturday Kitchen. Take home recipes from twice Michelin starred Atul Kochhar and Adam Simmonds, Masterchef Winner 2017 Saliha Mahmood-Ahmed and runner-up East London local Steve Kielty.

    +
    +
    +

    There'll be plenty of workshops so you can try your hand at some recipes yourself — whether you fancy a cocktail class or a lesson on Psychedelic Pavlovas, there are lots of opportunities to up your cookery game.

    +
    +

    If you've got a sweet tooth, head to the Cakes and Desserts Theatre for demos from top pastry chefs, before heading to the Chocolate, Cake and Dessert Village for workshops like cake decorating.

    +

    Of course you'll have to make rooms for the all-important tasting of artisan breads, innovative bakes and buttery pastries — be sure to get your hands on some melt in the mouth churros too.

    +

    Elsewhere, The Healthy Living Zone is all about healthy cooking and exercise. Get your questions answered by Deliciously Ella before hitting a yoga class and stocking up on products from the market.

    +
    +

    Of course it wouldn't be a festival without some music, and Foodies has that covered. Dance to live music with a glass of Pimms in hand and work up an appetite for even more eating.

    +

    Kids are taken care of too, with dedicated children's cookery classes as well as crafts, giant Jenga and bouncy castles to keep them entertained.

    +
    +

    You might want to go to the many drinks-centred activities without the littl'uns though — there'll be mixologists and sommeliers, whisky and champagne tastings at the Drinks Theatre. There's A Beer For That will also be doing craft ale and food pairings, which could get slightly messy.

    +
    +

    Street Food Avenue will be offering all sorts of global cuisine, and the Artisan Producer's Market will show off fabulous ingredients and products that you can take home. Feeling brave? There's even a bug eating competition for the strong-stomached.

    +

    Both Foodies Festivals are bound to be a great day out — check out the line up. We suggest you get booking — at the moment you can get 2-for-1 tickets plus a goodie bag if you enter FOOD2FOR1 at the checkout.

    +

    Foodies Festival takes place at Blackheath 7-9 July and Alexandra Palace 26-28 August (Bank Holiday Weekend).

    +
    +]]>
    11 Apps To Solve Your London Problemshttp://londonist.com/london/technology/11-must-have-apps-for-londonershttp://londonist.com/london/technology/11-must-have-apps-for-londoners#commentsFri, 23 Jun 2017 11:00:00 +0100http://londonist.com/?p=f718bf329415613a7883 +

    Living in London is great, but it has its problems, right?

    +

    Nothing that an app can't fix. We've found a solution to every problem — from apps that can help you find something to do, to those that can help you get there, and even those which will keep you entertained on the way.

    +

    1. The times that you get lost...

    +

    You've lived here a while now, and you're probably quite impressed with your navigation skills. You can remember every stop of the 343 bus to New Cross and you always know which exit to take at Bank tube. But admit it — you still get lost sometimes, don't you?

    +
    +

    If you've not already cottoned onto City Mapper, where've you been? It helps you navigate the city by just about any mode of transport possible, helping you find the fastest, cheapest and easiest route across town. Live train times, Uber integration and cycle docking station information means you'll never be caught short again. It even tells you where to sit (or let's be honest, stand) on the tube so you can make a swift exit at your destination. Nifty, that.

    +

    CityMapper is available on iOS free / Android free

    +

    2. The times you're wondering if your bus will ever turn up...

    +

    Sometimes you'll find yourself waiting for a bus at a stop without one of those handy little countdown displays. Disaster, right? You'll probably be here all night, and you find yourself doubting whether the route you need even exists anymore.

    +

    Not with this app you won't.

    +
    +

    London Bus Live Countdown plugs directly into live TfL data to give you minute by minute progress updates of your bus. You'll know exactly when it's due to turn up, and can even keep tabs on all the other services due at your stop, in case you need to change route. What's more, the pensioner waiting next to you will be dead impressed when you're able to tell them that their bus will be here in four minutes time. You do-gooder, you.

    +

    London Bus Live Countdown is available on iOS free / Android free

    +

    3. The times when your lunchtime spending is getting out of control...

    +

    Ah, lunchtime. A chance to escape the humdrum of the office and grab a bite to eat. You used to bring in a cheese sandwich and can of Coke from home, but that soon fizzled out when you discovered the delights of London's lunchtime scene. Now you're on an acai bowl a day, and the nearest you get to a cheese sandwich is a grilled halloumi pita from the Cypriot pop-up down the road. You're exotic now.

    +

    But your bank account is hurting.

    +
    +

    Monzo helps you keep track of your extravagant spending with a handy app and a delightful coral pink card. It's a bank built from the ground up for the smashed avocado generation — gone are the days of only finding out how lax you are with your finances when you take a look at your bank statement. Instead, live notifications keep you up to date with your spending habits, and there's even a handy budgeting feature so you can try to restrict your spending.

    +

    Monzo is available on iOS free / Android free

    +

    4. The times when your inner tube nerd lets you down...

    +

    As a Londoner, you know that the tube lies sometimes. That explains the smug look on your face when you disobey the signs and take a cheeky shortcut to get to your train a little quicker (King's Cross, we're looking at you). But there are also times when your inner nerd lets you down and you find yourself wondering whether that pesky 'Way Out' sign has led you the long way round...

    +

    Wonder no more.

    +
    +

    StationMaster equips you with a handy 3D map of every station on the network, allowing you to ditch the signs and forge your own route through the tunnels. It even features a guide on the best door to exit both the station and your train by. You'll be out of there in no time now you're privy to all the shortcuts.

    +

    StationMaster is available on iOS £3.99

    +

    5. The times when you have no idea what to do tonight...

    +

    You've done London to death, and can tick off pretty much every major attraction as 'been there, done that'. You were even forced to go to M&M's World once, for lack of anything better to do. Is your love affair with the greatest city on earth over?

    +

    Hold on a minute.

    +
    +

    YPlan helps you discover last minute events and things to do, no planning required. Just open the app and you'll be presented with a list of weird and wonderful goings-on in the city, all ready for you to book in as little as two taps. Suddenly a whole 'nother side to the city opens up — you'd never have guessed so much was going on right on your doorstep.

    +

    YPlan is available on iOS free / Android free

    +

    6. The times when you can't afford to go for a drink...

    +

    London is expensive. You love a good night out, but there's only so many times you can face waking up the next day, checking your bank account, and realising you were sinking £10 drinks all night. Thinking that perhaps it's time that you called time on your weekend drinking habit, you politely decline an invite to another raucous night out with your mates...

    +

    But what if there were free drinks?

    +
    +

    Drinki have partnered with a whole host of London bars and nightclubs to offer you a free drink in each. It even features a handy map of participating bars, so you're free to hop between them and make the most of all the offers. What's more, the more friends you invite to the app, the more free drinks you get. You might just be on your way to the cheapest London night out you've ever had. Cheers!

    +

    Drinki is available on iOS free / Android free

    +

    7. The times when you need something to do on your commute...

    +

    As a Londoner, you're probably used to spending a lot of time on trains. But what are you meant to do when you're stuck on a delayed train, having exhausted your Spotify playlist and read the Evening Standard cover to cover? You could just sit and curse TfL for being unable to run an efficient public transport network...

    +

    Or you could try and run your own.

    +
    +

    Mini Metro is a game of strategy that sees you run your own busy transit system by linking stations, directing trains and upgrading lines. With no two games playing alike, you'll probably get sucked in to spending many hours of your commute building the perfect commute. This is definitely one for all those who reckon they could do the whole train thing better than TfL. You think it's so easy, do you? We'll see about that.

    +

    Mini Metro is available on iOS £4.99 / Android £4.29

    +

    8. The times when TfL lets you down...

    +

    That said, we're not saying that TfL are perfect. There are, of course, times when you'll find yourself stranded without means to get home. Cancellations, delays and spotty network coverage all mean that sometimes you need to make alternative travel arrangements... unless of course, it was just your inability to read a Night Tube map (FYI, the Charing Cross branch of the Northern line does not run all hours...).

    +

    Uber has your back.

    +
    +

    You probably have this app already, but it wouldn't be a list of top London apps without it. Now a familiar part of the London lexicon, many of us are already 'Ubering' across the city. You can request a car at the press of a button and track the location of your driver, and there's no need to carry cash either — you pay via the app. Result.

    +

    Uber is available on iOS free / Android free

    +

    9. The times when you can't be bothered to get out of bed...

    +

    As a Londoner, you really enjoy getting out and sampling the delights of the city. But there are times when you're hungover stuck in bed, and you can't really face the prospect of trekking to your favourite eatery. If only *insert venue here* delivered, we hear you cry.

    +

    Well now they do.

    +
    +

    Quiqup promises to shop, pickup and drop pretty much anything you can think of in central London. Why drag yourself to your favourite takeaway when you can drag your favourite takeaway to you? Of course, it's not just food — you might just want to get some last minute makeup delivered before a big night out. The live courier tracking on the app means you'll be sure it'll all arrive in time.

    +

    Quiqup is available on iOS free / Android free

    +

    10. The times when you still can't get that table reservation...

    +

    London is a culinary capital, and with so many great restaurants to choose from, it's difficult to decide where to tantalise your tastebuds next. But deciding is only half the challenge — actually securing a table is the other. You've been caught short on a Friday night too many times, venturing into town to find that everyone had a reservation but you.

    +

    Now you can be the organised one.

    +
    +

    Opentable helps you find and reserve tables at nearby restaurants, and the convenient cuisine categorisation makes it even easier to find what you're looking for. However, this is more than just a simple table booking app — there's special offers and a points system too, which you can exchange for vouchers. You'll be hard pressed to pay full price for a meal again, and you'll always have a seat too. Perfect.

    +

    Opentable is available on iOS free / Android free

    +

    11. The times when the air doesn't seem too fresh...

    +

    Some days, you find yourself wondering whether breathing the city air is doing you any good. Unfortunately, poor quality air is a major problem in London, and while there are efforts to mitigate the fumes, most would argue they do not go far enough.

    +

    Get yourself clued up.

    +
    +

    Plume is a pollution monitor, allowing you to schedule your activities according to pollution levels. Is it the best time to go for a run? Should you go for a walk in the park with your children? Handy notifications keep you in the loop, and let you know the best time to get out and about.

    +

    Plume is available for iOS free / Android free

    +

    Are there any other London problems you've fixed with an app? Let us know in the comments...

    +
    +]]>
    London's Transport Gets A Rainbow Makeover For Pridehttp://londonist.com/london/transport/london-s-transport-gets-a-rainbow-makeover-for-pridehttp://londonist.com/london/transport/london-s-transport-gets-a-rainbow-makeover-for-pride#commentsFri, 23 Jun 2017 10:22:15 +0100http://londonist.com/?p=3d36f0867e8a2ac0d1dd +
    +

    Things are getting colourful at tube stations and cycle hire stations in central London, thanks to a makeover for Pride festival.

    +

    The regular roundels on platforms at Tottenham Court Road, Oxford Circus and Piccadilly Circus have been replaced with psychedelic counterparts, created especially to celebrate and show support for the LGBT+ community ahead of Pride in London.

    +
    +

    The exterior of Tottenham Court Road has been wrapped with the Pride hashtag, #LoveIsLove. Elsewhere, 50 hire bikes now sport rainbow livery on their rear mudguards.

    +
    +

    On the day of the Pride parade, bus stops in central London will be adorned with rainbow flags. Two bus stops in the Charing Cross area will remain permanently rainbowed.

    +

    In previous years, TfL has released rainbow-wrapped vehicles onto London's streets, including a bus, black taxi and DLR train, as well as installing the 'diversity traffic lights' around Trafalgar Square.

    +
    +

    Sadiq Khan, Mayor of London, said:

    +

    Here in London, you’re free to love whoever you want to love and be whoever you want to be. That’s just one of the reasons why our city is seen as a beacon for the LGBT+ community and has such a vibrant, thriving scene – one that is bursting with colour, and contributes hugely to the life and soul of London.

    +

    Pride in London takes place 24 June-9 July 2017, with the Pride in London Parade on Saturday 8 July.

    +
    +]]>
    Which London Animal Are You?http://londonist.com/london/great-outdoors/which-london-animal-are-youhttp://londonist.com/london/great-outdoors/which-london-animal-are-you#commentsFri, 23 Jun 2017 10:00:05 +0100http://londonist.com/?p=fd3e0e748b17b2189ca3 +
    +
    Click or tap for higher resolution.
    +
    +

    Work your way through our flow chart to discover which London animal you most resemble.

    +
    +]]>
    Things To Do Today In London: Friday 23 June 2017http://londonist.com/london/things-to-do/things-to-do-today-in-london-friday-23-june-2017http://londonist.com/london/things-to-do/things-to-do-today-in-london-friday-23-june-2017#commentsThu, 22 Jun 2017 19:00:18 +0100http://londonist.com/?p=291bdc5aa5635c06e248 +
    +
    London Zoo is open late tonight (c) ZSL London Zoo
    +
    +

    What we're reading

    + +

    Things to do

    +

    UNDER THE TRACKS: Photographer Ted Kinsey has been photographing London's many railway arches for years, not because of their architecture, but for what occupies them. From cinemas, to swimming pools, churches and even an aerial trapeze gym, witness a photographic record of the arches as they are today. The Underdog Gallery (London Bridge), free, just turn up, 23-25 June

    +

    CATHEDRAL OF THE PINES: For the first time, The Photographers' Gallery has devoted all three gallery spaces to one artist. Cathedral of the Pines exhibits Gregory Crewdson's exploration of human relations with natural environments. The Photographers' Gallery, free until noon, £4 thereafter, just turn up, until 8 October

    +

    COOKIE DOUGH: We walk past this one of a kind pop-up on the way home from work, and it's hard not to get drawn in. Today is your last chance to get your hands on some edible cookie dough, and with flavours like Unicorn Food and Nutting Better — you'll regret it if you don't. Old Street station, just turn up, 8am-8pm

    +

    DESIGN CAPITAL: We live in a global capital of built environment expertise, with an architecture sector alone recently valued at £1.7bn. As we negotiate our exit from the EU, a panel discusses how we can protect our legacy and ensure our continued global status. New London Architecture, free, book ahead, 8.30am-9.30am

    +
    +
    +Life under the arches. Image copyright Ted Kinsey.
    +
    +
    +

    STREET GYM: Join this free physical urban adventure as you exercise up against architectural features, gradients and street furniture. You might never see the city in the same way again. Bulthaup (Clerkenwell Road), free, book ahead, 12.30pm-1.15pm

    +

    MIDSUMMER FEST: Celebrate Midsummer's Eve at Aquavit in St James's Market. Live music, pop-up bar, food stands; all your favourite London festival entertainment in one place for a magical evening — as long as Puck doesn't turn up to cause mischief. Aquavit, free, book ahead, 5pm-10pm

    +

    ZOO NIGHTS: It's adults only as London Zoo stays open late for an evening of entertainment, and a chance to see the animals as you wouldn't normally. At dusk, they're more lively than in the daytime. Once they're in bed, take part in quizzes and games, or tuck into dinner at the street food market. ZSL London Zoo (Regent's Park), £17.50, book ahead, 6pm-10pm

    +
    +
    +
    +

    SIXTY MINUTES: Tables turn on veteran political commentator Andrew Marr, as this time he's the one being asked the tough questions. With a string of high profile roles at the BBC, The Economist and The Independent, he's certainly one to learn from. China Exchange, £10, book ahead, 6.30pm-7.30pm

    +

    MR SPEAKER: The Speaker of the Commons, John Bercow, joins political commentator Steve Richards for a conversation about his political career. Why did he choose to be a Speaker rather than pursue a party political career? How much further does the Commons need to modernise? There will also be a chance to put your own questions to Bercow. Kings Place, £14.50-£29.50, book ahead, 7pm

    +
    +

    LUCHA LIBRE: Iconic masked wrestling superheroes battle it out in this acrobatic, mythical, and often dangerous world of Mexican wrestling. Prepare to be transported from York Hall to a Mexican arena, and witness spectacular high-flying manoeuvres from this stellar lineup. York Hall, from £20, book ahead, 7pm

    +
    +

    WOMEN IN POLITICS: The UK just elected a record number of female MPs to the House of Commons. Harriet Harman talks to Kirsty Lang about how the role of women in politics is changing, and what the future holds for Jeremy Corbyn's Labour Party. Kings Place, £15, book ahead, 9.30pm

    +

    Art review: vivid photography

    +
    +
    Image courtesy Annka Kultys gallery.
    +
    +

    Fluorescent lights, escalators in Vegas, a flower in a puddle. All glow in bright neon colours in a photography exhibition designed for the Instagram generation. Beauty is found in consumerism and its byproducts. Signe Pierce: Faux Realities at Annka Kultys, 472 Hackney Road, E2 9EQ. Until 1 July, free. ★★★★☆ (Wednesday-Saturday)

    +

    Food review: summer, Jamaican-style

    +
    +

    If it’s summer vibes you’re after, Jamaican burger shack Boom Burger is serving them up by the bucketload. The menu is small — burgers, salads, wings and fries — but these guys specialise in what they know. One bite of the Bacon Boom will have you craving that tangy melted cheese for weeks on end. The jerk sauce on the Boom Wings caters towards the tamer end of the market, and those looking for something a little spicier may be disappointed, but the sweet, fruity rum cocktails more than make up for it. Sitting proudly right under the Westway, this place gets busy on weekdays — we can only imagine what it’s like at weekends. Boom Burger, 272 Portobello Road, Notting Hill, W10 5TY ★★★☆☆ Laura Reynolds

    +

    Theatre review: on a hot summer night

    +
    +
    Copyright Specular
    +
    +

    Where better to get your teeth into operatic rock than the London Coliseum, home of the ENO? Jim Steinman was the genius behind many of Meat Loaf’s greatest hits and this jukebox musical showcases much of their finest work together, not least I’d Do Anything For Love, Dead Ringer For Love, Two Out Of Three Ain’t Bad and the foot-stomping title track. The storyline is micro-thin; some of the scenes and songs are pure filler and the acting is extremely over the top, but the singing is thrilling and there’s a superb set design which makes great use of one of the largest indoor stages around. Ultimately, it all comes down to the songs and, over the three hour running time, those with a deep love for 1980s soft rock will be in seventh heaven here. Bat Out Of Hell The Musical. The Coliseum, St. Martin's Lane, WC2. £15-£275. Until 22 August. ★★★★☆ FM

    +

    Good cause for the day

    +

    BUSH HALL DOES GLASTO: Those of us without tickets to Glastonbury can stop wallowing, as the fields of Dairy Ground and the artists of The Other Stage come to this sunny west London terrace, complete with cold drinks and burgers. In light of the recent Grenfell Tower tragedy, there will also be a fundraiser for the victims. Bush Hall, £3/£5, book ahead, 5pm-1am

    +

    +

    Funzing

    +

    Fun things to do with our friends and sponsor Funzing.

    +LDN Talks @ Night | The Science of Psychedelics
    +
    +
    Scientific research is resuming on how psychedelics affect the weirder aspects of human consciousness. This talk from Dr David Luke engages in current study into pyschedelics and their historical use in shamanic rituals. Be prepared, you might leave with more questions than answers. Get tickets +
    +
    +
    Talk: Neuroscience of Powerful Habits
    +
    +
    Every January you do the same thing. You make a New Year's resolution to lose weight, be thriftier, quit smoking or possibly even to start exercising. Yet how many of us find ourselves in the exact spot we started in once the month is up? This talk by Dr Gabija Toleikyte, explains why the brain resists changing habits of a lifetime. She'll also explain how to create long lasting change, by working with your brain rather than against it. Get tickets +
    +
    +
    LDN Talks@Night |Insights of a War Crime Investigator
    +
    +
    What would you say face-to-face to Saddam Hussein? How would you feel digging up the mass graves of Kosovo? Jonathan Tait-Harris will share experiences from his jobs as a policeman, soldier, war-crimes investigator and adviser to UK and Iraqi governments. £10 Get tickets +
    +
    +
    +
    +]]>
    Thermal Images Show Just How Hot The Tube Got Yesterdayhttp://londonist.com/london/transport/thermal-images-of-the-tube-in-the-heatwavehttp://londonist.com/london/transport/thermal-images-of-the-tube-in-the-heatwave#commentsThu, 22 Jun 2017 16:16:16 +0100http://londonist.com/?p=4a70f0de84bc93091868 +
    +

    If you thought the tube was hot in yesterday's heatwave, here are the photos to prove it. They're thermal images of the tube, taken on 21 June, the hottest day day of the year so far.

    +

    The images were taken on a Cat S60 smartphone and show a train pulling into Bank station, where the temperature reached 36.5ºc on the tracks.

    +
    +

    If you thought that was hot, it reached 42.3ºc inside the tube carriage — which won't come as any sort of a surprise to you if, like us, you were on the Central line between 5 and 6pm on the hottest day of the year.

    +
    +

    Unfortunately, there aren't any thermal images on a regular, non-heatwave day to compare them to, but rest assured that while you were sweltering in a tin can 20m below ground, pretty pictures were being created.

    +
    +]]>
    In Photos: London's Ever Changing Skylinehttp://londonist.com/london/art-and-photography/in-photos-london-s-ever-changing-skylinehttp://londonist.com/london/art-and-photography/in-photos-london-s-ever-changing-skyline#commentsThu, 22 Jun 2017 16:00:09 +0100http://londonist.com/?p=2d64424b410c48756b86 +

    It seems like every time you look up there's a new building battling for attention on London's skyline, and the plethora of cranes signal that this trend certainly isn't slowing. We've gathered some of our favourite pictures of the skyline through time — it's good to see some old favourites still standing their ground alongside the modern giants.

    +

    +

    + +
    +
    London Bridge 1554-7
    Source Londoninsight +
    +
    + +
    +
    Buck - Westminster, 1774
    Source Londoninsight +
    +
    + +
    +
    Monet - Thames at Westminster, 1871
    Source Londoninsight +
    +
    +
    +
    View from Telegraph Hill
    Source Fedeuk +
    +
    + + + +
    +
    Monet - Houses of Parliament, Sunset, 1902
    Source Londoninsight +
    +
    + +
    +
    Victoria Embankment
    Source Londoninsight +
    +
    +
    +
    Tower Bridge, c 1900, shortly after the bridge's completion
    Source Londoninsight +
    +
    + +
    +
    Hoefnagel - Fete at Bermondsey, 1569
    Source Londoninsight +
    +
    + +
    +
    Construction of Tower Bridge, 1892
    Source Londoninsight +
    +
    +
    +
    Canary Wharf skyline from the Orbit
    Source Fedeuk +
    +
    +
    +
    Merian - Before the Great Fire of London, 1650
    Source Londoninsight +
    +
    + + + + +
    +
    Thames Embankment construction, 1865
    Source Londoninsight +
    +
    +
    +
    Henry Dawson, 1877
    Source Londoninsight +
    +
    + + +
    +
    Vesscher, Central London, 1616
    Source Londoninsight +
    +
    + + + +

    +
    +]]>
    Vibrant Watercolours From Around The World In Dulwichhttp://londonist.com/london/art-and-photography/fresh-and-vibrant-watercolours-in-dulwichhttp://londonist.com/london/art-and-photography/fresh-and-vibrant-watercolours-in-dulwich#commentsThu, 22 Jun 2017 15:00:00 +0100http://londonist.com/?p=da8ff1c4325247d45f32 +
    +
    The church of Santa Maria della Salute in Venice. © Calouste Gulbenkian Foundation, Lisbon. Photo: Catarina Gomes Ferreira
    +
    +

    A Venetian palace gleams as the sun reflects off its white walls. Look down at the beautiful blue water lapping at the building's edge, and then up again to the grimy mossy walls where the two meet. The colours are so vivid that it makes us wish we really were in Venice.

    +
    +

    Anglo-American painter John Singer Sargent is best known as a portrait painter, capturing the who's who of his time. In truth we're rather apathethic towards his portraiture as it's more celeb spotting than a true appreciation of painting.

    +
    +
    A vivid image of a Turkish woman by a stream. © Victoria and Albert Museum, London
    +
    +

    This exhibition at Dulwich Picture Gallery looks at his watercolours, where he painted everything from the dusky colours of the dead sea to bright blue skies and water in Majorca, dissected by the sun-bleached white of some sailboats.

    +

    It's great to see a freer side to Sargent, less concerned with commissions and capturing likeness, and more about expressive brushstrokes and opting for colour over accuracy.

    +
    +
    The greens are just as captivating as the blues. Courtesy Aberdeen Art Gallery & Museums Collections
    +
    +

    His landscapes are breathtaking and his animals surreal. The final room of portraiture is where this exhibition unravels a little, as the loose style and lack of detail simply doesn't suit portraiture. Thankfully the landscapes dominate the show and that's what visitors should spend the most time on as they are superb.

    +

    This is an aspect of the artist's portfolio we weren't familiar with, and we're glad to see this sparkling sumptuous side to Sargent.

    +
    +
    Sargent captures how Spanish sunlight is different to Venetian.
    +
    +

    Sargent: The Watercolours at Dulwich Picture Gallery is on until 8 October. Tickets are £15.50 for adults, concessions available.

    +

    Visitors should also visit the gallery's brilliant new pavilion.

    +
    +]]>
    Food Review: A Dose Of Sunshine In Southwarkhttp://londonist.com/london/food/food-review-a-dose-of-sunshine-in-southwarkhttp://londonist.com/london/food/food-review-a-dose-of-sunshine-in-southwark#commentsThu, 22 Jun 2017 14:00:09 +0100http://londonist.com/?p=0749626a68472168326f +
    +

    Flat Iron Square just keeps getting better. Already an incubator for box-fresh streetfood businesses, the clump of railway arches and covered market are now attracting seriously good, permanent restaurants.

    +

    Among them, Lupins. Serving up small plates of what they call 'sunshine food', the snacks alone would be worth a visit: white bean and lemon crostini, and croquetas stuffed with ricotta and chilli, drizzled with honey. And that's just a precursor to a series of faultless dishes, bright with summery flavours. British and Mediterranean elements jostle to rich, lovely effect in the hake and 'nduja risotto, and the crab thermidor scattered with radish shavings is easily the best we've found in London.

    +

    Lupins: less take-a-chance-on-this-newcomer than grab-any-chance-you-get.

    +
    +

    Lupins, 66 Union Street, SE1 1SG. Open for lunch and dinner Tuesday to Saturday, and just lunch Sunday to Monday

    +
    +]]>
    The Five Best South London Novelshttp://londonist.com/london/books-and-poetry/the-five-best-south-london-novelshttp://londonist.com/london/books-and-poetry/the-five-best-south-london-novels#commentsThu, 22 Jun 2017 12:00:00 +0100http://londonist.com/?p=ef60513c9f947099c576 +
    +
    Photo: John Kortland +
    +
    +

    What is London? I don’t know. I don’t believe anyone does. That’s why it makes such an exciting place to visit in both life and in writing. But besides the bulk of well-known novels set in Soho and Westminster and Islington and Hampstead, there are a significant minority of great London novels set south of the river.

    +

    My novel, All The Good Things, is mostly set there; I cannot imagine it happening anywhere else. The protagonist is a young woman with no family support and little idea of who or what she is; being part of the shambolic crush that is daily life on, say, the 333 bus, helps her to feel that it is ok to be an outsider. When she goes running through her local park, she sees not strangers, but a range of possible ways to live.

    +
    +
    All The Good Things explores daily life in south London. Photo: Bob Lear +
    +
    +

    1. The Walworth Beauty by Michele Roberts

    +

    The connections between south London past and present are subtly teased out by this dual narrative novel, which is set between 2011 and 1851. The contemporary narrative follows an older woman, Madeleine, who relocates to Walworth from the City after losing her job. There she makes new and unorthodox connections, both with the present inhabitants of her street and with the distant echoes of the past.

    +
    +
    Walworth, setting off The Walworth Beauty. Photo: Chris Guy +
    +
    +

    The Victorian narrative follows Joseph Benson, who must contribute to Henry Mayhew’s research into the living conditions of the poor by interviewing Walworth prostitutes. Both Joseph and Madeleines' lives are overturned by their encounters with the area; the two narratives twist and turn around one another, never neatly aligning as they might in the work of a lesser writer. Roberts’ prose is unbelievably sensuous; you can almost eat it. A wonderful exploration of the different sorts of connections and identities that can be forged in a big city, and the ways in which the present and past interact.

    +

    2. The Lonely Londoners by Sam Selvon

    +

    One grim winter evening, when it had a kind of unrealness about London, with a fog sleeping restlessly over the city and the lights showing in the blur as if it is not London at all but some strange place on another planet, Moses Aloetta hop on a number 46 bus…

    +

    So begins the novel that perhaps best captures the genesis of what we now think of as London. We follow a young West Indian immigrant, Moses, and his friends, as they make their lives in the city. It’s not, strictly speaking, a south London novel; it hops back and forth across the river, much like Moses, on his way to and from Waterloo. The London of this novel is messy, at turns kind, cruel, welcoming, rude; life for the newcomer is a constant recalibration of reality and dream. Written in a poetic, patois-infused prose, it is both funny and poignant, capturing both a specific moment in the city’s history and the feelings of love, hope, despair, and, of course, loneliness, that will be familiar to anyone who’s ever moved to a new and unknown place.

    +

    3. The Colour of Memory by Geoff Dyer

    +

    If you’ve never encountered Dyer’s writing, there’s a chance you'll be put off by the premise of this novel: a bunch of semi-destitute twenty-somethings bum around 1980s Brixton, listening to jazz, getting drunk and stoned and laid and lost. Reading about such a lifestyle in the contemporary climate, it’s hard not to get irritated; these lay-about bohemians wouldn’t last five minutes in a Job Centre, while their council flat is probably now on sale for half a million pounds. But — and if you’ve read his work you’ll know this — Dyer writes so well about people doing so little that you don’t mind. This is a vivid and humorous snapshot of a disappeared way of life and an exploration of sex, love, art and identity.

    +

    4. Serious Sweet by A.L. Kennedy

    +
    +
    Telegraph Hill features in Serious Sweet. Photo: Ben Brown +
    +
    +

    This novel contains some of the most astute and moving observations of urban life that I’ve read in recent years. Set over a single day, it is an unconventional love story between Jon, a recently-divorced civil servant who hates his job, and Meg, a bankrupt accountant and ex-alcoholic. The narrative meanders from past to present and back again, from one side of the river to the other, with some rapturous descriptions of the view from Telegraph Hill. Kennedy’s skilful unfolding of each character’s self and history are interspersed with short, snappy descriptions of seemingly irrelevant scenes; a family on a tube train, a stranger leaving a cafe. Slowly, the meaning and significance of these sections become clear; the central character is perhaps the city itself, which, in providing us with so many small windows of observation into strangers’ lives, can change us in big ways.

    +

    5. Up the Junction by Nell Dunn

    +

    Like Lonely Londoners, this book provides an insight into post-war London rather different from the nostalgic swinging sixties programmes and popular histories with which you will no doubt be familiar. Nell Dunn was an upper class woman who, as a young mother, went to live in working class Battersea. She worked in local factories and made friends with other young women. The result is a book of linked short stories where fiction, memoir and reportage are playfully merged; reading them is like sitting down for a long, riotous drink with close friends.

    +

    Clare Fisher’s debut novel All the Good Things is published by Viking. Clare will be speaking alongside Michele Roberts at the Review Bookshop, Peckham on 6 July, 7pm.

    +
    +]]>
    \ No newline at end of file diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_morningpaper.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_morningpaper.xml new file mode 100644 index 0000000..857571e --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_morningpaper.xml @@ -0,0 +1,1265 @@ + + + + the morning paper + + https://blog.acolyer.org + an interesting/influential/important paper from the world of CS every weekday morning, as selected by Adrian Colyer + Tue, 07 Mar 2017 16:53:21 +0000 + en + hourly + 1 + http://wordpress.com/ + + + https://secure.gravatar.com/blavatar/09326a066a08237015d6b84f026d36ae?s=96&d=https%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png + the morning paper + https://blog.acolyer.org + + + diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_nixers_newsletter.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_nixers_newsletter.xml new file mode 100644 index 0000000..bcfe58f --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_nixers_newsletter.xml @@ -0,0 +1,16308 @@ + + + +Nixers Newsletter +https://newsletter.nixers.net/ +The nixers.net newsletter + nixersnewsletter + https://newsletter.nixers.net/entries.php#111 + 2019-01-25 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Vermaden Valuable News

    + +

    UNIX

    + + + +

    Hardware

    + + + +

    Life & Other

    + + + +
    https://vermaden.wordpress.com/
    +
    + +

    Thoughts

    + +
    +

    Plans are worthless, but planning is everything.

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#110 + 2019-01-18 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Vermaden Valuable News

    + +

    UNIX

    + + + +

    Hardware

    + + + +

    Life & Other

    + + + +
    https://vermaden.wordpress.com/
    +
    + +

    Thoughts

    + +

    Food for thoughts of this week.

    + +
    +

    "To maintain these strong counter-scientific consensus views, you kind + of have to have a lack of knowledge." - Philip Fernbach

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#109 + 2019-01-11 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Vermaden Valuable News

    + +

    UNIX

    + + + +

    Hardware

    + + + +

    Life & Other

    + + + +
    https://vermaden.wordpress.com/
    +
    + +

    Thoughts

    + +

    Whenever you learn something new it adds, mixes, and changes the way +you perceive the world around you.

    + +

    Here's a fun Quora thread: https://www.quora.com/Does-programming-change-the-way-you-think-and-see-things

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#108 + 2019-01-04 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Vermaden Valuable News

    + +

    UNIX

    + + + +

    Hardware

    + + + +

    Life & Other

    + + + +
    https://vermaden.wordpress.com/
    +
    + +

    Thoughts

    + +

    This is the first fressh issue of this new year. As cliché as it sounds +let's emphasize some thoughts about change.

    + +

    Remember those "Culture clash" from 86 and "Edge effect" from 84, let's +start on this tone. Give yourself permission to make yourself a priority, +at least for a while. Try out new things, or continue what you've left +behind, or simply grow on the same path.

    + +
    +

    "We often underestimate our capacity to reinvent ourselves" - Shankar Vedantam

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#107 + 2018-12-28 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Vermaden Valuable News

    + +

    UNIX

    + + + +

    Hardware

    + + + +

    Life & Other

    + + + +
    https://vermaden.wordpress.com/
    +
    + +

    Thoughts

    + +

    This week is a week of festivity in a lot of parts of the world. So let's +share a piece that I've found helpful, maybe you'll find some value in +it too.

    + +

    https://www.theminimalists.com/understanding/

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#106 + 2018-12-21 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Vermaden Valuable News

    + +

    UNIX

    + + + +

    Hardware

    + + + +

    Life & Other

    + + + +
    https://vermaden.wordpress.com/
    +
    + +

    Random

    + +

    Thoughts

    + +

    This season needs elves, and this is what I'm giving you the most in this +issue (actually this was so time consuming I couldn't give anything else).

    + +

    I hope you enjoy it, and happy holidays!

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#105 + 2018-12-14 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Vermaden Valuable News

    + +

    UNIX

    + + + +

    Hardware

    + + + +

    Life & Other

    + + + +
    https://vermaden.wordpress.com/
    +
    + +

    Thoughts

    + +

    As you may have noticed I've removed the Random section of this +newsletter. There's already enough content, brace yourself for a long +read this week. Sorry for the double email, I almost missed vermaden +valuable news.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#104 + 2018-12-07 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Vermaden Valuable News

    + +

    UNIX

    + + + +

    Hardware

    + + + +

    Life & Other

    + + + +
    https://vermaden.wordpress.com/
    +
    + +

    Xero's Weekly Ricing Tips

    + +

    zathura is a vi{m,} like pdf and comicbook viewer.

    + +

    besides having vi like bindings and a minimal ui, zathura is +extremely "riceable" and has a awesome feature called "recolor". +when set to true, you can define custom colors for bg and fg of +textual documents, but it also sets images to greyscale and tints +them in matching inverted hues. :set recolor is a toggle command, +so if your set it to run by default in your ~/.config/zathura/zathurarc +file, manually calling it from the ui will disable the feature.

    + +

    here's my config for reference: +https://github.com/xero/dotfiles/blob/master/zathura/.config/zathura/zathurarc

    + +

    cite:

    + +
      +
    • man 5 zathurarc
    • +
    • https://pwmt.org/projects/zathura/documentation/
    • +
    • https://wiki.archlinux.org/index.php/zathura
    • +
    + +
    ____  ___
    +\   \/  /___________  ____
    +.\     // __ \_  __ \/ _  \
    +./     \  ___/ | | \( <_>  )
    +/___/\  \___  >__|---\____/
    +|     \_/   \/        |
    +| xero harrison       |
    +| xero.nu@gmail.com   |
    +| http://0w.nz        |
    +| http://xero.nu      |
    +| http://fontvir.us   |
    +`---------------------'
    +
    + +

    rocx rocks at skteches

    + +

    2 years anniversary

    + +

    Random

    + + + +

    Thoughts

    + +

    Issue 104, yet another 52 weeks have gone by.
    +After passing the 100 issues mark we've finally made it to two years of +Unix newsletters.

    + +

    Thanks to everyone who contributed and to all the readers.

    + +

    It's fantastic, spread the word around!

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#103 + 2018-11-30 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + +
      +
    • One of those habit building blog
      +https://jamesclear.com/reset-the-room
      +https://thecreativeindependent.com/guides/how-to-balance-full-time-work-with-creative-projects/

      + +

      But a good one, not an annoying listicle type. It gets 2M hits a +month on the blog and I've just discovered it. The second post is +also related to organizing yourself, the usual work-life balance, +a quite popular topic on technology news website. It reminded me +of the discussion we had on the forums about Scientifically Proven +Digital Attention Helpers, +things such as knowing the times in the day when you are more focused, +finding what works when guiding yourself towards an intent, what keeps +you focus or reminds you of what you need to do (environment or not), +splitting big tasks into smaller achievable ones to be able to track +them, going with the intent rather than a goal, etc.. See also "Time +management and management in general" of issue 98. While also ending +on a good note about the histrionic busy: see "Over-Productive" in 78, +"Production" in 66, and "The busy trap" in 32.

    • +
    • Akira
      +https://www.youtube.com/watch?v=IqVoEpRIaKg

      + +

      There was a time when anime wasn't associated with what it is today, +a time of burgeoning. Probably one of the most impressive animated +movie I've seen, along with the Studio Ghibli.

    • +
    • Information war
      +https://www.ribbonfarm.com/2018/11/28/the-digital-maginot-line/

      + +

      Complementary to "7 items you won't believe are shockingly amazing!" in +issue 85 and to all our "state of the internet" kind of articles.

    • +
    • Custom typeface
      +https://www.arun.is/blog/custom-typefaces/

      + +

      Also, yet again, a recurrent talk in this newsletter: fonts. This +episode covers custom typeface, why companies do it, should they +continue doing it, and if you should you pay attention.

    • +
    + +

    Thoughts

    + +
    +

    Judgment is but a mirror that reflects the insecurities of the person + who’s doing the judging.

    +
    + +

    https://www.youtube.com/watch?v=PpBC_jyg-go

    + +

    Some people live in a world where there are haters and lovers, people +that get you and others that don't, everyone judging each others, +scaling and measuring their behaviors, inspecting if everyone moves in +their plastic manner, pantomime, and making sure they never diverge +from their cookie-cutter molds otherwise we'd have to re-invent how we +perceive them. It's a world where one move means everything, where you +can't make mistakes.
    +The thing is this only exists when we are teenagers full of hormones +living the school days life (or if you're a politician). Real life is +much more complex, so get over it.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#102 + 2018-11-23 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    The mind can be trained just like the body.

    +
    + +

    Thinking About Thinking

    + +

    Meditation, learning psychology, taking the time to teach ourselves +about cognitive biases, controlling our day to day intents and attention, +leading our future changes and directions. All those are things that are +possible and we live in the best time to try them. As much as a cliché +as this is I still thought of putting this as the thought of the week.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#101 + 2018-11-16 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    If you can't tell me what you'd like to happen it means you don't have + a problem yet. It's simply nagging. A problem exist only if there's a + difference between what is effectively happening and what you'd like + to happen.

    +
    + +

    Going along with the last link of the random section, a thought that's +been playing in my head for some time now is to "Make explicit what is +implicit". We often assume wrongly that some things should go unsaid +but it's always better to be clear about what we have understood, what +we expect, what we would wish would be the best possible outcome, that's +the only good way to avoid mistakes and misunderstandings. Also we need +to add that this does not only apply to problematic scenarios but to any +others, if we like something we should be explicit about what exactly +what done right and what exactly we liked, this way everyone progresses.

    + +

    Have a wonderful week everyone.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#100 + 2018-11-09 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +

    It's been a 100 weeks of Unix newsletters, congratulations everyone! 1763 +Unix links, 569 random interesting links, all and all more than 2300 +links.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#99 + 2018-10-31 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "One of the worst things you can do is force people who don't feel + pain to take your aspirin." - Dan Meyer

    +
    + +

    https://www.nctm.org/blog/ifmathistheaspirin/
    +A reminder of "The Shirky principle" in 72.

    + +

    I'm sending the newsletter early this week because I'm taking some +vacations as a birthay gift to myself, I've worked 3 months in the span +of 2 months.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#98 + 2018-10-26 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "There are two ways of constructing a software design: One way is + to make it so simple that there are obviously no deficiencies, and + the other way is to make it so complicated that there are no obvious + deficiencies. The first method is far more difficult." ― C. A. R. Hoare

    + +

    "At first I hoped that such a technically unsound project would collapse + but I soon realized it was doomed to success. Almost anything in software + can be implemented, sold, and even used given enough determination. There + is nothing a mere scientist can say that will stand against the flood + of a hundred million dollars. But there is one quality that cannot be + purchased in this way - and that is reliability. The price of reliability + is the pursuit of the utmost simplicity. It is a price which the very + rich find most hard to pay." ― C.A.R. Hoare

    +
    + +

    https://www.innoq.com/en/blog/do-we-worship-complexity/, somewhat of +a reminder of "Holding it in my head" in issue 94.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#97 + 2018-10-19 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "Confusopoly"

    +
    + +

    https://en.wikipedia.org/wiki/Confusopoly
    +http://dilbert.com/strip/2010-11-21
    +http://blog.dilbert.com/2011/12/07/online-confusopoly/

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#96 + 2018-10-12 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "Everyone is complex and made out of different parts. Those parts grow + at different rates. Some parts of ourselves could still be teenagers + while others mature more fully."

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#95 + 2018-10-05 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + +
      +
    • The WWW is awesome (continue+)
      +https://youtu.be/wSn7CJ0cNZ4

      + +

      Last weekend I had this discussion with a friend about this series +I ran in this newsletter about the WWW awesomeness of niche found in +there and why I was doing that. The sort of refreshment in the face +of the never ending list of articles and debates about the online +click-economy, privacy, and attention span issues that I've discussed +so much in the state-of-the-web state-of-the-mind series. This link is +from this same friend, it's quite interesting and well researched as +are a lot of those sort of educational Youtube videos, maybe not as +niche as the other kinds of videos I've inserted in this newsletter +but still fun. This is entry is more of a reminder of the topic then +being about the content of the video. So, readers, if you stumble +upon things on the internet that makes you go "Waw, damn this is good" +then hit me up with it and I'll happily share it in the newsletter.

    • +
    + +

    Thoughts

    + +
    +

    "Whatever your strengths are, they will likely lead straight into + your weaknesses."

    +
    + +

    A quote from the "Twelve Natural Laws of Business", see +http://www.zingermanscommunity.com/2012/01/natural-law-10-whatever-your-strengths-are-they-will-likely-lead-straight-into-your-weaknesses/ +for more info.
    +What I have been reminded by this quote is actually the total opposite, +when someone is aware of their weakness it will often appear to others +as their most polished attribute.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#94 + 2018-09-28 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "Different people define relationships in different ways"

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#93 + 2018-09-19 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "Chess has shaped how I think. This idea that most chess moves are + mistakes, even when made by very good players. Also, you can’t blame + other people for your own problems, even though some of your problems + may be their fault." - Tyler Cowen

    +
    + +

    You know the "Baader-Meinhof" effect, well it happened this week to. It +seemed like everywhere I went chess made an appearance. From a series I'm +watching with my significant other, to a podcast, to my coworker learning +some new moves. Though I haven't got to play this week, ironically, but +the concept that kept floating in my mind was the one found in this quote.

    + +

    The newsletter is coming early this week because I'm taking some small +vacations, have fun everyone.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#92 + 2018-09-14 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "does the tournament make sense as you keep going?"

    +
    + +

    Why are we striving for what we are striving for. Does it make sense to +focus more on it or to stabilize, spread out, and balance efforts into +other things. To keep going on in the tournament we have to put more of +ourselves in it and so less into other things. Maybe this is a warped +up way of saying "rat race" maybe it's not, it depends on how deliberate +we are about our decisions.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#91 + 2018-09-07 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + +
      +
    • Once more... About Identity
      +https://regularflolloping.com/posts/identity-in-the-wired/

      + +

      Let's bring back an old topic that keeps resurfacing in this newsletter: +Identity, and specifically digital identity. This short thought piece +should get you back on those thoughts, plus you can always dig in the +archive to find all that has been shared.

    • +
    + +

    Thoughts

    + +
    +

    "Are they smart? Do they get things done? Do I want to spend a lot + of time around them?" - Sam Altman

    +
    + +

    This week we have a quote related to work culture, more precisely +partnering up aka having coworkers or hiring. I've noted that quote when +the "How to Start a Startup" course at Standford in Fall 2014 came out +and have kept it in my mind since then. How do we know that the team is +holding well together. Some of the criteria are in that quote, what others +do you want to add? This can be your conversation starter for next week.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#90 + 2018-08-31 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "Commonality is worst habit of mind"

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#89 + 2018-08-24 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "Trust breeds trust"

    +
    + +

    Maybe I don't need to say anything and gently leave those here:

    + + + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#88 + 2018-08-17 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +

    Everything in life has an expiry date, especially for electronics. Some +companies even plan ahead this expiry date and indirectly forces you to +buy new. But also, most of the things can be repaired, the question is +if it's worth the effort to repair it.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#87 + 2018-08-10 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "One theory says that man is a neoteny and is no longer able to + evolve. If this is true, then what an absurd creature mankind has evolved + into." - Eiri Masami

    +
    + +

    On a side note, we've broken the 240+ readers mark, congratulations +everyone! I can't help but be happy at the thought that everyone +deliberately chose to receive this newsletter, and that it only spread +through word of mouth.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#86 + 2018-08-03 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    A truly open mind means forcing our imaginations to conform to the + evidence of reality, and not vice versa, whether or not we like the + implications. - Lawrence Krauss

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#85 + 2018-07-27 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    There are known knowns. There are things we know that we know. There + are known unknowns. That is to say, there are things that we know we + don't know. But there are also unknown unknown. There are things we + don't know we don't know. - Donald Rumsfeld

    +
    + +

    A seemingly humble quote that should certainly be put in its +context. Rumsfeld was a politician and this was something he said +following 9/11 regarding "weapons of mass destruction" and the lack of +evidence for them. There are multiple aspects to this, on one level it +reminds us of our relation with our knowledge, on another it gives you +a moment to stop and think before assuming or over-rationalizing, and +finally it shows that cheesy quotes are often posted on social media +without checking their background story (yet another week with cheesy +quotes, I know!).

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#84 + 2018-07-20 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + +
      +
    • Have you showered?
      +http://www.homethingspast.com/vintage-antique-showers/

      + +

      Because this is the trendy new thing in town, an unusual contraption +called a shower. I stole that from HN and thought it was a nice article, +similar to "Remote Control" in 82, "A history of the picnic table" +in 77 and "A story on privacy" in 65. This is interesting to go back +and time and trace the history of today's common ideas and things.

    • +
    • Social media craze
      +https://anildash.com/2018/07/13/unfollowing-everybody/

      + +

      It's been a while since I've shared something with the "state of the +internet", so here's one about quitting but not quitting entirely. The +writer goes through a weird complex and filtering process (sort of +related to the obsessive over-rationalization of "Goddess Spreadsheet" +in 28). It's like the middle-ground between smoking 10 packs a day +and saying 5 cigs a day won't kill you - The underlying reason why +you smoke hasn't changed in both cases, you haven't tackled the issue.

    • +
    • Edge effect
      +https://deepgreenpermaculture.com/permaculture/permaculture-design-principles/10-edge-effect/

      + +

      A phenomena that stay true across domains of life and inter-domains +of life. Be sure to check the delightful comments at the bottom of +the article.

    • +
    • Bring it on!
      +https://www.nytimes.com/2018/07/10/well/the-power-of-positive-people.html

      + +

      Spend time with your friends this week. This is what I'm going to do +and I hope this is going to be super fun for everyone! "In general +you want friends with whom you can have a meaningful conversation. You +can call them on a bad day and they will care. Your group of friends +are better than any drug or anti-aging supplement, and will do more +for you than just about anything."

    • +
    • Glitch art
      +https://www.theverge.com/2018/7/15/17564588/datamosh-youtubeartifacts-glitch-art-kraftsow

      + +

      All cyberpunk unite! This post goes into a simple technique to create +glitchy videos, a new but old trend on youtube. It's nice that this +is coming back to life. This seems to be the thing these days: Remake +whatever is old cool again. There's certainly a marketing idea behind +that to target people based on nostalgia but still, I ain't got anything +against that as long as we're deliberately choosing to revive memories.

    • +
    + +

    Thoughts

    + +
    +

    How we spend our days is how we spend our lives - Annie Dillard

    + +

    You are the average of the five people you spend the most time with - Jim Rohn

    + +

    We become and attract what we think about most of the time - Jerry Bruckner

    +
    + +

    Three quotes that are pretty much encompasses the same idea, to do things +deliberately because this is what this is, not a future concept of what +could be. Hope this can enlighten your week, cheers!

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#83 + 2018-07-14 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    You may delay, but time will not. - Benjamin Franklin (can't find the source?)

    +
    + +

    Can't throw a cheesy quote without more context:
    +https://philosiblog.com/2013/02/18/you-may-delay-but-time-will-not/

    + +

    This article takes it from the side of productivity (see "Over-Productive" +in 78, "Production" in 66, and "The busy trap" in 32) however this is not +really accurate as many of the most prominent inventors didn't have the +mindset we today portray as overly obsessed with managing their time and +work. The other side of it is that it's a reflection on paying attention +to what matters to you, an appreciation of life.

    + +

    Have a great week!

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#82 + 2018-07-06 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    The less confident you are, the more serious you have to act. - Tara Ploughman

    +
    + +

    For context: https://www.quotes-clothing.com/less-confident-are-more-serious-act-tara-ploughman/

    + +

    I've always liked this quote, I have no clue if it's true but from +anecdotal evidence I can assert it. Aren't the advices about being "more +confident" pullulating the online self-help trend trying to say indirectly +that we have to take ourselves and things in general less seriously. Yep, +cheesy social media quote that actually has more in it than it looks.

    + +

    Have a wonderful week!

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#81 + 2018-06-29 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    The S in IoT stands for Security

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#80 + 2018-06-22 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "Every choice we make allows us to manipulate the future. Do I ask + Adrienne or Suzanne to the spring dance? Do I take my holiday on Corsica + or Risa? A person's life, their future, hinges on each of a thousand + choices. Living is making choices! Now you ask me to believe that if + I make a choice other than the one that appears in your history books, + then your past will be irrevocably altered. Well, you know, Professor, + perhaps I don't give a damn about your past, because your past is my + future. And as far as I'm concerned, it hasn't been written yet!" - + Captain Picard about time travel

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#79 + 2018-06-15 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    Everything is a conspiracy when it doesn't suit us. When it does it's + just the state of the world. We live in bubbles, when is the right time + to question the state of affair and when is it not?

    +
    + +

    I've setup a new scavenger hunt on the forums, be sure to check it out: +https://nixers.net/showthread.php?tid=2206.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#78 + 2018-06-08 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "From this moment forward all my writings are fish hooks: perhaps I + know how to fish as well as anyone - If nothing was caught, I am not to + blame. There were no fish." - Nietzsche

    +
    + +

    An idea similar to the thoughts in issue 74: Push your ideas out there in +the wild, without spoon feeding people, without following the clickbait +trend, all you have to do is prepare the content in the most appropriately +consumable way for anyone that ever encounters it.

    + +
    + +

    PS: I've beaten last week record by making this newsletter longer +than the last one. If you really enjoy it be sure to share it with your +friends that might be interested.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#77 + 2018-06-01 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    You never fully realize how inept mainstream media is until they cover + a topic you know a lot of. - /r/showerthoughts

    +
    + +

    This was the longest newsletter I've compiled since the start of this +project. I hope you're enjoying it as much as I am enjoying reading all +those articles every week. Let me know if you find anything interesting to +share with our close circle of readers. If you're intested in contributing +in whatever form or way, there's always a list of ideas at the bottom +of this newsletter on how you can do so.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#76 + 2018-05-25 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    Much unhappiness has come into the world because of bewilderment and + things left unsaid. - Dostoyevsky

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#75 + 2018-05-19 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "Yep, that's the point of public key cryptography, never share your + privates in public" - A user on reddit

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#74 + 2018-05-10 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    Sand mandalas are incredibly intricate works of art that take many + people many days to construct. They’re very expressive, but fragile, + works of art.

    + +

    After a mandala has been constructed – and displayed – it is + ceremoniously deconstructed – which is meant "to symbolize the Buddhist + doctrinal belief in the transitory nature of material life."

    + +

    _why’s entire online presence and code was presented in the sand mandala + that was '_why'. The person behind '_why' simply decided to move + on and close that portion of his life.

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#73 + 2018-05-04 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    HTTPS & SSL doesn't mean "trust this." It means "this is private." You + may be having a private conversation with Satan. - Scott Hanselman

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#72 + 2018-04-27 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    For they do not appear to me to have lost the faculty of reasoning, + but having joined together some ideas very wrongly, they mistake + them for truths; and they err as men do that argue right from wrong + principles. For, by the violence of their imaginations, having taken + their fancies for realities, they make right deductions from them.

    +
    + +

    An essay about epistemology by Locke. +http://enlightenment.supersaturated.com/johnlocke/BOOKIIChapterXI.html

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#71 + 2018-04-20 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    In the end it is those who derive consequences and seize the importance + of the ideas, seeing their real value, who win the day. They are the + ones who can talk about the subject.

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#70 + 2018-04-13 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    Be conservative in what you do, be liberal in what you accept from others.

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#69 + 2018-04-06 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "GUIs normally make it simple to accomplish simple actions and + impossible to accomplish complex actions." - Doug Gwyn

    +
    + +

    Probably one of the most cliché quote of all time, maybe it needs more +pondering. Is it a limitation from the medium or from ourselves, what +other types of media are we not using that could solve this?

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#68 + 2018-03-29 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    A good model makes reality look normal, not weird; a good model assigns + high probability to that which is actually the case.

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#67 + 2018-03-23 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + +
      +
    • Thinking in new ways
      +https://medium.com/the-mission/mental-models-how-to-train-your-brain-to-think-in-new-ways-ad538ca9052c

      + +

      This is an article that sums up a lot of what I hold close to my heart, +namely building a base, not limiting yourself to a single domain, +being inter-disciplinary at a minimum level.

    • +
    • Facebook
      +All the clickbaity articles that have been spammed in the media the past few days

      + +

      I don't think I have to say anything other then point you back to +other issues in order, have fun going back in the archive: "SSI" +13 , "Social Networks" 20 , "It's leaking from everywhere" 26 , +"Digital Identity" 27 , "More on digital identity" 36 , "In need +of a website to understand a process that should be simple" 39 , +"Well researched and timely articles" and "Differential privacy" 47 , +"A continuation of last week "Random"" 48 , "Wear some colorful tight +pants and continue on this crazy train with Ozzy!" 50 , "Propaganda" +and "A timely article" 52 , "Are you tired of the articles of two weeks +ago because there's more" 53 , "Create a category and people will get +attached to it" 55 , "Will Geocities websites make a comeback?" 56 , +"Compartmentalization" 62 , "A story on privacy" 65

    • +
    + +

    Thoughts

    + +
    +

    Organisms organize. human organisms organize reality - William Perry

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#66 + 2018-03-16 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    You need to be your own universe, to have your own dynamics, and only + then there'll be a place for others to be part of. Relationships are + stars in colliding universes.

    +
    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#65 + 2018-03-09 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "Our riches of information are in some deep and perverse sense a + terrible burden to us. We have to artificially invent ways to forget..." + - Bruce Sterling

    +
    + +

    https://w2.eff.org/Misc/Publications/Bruce_Sterling/comp_game_designers.article

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#64 + 2018-03-02 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    Many of us always think interesting things in their minds, but no one + other than themselves get to hear them because we don’t say those + things out loud, we don’t communicate them or sometimes can’t find + the exact words to describe them.

    + +

    The only places in the world where this is possible might be the internet.

    + +

    A black box for anonymized speech which unfortunately is misused.

    +
    + +

    I'm going to link the archived newsletter from now on because it seems +like not everyone sees them. I'm also going to use different email titles +for every issues, including the issue number in it, which is something +I should've done a long time ago. Thanks for all the feedbacks, we now +have 197 subscribers.

    + +

    Archive

    + +

    You can find the archive of past newsletters here:
    +https://newsletter.nixers.net/entries.php

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#63 + 2018-02-23 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "Rationality worship is central to many, perhaps most, of the + twistednesses of our culture."

    +
    + +

    This is a controversial quote but one that couldn't be more +timely. Rationalizing our behaviors has become the everyday toy of many.

    + +

    PS: There are some new changes on the forums, let us know what you think +of them.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#62 + 2018-02-16 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + +
      +
    • Patience is a virtue
      +https://www.gilroygardens.org/play/circus-trees
      +https://www.treehugger.com/sustainable-product-design/living-bridges-in-india-have-grown-for-500-years-pics.html
      +https://www.atlasobscura.com/places/vine-bridges-japan

      + +

      At different scales of time we can still appreciate and live in +symbiosis with trees.

    • +
    • Compartmentalization
      +https://en.wikipedia.org/wiki/Compartmentalization_(psychology)

      + +

      Hello there people that like to read stuffs related to psychology (and +those who don't). The topic of compartmentalization has been one of my +"Baader-Meinhof" aka frequency illusion for some time now... Well, it's +more of a temporary kind of focus on a certain topic and what relates +to it, it's deliberate and not really and illusion (I've seen the idea +repeated in multiple books and articles I've read). Compartmentalization +is the fabric of everyone of us, there are extreme cases like when +those separated parts are contradictory but even so our personality +lies within the connections of the compartment (which might explain +why when there opposites it leads to personality disorders). This has +been proven by many psychological experiments. Without them we do not +exist, boundaries with links between them are what define an individual +as a self. We can't be everything at once, we can't fulfil all our +roles in life at once, we can't be all of our personality traits at +once. The father cannot be at the same time the lover cannot be at the +same time the worker cannot be at the same time the friend, etc.. And +those have to stay within their confined boxes. Some social platforms +nowadays try to destroy those and put everything in the same box. This +turns an individual into a single blob, flattening their existence, +labelling, simplifying, breaking down, and leading to the destruction +of the self. Take this as food for thought for the week (and let me +know if going on a tangent like that in the newsletter is too much).

    • +
    + +

    Thoughts

    + +
    +

    We might be fighting with someone, and in the midst of the fight the + phone rings. After some heated argument as to who will pick it up, we + finally answer the phone with a voice and attitude that are in total + contrast with what we were just portraying of ourselves in the argument.

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#61 + 2018-02-09 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    Have you ever noticed that when somebody says "That’s a good + question?" it’s usually because they don’t yet have an answer?

    +
    + +

    That quote couldn't be more wrong.
    +Every single time I hear someone say "That's a good question" and remember +the saying I pay extra attention to the discussion and realize that it's +the total opposite.

    + +

    What do you think?

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#60 + 2018-02-02 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "There are three deaths. The first is when the body ceases to + function. The second is when the body is consigned to the grave. The + third is that moment, sometime in the future, when your name is spoken + for the last time." - Those don't necessarily happen in this order.

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#59 + 2018-01-26 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "It is really true what philosophy tells us, that life must be + understood backwards. But with this, one forgets the second proposition, + that it must be lived forwards. A proposition which, the more it is + subjected to careful thought, the more it ends up concluding precisely + that life at any given moment cannot really ever be fully understood; + exactly because there is no single moment where time stops completely + in order for me to take position [to do this]: going backwards." - + Søren Kierkegaard, in his journals (1843)

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#58 + 2018-01-19 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    The three golden rules to ensure computer security are: do not own a + computer; do not power it on; and do not use it. - Robert Morris

    +
    + +

    Note: There used to be a bug related to gmail where links weren't +clickable. This has been fixed with the help of mort.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#57 + 2018-01-12 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    Idle hands are the devil’s workshop; idle lips are his mouthpiece. - + Proverbs 16:27

    +
    + +

    We live in an age where we don't have to lift our fingers, so much that +it has become an issue. This might be of religious origins but can easily +be taken out of this context and applied to anyone.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#56 + 2018-01-05 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "Don't worry if it doesn't work right. If everything did, you'd be + out of a job."

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#55 + 2017-12-29 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "It is a sad fate for a man to die too well known to everybody else + and still unknown to himself" - Francis Bacon in The Essays (Of Great + Place, referring to men in positions of power)

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#54 + 2017-12-22 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    You need huge material wealth, acquired only through intense engagement + with the affairs of the world, to build monuments that inspire us to + abandon wealth and to leave the world behind.

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#53 + 2017-12-15 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    One regular chatter noted that on the CB Simulator "you meet someone + from the inside out. You judge them on their heart and values, not what + kind of jeans they wear." - About the 1980 CompuServe CB Simulator.

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#52 + 2017-12-08 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +

    Heavy and full of technical topics, this is the 52nd issue which +completes a year worth of newsletters. Let's see what this new year +has in store. Share with the world what you've thought of those past +newsletters and what you're looking for in the future. Which issues were +your favorite ones?

    + +

    https://newsletter.nixers.net/entries.php

    + +

    Congratulations everyone!

    + +
    +

    It's starting to get cold outside, keeping a Unix machine next to you + and running :(){ :|:& };: is a great way to stay warm.

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#51 + 2017-12-01 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "You and me are real people, operating in a real world. We are not + figments of each other’s imagination. I am the architect of my own + self, my own character and destiny. It is no use whingeing about what + I might have been, I am the things I have done and nothing more. We are + all free, completely free. We can each do any damn thing we want. Which + is more than most of us dare to imagine." – Jean-Paul Sartre talking + about how consciouscness is freedom but hell for most.

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate then +you can send something to my btc address (ask for it) or patreon page: +https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#50 + 2017-11-24 00:00:00 + Nixers Newsletter + +

    Unix

    + +
      +
    • More of "terminal recording"
      +https://intoli.com/blog/terminal-recorders/

      + +

      This is a follow up of issue 48 "Capturing and debugging user +interaction on the shell". This blog regroups a gigantic extensive +list of all available options to record the terminal.

    • +
    • Food for thoughts
      +http://turnoff.us/geek/inside-the-linux-kernel/

      + +

      This gets you thinking about the architecture... Anthropomorphizing +our mystic view of the order of things. Hey, we might find ourselves +in a future where we refer to computers the same way we refer to +mythological gods!

    • +
    • Missing games?
      +https://www.gamingonlinux.com/

      + +

      An addition to issue 10 "Free games", it seems like we're referencing +a lot of old issues, right?

    • +
    • The year of the Linux desktop
      +http://itvision.altervista.org/why.linux.is.not.ready.for.the.desktop.current.html

      + +

      More Linux specific topic for this newsletter! Self proclaimed: "the +most comprehensive list of Linux distributions' problems on the entire +Internet". On a side note, the person writing the article got other +interesting ones on the blog such as a list of good fonts and more +"this is best, this is worse"-kind of articles.

    • +
    • What's a thread
      +https://www.schneems.com/2017/10/23/wtf-is-a-thread/

      + +

      This was mostly explained in the podcast about processes +(https://nixers.net/showthread.php?tid=2141) however if explanation +with BIG fonts and icons are your thing then this will really help.

    • +
    • About groups
      +https://jvns.ca/blog/2017/11/20/groups/

      + +

      This is also related to the previous link.

    • +
    • More extra content related to the podcast
      +http://www.tavi.co.uk/phobos/fat.html
      +http://blog.wesleyac.com/posts/filesystem-recursion

      + +

      Recently I found myself wanting to do a simple implementation of a FAT16 +fs manipulation tool and this is the resource I looked into. FAT is +easy to grasp and should get you started in the world of file systems +(well, I say that but I didn't dig into the technical implementation +of other file systems myself. The related podcast about data storage +https://nixers.net/showthread.php?tid=2164).

    • +
    • Unix and Firefox 57
      +https://www.spinellis.gr/blog/20171119/
      +https://dspinellis.github.io/unix-v4man/v4man.pdf
      +https://www.spinellis.gr/blog/20171117/index.html

      + +

      First post is cool, and I think a lot experienced what happened in the +second post. Great blog too! Skim through that PDF of the man pages +of V4.

    • +
    • X is considered harmful
      +https://meyerweb.com/eric/comment/chech.html

      + +

      Let's get rid of this cliche and replace it by something more useful.

    • +
    • Wear some colorful tight pants and continue on this crazy train with Ozzy!
      +http://nautil.us/issue/52/the-hive/modern-media-is-a-dos-attack-on-your-free-will

      + +

      Yet again on this railroad of "the state of the internet" articles. Like +it or not it seems like a trend and it's fun to watch everyone going +through the "Oh I just woke up to what the internet is about". You +can't blame the trend, once you learn something you start to see +it everywhere and want to shout your lungs out. Digital literacy +is going up, non-technical persons are starting to be interested in +the details. For us it's old news. It's also interesting how internet +services are regarded as God-like entities that influences us and that +we have to please, in the end the writers of those articles have to +realize they can't anthropomorphize them, they can't consider them as +carrier of the holy good will for the masses. Post hoc ergo propter +hoc. This is not the internet this is their new religion; blaming it +for the good days and bad days. But can we critic this behavior in a +world that is frightening, slowly turning nihilistic, a world where +its people are looking for a Leviathan to bring back the order.

    • +
    + +

    Random

    + + + +

    Thoughts

    + +
    +

    Whatever requires a bit of effort without prestige isn't that popular

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#49 + 2017-11-17 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    If it seems too good to be true it probably is.

    + +

    if wishes were fishes, we'd all cast nets.

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#48 + 2017-11-10 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    Nothing is so firmly believed as that which we least know - Michel De Montaigne

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#47 + 2017-11-03 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    Do not propose solutions until the problem has been discussed as + thoroughly as possible without suggesting any.

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#46 + 2017-10-27 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    Perfection is achieved, not when there is nothing more to add, but + when there is nothing left to take away. - Antoine de Saint-Exupery

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#45 + 2017-10-20 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +

    Internet arguments in a nutshell:

    + +
    +

    ednos: technically, I'm not pedantic

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#44 + 2017-10-13 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + +
      +
    • Create a unique id
      +https://segment.com/blog/a-brief-history-of-the-uuid/

      + +

      I like how they present the research, it's comprehensible and straight +forward. They offer their own new implementation at the end.

    • +
    • The most cringy article I've read in a while
      +http://bostonreview.net/science-nature/cathy-oneil-know-thy-futurist

      + +

      This article regroups the most cliche Silicon Valley-type fan base +with the most erroneous definitions and conflations of subjects you +can imagine. I wish it was a satirical newspaper but it's not. All that +apart from completely missing the point of what futurists do with what +New Age divinists do.

      + +
      +

      And while religious futurists, astrologers, occultists, New Age + divinists, etc. use methodologies that include study, none of their + personal revelation or belief-based work would fall within a consensus + definition of futurology as used in academics or by futures studies + professionals.

      +
    • +
    • The new Face ID is already a meme
      +https://www.troyhunt.com/face-id-touch-id-pins-no-id-and-pragmatic-security/

      + +

      Remember the biometric article I shared in issue 36 (2017-08-18) +"More on digital identity", well consider this a continuation.

    • +
    • The behavioral effect of VR
      +http://www.thenewatlantis.com/publications/virtual-reality-as-moral-ideal

      + +

      A very well put article about VR and our perception of free will/power +over our environment.

    • +
    + +

    Thoughts

    + +
    +

    Someone complaining on social media is free advertising.

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#43 + 2017-10-06 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "The Internet is not for sissies." -- Paul Vixie

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#42 + 2017-09-29 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +

    Those are sentences that have resonated a lot with me the past few days.

    + +
    +

    To worship a phenomenon because it seems so wonderfully complex is to worship your own ignorance.
    + If a phenomenon feels complex, that is a fact about our state of knowledge, not a fact about the phenomenon itself.
    + Complexity is a property of questions, not answers.

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#41 + 2017-09-22 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    I ran killall cat to kill all the stray cats (pardon the pun), which + surprisingly took several seconds but cleaned everything up nicely.

    +
    + +

    Keep up with your projects, whatever those are, and if you don't have +any then replace down time with one.

    + +

    Have a wonderful week everyone!

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#40 + 2017-09-15 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    nobody needs to know but yourself

    +
    + +

    You can be content just within you.

    + +

    Let's hope this newsletter makes you smile!

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#39 + 2017-09-08 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    Sometimes I wonder if guests are present at the table when they are + obsessing about photographing everything they eat, one time a guest + suggested I change the colour of the plates (from white to black) + because he said the photographs would look better. – Massimo Bottura

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#38 + 2017-09-01 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    For even better randomness, let your cat walk on the keyboard.

    +
    + +

    On a side note, I've created a page that you can use to browse the old +entries of the newsletter: http://newsletter.nixers.net/entries.php

    + +

    I hope you're enjoying it as much as I'm enjoying putting this together!

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#37 + 2017-08-25 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Xero's Weekly Ricing Tips

    + +

    did you know there are multiple terminal multiplexers? features like +persistence, multiple windows, and session sharing are the common features +sets. the big three all can be customized with at least a statusbar.

    + +
      +
    • screen - the prototype. hardstatus is the variable you want for customizing the statusbar.
    • +
    • tmux - the archtype. status-right and status-left configure it's statusbar.
    • +
    • dvtm - the leanest. uses dvtm-status is an add on statusbar.
    • +
    + +

    if you like premade or configurationless setups:

    + +
      +
    • mtm - as simple and streamlined as they get.
    • +
    • byobu - a suite of enhancements for screen and tmux
    • +
    • neercs - an ansi art style "windowed" multiplexer
    • +
    • twin - "Textmode WINdow enviroment" a full text only wm setup
    • +
    + +

    Random

    + + + +

    Thoughts

    + +
    +

    If you're dreaming or complaining, it's the same shit. It means you're just not doing shit.

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#36 + 2017-08-18 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    Concentrate all your thoughts upon the work at hand. The sun's rays + do not burn until brought to a focus. - Alexander Graham Bell

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#35 + 2017-08-12 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    All models are wrong, some models are useful. Try to look at where + the models converge. That's where I find the truth.

    +
    + +

    https://en.wikipedia.org/wiki/All_models_are_wrong

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees or simply donate +then you can send something to my btc address or patreon page: +19suN5V6nyKBvaeuAhghSMCzyQcZLGVNRy or https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#34 + 2017-08-04 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Xero's Weekly Ricing Tips

    + +

    fonts: don't just install some magic font package, take the time to +acutally grok how the fontconfig works:

    + + + +

    venam: And be sure to read/listen to the podcast about fonts: +https://nixers.net/showthread.php?tid=2065

    + +

    Random

    + + + +

    Thoughts

    + +
    +

    It is easier to port a shell than a shell script. - Larry Wall

    +
    + +

    On a side note, the survey we started last week is over and I've compiled +the results in this thread: https://nixers.net/showthread.php?tid=2149

    + +

    So be sure to check it out and bump it with all your comments.

    + +

    ...And thanks for loving this newsletter so much!

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my patreon page: https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#33 + 2017-07-28 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Xero's Weekly Ricing Tips

    + +

    tmux: programmatically change tmux tab names +in your shell aliases

    + +
    alias tshrug="printf '\033k┐(\`-\`)┌\033\\'"
    +alias tlol="printf '\033k\(^0^)/\033\\'"
    +
    + +

    Random

    + + + +

    Thoughts

    + +
    +

    Figure 3.3: On-disk layout of a typical UNIX file system. Figure is + not drawn to scale, and files may appear larger in your rear-view mirror + than they do in real life.

    +
    + +

    On a side note, we're running a the first <nixers.net> self assessment +after 6 years: https://nixers.net/showthread.php?tid=2144

    + +

    The answers so far are captivating. If you haven't answered it, please +do before the end of next week.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my patreon page: https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#32 + 2017-07-21 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Xero's Weekly Ricing Tips

    + +

    compton: add a subtle fading effect to your windows +in your ~/.config/compton.conf

    + +
    fading = true;
    +fade-delta = 5;
    +fade-in-step = 0.03;
    +fade-out-step = 0.03;
    +no-fading-openclose = false;
    +
    + +

    Random

    + + + +

    Thoughts

    + +
    +

    2007: “You are the product.”
    + 2017: “You are the training data.”
    + j_s

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my patreon page: https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#31 + 2017-07-14 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Xero's Weekly Ricing Tips

    + +

    shell: colored hexdump

    + +
    hexdump -C <filename> | GREP_COLORS='mt=01;33' grep '^........' |
    +GREP_COLORS='mt=01;34' grep ' ..' | GREP_COLORS='mt=01;33' grep '|*.|'
    +
    + +

    Random

    + + + +

    Thoughts

    + +
    +

    I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Aloha (on an HN thread)

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my patreon page: https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#30 + 2017-07-07 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Xero's Weekly Ricing Tips

    + +

    vim: change the style of the vertical split +in your ~/.vimrc

    + +

    set fillchars=vert:▒

    + +

    some interesting values: │┃┆┇┊┋╎╏!|╿╽║█▓▒░

    + +

    Random

    + + + +

    Thoughts

    + +
    +

    Code is not sentient, nor does code have a spiritual presence... yet. - Haden Odom

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my patreon page: https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#29 + 2017-06-30 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Xero's Weekly Ricing Tips

    + +

    shell: xero's disks alias

    + +

    alias disks='echo "╓───── m o u n t . p o i n t s"; echo "╙────────────────────────────────────── ─ ─ "; lsblk -a; echo ""; echo "╓───── d i s k . u s a g e"; echo "╙────────────────────────────────────── ─ ─ "; df -h;'

    + +

    Random

    + + + +

    Thoughts

    + +
    +

    They have computers, and they may have other weapons of mass destruction.

    +
    + +
    + +

    On a side note, this newsletter should now go straight to your inbox +and not be flagged as spam anymore. I've fixed some issues related to +the domain name.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my patreon page: https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#28 + 2017-06-24 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Xero's Weekly Ricing Tips

    + +

    figlet/toilet: if you plan on creating your own figlet fonts, step one is +reading the spec : http://www.jave.de/figlet/figfont.html

    + +

    there are lots of requirements people often miss (e.g. headerline values, +required characters, etc)

    + +

    Random

    + + + +

    Thoughts

    + +
    +

    any sufficiently advanced kind of work is indistinguishable from play. + - Seb Paquet

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my patreon page: https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#27 + 2017-06-17 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    You are not your ideas

    +
    + +

    https://joneaves.wordpress.com/2014/11/20/you-are-not-your-ideas-a-strategy-to-lessen-the-blow-of-rejection/

    + +

    A reflection on ideas and why some don't feel rejection.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my patreon page: https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#26 + 2017-06-10 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +

    The June events started +so don't be lazy and join in.

    + +
    +

    Standards and specs are hard to read but repeat after me:
    + "Specs are good." + - A random user on stackoverflow

    + +

    Why a coding standard at all? Because of your brain + - A shell script

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my patreon page: https://www.patreon.com/venam.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#25 + 2017-06-03 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +
    +

    "That's what it feels like when debugging your code."
    + - Suddenly sputtered someone

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#24 + 2017-05-27 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Any fan of Perl around? There are a bunch of useful utilities in there.

    + + + +

    We've got your back... I think so.

    + + + +

    I've been refreshing my algo skills and stumble upon that link.

    + + + +

    I keep this guy's blog bookmarked and keep peeking at it from time to +time. He's always up to something astonishing.

    + + + +

    Here's another blog. There are articles about fun shell scripts and +others about test with hardwares.

    + + + +

    Apparently it had some papers backing its theory on the site. Let's see +where this goes.

    + + + +

    The answer is simple, ergonomics.

    + + + +

    This tool is Linux only. It's for checkpoint and restore of program +states. Imagine it as a "longer" suspend.

    + + + +

    Coreutils but on steroids. My favorite amongst those is vidir.

    + + + +

    Those "this tech is dying" articles are a bit abhorent. Mp3 isn't dead, +it's free now. IRC is not dead, it's niche now.

    + +

    Random

    + + + +

    A long & extremely interesting article about the mathematical constructs +in our heads.

    + + + +

    The latest article is about an automatic "babel fish"-like translator, +check it out.

    + + + +

    Why we should all accept that we might be wrong.

    + + + +

    I showed that to someone and they said it was "lame".

    + +

    Thoughts

    + +
    +

    "Someone that cannot respect another's journey hasn't traveled very + far himself." + - A random guy on youtube

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#23 + 2017-05-20 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    This questionaire might help you choose the best "distro" for you. Now +imagine if Google could do that with all the tracking information it +has accumulated over the years!

    + + + +

    A fan of retro museums?

    + + + +

    Yes and this one is small so you can read it.

    + + + +

    I keep wondering at which point this was added in useradd but can't +find any date, it's in POSIX. In older Unix accounts were created using +passwd (http://man.cat-v.org/unix-6th/1/passwd) or by changing the +/etc/passwd directly.

    + + + +

    When your child asks the question.

    + + + +

    A wonderful article pondering about a common state of mind, intellectual +view of the world, between Unix users.

    + + + +

    Lots of talk, a lot of it.

    + + + +

    Not directly linked to Unix but makes us think of the conundrum.

    + + + +

    "Everyone" knows that awk kicks asses - Everyone should!

    + + + +

    The hate of GUI on the side, this is really nifty.

    + +

    Xero's Weekly Ricing Tips

    + +

    it's a .vimrc file that makes you look like a ninja. it's the absolute +minimal setup. no colors, no highlights, no messages, no status bar, +nothing. just text.

    + +

    "ninja vimrc http://xero.nu +set nocompatible +set modelines=0 +set shortmess+=I +set noshowmode +set noshowcmd +set hidden +set lazyredraw +set noruler +set laststatus=0 +syntax off +filetype off

    + +

    Random

    + + + +

    It's interesting how you can have a "default" emotions when not having +emotions... And a bit frightening. That explains first impressions.

    + + + +

    Different way of interacting and programming a machine.

    + + + +

    I'm glad we can have those these days, excellent way for a 8-12yo to +have fun and learn something along the way. It's fascinating that this +generation of kids and beyond will learn programming just like learning +to read and write. We'll see how it changes how people perceive life. The +last link is about explorable explanation.

    + + + +

    We've got your back with this fart generator.

    + + + +

    Now that we have skew incorporated in css3.

    + +

    Thoughts

    + +

    Solving today's problems with yesterday's technology, someday.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#22 + 2017-05-13 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Ever used notify-send and wondered how it worked. Now you wish you +didn't know.

    + + + +

    "When in need of a system to randomly fuck you up" - Quote writen by a +non-sentient being stuck inside the infinite monkey theorem.

    + + + +

    Regulate the traffic between your softwares and the world.

    + + + +

    I'm not a crypto expert but I sort of get how arc4random works now... or +maybe just a bit. Always belittled by the crypto gods of OpenBSD!

    + + + +

    Yet another rant, a good one though a bit immature. I agree with most +of the points he put forward. I guess the more you understand something +the more you see its faults and the more you can expect the unexpected +from it. That's still better than a black box.

    + + + +

    That nasty old operating system that used to be considered too difficult +for most people to use.

    + + + +

    Related to the previous video, it's funny when you look at the marketing +aspect of Unix, the feud (Unix) wars and partnership between companies, +some partnering with others you wouldn't guess. For example in the last +video you had the Sun386i which ran DOS and UNIX on the same machine and +using the OpenLook design by Sun partnering with AT&T plus some licensed +technology from Xerox corporation. You also had the HP360 using the OSF +Motif tech from both DEC, IBM, and HP. Then the Mac2cx by NextStep with +the MAC user interface which was the cheapest of them all, unlike today's +Apple product.

    + + + +

    Where are you rocx, you can draw better than that dude.

    + + + +

    A simple command which also has advance usage.

    + + + +

    The title says it all, this is an article about UX.

    + + + +

    Yo!

    + +

    Random

    + + + +

    Such a nice website.

    + + + +

    A bunch of free documentaries from the defcon guys.

    + +
      +
    • Map of the world
      +
    • +
    + +

    Ascii is great.

    + + + +

    We've got your back + spellcheck.

    + + + +

    This was shared in a discussion.

    + +

    Thoughts

    + +

    By the way: I was a mediocre writer whenI started out. Explaining +technical concepts is hard. Coming up with good examples takes time, and +explaining a diicult concept takes time. So it’s easiest to gloss over +the hard stuf. I thought I was doing a pretty good job, until ater one +of my posts got popular, a coworker came up to me and said, “I read +your post and I still don’t understand this.” I still had a lot to +learn about writing.

    + +
      +
    • Aditya Y. Bhargava
    • +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#21 + 2017-05-06 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    ...Then test it on this website!

    + + + +

    This guy puts into words the whole reason why I've switched away from +tiling. And also his blog is pretty amazing too, so check that out.

    + + + +

    This is a nifty little script, and the animation on the project page +is hilarious.

    + + + +

    Yet another one, and a good one at that.

    + + + +

    Well, but we have some sort of standards too, you know.

    + + + +

    A shell script that saved the day - the comment section is gold.

    + + + +

    Having trouble remembering the HTTP status?

    + + + +

    "Unix in a nutshell", a reference book about Unix stuffs.

    + + + +

    A lot of the links are dead but some are not, and that's +important. I love those oldies, check this one for example: +https://web.archive.org/web/20090302112430/http://freeengineer.org:80/learnUNIXin10minutes.html +it's another one of those "learn everything in one page".

    + + + +

    A wonderful online book about why we are where we are today and how to +continue moving forward.

    + +

    Random

    + + + +

    A bunch of safe resources to practice.

    + + + +

    When you become expert in a domain you loose the ability to be surprised.

    + + + +

    Sometimes it's worth it to pursue random ideas.

    + +

    Thoughts

    + +

    "Chris Dixon captured this guerrilla pattern of the ongoing shift in +political power with a succinct observation: what the smartest people +do on the weekend is what everyone else will do during the week in +ten years."

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#20 + 2017-04-29 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Read up about how they approached the live USB problem.

    + + + +

    Let's educate ourselves about how to utilize the ram as a filesystem +on Linux.

    + + + +

    That is to link the last entry from the previous list of links adding +some links that are generic about ramdisks.

    + + + +

    The very simple and elegant Unix tape archiving program.

    + + + +

    In need of a programmer meme to lighten up the mood?

    + + + +

    This small article from the author of ssh was in the news and it deserves +the reading.

    + + + +

    If you haven't read it already.

    + + + +

    I'm not a particular fan of one liners as I always get lost in the list +and don't find what I need from them but it might be useful to others.

    + + + +

    The whole reason why plan9 hasn't taken off...

    + + + +

    This website has a lot of interesting manual and documentation of old +machines and softwares.

    + +

    Random

    + + + +

    This is a newsletter I recently signed up to, it summarizes recent events +that have been happening in the world.

    + + + +

    This keeps popping up everywhere! Are you on social networks? Why? Let's +discuss that. What's a social network?

    + + + +

    Everyone wants to join it, I've heard they're distributing free beers.

    + + + +

    Bring your family and friends on weekends, I'm sure they'll enjoy!

    + +

    Thoughts

    + +

    "That which can be destroyed by the truth should be." — P.C. Hodgell
    +http://lesswrong.com/lw/o2k/flinching_away_from_truth_is_often_about/

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#19 + 2017-04-22 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Brace yourself for some horror stories.

    + + + +

    To continue with the horror stories, there are many arguments on the +internet about Linux and it's purity as a Unix system. Some of those +arguments are just to be discarded, others are serious. Like any criticism +if it's not constructive you have to take it lightly.

    + + + +

    All that is required is that it stays stable for the enterprise world by +following the POSIX and Open Group standards. The EulerOS 2.0 and K-UX +3.0, derived from Red-Hat prove that, even though they aren't derived +from the original UNIX and under the hood have a different architecture.

    + + + +

    An article that goes to the root of the issue.

    + + + +

    Some hilarious oldies scripts that could possibly be useful, such as +this one: http://www.brendangregg.com/Specials/mkzombie_example.txt

    + + + +

    The turbo button was one of those weird thing of the past that doesn't +mean much these days.

    + + + +

    To continue on with our series of links about JS and the web, here's +one that's not about emulation but about running a shell in the +browser. Last time I've heard of that it was about pwning websites +through web-shells. The last link, the research paper, gives another +interesting side to the story.

    + + + +

    Programmers get pissed off a lot by useless semantics, etymologies, +and epistemology. This is a fun way to put things back in +perspective, which reminds me of the new-age bullshit generator +(http://sebpearce.com/bullshit/)

    + + + +

    Last week I mixed up two links.. https://vim-adventures.com/ and +passweird, sorry 'bout that fellows. Vim adventure is a great and really +addictive way to learn about vim. Though, it's only free until lvl3.

    + + + +

    Please come back on the forums, we love you!

    + +

    rocx rocks at skteches

    + +

    A sketch related to one of the above links:
    +http://imgur.com/a/OBjVR

    + +

    Random

    + + + +

    Share the most wtf secrets you have.

    + + + +

    Ever wondered what the code in movies really was.

    + + + +

    Don't be shy to ask questions or contribute to conversations.

    + +

    Thoughts

    + +

    The art of not giving a fuck, "Ever watch a kid cry his eyes out because +his hat is the wrong shade of blue? Exactly."

    + +

    https://markmanson.net/not-giving-a-fuck

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#18 + 2017-04-15 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Security through obscurity.

    + + + +

    The big question of "should the Wayland protocol include networking +support or should the Wayland compositor implement it?"

    + + + +

    atacontrol, vpddecode, biosdecode, dmidecode, get the info you +want from the BIOS.

    + + + +

    So many minimal system, here are two new ones you can add to your list, +and a link to pidsley from the linuxbbq community who always impresses +us with his ricing. On a side note, Linuxbbq has a wonderful and thriving +community.

    + + + +

    Have fun trying this new Unix-like OS.

    + + + +

    "compgroups give users free access to computer public newsgroups."

    + + + +

    Databases of file extensions and information.

    + + + +

    "My BSD sucks less" a talk that dives inside technical differences +between FreeBSD and OpenBSD.

    + + + +

    I always find those kind of reverse hacking/(script kiddie ddos +botnet) post interesting, even though his post is more or less +of a bragging about the sysdig utility, which is not that bad +(http://www.sysdig.org/wiki/sysdig-examples/), you can get it from your +distro's repo.

    + + + +

    This goes along well with the book we shared some weeks ago "The Craft +of Text Editing" (https://www.finseth.com/craft/), I read only half of +that book, it was too much indepth for me. However some readers might +find value in this and so I'm sharing!

    + +

    Random

    + + + +

    Ever dreamt of having to remember a password and tell yourself "If only +someone knew this."

    + + + +

    Generate some "Web Economy Bullshit".

    + + + +

    Want to meetup with other compatible Gods in your region, checkout this +website, it's the next-gen meetup.com.

    + + + +

    A play on word with how the internet of things is "secure".

    + +

    Thoughts

    + +

    Yeah, but people still use this stuff - Tony Lawrence

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#17 + 2017-04-08 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Mind boggling post about parallelism in shell pipelines.

    + + + +

    The ten immutable laws of security and why physical access means game over.

    + + + +

    The keyboard for the MIT LISP machine that inspired EMACS.

    + + + +

    An ed-like interface to do many things. Mathreference is also +edbrowse-friendly.

    + + + +

    On the topic of inputs, here's a writing method you should know about.

    + + + +

    It's a pain to transparently jump through ssh hosts, this article +discusses a method of removing some of the hassle.

    + + + +

    Check your shell options and differences in expansion and globing.

    + + + +

    which -a time, take some time to check the list of built-in commands +in your shell.

    + + + +

    Yet again an oldschool wizard with a phenomenal blog.

    + + + +

    "The world's first working programmable, fully automatic digital computer."

    + +

    Random

    + + + +

    A presentation about the modern web.

    + + + +

    If you're the kind of person that needs accountability to continue their +streak this website may help.

    + + + +

    Advanced minesweeper tactics.

    + + + +

    Different views on 0days.

    + + + +

    ...and it's a dead link! But don't worry there are Firefox addons (Hey, +you're getting away from Google so you're certainly not gonna start +using Chrome) that can disable tracking such as beef taco, the builtin +"opt out" mechanism in the settings, privacy badger, disconnect, or any +EFF approved addon..

    + +

    Thoughts

    + +

    If you understand something, it is probably already obsolete - James Burke

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#16 + 2017-04-01 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Manipulating language is an extensive subject, and unlike the researches +in NLP those links are truly "Unix-relevant".

    + + + +

    Doug Englebart is the father of HCI, go and raise up those poor 89 YT views.

    + + + +

    The first link here is probably the best gradual approach to Unix I +could ever find. Share it with your friends to see how it goes.

    + + + +

    A collage of Unix clips found in various movies.

    + + + +

    These days it seems like javascript is eating up everything, so why not +emulate what could run on bare metal over javascript instead.

    + + + +

    This is a beautiful, extensive, and visual guide/book to writing +manpages. Keep this bookmarked so that you can use it as a reference +next time you need it.

    + + + +

    Doug McIlroy recently released a paper, it discusses communication files, +which were a not well known and complext IPC tech. He also mentions the +directed shell: https://www.dmst.aueb.gr/dds/sw/dgsh/

    + + + +

    You might enjoy this article if you're able to make sense of it.

    + + + +

    Read up to find the answer...

    + + + +

    This website disects your command line into a human readable format.

    + +

    Random

    + + + +

    A follow up on last week sharings about creativity, this website allows +you to create dynamic directed graphs where you can explore the relation +between the nodes live.

    + + + +

    The phrack hacking magazine has been ongoing since 1985 and still uses +the same ascii format for releases, which is perfect for us. Most of the +articles are technical ones but you can find philosophical ones such as: +http://phrack.org/issues/69/6.html#article

    + + + +

    Have you ever wondered what kind of softwares run on a Tamagotchi?

    + + + +

    Thanks josuah for that wonderful link.

    + +

    Thoughts

    + +

    We all feel like newbies... and if you don't you're nuts!
    +Peanuts peanuts peanuts.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#15 + 2017-03-25 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Here's a Unix family tree, a FreeBSD family tree, and as a bonus, +a window managers family tree.

    + + + +

    I've shared this project during the podcast about window managers +(https://nixers.net/showthread.php?tid=2048), I keep coming back to +it and want the readers to at least give it a glance if they didn't +already. A lot of the videos are dead but the concepts still live.

    + + + +

    Small is beautiful... Now compare that 64KB with the 1GB in this +1x1.5inch machine.

    + + + +

    A series of 7 parts on frequently asked questions about Unix, there's +a lot of interesting ones in there.

    + + + +

    The whole blog is hilarious and well made, I applaud the guy who made it.

    + + + +

    Unix can be art too - this is not what you think it is.

    + + + +

    A book I started reading about the concepts behind building a text editor.

    + + + +

    A story why closed source can be dangerous to society.

    + + + +

    So many Unix flavors/distros that you need a translator between them.

    + + + +

    An article about those guys... You know.

    + + + +

    This is a very frequent question.

    + + + +

    This is yet another of those random stumbled upon website.

    + +

    Random

    + + + +

    Creativity is about mixing new stuffs together in interesting ways.

    + + + +

    Another one of those magnificent golden websites.

    + + + +

    Finally a useful js library!

    + + + +

    No, this isn't the matrix you know but it's related. The matrix protocol +tries to create a ubiquitous standard for anonymous communication.

    + +

    Thoughts

    + +
    +

    "What we see depends mainly on what we look for." - John Lubbock

    +
    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#14 + 2017-03-18 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Probably one of the best document I've read about "Explaining the whole of +Unix in one shot", he even uses the prompt "GREENSCREEN". I can't emphases +how good this page is. The author is a Google Engineer and has also +written a beautiful window manager ahwm ( http://www.hioreanu.net/cs/ahwm/ +) which is especially well documented.

    + + + +

    Creating a timeout for a system call on Unix isn't very clean but isn't +very necessary either.

    + + + +

    I've linked to anonradio.net before and this one is similar but technology +oriented. You'll find a bunch of episodes on Unix there.

    + + + +

    z3bra started the third edition of the scavenger hunt.

    + + + +

    A hilarious and well written blog about explaining "complex" Unix and +Linux topics to newcomers.

    + + + +

    A story about digital data PTSD. we all cherish our data - so run your +backups and think about having less ties with your machine. The author +is a MacOS user so it'll only be relevant to the readers who are on +this OS however I really like the description of the state of mind he +got into which is the main reason I am sharing it.

    + + + +

    A great post about the virtues of the Unix shell and why it is the way +it is.

    + + + +

    A cross-Unix shell script which creates a compressed file (many format +available) which can extract itself.

    + + + +

    He's got the beard, he got the years, here's an impressive fellow.

    + + + +

    The original vi was based on ed, which was closed source. Now that ed +was released under the BSD license we can test the original vi code.

    + +

    Random

    + + + +

    You would never guess why...

    + + + +

    To innovate you have to see beyond your closed field of study.

    + +

    Thoughts

    + +

    This is the issue number 13.

    + +

    It is weird that we associate so much with numbers +https://en.wikipedia.org/wiki/13_(number) some use it as a lucky number +and others as an unlucky one. Many benign things are culture dependent.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#13 + 2017-03-11 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    If you were paid to rewrite glibc for embedded devices, how would it +be. Staying away from GPL is a big thing for corps.

    + + + +

    Writing shell scripts is hard when you have to support POSIX shell, +here are some tricks to make it easier. Keep that bookmarked.

    + + + +

    In a previous issue we linked to the checkbashisms tool. Let's widen +the scope to all cool linters.

    + + + +

    Code of conducts, rules, FAQ, README_BEFORE_FREAKING_POSTING, so many +documents writen to deter people from doing stupidities (or what that +group considers stupidity). Why not cat | sort | uniq those and take +the best? Would it amount to "Don't be a jackass"?

    + + + +

    Slides of a presentation by Rob Pike about the Unix heritage.

    + + + +

    ...And adding to this, before reaching the TTY the keybind has to pass by +maybe some program, some terminal emulator plugins, and the shell. You +can use the RFC as a reference for when you don't know what a control +character is suppose to do. Use infocmp and script to debug those.

    + + + +

    Those wikis will fancy your exotic hardware needs.

    + + + +

    Before Netscape all browsers were proprietary. Both of the ones I linked +worked on Unix platforms.

    + + + +

    Davinci Resolve 12.5, a professional and proprietary software for video +editing, was recently ported to CentOS 6.x (Yeah, only one specific +distro). I'm not into video editing but as I've read the state of +professional video editing softwares on Unix is not so good.

    + + + +

    zsh, sh, and ksh don't do that. bash is protective and I personally +like that.

    + +

    Random

    + + + +

    It really makes you think about how automated an free the world can +become. From 1946 to today where we're dreaming of seasteading and +modular houses built with 3d printers. What do you think?

    + +

    Thoughts

    + +

    Show me how you spend your day and I'll tell you what you care about.

    + +
    + +

    http://ewanvalentine.io/how-to-never-complete-anything/>
    +https://news.ycombinator.com/item?id=13816627
    +https://business.linkedin.com/sales-solutions/blog/g/get-your-score-linkedin-makes-the-social-selling-index-available-for-everyone

    + +

    Why complicate things? The software industry and programmers of today +are looking for too much achievements, stacking the "green blocks" +on GH, looking for confirmation of their existence, checking graphs +and statistics about their "progress", wanting to raise on the "SSI", +social selling index.

    + +

    Let's slow down a bit! Small changes for a small group is more valuable +than running against titans

    + +

    If it is useful to someone and kind of serves the purpose then that is +enough for a start.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#12 + 2017-03-04 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    A timeless piece about the misusage of the glob and shell expansions.

    + + + +

    Isn't it wonderful that we live in an age where there are so many free +information at our fingertips that we can't make sense of them.

    + + + +

    This websites regroups, in an artistic fashion, many original phone +homescreens.

    + + + +

    There are not many articles going through the font stack and I think +it's worthy to mention the podcast we had last week.

    + + + +

    I don't really know who this guy is but he's earned my respect. His +resume is orgasmic http://icculus.org/resume and he even taught me how +to make mushroom burgers http://chef.icculus.org/ ... who knows it might +be Gordon Ramsey's relative.

    + + + +

    Funny isn't it?

    + + + +

    The place to go to get your shell tricks.

    + + + +

    jkl won a bet by creating a tool to estimate the weight of a file.

    + + + +

    Maybe you've heard the term "powerline" but had no idea what it was +about. Now you know, is too much not enough?

    + + + +

    The first link might be enough for you but you can go on with the rest +if you wish to.

    + + + +

    Some times ago it wasn't as frequent to share your special dots +and scripts. Those are the one of the author of "Beginning Perl" and +"Advanced Perl Programming".

    + +

    Random

    + + + +

    We are all similar in some sense, all following trends.

    + + + +

    Apparently not everyone knows about this wonderful service.

    + + + +

    Who'd thought that fish (cam) would live for so long...

    + +

    Thoughts

    + +

    Have you ever heard of futurists?

    + +

    https://research.fb.com/prophet-forecasting-at-scale/?
    +https://venam.nixers.net/blog/philosophy/2015/08/12/futurists.html

    + +

    That thought alone can lead you to cognitive dissonance.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#11 + 2017-02-25 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Some many programs to help you keep track of what you want to do. As +for me a simple at(1) combined with notify-send is enough, what about you?

    + + + +

    Again so many softwares doing the same thing, we need more comparative +reviews/articles about them. I don't have any personal favorite, I +would've liked to use terminal markdown viewer mdv but it doesn't +seem to respect everything I'm looking for. Hopefully there are many +in-browser markdown viewers.

    + + + +

    In the 80s the URSS had their own DEC’s PDP11 compabible cpu and thus +could run their own version of Unix-like OS derived from Unix Version 6.

    + + + +

    I can't read any of those but I enjoy the thought of it.

    + + + +

    You may want your cool short key but beware of collision.

    + + + +

    pam_captcha is the simplest pam module I've found and probably the +easiest one that can be used to understand PAM.

    + + + +

    "Master the command line, in one page", ostentatious title but +worthy article.

    + + + +

    The keyboard layout is handled at the X11 layer, I haven't been through +the pdf about the protocol but you can still glance through it rapidly.

    + + + +

    I had never wondered about this topic before, are our current font +dialogs designed in the most efficient manner? Now that the topic is +brought to light I can't help but think of it everytime I choose a font +in an application.

    + + + +

    A Unix history website, even though look oldish, that is still +maintained (Last Update: January 29 2017).

    + +

    Random

    + + + +

    Another one of those cool net-art website.

    + + + +

    Unix is all about text files, so many text files to browse on that +website.

    + + + +

    The best of glitch art.

    + + + +

    No need to rely on the internet anymore.

    + +

    Thoughts

    + +

    We're brainstorming on the topic of "digital focus/attention studies +and tools, stuffs that are truly scientifically proven"
    +https://titanpad.com/digital-focus-scientifically-proven-wiki
    +If you have some thoughts on that they would be greatly appreciated, +hop in and edit the public pad.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#10 + 2017-02-18 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    What happens when you loose the ability to speak and need free software.

    + + + +

    A walkthrough the find utility.

    + + + +

    In depth into 2038.

    + + + +

    Firefox is undergoing a lot of changes lately. Are those changes +influenced by competition, do you like what is happening, are the addons +support left out of the plan? Whatever the case, it's still free software.

    + + + +

    A comprehensive overview of how git stashing works.

    + + + +

    Regardless... The article is amazing.

    + + + +

    Talking about unstandard standards, here's our last one that has +finally been christened (after so many years of being a lonely unamed +orphan). Prepare your mimedb because you'll need to add text/markdown.

    + + + +

    Software developers depression is a real thing, don't take it lightly.

    + + + +

    Here are some websites with free versions of popular games.

    + + + +

    Checkout this dude's irc setup, it's worth your time and patience.

    + +

    Random

    + + + +

    We're also trying to find inspiration for our own internet badge: +https://nixers.net/showthread.php?tid=2056

    + + + +

    If you haven't heard of this internet phenomena you should look it up now.

    + + + +

    A chapter on a book about network forensics evasion.

    + + + +

    Looking for inspiration, here's a phenomenal website.

    + +

    Thoughts

    + +

    You can learn from anyone, you simply have to approach the situation +with this intent and keep reminding yourself of this.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#9 + 2017-02-11 00:00:00 + Nixers Newsletter + +

    Unix

    + +
      +
    • Identity +http://www.moxytongue.com/2016/02/self-sovereign-identity.html +http://www.lifewithalacrity.com/2016/04/the-path-to-self-soverereign-identity.html +https://en.wikipedia.org/wiki/Digital_identity +Those are deep discussions about the nature of online identity and +identity in general.

    • +
    • Unix haters handbook +http://www.mindspring.com/~blackhart +Ever wanted to know about what the haters thought?

    • +
    • Digital Minimalism +http://calnewport.com/blog/2017/01/28/on-value-and-digital-minimalism/ +Another article that takes the approach of value.

    • +
    • How to ask a question +http://www.catb.org/~esr/faqs/smart-questions.html +An extensive guide on how to ask a "smart" question in the most +appropriate manner.

    • +
    • Frequently asked questions +http://www.unix.com/answers-to-frequently-asked-questions/ +The unix.com frequently asked questions, most related to shell scripting.

    • +
    • A story about cron +https://blog.notfoss.com/posts/a-tale-of-two-crons-or-how-cron-helped-me-spot-an-infection-on-a-server/ +I just love reading stories about real life scenarios.

    • +
    • Corporate Unix conference +https://www.youtube.com/watch?v=gYtMWfyYWIU +Thanks a-109-107 for reminding us that Corba used to be the standard +corporations loved in 1993.

    • +
    • X11 Clipboard +http://unix.stackexchange.com/questions/136229/copy-paste-does-not-always-work-from-firefox-to-terminal +http://superuser.com/questions/68170/how-can-i-merge-the-gnome-clipboard-and-the-x-selection +https://bbs.archlinux.org/viewtopic.php?id=144741 +Some info about the clipboard and as bonus an hilarious renaming of a +clipboard manager by an Arch user.

    • +
    • One Thing Well +http://onethingwell.org +In the same fashion as the kmandla blog, this blog lists multiple +softwares that do one thing well.

    • +
    • List of debug/analysis tools +https://remnux.org/docs/distro/tools/ +Again a list of cool softwares used in the remnux distro, it's worth +taking a look at.

    • +
    + +

    Random

    + +
      +
    • "the end of the internet +http://hmpg.net +That's it you've found it!

    • +
    • Wormholes +https://fauux.neocities.org +http://jodi.org +http://0100101110101101.org/files/hell.com/ +Net art is amazing.

    • +
    + +

    Thoughts

    + +

    The last episode of the nixers podcast took me a huge amount of +research unfortunately the audio recording didn't turn out as good as +I wanted (I was too tired.) You can read the transcript on the forums: +https://nixers.net/showthread.php?tid=2052&pid=17479#pid17479 +I've learned quite a lot of things during the preparation and you +might too.

    + +

    The thought of this week is: A community is a community because it's +community driven. Share your knowledge and your time with others, you're +running the show!

    + +

    I love you guys.

    + +

    Contribute

    + +

    (Thanks to everyone who contributed with links.)

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#8 + 2017-02-04 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Multiple implementation of simple webservers.

    + + + +

    This function may also help understand it: +https://github.com/pclouds/busybox-w32/blob/2762242f30d0d046a80abe41fd78415052bbe95f/libbb/executable.c#L100 +This is a nifty way to implement timeout.

    + + + +

    A discussion about the real innovations that were brought, take whatever +you want from it.

    + + + +

    Some thoughts about minimalism in the computing world.

    + + + +

    This was linked in the previous post but I think it's worth it to link +it again here so that you are more enticed to read it.

    + + + +

    We had a discussion about static blog generation and those came along.

    + + + +

    Here's a list of the runlevels on different Unix-like OS.

    + + + +

    This system is so misunderstood and differently implemented. +Also check credential(7).

    + + + +

    Share your tricks (and horror stories along the line.)

    + +

    Random

    + + + +

    Welcome to the internet!

    + + + +

    Again one of those trollish websites we all love.

    + +

    Thoughts

    + +

    There are things we only learn when we have to face them.

    + +

    Don't be stagnant.

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#7 + 2017-01-28 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    This is what happens when white unix geeks try to rap around an "excited" +crowd.

    + + + +

    A mailing list about Unix system administrators horror +stories. If you've had one, you can share it on this thread: +https://nixers.net/showthread.php?tid=1882

    + + + +

    The blogger maybe just wanted to annoy you before reaching his wonderful +blog: https://anders.unix.se/

    + + + +

    A glossary of multiple subjects.

    + + + +

    Very nice comparison.

    + + + +

    The homepage of a great dude.

    + + + +

    There's a lot of talk about "true randomness" and random pool but does +it hold up.

    + + + +

    Here's dmr discussing the development of the C language.

    + + + +

    A wonderful presentation about today.

    + + + +

    You are all MONSTERS! +Written by this dude: https://en.wikipedia.org/wiki/Weev and to judge +accordingly.

    + +

    Random

    + + + +

    We were discussing street riots and I pointed out how berserk they were +and acted out fearing their annihilation. We'll that's exactly what +berserker are about.

    + + + +

    We should also start our own icecast stream.

    + +

    Thoughts

    + +

    Here's a typical blog post: +http://ttimo.typepad.com/blog/2006/06/rant.html

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#6 + 2017-01-21 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Irc culture, flamming, and trolls, does that ring a bell?

    + + + +

    Going with the recent podcast about shells +https://nixers.net/showthread.php?tid=2047 , here's a software to fight +the Bash specific syntax.

    + + + +

    Why bash on bash when there's csh instead!

    + + + +

    A backstory on the misquoted famous comment of the Unix V7 source.

    + + + +

    Here are some concepts you should definitely know when dealing with +process management.

    + + + +

    I don't really get the "what you need to do to get a job in 10 steps"-kind +of articles but I'll still feature this one.

    + + + +

    Let Eric Raymond take you on a journey through the means of IPC on the +unix-like platforms.

    + + + +

    We usually enter a username and password as credentials but what if we +could ssh instead?

    + + + +

    Are you a sysadmin?

    + + + +

    We featured in the last newsletter the detox program, now you get the +"why" it's annoying.

    + +

    Random

    + + + +

    Checkout what those rms-like free artists are doing.

    + + + +

    Thoughts

    + +
    +

    When we copy we justify, when others copy we vilify.

    +
    + +

    What does it mean to have a copy-left license? +What does open source mean?

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#5 + 2017-01-14 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Ever spent time configuring X and wondered what those subpixels were?

    + + + +

    Xerox has influenced so many of today's graphical interface concepts.

    + + + +

    You know the times in the first link but have you heard of the one in +the second?

    + + + +

    Automated cleaning of spaces.

    + + + +

    Gopher preceded the internet, here's its story.

    + + + +

    Are you fan of those nice patterns?

    + + + +

    One of the rare interview with dmr.

    + + + +

    I've never thought about it before because I'm not a big mouse user but +that's how you enable middle mouse scrolling.

    + + + +

    Some philosophy written by a master of minimalism.

    + +

    Random

    + + + +

    We rather ofter hear stories from our fellow members about their +universities and so I'd like to share mine.

    + + + +

    We used to have fun at the libraries with those when we were young.

    + +

    Thoughts

    + +

    "z3bra: it's the curse of the nix community everyone takes it as a +personal attack when they're told their wrong"

    + + + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#4 + 2017-01-07 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    A post from stark/abhx that lists ways to reduce memory and processor usage.

    + + + +

    This book uses plan9 as an avatar to describe the principles of +abstraction that most operating systems have. It isn't a hard read.

    + + + +

    A gradual and practical introduction to functional programming. It is +lightly and nicely written.

    + + + +

    Ctags incorporates with most text editors and IDEs... If you have no +clue what it is I urge you to check it out.

    + + + +

    An article written by tejr going through must known privacy softwares +and parts on Linux (though most apply to any Unix flavors.)

    + + + +

    Strong privacy, is it still possible?

    + + + +

    A series of articles about network programming. Let's wait until z3bra +releases his next course https://nixers.net/showthread.php?tid=1928.

    + + + +

    /sys on Linux is well documented and this is where you will find the +documentation for whatever you can dynamically tweak in your Linux kernel.

    + + + +

    Wanna give BSDs a try in 2017 to up those stats?

    + + + +

    A tutorial on getting mumble running in the terminal. +(You may need to translate the article)

    + +

    Random

    + + + +

    A great documentary about BBS.

    + +

    Thoughts

    + +

    Woah, this newsletter packs up a lot of content. +You won't be able to consume it all but don't worry you have all of 2017 +to do so.

    + +

    Let's make 2017 a dynamic year, full of projects, interactions, and new +phenomenal people joining in.

    + +

    Stay updated!

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC or any other services.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#3 + 2016-12-31 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Use the speed of multiple interfaces together.

    + + + +

    The tale of the teletype printer.

    + + + +

    Need I say more...

    + + + +

    A fairly simple and straight forward introductory tutorial on using +strace.

    + + + +

    netdata only work on Linux and seems to be a memory hog but it's still +interesting to look at what the next-gen ui look like (until we can +afford to run them.)

    + + + +

    Protect yourself from port scanning or attacks using PF or IPtables.

    + + + +

    An interactive series of article going in depth into the X11 protocol.

    + + + +

    Signup for a free shell account on a public access UNIX system.

    + + + +

    A Harward teacher reference web page. +http://www.in-ulm.de/~mascheck/ +And yet another university teacher reference page, this one follows the +old Unix tilde homepage url formula, which reminds me of...

    + + + +

    Launching back the early days where almost every web server ran some +version of Unix and things went wild.

    + +

    Random

    + + + +

    If you have time for some technological talks those are still fresh.

    + + + +

    This website let's you send an email to your future self. I've tried +it myself and it's surprising. With the new year arriving it might be a +great way to tell your future self if you've achieved what you wanted to.

    + +

    Thoughts

    + +

    http://www.unixtimestamp.com/
    +Happy 1483228800 unix timestamp!

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    9. If you want to help with the forums server fees you can send something +to my (new) patreon page: https://www.patreon.com/venam or you can +ask dcat how you can help with the IRC.
    10. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#2 + 2016-12-24 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    The university days of a student and how a simple event can impact a life. +We all live in a world where traffic is thought to be a positive word, but traffic is looking at a car accident an forgetting the next second. +What about less people and more value.

    + + + +

    A section of a book, "Code Quality: The Open Source Perspective", analyzing the +source code of the banner program. banner was the predecessor to figlet. +It's interesting how the characters were printed. +You can find the source code here: https://packages.debian.org/stable/sysvbanner +It's very small, and it uses one character variables.

    + + + +

    A project to make a pdp-7 run again.

    + + + +

    0verkill an oldish-like game you will like. +Source can be found here: https://github.com/hackndev/0verkill.git +To install simply run: ./rebuild

    + + + +

    In relation with this discussion: https://nixers.net/showthread.php?tid=2024

    + + + +

    A simple question with a simple answer.

    + + + +

    Have you ever wondered?

    + + + +

    To explain to any of your non-technie friends.

    + + + +

    Go through this once, it's an agglomeration of all the man pages related to the shell language.

    + +

    Random

    + + + +

    This is a gift from xero

    + +

    Thoughts

    + +

    Happy Hacky-Holidays nixers!

    + +

    For those with x11: +repeat 3 xset led on +sleep 1 +xset led off +sleep 1

    + +

    Contribute

    + +

    There are many ways to contribute:

    + +
      +
    1. If you find anything interesting you can contact venam on the +forums and that may be featured in the next newsletter.
    2. +
    3. Share it with your friends.
    4. +
    5. Share your point of view about the newsletter.
    6. +
    7. Open a thread on the forums to discuss one of the topics that has +been brought by reading this newsletter.
    8. +
    + +]]>
    +
    + nixersnewsletter + https://newsletter.nixers.net/entries.php#1 + 2016-12-17 00:00:00 + Nixers Newsletter + +

    Unix

    + + + +

    Random

    + + + +

    Thoughts

    + +

    It's starting to get cold outside, keeping a Unix machine next to you +and running :(){ :|:& };: is a great way to stay warm.

    + +]]>
    +
    diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_nixos.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_nixos.xml new file mode 100644 index 0000000..bc18c50 --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_nixos.xml @@ -0,0 +1,898 @@ + +NixOS Newshttps://nixos.orgNews for NixOS, the purely functional Linux distribution.NixOShttps://nixos.org/logo/nixos-logo-only-hires.pnghttps://nixos.org/ + NixOS 18.09 released +https://nixos.org/news.html + + 18.09 Jellyfish logo + + NixOS 18.09 “Jellyfish” has been released, the tenth stable release branch. + See the release notes + for details. You can get NixOS 18.09 ISOs and VirtualBox appliances + from the download page. + For information on how to upgrade from older release branches + to 18.09, check out the + manual section on upgrading. +Sat Oct 06 2018 00:00:00 GMT + Fastly supports NixOS +https://nixos.org/news.html + We are happy to announce that we have moved our binary cache to Fastly. Fastly + is a big supporter of open source projects and now NixOS is one of them! Fastly provides us with CDN capability, + which previously was running on AWS CloudFront. Big thanks go to Fastly, in particular Tom Denniston and Elaine + Greenberg, our friends at Infor and Packet.net + and Graham Christensen for making this possible. +Thu Oct 04 2018 00:00:00 GMT + Nix 2.1 released +https://nixos.org/news.html + Nix 2.1 + has been released. See the release + notes for a list of changes and new features. +Sun Sep 02 2018 00:00:00 GMT + NixOS Discourse forum +https://nixos.org/news.html + The nix-devel mailing list is now replaced by our discourse forum instance which is also usable by email: + discourse.nixos.org. +Tue Aug 14 2018 00:00:00 GMT + NixCon 2018 +https://nixos.org/news.html + We're happy to announce that NixCon 2018, the + third Nix Conference, will take place October 25-27 2018 in London + For more information, see the + NixCon 2018 website. + And please consider + submitting a talk! +Mon May 21 2018 00:00:00 GMT + NixOS 18.03 released +https://nixos.org/news.html + + 18.03 Impala logo + + NixOS 18.03 “Impala” has been released, the ninth stable release branch. + See the release notes + for details. You can get NixOS 18.03 ISOs and VirtualBox appliances + from the download page. + For information on how to upgrade from older release branches + to 18.03, check out the + manual section on upgrading. +Wed Apr 04 2018 00:00:00 GMT + Nix 2.0 released +https://nixos.org/news.html + Nix 2.0 + has been released. See the release + notes for a list of changes and new features. +Thu Feb 22 2018 00:00:00 GMT + NixOS 17.09 released +https://nixos.org/news.html + NixOS 17.09 “Hummingbird” has been released, the eigth stable release + branch. See the release notes + for details. You can get NixOS 17.09 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 17.09, check out the manual section on + upgrading. +Mon Oct 02 2017 00:00:00 GMT + Nix-dev mailing list moved +https://nixos.org/news.html + The nix-dev mailing list has moved to + nix-devel + on Google Groups. +Wed Jul 12 2017 00:00:00 GMT + NixCon 2017 +https://nixos.org/news.html + We're happy to announce that NixCon 2017, the + second Nix Conference, will take place October 28–31 2017 in Munich + For more information, see the + NixCon 2017 website. + And please consider + submitting a talk! +Sun Jun 18 2017 00:00:00 GMT + NixOS 17.03 released +https://nixos.org/news.html + NixOS 17.03 “Gorilla” has been released, the seventh stable release + branch. See the release notes + for details. You can get NixOS 17.03 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 17.03, check out the manual section on + upgrading. +Fri Mar 31 2017 00:00:00 GMT + NixOS 16.09 released +https://nixos.org/news.html + NixOS 16.09 “Flounder” has been released, the sixth stable release + branch. See the release notes + for details. You can get NixOS 16.09 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 16.09, check out the manual section on + upgrading. +Mon Oct 03 2016 00:00:00 GMT + NixOps 1.4 released +https://nixos.org/news.html + NixOps + 1.4 has been released. This release contains contains many + nice new features. See the manual + for details. +Wed Jul 20 2016 00:00:00 GMT + NixOS 16.03 released +https://nixos.org/news.html + NixOS 16.03 “Emu” has been released, the fifth stable release + branch. See the release notes + for details. You can get NixOS 16.03 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 16.03, check out the manual section on + upgrading. +Sun May 01 2016 00:00:00 GMT + Nix 1.11 released +https://nixos.org/news.html + Nix 1.11 + has been released. See the release + notes for a list of changes and new features. +Fri Feb 19 2016 00:00:00 GMT + NixOS 15.09 released +https://nixos.org/news.html + NixOS 15.09 “Dingo” has been released, the fourth stable release + branch. See the release notes + for details. You can get NixOS 15.09 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 15.09, check out the manual section on + upgrading. +Fri Oct 30 2015 00:00:00 GMT + Nix 1.10 released +https://nixos.org/news.html + Nix 1.10 + has been released. See the release + notes for a list of changes and new features. +Sat Oct 03 2015 00:00:00 GMT + NixCon 2015 +https://nixos.org/news.html + NixCon logo + We're happy to announce that NixCon 2015, the + first Nix Conference, will take place on November + 14—15th 2015 in Berlin. For more information, see the + NixCon website. And please + consider submitting a + talk! +Thu Sep 03 2015 00:00:00 GMT + NixOS Foundation +https://nixos.org/news.html + The NixOS Foundation + was started to improve our ability to maintain and extend the infrastructure + used by the Nix related projects. If you would like to support us, please go + here and donate some money! +Sun Aug 09 2015 00:00:00 GMT + Nix 1.9 released +https://nixos.org/news.html + Nix 1.9 + has been released. See the release + notes for a list of changes and new features. +Sun Jul 12 2015 00:00:00 GMT + NixOS 14.12 released +https://nixos.org/news.html + NixOS 14.12 “Caterpillar” has been released, the third stable + release branch. It brings Linux 3.14, systemd 217, Glibc 2.20, + KDE 4.14.1, and much more. See the release notes + for details. You can get NixOS 14.12 ISOs and VirtualBox + appliances from the download + page. For information on how to upgrade from older release + branches to 14.12, check out the manual section on + upgrading. +Fri Jan 30 2015 00:00:00 GMT + Nix 1.8 released +https://nixos.org/news.html + Nix 1.8 + has been released. See the release + notes for a list of changes and new features. +Wed Jan 14 2015 00:00:00 GMT + NixOS sprint in Ljubljana +https://nixos.org/news.html + We’re having a NixOS sprint at the Kiberpipa hackerspace + in Ljubljana, Slovenia, on August + 23—27. Joining is free! For more information and to + register, please go to the sprint + page. +Sat Aug 30 2014 00:00:00 GMT + NixOS 14.04 released +https://nixos.org/news.html + NixOS 14.04 “Baboon” has been released, the second stable + release branch. It brings Linux 3.12, systemd 212, GCC 4.8, + Glibc 2.19, KDE 4.12, light-weight NixOS containers, and much + more. See the release + notes for details. You can get NixOS 14.04 ISOs and + VirtualBox appliances from the download page. For information on + how to upgrade a 13.10 system to 14.04, check out the manual + section on upgrading. +Fri May 30 2014 00:00:00 GMT + NixOps 1.2 released +https://nixos.org/news.html + NixOps + 1.2 has been released. This release contains contains many nice new features. See the manual + for details. +Fri May 30 2014 00:00:00 GMT + Nix 1.7 released +https://nixos.org/news.html + Nix 1.7 + has been released. See the release + notes for a list of new features. +Sun May 11 2014 00:00:00 GMT + Heartbleed vulnerability in OpenSSL +https://nixos.org/news.html + A serious security + vulnerability has been discovered in OpenSSL. All stable + NixOS releases prior to version + 13.10.35708.15a465c are vulnerable. (You can + see your current version by running nixos-version.) To + upgrade to the latest NixOS version, run nixos-rebuild + switch --upgrade. You can verify whether you are safe by + running + +
    +        $ nix-store -qR /run/current-system | grep openssl
    +    
    + + If this shows any OpenSSL version prior to 1.0.1g, you may be + vulnerable. +
    Fri May 09 2014 00:00:00 GMT
    + FOSDEM talks +https://nixos.org/news.html + Domen Kožar gave a + talk at FOSDEM about NixOS (video). + Also, Ludovic Courtès gave a talk on + Guix, the Nix- and Guile-based package manager. +Sun Mar 02 2014 00:00:00 GMT + Stdenv updates branch merged into master +https://nixos.org/news.html + The stdenv-updates branch has + been merged into the master branch of Nixpkgs. The main + change are that brings is that Nixpkgs/NixOS are now based on + GCC 4.8 and Glibc 2.18, in addition to many smaller updates. +Fri Feb 21 2014 00:00:00 GMT + NixOS 13.10 released +https://nixos.org/news.html + We have released NixOS 13.10, the first stable branch of NixOS. + Its goal is to provide a safe branch for production environments + that need bug fixes and security updates, but not the + potentially destabilising changes that sometimes occur on the + unstable branch. You can get NixOS 13.10 ISOs and VirtualBox + appliances from the download + page. See the announcement + for more information. For information on how to switch an + existing NixOS machine from the unstable channel to 13.10, check + out the manual + section on upgrading. +Sun Dec 01 2013 00:00:00 GMT + Nix 1.6.1 released +https://nixos.org/news.html + Nix + 1.6.1 has been released. This is primarily a bug fix + release but has some minor new features. See the release + notes for details. +Thu Nov 28 2013 00:00:00 GMT + NixOS sources merged into Nixpkgs +https://nixos.org/news.html + The NixOS Git tree has been merged into the Nixpkgs tree in + order to simplify development. The sources now live in the nixos + subdirectory of the Nixpkgs repository on GitHub. See the + announcement + for more information. +Sun Nov 10 2013 00:00:00 GMT + NixOps 1.1.1 released +https://nixos.org/news.html + NixOps + 1.1.1 has been released. This release consists mostly of minor bugfixes. See the manual + for details. +Sat Nov 02 2013 00:00:00 GMT + Nix 1.6 released +https://nixos.org/news.html + Nix 1.6 + has been released. See the release + notes for details. +Thu Oct 10 2013 00:00:00 GMT + NixOps 1.1 released +https://nixos.org/news.html + NixOps + 1.1 has been released. This release brings a backend for Hetzner, + a German data center provider, support for EC2 spot instances and some + minor bugfixes. See the manual + for details. +Wed Oct 09 2013 00:00:00 GMT + NixOS sprint in Slovenia +https://nixos.org/news.html + A sprint focused on NixOS and Kotti will be held 22-26 + July 2013 in Lokve, Slovenia. It is organised by Termitnjak and sponsored + by LogicBlox. +Thu Aug 15 2013 00:00:00 GMT + NixOps 1.0.1 released +https://nixos.org/news.html + NixOps + 1.0.1 has been released, a minor bug fix release. See the manual + for details. +Sun Aug 11 2013 00:00:00 GMT + NixOS presentation at EuroPython +https://nixos.org/news.html + Domen Kožar gave a presentation at EuroPython + 2013: “NixOS + Operating System: Declarative Configuration Distribution”. +Mon Aug 05 2013 00:00:00 GMT + NixOps 1.0 released +https://nixos.org/news.html + NixOps + 1.0 has been released, the inaugural release of the NixOS + cloud deployment tool. See the announcement + and the manual + for details. +Thu Jul 25 2013 00:00:00 GMT + Nix 1.5.3 released +https://nixos.org/news.html + Nix 1.5.3 + has been released. This is primarily a bug fix release. See the release + notes for details. +Wed Jul 17 2013 00:00:00 GMT + PhD thesis: A Reference Architecture for Distributed Software Deployment +https://nixos.org/news.html + Today Sander van + der Burg successfully defended his PhD thesis entitled A + Reference Architecture for Distributed Software + Deployment! It describes (among other things) Disnix, a system for + deployment of service-oriented architectures. +Wed Jul 03 2013 00:00:00 GMT + Nix 1.5.2 released +https://nixos.org/news.html + Nix 1.5.2 + has been released. This is a bug fix release. +Thu Jun 13 2013 00:00:00 GMT + Nix 1.5.1 released +https://nixos.org/news.html + Nix 1.5.1 + has been released. It fixes a regression introduced in Nix 1.4. See the release + notes for details. +Thu Mar 28 2013 00:00:00 GMT + Nix 1.4 released +https://nixos.org/news.html + Nix 1.4 + has been released. This is primarily a bug fix release that + addresses a security problem in multi-user mode. See the release + notes for details. For installation information, see the manual. +Tue Mar 26 2013 00:00:00 GMT + NixOS switched to systemd +https://nixos.org/news.html + NixOS has switched from Upstart to systemd! + Systemd brings many advantages such as better dependency + management, socket-based activation of services, per-service + logging, cgroup-based process management, and much more. (Read + the announcement.) +Thu Feb 21 2013 00:00:00 GMT + Nix 1.3 released +https://nixos.org/news.html + Nix 1.3 + has been released. This is primarily a bug fix release. See + the release + notes for details. For installation information, see the manual. +Tue Feb 05 2013 00:00:00 GMT + Nix 1.2 released +https://nixos.org/news.html + Nix 1.2 + has been released. See the release + notes for details. For installation information, see the manual. +Sun Jan 06 2013 00:00:00 GMT + Nix 1.1 released +https://nixos.org/news.html + Nix 1.1 + has been released. See the release + notes for details. For installation information, see the manual. +Sat Aug 18 2012 00:00:00 GMT + Binary Nix tarballs available +https://nixos.org/news.html + Our continuous build system, Hydra, now produces binary + tarball distributions of Nix for Mac OS X (Darwin), FreeBSD + and Linux. The tarballs contain all dependencies of Nix, making + it a lot easier to install Nix on those platforms. To install, + download a binary tarball, unpack it in the root directory, then + run nix-finish-install. See the manual + for more information. +Sun Jun 24 2012 00:00:00 GMT + Nix 1.0 released +https://nixos.org/news.html + After almost two years of development, Nix 1.0 + has been released. See the release + notes for an overview of the most important improvements. + For installation information, see the manual. +Mon Jun 11 2012 00:00:00 GMTPatchELF 0.6 releasedhttps://nixos.org/news.html + PatchELF + 0.6 has been released. Apart from some bug fixes, it adds + support for executables produced by the Gold linker. See the README + for details. +Wed Dec 07 2011 00:00:00 GMTHydra talk at Inriahttps://nixos.org/news.html + + Hydra       logo + + Ludovic Courtès gave a talk on Hydra at Inria (which has + its own Hydra instance for building Inria software) entitled “Hydra: + continuous integration for demanding people”. +Sat Dec 03 2011 00:00:00 GMTMoving to GitHubhttps://nixos.org/news.html + The NixOS project is (slowly) migrating from Subversion to Git! + The master repositories will be hosted in the NixOS organization on GitHub. For the moment, just a + few subprojects have been migrated, such as Hydra and Charon. Thanks to + Tianyi Cui for donating the NixOS GitHub organization. +Mon Nov 28 2011 00:00:00 GMT + Nix-dev mailing list moved +https://nixos.org/news.html + The nix-dev mailing list has moved. The address is now + nix-dev@lists.science.uu.nl (web + interface). +Fri Oct 14 2011 00:00:00 GMT + FOSDEM talk about NixOS +https://nixos.org/news.html + Fosdem logo + Sander van der + Burg gave a talk about NixOS at the CrossDistro + track of FOSDEM (video, slides). +Sat Mar 05 2011 00:00:00 GMT + ISSRE paper on NixOS-based system testing +https://nixos.org/news.html + The paper “Automating System + Tests Using Declarative Virtual Machines” (by Sander van der + Burg and Eelco Dolstra) has been accepted for presentation at + the 21st IEEE International + Symposium on Software Reliability Engineering (ISSRE 2010). + It describes how system tests with complex requirements on the + environment (such as remote machines, network topologies, system + services or root privileges) can be written succinctly using declarative + specifications of the machines needed by the test + environment. From these specifications we can automatically + instantiate (networks of) virtual machines. This is what we use + for automated + regression testing of NixOS itself. A draft + of the paper is available. +Sat Sep 18 2010 00:00:00 GMT + Xfce in NixOS +https://nixos.org/news.html + Xfce screenshot + NixOS now supports Xfce, a + modern, light-weight desktop environment. It can be enabled by + setting the NixOS configuration value + services.xserver.desktopManager.xfce.enable to + true. (Screenshot) +Sat Sep 18 2010 00:00:00 GMT + Nix 0.16 released +https://nixos.org/news.html + Nix + 0.16 has been released, featuring a much faster evaluator + and support for configurable parallelism inside builders. See + the release + notes for details. For installation information, see the manual. +Fri Sep 17 2010 00:00:00 GMT + NixOS talk at LSM +https://nixos.org/news.html + Ludovic Courtès gave a talk about Nix and NixOS at the Libre Software Meeting + in Bordeaux, entitled “NixOS: + The Only Functional GNU/Linux Distribution” (slides). +Mon Aug 09 2010 00:00:00 GMT + Nix 0.15 released +https://nixos.org/news.html + Nix + 0.15 has been released. This is a bug fix release. See the + release + notes for details. For installation information, see the manual. +Sat Apr 17 2010 00:00:00 GMT + Nix 0.14 released +https://nixos.org/news.html + Nix + 0.14 has been released. This is primarily a bug fix + release. See the release + notes for details. For installation information, see the manual. +Thu Mar 04 2010 00:00:00 GMT + Nix logo +https://nixos.org/news.html + + Nix       logo Long overdue, the Nix project finally has a logo! + The logo was originally created by Simon Frankau for the Haskell + logo competition, who kindly gave us permission to use it + for the Nix project. (The snowflake motif is even more + appropriate for Nix, because nix is Latin for + snow.) Any further modifications are entirely our + fault. +Fri Dec 25 2009 00:00:00 GMT + Nix 0.13 released +https://nixos.org/news.html + Nix + 0.13 has been released. This is mostly a bug fix release, + although it also adds some new language features. See the release + notes for details. For installation information, see the manual. +Sat Dec 05 2009 00:00:00 GMT + LWN.net article on NixOS +https://nixos.org/news.html + LWN.net has an article about NixOS + written by Koen Vervloesem. +Sun Jul 26 2009 00:00:00 GMT + Nixpkgs 0.12 released +https://nixos.org/news.html + Nixpkgs + 0.12 has been released. See the release + notes for details. Meanwhile, the Nixpkgs trunk has been + updated + to GCC 4.3.3, Glibc 2.9 and X.org 7.4. +Sun May 24 2009 00:00:00 GMT + OpenOffice.org 3 in Nixpkgs +https://nixos.org/news.html + OpenOffice.org 3.0.1 screenshot + + Lluís Batlle has updated OpenOffice.org in Nixpkgs to 3.0.1 + (screenshot). +Thu May 21 2009 00:00:00 GMT + KDE 4.2 in Nixpkgs/NixOS +https://nixos.org/news.html + KDE 4.2 screenshot + + We now have a fairly complete set of KDE 4.2 packages in Nixpkgs + and NixOS. Previously we had KDE 3.5, but it was rather + incomplete: just kdelibs and kdebase. + Now we have all that desktop + goodness, such as kdemultimedia, + kdenetwork and kdegames. You can + enable KDE 4 in NixOS by setting the + services.xserver.sessionType option to + kde4. Thanks go to Yury G. Kudryashov, Andrew + Morsillo and Sander van der Burg for doing the hard work on + adding KDE 4 to Nixpkgs. (Screenshot 1, + screenshot + 2.) +Thu May 07 2009 00:00:00 GMT + Hydra +https://nixos.org/news.html + + Hydra       logo + + Nix + and NixOS + releases are now built in Hydra, the new Nix-based + continuous build system. Hydra replaces our old Nix-based + build farm, which will be phased out soon. There are + several advantages over the old build farm: the build tasks for + a project are scheduled and published separately, so that for + instance a (fast) tarball build doesn’t have to wait for a + (slow) Cygwin build; build results are stored in a database, + which will enable all sorts of interesting queries; better error + reporting; a better web interface; and much more. We have + written a draft + paper about Hydra. There are some instructions + available about how to set up your own Hydra server. +Thu Feb 05 2009 00:00:00 GMT + Linux.com article about Nix +https://nixos.org/news.html + There is an article on Linux.com about Nix: “Nix fixes dependency + hell on all Linux distributions”. +Thu Jan 22 2009 00:00:00 GMT + Nix 0.12 released +https://nixos.org/news.html + Nix + 0.12 has been released. The most important change is that + Nix no longer needs Berkeley DB to store metadata, but there are + many other improvements. See the release + notes for details. +Sun Dec 21 2008 00:00:00 GMT + DisNix paper accepted at HotSWUp +https://nixos.org/news.html +

    + The paper “Atomic Upgrading of Distributed Systems” (by Sander + van der Burg, Eelco Dolstra and Merijn de Jonge) has been + accepted for presentation at the First ACM Workshop on Hot + Topics in Software Upgrades (HotSWUp). A draft + of the paper is available. It describes Sander’s master’s + thesis research on DisNix, an extension to Nix that allows + deployment and upgrading of distributed systems from a single + declarative description. We will continue this research in + the Jacquard PDS + project, which has now started. (We still have an opening + for a PhD student or a postdoc; please contact us if you’re + interested.) +

    +
    Thu Oct 09 2008 00:00:00 GMT
    + NixOS paper accepted at ICFP! +https://nixos.org/news.html +

    + The paper “NixOS: A Purely Functional Linux Distribution” (by + Eelco Dolstra and Andres Löh) has been accepted + for presentation at the 2008 + International Conference on Functional Programming (ICFP). + It describes NixOS in much greater detail than last year’s + HotOS paper, and argues why the purely functional style and + features such as laziness are important for system + configuration management. It also provides some measurements + on the actual purity of Nix build actions. A draft + of the paper is available. +

    +
    Wed Jul 16 2008 00:00:00 GMT
    + Website back up +https://nixos.org/news.html +

    + The Nix website was down for a few days due to cooling + problems in the server room causing the machine to overheat. + These should be resolved now. Apologies for the + inconvenience. +

    +
    Fri Jun 06 2008 00:00:00 GMT
    + Website / SVN repositories moved +https://nixos.org/news.html +

    + The Nix website has moved to nixos.org (hosted at TU Delft). The Subversion + repositories have moved to svn.nixos.org. See + this + mailing list posting for information about moving existing + SVN working copies. +

    +
    Sun May 25 2008 00:00:00 GMT
    + LDTA 2008 paper +https://nixos.org/news.html +

    + Eelco Dolstra presented the paper “Maximal + Laziness — An Efficient Interpretation Technique for Purely + Functional DSLs” at 8th Workshop on Language + Description, Tools and Applications (LDTA 2008). It’s about + caching of evaluation results in the Nix expression evaluator as + a technique to make a simple term-rewriting evaluator efficient. + Slides are here. +

    +
    Mon May 05 2008 00:00:00 GMT
    + Jacquard grant proposal accepted! +https://nixos.org/news.html +

    + + The Jacquard program of + NWO and EZ has granted funding for the Nix-related project “Pull + Deployment of Services” (PDS), which is about improving the + deployment of software and services in complex heterogenous + environments. The grant consists of 368 K€ for a PhD student (4 + years) and a postdoc (3 years). If you’re interested in these + positions, please have a look at this page, + and don’t hesitate to contact Eelco + Visser or Eelco Dolstra. + +

    +
    Fri Mar 14 2008 00:00:00 GMT
    + New NixOS ISOs +https://nixos.org/news.html +

    + + NixOS installer online help + + New NixOS installation CD images for i686 and + x86_64 are available, + which is a good thing as the previous ones were already a few + months old. The new images are Nix 0.11-based, contain Memtest86+ as a + convenience, should support more SATA drives, and show online + help (the NixOS + manual) on virtual console 7. + +

    +
    Wed Feb 06 2008 00:00:00 GMT
    + Nix 0.11 released +https://nixos.org/news.html + Nix + 0.11 has been released. This is a major new release + representing over a year of development. The most important + improvement is secure multi-user support. It also features many + usability enhancements and language extensions, many of them + prompted by NixOS, the purely functional Linux distribution + based on Nix. See the release + notes for details. +Thu Jan 31 2008 00:00:00 GMT + Nixpkgs 0.11 released +https://nixos.org/news.html + Nixpkgs + 0.11 has been released. See the release + notes for details. +Fri Oct 12 2007 00:00:00 GMT + OpenOffice in Nixpkgs +https://nixos.org/news.html +

    + + OpenOffice screenshot + + OpenOffice is now in + Nixpkgs (screenshot of + OpenOffice 2.2.1 running under NixOS, and another + screenshot). Despite being a rather gigantic package (it + takes two hours to compile on an Intel Core 2 6700), OpenOffice + had only two “impurities” (references to paths outside of the + Nix store) in its build + process that had to be resolved — a reference to + /bin/bash and one to /usr/lib/libjpeg.so.

    + +

    Armijn Hemel, Wouter den + Breejen and Eelco Dolstra contributed to the Nix expression for + OpenOffice.

    +
    Wed Oct 10 2007 00:00:00 GMT
    + NixOS progress report +https://nixos.org/news.html +

    + + NixOS screenshot + + Wine now runs on NixOS! + Finally we can run all those legacy + applications... Thanks to Michael Raskin for adding Wine + and a NPTL-enabled Glibc (which Wine seems to need). This is a + nice application of purely functional package composition, by + the way: Wine didn’t work with the standard Glibc in Nixpkgs, so + we just pass + it another Glibc at build time.

    + +

    In other news, Nix 0.11 + and Nixpkgs 0.11 will be released soon.

    +
    Sat Sep 22 2007 00:00:00 GMT
    + Commits mailing list +https://nixos.org/news.html +

    + There is now a mailing + list (nix-commits@cs.uu.nl) that you can + subscribe to if you want to receive automatic commit + notifications from the Nix Subversion repository. +

    +
    Fri Sep 14 2007 00:00:00 GMT
    + HotOS paper on NixOS +https://nixos.org/news.html +

    + Eelco Dolstra presented the paper Purely Functional System + Configuration Management at the 11th Workshop on + Hot Topics in Operating Systems (HotOS XI). It gives an + overview of the ideas behind NixOS. The + slides + are also available. +

    +
    Fri Jun 08 2007 00:00:00 GMT
    + NixOS progress report +https://nixos.org/news.html + +

    + + KDE logo + + We now have KDE running on + NixOS (obligatory + screenshot). Just kdebase for now (Martin + Bravenboer already added kdelibs a long time ago so + that we could run the wonderful KCachegrind), + but it contains all the important stuff (Konqueror, KDesktop, + Kicker, Konsole, Control Center, etc.).

    + +

    In related news, we can + safely say that, rumours to the contrary notwithstanding, NixOS + is not an April + Fools’ Joke.

    + +
    Wed May 02 2007 00:00:00 GMT
    + NixOS progress report +https://nixos.org/news.html + NixOS screenshot + + NixOS is now almost usable as a desktop OS ;-). We + have an X server, a bunch of Gnome packages, basic wireless + support, and of course all the applications in Nixpkgs that we + had all along running on other Linux distributions. Here are a + few screenshots: + +Thu Apr 05 2007 00:00:00 GMT + NixOS manual +https://nixos.org/news.html + There is now some basic + documentation for NixOS. +Mon Mar 19 2007 00:00:00 GMT + NixOS for x86_64 +https://nixos.org/news.html + NixOS now works on x86_64 machines. A 64-bit ISO is available. +Fri Feb 23 2007 00:00:00 GMT + New build farm hardware at TUD +https://nixos.org/news.html +

    New build farmTo quote Eelco Visser: new + hardware for buildfarm at Delft University of Technology has + arrived.

    + +

    Here’s what we have: 5 Intel Core 2 Duo DualCore machines + with 1GB RAM, 2 Mac minis with 1,83-GHz Intel Core + Duo-processor, another Core 2 Duo a UPS to deal with spikes in + power supply, a console with integrated monitor and keyboard + switches, a rack with room for a couple more machines.

    + +

    Here’s what we’re going to do with the goodies. The five + Intel machines and the two MacMinis (also Intel) are going to + be used to crank at building hundreds of software + packages. Using virtualisation we should be able to run builds + on multiple operating system distributions. Read + more…

    +
    Fri Feb 23 2007 00:00:00 GMT
    + Nixpkgs 0.10 released +https://nixos.org/news.html + Nixpkgs + 0.10 has been released. See the release + notes for details. +Sun Nov 12 2006 00:00:00 GMT + Nix 0.10.1 released +https://nixos.org/news.html + Nix + 0.10.1 has been released. It fixes two obscure bugs that + shouldn’t affect most users. +Sat Nov 11 2006 00:00:00 GMT + Nix 0.10 released +https://nixos.org/news.html + Nix + 0.10 has been released. This release has many + improvements and bug fixes; see the release + notes for details. +Mon Nov 06 2006 00:00:00 GMT + Nixpkgs 0.9 released +https://nixos.org/news.html + Nixpkgs + 0.9 has been released. +Fri Mar 03 2006 00:00:00 GMT + PhD thesis defended +https://nixos.org/news.html + Eelco Dolstra + defended his PhD + thesis on the purely functional deployment model. +Sat Feb 18 2006 00:00:00 GMT + Nix 0.9.2 released +https://nixos.org/news.html + Nix + 0.9.2 has been released released. This is a bug fix + release that addresses some problems on Mac OS X. +Fri Oct 21 2005 00:00:00 GMT + Nix 0.9 released +https://nixos.org/news.html + Nix 0.9 + has been released. This is a new major release that provides + quite a few performance improvements and bug fixes, as well as a + number of new features. Read the release + notes for details. +Sun Oct 16 2005 00:00:00 GMT + Secure sharing paper accepted for ASE 2005 +https://nixos.org/news.html + The paper “Secure Sharing Between Untrusted Users in a + Transparent Source/Binary Deployment Model” has been accepted at + ASE 2005. This + paper describes how a Nix store can be securely shared by + multiple users who may not trust each other; i.e., how do we + prevent one user from installing a Trojan horse that is + subsequently executed by some other user? +Sun Aug 28 2005 00:00:00 GMT + Service deployment paper accepted for SCM-12 +https://nixos.org/news.html + The paper “Service Configuration Management” (accepted at the + 12th + International Workshop on Software Configuration + Management) describes how we can rather easily deploy + “services” (e.g., complete webserver configurations such as our + Subversion server) through + Nix by treating the non-component parts (such as configuration + files, control scripts and static data) as components that are + built by Nix expressions. The result is that all advantages + that Nix offers to software deployment also extend to service + deployment, such as the ability to easily have multiple + configuration side by side, to roll back configurations, and to + identify the precise dependencies of a configuration. +Mon Aug 22 2005 00:00:00 GMT + Patching paper accepted for CBSE 2005 +https://nixos.org/news.html + The paper “Efficient Upgrading in a Purely Functional Component + Deployment Model” has been accepted at CBSE 2005. + It describes how we can deploy updates to Nix packages + efficiently, even if “fundamental” packages like Glibc are + updated (which cause a rebuild of all dependent packages), by + deploying binary patches between components in the Nix store. + Includes techniques such as patch chaining and computing deltas + between archive files. +Thu Mar 17 2005 00:00:00 GMT + Paper “Imposing a Memory Management Discipline on Software + Deployment” accepted for presentation at ICSE 2004! +https://nixos.org/news.html + The first Nix paper. +Fri Jan 16 2004 00:00:00 GMT
    diff --git a/app/src/test/resources/com/nononsenseapps/feeder/model/rss_peertube.xml b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_peertube.xml new file mode 100644 index 0000000..8de37f1 --- /dev/null +++ b/app/src/test/resources/com/nononsenseapps/feeder/model/rss_peertube.xml @@ -0,0 +1,656 @@ + + + + Framasoft + https://framatube.org + + Wed, 20 Nov 2019 20:40:20 GMT + http://blogs.law.harvard.edu/tech/rss + Toraifōsu + + Framasoft + https://framatube.org/client/assets/images/icons/icon-96x96.png + https://framatube.org + + All rights reserved, unless otherwise specified in the terms specified at https://framatube.org/about and potential licenses granted by each content's rightholder. + + + <![CDATA[1.4. Et les réseaux sociaux ?]]> + https://framatube.org/videos/watch/ed5c048d-01f3-4ceb-97db-6e278de512b0 + https://framatube.org/videos/watch/ed5c048d-01f3-4ceb-97db-6e278de512b0 + Mon, 18 Nov 2019 09:25:45 GMT + + + Framasoft + + + + + + + + + + + + + + nonadult + + + + + + <![CDATA[1.3. C'est quoi la neutralité du net ?]]> + https://framatube.org/videos/watch/fec25007-be8e-4e65-b461-40ce435179ec + https://framatube.org/videos/watch/fec25007-be8e-4e65-b461-40ce435179ec + Mon, 18 Nov 2019 09:04:12 GMT + + + Framasoft + + + + + + + + + + + + + + nonadult + + + + + + <![CDATA[1.2. Internet, ça fonctionne comment ?]]> + https://framatube.org/videos/watch/f06ad0f4-d585-4aa4-a184-91a33ef89081 + https://framatube.org/videos/watch/f06ad0f4-d585-4aa4-a184-91a33ef89081 + Mon, 18 Nov 2019 08:50:52 GMT + + + Framasoft + + + + + + + + + + + + + + nonadult + + + + + + <![CDATA[1.1. Selon vous, c'est quoi Internet ?]]> + https://framatube.org/videos/watch/bf4a9913-a3b8-4a5f-ae45-611f78bdf526 + https://framatube.org/videos/watch/bf4a9913-a3b8-4a5f-ae45-611f78bdf526 + Mon, 18 Nov 2019 08:19:32 GMT + + + Framasoft + + + + + + + + + + + + + + nonadult + + + + + + <![CDATA[Contributopia : Peut-on faire du libre sans vision politique ? (Capitole du Libre, Toulouse, nov. 2018)]]> + https://framatube.org/videos/watch/0ac267f2-0ab8-4ee6-af4a-6d2d77bafb8e + https://framatube.org/videos/watch/0ac267f2-0ab8-4ee6-af4a-6d2d77bafb8e + Sun, 17 Feb 2019 12:09:23 GMT + + + Framasoft + + + + + + + + + + + + nonadult + + + + + + <![CDATA[Pierre-Yves GOSSET Framasoft EspacedickensTV (octobre 2018)]]> + https://framatube.org/videos/watch/e328bf32-ff8e-4d1d-a7a9-2a8a18f28b41 + https://framatube.org/videos/watch/e328bf32-ff8e-4d1d-a7a9-2a8a18f28b41 + Fri, 08 Feb 2019 19:31:14 GMT + + + Framasoft + + + + + + + + + + + + nonadult + + + + + + <![CDATA[Alternatives aux GAFAM Samuel CHENAL Itopie EspacedickensTV]]> + https://framatube.org/videos/watch/4d661d5f-a884-4510-bca8-15cb19aa3fe5 + https://framatube.org/videos/watch/4d661d5f-a884-4510-bca8-15cb19aa3fe5 + Fri, 08 Feb 2019 19:17:24 GMT + + + Framasoft + + + + + + + + + + + + nonadult + + + + + + <![CDATA[Alternatives aux GAFAM Pierre Yves GOSSET Framasoft EspacedickensTV (Lausanne, octobre 2018)]]> + https://framatube.org/videos/watch/32e5175c-c799-48d3-a0c7-dcf051584600 + https://framatube.org/videos/watch/32e5175c-c799-48d3-a0c7-dcf051584600 + Fri, 08 Feb 2019 18:55:37 GMT + + + Framasoft + + + + + + + + + + + + nonadult + + + + + + <![CDATA[Genma & Pouhiou - Dégooglisons Internet, an 2 (Bazar du Libre, Toulouse, novembre 2015)]]> + https://framatube.org/videos/watch/3fff751a-a5d4-4a1a-b1b9-94f24f4b9c5b + https://framatube.org/videos/watch/3fff751a-a5d4-4a1a-b1b9-94f24f4b9c5b + Fri, 08 Feb 2019 17:08:27 GMT + + + Framasoft + + + + + + + + + + + + + + nonadult + + + + + + <![CDATA[Dégooglisons Internet (Semaine Québecoise de l'Informatique Libre - 2015)]]> + https://framatube.org/videos/watch/20358afa-4d88-4902-8c6f-9525d0920af0 + https://framatube.org/videos/watch/20358afa-4d88-4902-8c6f-9525d0920af0 + Fri, 08 Feb 2019 16:25:18 GMT + + + Framasoft + + + + + + + + + + + + nonadult + + + + + + <![CDATA[PSESHSF-2016 - Pierre-Yves Gosset - CHATONS : des félins (et de la bière ) pour sauver le monde]]> + https://framatube.org/videos/watch/5b28ec58-d1e0-4b64-b55d-c80f9778b355 + https://framatube.org/videos/watch/5b28ec58-d1e0-4b64-b55d-c80f9778b355 + Fri, 08 Feb 2019 15:46:53 GMT + + + Framasoft + + + + + + + + + + + + nonadult + + + + + + <![CDATA[Contributopia : Peut-on faire du libre sans vision politique ? (Toulouse, octobre 2018)]]> + https://framatube.org/videos/watch/7e261f9e-242c-4100-a0bd-268dab321114 + https://framatube.org/videos/watch/7e261f9e-242c-4100-a0bd-268dab321114 + Mon, 26 Nov 2018 17:11:02 GMT + + + Framasoft + + + + + + + + + + + + nonadult + + + + + + <![CDATA[ Contributopia: De-google-ifying is not enough (Brussels, FOSDEM 2018)]]> + https://framatube.org/videos/watch/fff79bf3-99c8-4601-9a05-f64561d97d09 + https://framatube.org/videos/watch/fff79bf3-99c8-4601-9a05-f64561d97d09 + Tue, 16 Oct 2018 17:40:05 GMT + + + Framasoft + + + + + + + + + + + + nonadult + + + + + + <![CDATA[ The emPeerTube strikes back. Let's decentralize YouTube ! (Brussels, FOSDEM 2018)]]> + https://framatube.org/videos/watch/f4a68510-d819-44b2-9d93-c5fa642116d7 + https://framatube.org/videos/watch/f4a68510-d819-44b2-9d93-c5fa642116d7 + Tue, 16 Oct 2018 17:30:19 GMT + + redundancy of videos with webseed + + Call for developers! Join the revolution!]]> + Framasoft + + + + + + + + + + + + nonadult + + + + + + <![CDATA[PeerTube - Feeds (RSS/Atom) demonstration]]> + https://framatube.org/videos/watch/f57da309-6b92-4fe0-9267-ff8188cc050c + https://framatube.org/videos/watch/f57da309-6b92-4fe0-9267-ff8188cc050c + Tue, 02 Oct 2018 15:20:57 GMT + Framasoft + + + + + + + + + + + + + + nonadult + + + + + + <![CDATA[PeerTube - User subscriptions demonstration]]> + https://framatube.org/videos/watch/8968dbe1-a387-433b-a20f-37fe9f3ca8d5 + https://framatube.org/videos/watch/8968dbe1-a387-433b-a20f-37fe9f3ca8d5 + Tue, 02 Oct 2018 14:43:37 GMT + Framasoft + + + + + + + + + + + + + + nonadult + + + + + + <![CDATA[PeerTube - Advanced search demonstration]]> + https://framatube.org/videos/watch/60c4bea4-6bb2-4fce-8d9f-8a522575419d + https://framatube.org/videos/watch/60c4bea4-6bb2-4fce-8d9f-8a522575419d + Tue, 02 Oct 2018 12:27:30 GMT + Framasoft + + + + + + + + + + + + + + nonadult + + + + + + <![CDATA[PeerTube - Subtitles demonstration]]> + https://framatube.org/videos/watch/edd7a468-08d5-4877-b62b-61c5f3f83ceb + https://framatube.org/videos/watch/edd7a468-08d5-4877-b62b-61c5f3f83ceb + Tue, 02 Oct 2018 11:48:27 GMT + Framasoft + + + + + + + + + + + + + + nonadult + + + + + + <![CDATA[PeerTube - Torrent import demonstration]]> + https://framatube.org/videos/watch/dcad56d9-9fe6-45bc-96aa-3d778f6804c1 + https://framatube.org/videos/watch/dcad56d9-9fe6-45bc-96aa-3d778f6804c1 + Tue, 02 Oct 2018 11:46:59 GMT + Framasoft + + + + + + + + + + + + + + nonadult + + + + + + <![CDATA[PeerTube - YouTube video import demonstration]]> + https://framatube.org/videos/watch/59d306c0-fc5b-493a-956a-43785693346b + https://framatube.org/videos/watch/59d306c0-fc5b-493a-956a-43785693346b + Tue, 02 Oct 2018 11:46:00 GMT + Framasoft + + + + + + + + + + + + + + nonadult + + + + + + diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..899745d --- /dev/null +++ b/build.gradle @@ -0,0 +1,78 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext { + kotlin_version = '1.4.21' + gradle_build_version = "4.2.1" + build_tools_version = "30.0.2" + + multi_dex_version = "1.0.3" + + // These should be upgraded in unison + okhttp_version = "4.9.1" + okio_version = "2.8.0" + conscrypt_version = "2.5.1" + + kodein_version = "6.3.3" + coroutines_version = "1.4.2" + rome_version = "1.7.1-f4" + moshi_version = "1.5.0" + threetentest_version = "1.2.2" + threetenabp_version = "1.2.2" + jsoup_version = "1.7.3" + readability4j_version = "1.0.5" + + androidx_core_version = "1.2.0" + workmanager_version = '2.4.0' + constraintlayout_version = "2.0.0-alpha5" + recyclerview_version = "1.0.0" + legacy_support_version = "1.0.0" + appcompat_version = "1.1.0" + material_version = "1.1.0" + preference_version = "1.1.0" + test_runner_version = "1.1.0" + test_rules_version = "1.1.0" + paging_version = '2.1.1' + lifecycle_version = "2.2.0" + room_version = "2.2.6" + nav_version = "2.1.0" + + espresso_version = "3.1.0" + uiautomator_version = "2.2.0" + test_ext_junit_version = "1.0.0" + + mockk_version = "1.9.3" + mockito_version = "2.13.0" + } + + + repositories { + mavenCentral() + google() + } + dependencies { + classpath "com.android.tools.build:gradle:$gradle_build_version" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + mavenCentral() + jcenter() { + content { + includeModule("org.jetbrains.trove4j", "trove4j") + includeModule("com.linkedin.dexmaker", "dexmaker") + } + } + } + + tasks.withType(JavaCompile) { + options.incremental = true + options.encoding = 'UTF-8' + } +} diff --git a/ci/before b/ci/before new file mode 100755 index 0000000..5b4a811 --- /dev/null +++ b/ci/before @@ -0,0 +1,19 @@ +#!/bin/bash +set -euo pipefail + +mkdir -p "${ANDROID_HOME}" + +if ! [ -d "${ANDROID_HOME}/tools" ]; then + wget --quiet -O "${ANDROID_HOME}/tools.zip" https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip + unzip -qq "${ANDROID_HOME}/tools.zip" -d "${ANDROID_HOME}" +fi +rm -f "${ANDROID_HOME}/tools.zip" + +LOGDIR="build/logs" +LOG="${LOGDIR}/sdkmanager.log" +mkdir -p "${LOGDIR}" + +echo y | sdkmanager --update >>"${LOG}" +echo y | sdkmanager \ + "tools" \ + "platform-tools" diff --git a/ci/emulator-tests b/ci/emulator-tests new file mode 100755 index 0000000..00c53dc --- /dev/null +++ b/ci/emulator-tests @@ -0,0 +1,98 @@ +#!/bin/bash +set -euo pipefail + +if [ "$#" -ne 1 ]; then + echo >&2 "Takes one argument: android sdk number to start emulator for, example: 25" + exit 1 +fi + +sdk="${1}" +name="android${sdk}" +maxtime="607" + +start_emulator() { + local pkg + pkg="system-images;android-${sdk};google_apis;x86" + + echo >&2 "Updating the emulator..." + echo y | sdkmanager "emulator" + echo >&2 "Updating emulator for android sdk: ${sdk}" + echo y | sdkmanager "${pkg}" + + echo >&2 "Deleting existing emulator..." + avdmanager delete avd --name "${name}" || true + echo >&2 "Creating emulator..." + echo no | avdmanager create avd --name "${name}" --package "${pkg}" + + echo >&2 "Starting emulator..." + # Bug in emulator script requires current directory + local here + here="$(pwd)" + cd "${ANDROID_HOME}/emulator" + ./emulator -avd "${name}" -no-window -no-audio & + cd "${here}" +} + +wait_for_emulator() { + local timeout + local end + timeout=360 + end=$((SECONDS+timeout)) + + while [ "${SECONDS}" -lt "${end}" ]; do + bootanim="$(adb -e shell getprop init.svc.bootanim 2>&1 || echo "")" + if [[ "${bootanim}" =~ "stopped" ]]; then + echo "Emulator ready" + return + fi + + echo >&2 "Waiting: ${bootanim}..." + sleep 5 + done + + echo >&2 "Emulator failed to start within ${timeout} seconds" + exit 1 +} + +stop_emulator() { + # Kill the process instead of using ADB since ADB will fail to kill + # the emulator if it is still starting up + echo >&2 "Killing emulator..." + pkill --full "avd ${name}" + #adb devices | grep emulator | cut -f1 | while read -r name; do + # echo >&2 "Stopping ${name}..." + # adb -s "${name}" emu kill + #done +} + +teardown() { + stop_emulator + pkill --full "sleep ${maxtime}" +} + +GRADLE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/gradlew" +if ! [ -f "${GRADLE}" ]; then + echo >&2 "Could not find gradle" + exit 1 +fi + +# Always stop emulators (runs unless job is cancelled by gitlab) +trap teardown EXIT +# Do a sleep which will kill the emulator if it finishes (should only +# run if job is canceled by gitlab or job takes too long) +# Fix for this is in this MR: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/merge_requests/336 +# which improves process killing. +sleep "${maxtime}" && stop_emulator & + +start_emulator + +# Might as well build while we are waiting for the emulator +${GRADLE} assembleDebug assembleAndroidTest + +wait_for_emulator + +# Unlock screen +adb shell input keyevent 82 + +# Test +${GRADLE} connectedAndroidTest diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 0000000..9dd20d7 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,50 @@ +base_path: / +base_url: 'https://api.crowdin.com' +preserve_hierarchy: true +files: + - source: /app/src/main/res/values/strings.xml + translation: /app/src/main/res/values-%android_code%/%original_file_name% + update_option: update_without_changes + skip_untranslated_strings: true + skip_untranslated_files: false + export_only_approved: true + languages_mapping: { + locale: { + # Play store does not support in-IN/id-ID + "in": "in", + "ro": "ro", + "sr": "sr", + "uk": "uk", + "vi": "vi" + }, + android_code: { + "cs": "cs", + "da": "da", + "el": "el", + "fi": "fi", + "fr": "fr", + "hu": "hu", + "in": "in", + "it": "it", + "iw": "iw", + "ja": "ja", + "ko": "ko", + "no": "no", + "pl": "pl", + "ro": "ro", + "ru": "ru", + "sr": "sr", + "tr": "tr", + "uk": "uk" + } + } + - source: /fastlane/metadata/android/en-US/full_description.txt + translation: /fastlane/metadata/android/%locale%/%original_file_name% + skip_untranslated_strings: true + skip_untranslated_files: true + export_only_approved: true + - source: /fastlane/metadata/android/en-US/short_description.txt + translation: /fastlane/metadata/android/%locale%/%original_file_name% + skip_untranslated_strings: true + skip_untranslated_files: true + export_only_approved: true diff --git a/deploy_playstore.sh b/deploy_playstore.sh new file mode 100755 index 0000000..fcb8303 --- /dev/null +++ b/deploy_playstore.sh @@ -0,0 +1,47 @@ +#!/bin/bash -eu + +LATEST_TAG="$(git describe --tags "$(git rev-list --tags --max-count=1)")" +CURRENT_VERSION="$(git describe --tags)" + +if [ ! -z "${SERVICEACCOUNTJSON:-}" ]; then + cat > app/creds.b64 < app/creds.json + +sed -i "s|/home/jonas/.ssh/service.json|$(pwd)/app/creds.json|" fastlane/Appfile + +if [ ! -z "${KEYSTORE:-}" ]; then + cat > keystore.b64 < keystore + + cat >> gradle.properties <Dosadili su Vam čitači koji nisu besplatni i uz to kradu Vaše lične informacije?
    +Umorni ste od komplikovanih postavki za sinhronizaciju, koje zahtjevaju sate za konfiguraciju servera?
    +Dosta Vam je kreiranja naloga svuda?

    + +

    Umjesto toga probajte Feeder!

    + +

    Feeder je potpuno besplatan čitač izvora (feedova) vijesti. Podržava sve uobičajene formate feedova, uključujući JSONFeed. Ne prati vaše aktivnosti. Ne traži nikakvo postavljanje. Također ne traži od Vas da kreirate nalog! Samo trebate postaviti svoje izvore (feedove) ili ih uvesti iz starog čitača putem OPML-a, i već možete nastaviti sinhronizaciju i čitanje.

    + +

    Mogućnosti

    + +
      +
    • Raščanjivanje HTML-a i prikaz u nativnom tekstualnom pregledniku (TextView)
    • +
    • Vanmrežno čitanje
    • +
    • Pozadinska sinhronizacija
    • +
    • Obavijesti
    • +
    • Uvoz/izvoz OPML-a
    • +
    • Praktičan pristup priloženim vezama
    • +
    • Materijalni dizajn
    • +
    diff --git a/fastlane/metadata/android/bs-BA/short_description.txt b/fastlane/metadata/android/bs-BA/short_description.txt new file mode 100644 index 0000000..769ff24 --- /dev/null +++ b/fastlane/metadata/android/bs-BA/short_description.txt @@ -0,0 +1 @@ +Fantastičan, otvorenog koda i besplatan RSS čitač izvora (feedova) \ No newline at end of file diff --git a/fastlane/metadata/android/ca/full_description.txt b/fastlane/metadata/android/ca/full_description.txt new file mode 100644 index 0000000..7c44c30 --- /dev/null +++ b/fastlane/metadata/android/ca/full_description.txt @@ -0,0 +1,19 @@ +

    Estàs cansat de lectors no lliures i sobrecarregats que et roben la teva informació personal?
    +Estàs cansat de configuracions de sincronització complicades que requereixen hores de configuració del servidor?
    +Estàs fart d'haver de crear comptes a tot arreu?

    + +

    Prova Feeder!

    + +

    Feeder és un lector de canals completament lliure i gratis. Admet tots els formats comuns de canal, incloent JSONFeed. No et segueix. No et requereix cap configuració. Ni tan sols necessita que et creïs un compte! Simplement configura els teus canals, o importa'ls del teu antic lector per mitjà d'OPML, i comença a sincronitzar i llegir.

    + +

    Característiques

    + +
      +
    • Analitza HTML i ho mostra en un TextView natiu
    • +
    • Lectura fora de línia
    • +
    • Sincronització en segon pla
    • +
    • Notificacions
    • +
    • Importa/Exporta OPML
    • +
    • Accés pràctics a enllaços adjunts
    • +
    • Disseny "Material"
    • +
    diff --git a/fastlane/metadata/android/ca/short_description.txt b/fastlane/metadata/android/ca/short_description.txt new file mode 100644 index 0000000..0036559 --- /dev/null +++ b/fastlane/metadata/android/ca/short_description.txt @@ -0,0 +1 @@ +Un lector de canals RSS impressionant, lliure i de codi obert diff --git a/fastlane/metadata/android/de-DE/full_description.txt b/fastlane/metadata/android/de-DE/full_description.txt new file mode 100644 index 0000000..da6d6d6 --- /dev/null +++ b/fastlane/metadata/android/de-DE/full_description.txt @@ -0,0 +1,19 @@ +

    Haben Sie genug von aufgeblähten, nicht freien RSS-Feedreadern, die Ihre persönlichen Daten stehlen?
    +Haben Sie genug von umständlichen Synchronisierungskonfigurationen, die stundenlange Serverkonfigurationen erfordern?
    +Sind Sie es leid, überall Konten anlegen zu müssen?

    + +

    Versuchen Sie stattdessen Feeder!

    + +

    Feeder ist ein vollständig kostenloser und freier Feedreader. Er unterstützt alle gängigen Feed-Formate, einschließlich JSONFeed. Es verfolgt Sie nicht. Es erfordert keine Einrichtung. Dazu müssen Sie nicht einmal ein Konto anlegen! Richten Sie einfach Ihre Feeds ein oder importieren Sie sie von Ihrem alten Reader über OPML, dann können Sie mit dem Synchronisieren und Lesen beginnen.

    + +

    Funktionen

    + +
      +
    • Analysiert HTML und zeigt es in einer nativen Textansicht
    • +
    • Offline lesen
    • +
    • Hintergrundsynchronisierung
    • +
    • Benachrichtigungen
    • +
    • OPML Import/Export
    • +
    • Praktischer Zugriff auf eingefügte Links
    • +
    • Material Design
    • +
    diff --git a/fastlane/metadata/android/de-DE/short_description.txt b/fastlane/metadata/android/de-DE/short_description.txt new file mode 100644 index 0000000..6c125e7 --- /dev/null +++ b/fastlane/metadata/android/de-DE/short_description.txt @@ -0,0 +1 @@ +Ein großartiger, kostenloser und quelloffener RSS-Feedreader diff --git a/fastlane/metadata/android/el-GR/short_description.txt b/fastlane/metadata/android/el-GR/short_description.txt new file mode 100644 index 0000000..87e323b --- /dev/null +++ b/fastlane/metadata/android/el-GR/short_description.txt @@ -0,0 +1 @@ +Ένα απίθανο δωρεάν και ανοιχτού κώδικα RSS Feed reader diff --git a/fastlane/metadata/android/en-US/changelogs/100.txt b/fastlane/metadata/android/en-US/changelogs/100.txt new file mode 100644 index 0000000..e255b52 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/100.txt @@ -0,0 +1,18 @@ +# 1.12.1 +Belmar Begić (1): + * [666f0e3c] Updated Bosnian translation using Weblate + +J. Lavoie (1): + * [cccbf8a7] Updated German translation using Weblate + +Jonas Kalderstam (1): + * [67f53ebc] Prevent fastlane from conflicting on releases + +Tomáš Tihlařík (1): + * [40adb64f] Updated czech strings + +VfBFan (1): + * [92e2a263] Updated German translation using Weblate + +cld4h (1): + * [95e8f6df] Translated using Weblate (Chinese (Simplified)) diff --git a/fastlane/metadata/android/en-US/changelogs/101.txt b/fastlane/metadata/android/en-US/changelogs/101.txt new file mode 100644 index 0000000..72c669b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/101.txt @@ -0,0 +1,21 @@ +# 1.13.0 +Drhaal (1): + * [64512d3a] Added option to set article reader on a per feed basis + +El Pirujo (1): + * [966376eb] Updated Spanish translation using Weblate + +Eric (1): + * [fd48664d] Updated Chinese (Simplified) translation using Weblate + +J. Lavoie (1): + * [4995ea75] Updated Italian translation using Weblate + +Oğuz Ersen (1): + * [add0ef71] Updated Turkish translation using Weblate + +Simona Iacob (1): + * [47baaad1] Added Romanian translation using Weblate + +VfBFan (1): + * [e03eabb2] Upda \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/102.txt b/fastlane/metadata/android/en-US/changelogs/102.txt new file mode 100644 index 0000000..f65aa8f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/102.txt @@ -0,0 +1,15 @@ +# 1.13.1 +Axus Wizix (1): + * [2f4d770f] Updated Russian translation using Weblate + +Belmar Begić (1): + * [c8af81d8] Updated Bosnian translation using Weblate + +Jonas Kalderstam (4): + * [533e92d4] Specified the region of bare Portuguese to Portugal + * [73e6cddb] Translated using Weblate (Romanian) + * [2d173196] Fixed dc:creator not showing up as author in RSS feeds + * [0a2452c5] Updated Czech translation using Weblate + +Simona Iacob (1): + * [ec364392] Updated Romanian translation using Weblat \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/103.txt b/fastlane/metadata/android/en-US/changelogs/103.txt new file mode 100644 index 0000000..4ad0334 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/103.txt @@ -0,0 +1,19 @@ +# 1.13.2 +Drhaal (1): + * [c4545c2b] Use different colors when swiping to mark article as + read/unread + +J. Lavoie (1): + * [9d750135] Updated German translation using Weblate + +Jonas Kalderstam (8): + * [cadaef03] Raised minimum supported version of Android to M (6.0 - + API23) + * [df11985f] Added support for TLSv1.3 on older versions of Android + * [40549eea] Update README.md with ko-fi link + +Naveen (1): + * [b2422d25] Added Tamil translation using Weblate + +gutierri (1): + * [7426 \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/104.txt b/fastlane/metadata/android/en-US/changelogs/104.txt new file mode 100644 index 0000000..06a4b1c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/104.txt @@ -0,0 +1,12 @@ +# 1.13.3 +Agnieszka C (1): + * [029f7af4] Updated Polish translation using Weblate + +Jonas Kalderstam (5): + * [199e8bf6] Improved formatting - should be less empty space and newlines + +Naveen (1): + * [eaae183b] Translated using Weblate (Tamil) + +Nikhil Kadiyan (1): + * [7bed6c84] Translated using Weblate (Hindi) diff --git a/fastlane/metadata/android/en-US/changelogs/105.txt b/fastlane/metadata/android/en-US/changelogs/105.txt new file mode 100644 index 0000000..2776cad --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/105.txt @@ -0,0 +1,20 @@ +# 1.13.4 +Agnieszka C (2): + * [098172c1] Updated Polish translation using Weblate + * [d8455440] Updated Polish translation using Weblate + +Gediminas Murauskas (1): + * [8a3df04f] Translated using Weblate (Lithuanian) + +Jonas Kalderstam (1): + * [b164dece] Added missing title for language lt + +PPNplus (1): + * [18a39e63] Added Thai translation using Weblate + +Thien Bui (1): + * [3d4cd189] Updated Vietnamese translation using Weblate + +VfBFan (2): + * [2ae60832] Translated using Weblate (German) + * [ \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/106.txt b/fastlane/metadata/android/en-US/changelogs/106.txt new file mode 100644 index 0000000..f318bcd --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/106.txt @@ -0,0 +1,8 @@ +# 1.13.5 +Jonas Kalderstam (2): + * [b9c97797] Changed so Feeder no longer changes the URL of feeds to + canonical selflink + * [a01dafc7] Updated Swedish translation using Weblate + +Luna Jernberg (1): + * [850f411d] Updated Swedish translation using Weblate diff --git a/fastlane/metadata/android/en-US/changelogs/20.txt b/fastlane/metadata/android/en-US/changelogs/20.txt new file mode 100644 index 0000000..8fb404a --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/20.txt @@ -0,0 +1,16 @@ +# 1.3.13 + +* Add new feed now finds feed links in web pages + + Makes it possible to input a url to a site, such as + `cowboyprogrammer.org`, when adding a new feed. + + Previously, the direct address to the RSS/Atom feed was required + (`cowboyprogrammer.org/atom.xml`). This was not ideal because + + - not all sites advertise a link to their feeds + + - the location of the feed is not standardized so it's not easily + guessable + + - viewing the source of a web site to find the al \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/21.txt b/fastlane/metadata/android/en-US/changelogs/21.txt new file mode 100644 index 0000000..8531332 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/21.txt @@ -0,0 +1,4 @@ +# 1.3.14 + +* Fixed loss of scroll position on redraw in left drawer menu + See !61 #57 diff --git a/fastlane/metadata/android/en-US/changelogs/22.txt b/fastlane/metadata/android/en-US/changelogs/22.txt new file mode 100644 index 0000000..99d31fb --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/22.txt @@ -0,0 +1,4 @@ +# 1.3.15 + +* Fixed an installation crash on Android 5 + See !62 #69 diff --git a/fastlane/metadata/android/en-US/changelogs/23.txt b/fastlane/metadata/android/en-US/changelogs/23.txt new file mode 100644 index 0000000..cfb4e56 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/23.txt @@ -0,0 +1,19 @@ +# 1.4.0 + +This version changes the database tables slighly which means your +read-status will be gone. Apologies for the inconvenience. + +* Feeds are now sorted case-insensitively + See !71 #77 + +* Feeds are now displayed using correct encoding + See !68 #76 + +* Articles are parsed to find cover images + See !67 + +* Relative links are now resolved + See !67 + +* Adding feeds will now parse the page in case it's not a feed and try + to find alternate links to feeds. All results are di \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/24.txt b/fastlane/metadata/android/en-US/changelogs/24.txt new file mode 100644 index 0000000..a6130f5 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/24.txt @@ -0,0 +1,7 @@ +# 1.4.1 +* Fixed some translation issues which could cause crashes + See !74 +* Added French translation + See !73 +* Added Polish translation + See !72 diff --git a/fastlane/metadata/android/en-US/changelogs/25.txt b/fastlane/metadata/android/en-US/changelogs/25.txt new file mode 100644 index 0000000..e374236 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/25.txt @@ -0,0 +1,3 @@ +# 1.4.2 +* Stopped rendering script tags + See !75 #85 diff --git a/fastlane/metadata/android/en-US/changelogs/26.txt b/fastlane/metadata/android/en-US/changelogs/26.txt new file mode 100644 index 0000000..c917df7 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/26.txt @@ -0,0 +1,13 @@ +# 1.4.3 +* Fixed crash for missing video urls + See !84 #90 +* Improved UI responsiveness but throttling database loaders + See !81 +* Fixed existing tag not being shown in edit feed dialog + See !80 #82 +* Improved rendering of
     tags  
    +    See !77
    +*   Added newline between table columns  
    +    See !77
    +*   Handle ENTER press in add feed dialog  
    +    See !77
    diff --git a/fastlane/metadata/android/en-US/changelogs/27.txt b/fastlane/metadata/android/en-US/changelogs/27.txt
    new file mode 100644
    index 0000000..4690901
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/27.txt
    @@ -0,0 +1,14 @@
    +# 1.5.0
    +*   Fixed notifications  
    +    See !91 #10 #88
    +*   Changed to allow installation on internal storage  
    +    This has always been implied by the limitations of Android but now
    +    it is explicit to avoid issues for people who try to move it to
    +    external storage.
    +    See !78 #79
    +*   Added special handling for finding Youtube feeds  
    +    See !90 #100
    +*   Fixed HTML encoded titles not being decoded in list
    +    See !89 #91
    +*   Changed so more feeds display thumbnail images  
    +    See !88 #96
    diff --git a/fastlane/metadata/android/en-US/changelogs/28.txt b/fastlane/metadata/android/en-US/changelogs/28.txt
    new file mode 100644
    index 0000000..58c98b7
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/28.txt
    @@ -0,0 +1,6 @@
    +# 1.6.0
    +*   Added option of how to open articles.
    +    One of Reader, WebView or Browser.
    +    See !93 #39 #102
    +*   Fixed resolution of relative links
    +    See !92 #101
    diff --git a/fastlane/metadata/android/en-US/changelogs/29.txt b/fastlane/metadata/android/en-US/changelogs/29.txt
    new file mode 100644
    index 0000000..ce15a58
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/29.txt
    @@ -0,0 +1,3 @@
    +# 1.6.1
    +*   Fixed parsing of some OPML formats  
    +    See !94 #111
    diff --git a/fastlane/metadata/android/en-US/changelogs/30.txt b/fastlane/metadata/android/en-US/changelogs/30.txt
    new file mode 100644
    index 0000000..3a953d6
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/30.txt
    @@ -0,0 +1,3 @@
    +# 1.6.2
    +*   Block cookies from webview  
    +    See !95
    diff --git a/fastlane/metadata/android/en-US/changelogs/31.txt b/fastlane/metadata/android/en-US/changelogs/31.txt
    new file mode 100644
    index 0000000..fca0eb0
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/31.txt
    @@ -0,0 +1,5 @@
    +# 1.6.3
    +*   Now all links are explicitly opened in new browser tabs
    +    See !97 #117
    +*   Fixed buggy back stack
    +    See !96
    diff --git a/fastlane/metadata/android/en-US/changelogs/32.txt b/fastlane/metadata/android/en-US/changelogs/32.txt
    new file mode 100644
    index 0000000..7fec88a
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/32.txt
    @@ -0,0 +1,5 @@
    +# 1.6.4
    +*   Added paging to lists
    +    See !99
    +*   Added option for maximum number of items per feed
    +    See !98 #126
    diff --git a/fastlane/metadata/android/en-US/changelogs/33.txt b/fastlane/metadata/android/en-US/changelogs/33.txt
    new file mode 100644
    index 0000000..2723036
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/33.txt
    @@ -0,0 +1,7 @@
    +# 1.6.5
    +*   Added support for username/password in URLs
    +    See !100 #128
    +*   Fixed https compatibility on older versions of Android
    +    See !102 #113
    +*   Fixed crash for HorribleSubs.info
    +    See !103 #131
    diff --git a/fastlane/metadata/android/en-US/changelogs/34.txt b/fastlane/metadata/android/en-US/changelogs/34.txt
    new file mode 100644
    index 0000000..2562e01
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/34.txt
    @@ -0,0 +1,3 @@
    +# 1.6.6
    +
    +- Fixed a crash in Reader
    diff --git a/fastlane/metadata/android/en-US/changelogs/35.txt b/fastlane/metadata/android/en-US/changelogs/35.txt
    new file mode 100644
    index 0000000..228664c
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/35.txt
    @@ -0,0 +1,10 @@
    +# 1.6.7
    +*   Fixed crash on older Android versions when opening a web view
    +    See !108
    +*   Fixed update of views when pressing 'mark all as read' button
    +    See !107
    +*   Improved network caching
    +    See !105
    +*   German translations updated and added
    +    Thanks to Chris
    +    See !106
    diff --git a/fastlane/metadata/android/en-US/changelogs/36.txt b/fastlane/metadata/android/en-US/changelogs/36.txt
    new file mode 100644
    index 0000000..4e9a616
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/36.txt
    @@ -0,0 +1,6 @@
    +# 1.6.8
    +*   Fixed crash when supplying bad URL to add feed dialog
    +    See !110 #137
    +*   Fix typo in German translation
    +    Thanks to Swen Krüger
    +    See !109
    diff --git a/fastlane/metadata/android/en-US/changelogs/37.txt b/fastlane/metadata/android/en-US/changelogs/37.txt
    new file mode 100644
    index 0000000..024d6a1
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/37.txt
    @@ -0,0 +1,14 @@
    +# 1.7.0
    +*   Moved notification toggle to options menu
    +    See !123 #125 #66
    +*   Added a light theme
    +    See !122 #38
    +*   Fixed size of FAB icon on high density screens
    +    See !119
    +*   Fixed crash for certain feeds with slash comment meta-data
    +    See !117 #140
    +*   Added additional sync frequency options (15min and 30min)
    +    Also removed the need for an account and related system permission
    +    See #49
    +*   Added menu option in reader to mark item as unread
    +    See !111 #134
    diff --git a/fastlane/metadata/android/en-US/changelogs/38.txt b/fastlane/metadata/android/en-US/changelogs/38.txt
    new file mode 100644
    index 0000000..c52625d
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/38.txt
    @@ -0,0 +1,5 @@
    +# 1.7.1
    +*   Fixed possible crash when marking all items as read
    +    See !127 #145
    +*   Fixed text for show unread toggle
    +    See !125
    diff --git a/fastlane/metadata/android/en-US/changelogs/39.txt b/fastlane/metadata/android/en-US/changelogs/39.txt
    new file mode 100644
    index 0000000..dd6b2c9
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/39.txt
    @@ -0,0 +1,12 @@
    +# 1.8.0
    +*   Removed option to sync on Hotspots
    +    Fixed automatic synchronization never running on mobile data
    +    Added option to sync when app is opened
    +    Improved caching so less data traffic will be used during sync
    +    Improved sync speed by only parsing feeds with new content
    +    See !131
    +*   Improved error handling in Add Feed dialog
    +    See !132
    +*   Simplified Chinese Translation
    +    Thanks to linsui
    +    See !128
    diff --git a/fastlane/metadata/android/en-US/changelogs/40.txt b/fastlane/metadata/android/en-US/changelogs/40.txt
    new file mode 100644
    index 0000000..be683c0
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/40.txt
    @@ -0,0 +1,9 @@
    +# 1.8.1
    +*   Fixed crash when clearing notifications
    +    See !136 #153
    +*   Update Simplified Chinese
    +    Thanks to linsui
    +    See !134
    +*   Fixed screenshots in README
    +    Thanks to DJCrashdummy
    +    See !135
    diff --git a/fastlane/metadata/android/en-US/changelogs/41.txt b/fastlane/metadata/android/en-US/changelogs/41.txt
    new file mode 100644
    index 0000000..4759984
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/41.txt
    @@ -0,0 +1,5 @@
    +# 1.8.2
    +*   Fixed crash when image could not be loaded on pre Lollipop
    +    See !138 #156
    +*   Added menu item for sending a bug report via email
    +    See !137
    diff --git a/fastlane/metadata/android/en-US/changelogs/42.txt b/fastlane/metadata/android/en-US/changelogs/42.txt
    new file mode 100644
    index 0000000..27707d5
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/42.txt
    @@ -0,0 +1,10 @@
    +# 1.8.3
    +*   Tweaked colors in themes
    +    See !144 #159
    +*   Fixed crash when loading bad images
    +*   Fixed scrolling position getting reset during sync in Reader
    +    See !142 #160
    +*   Fixed crash when loading bad images
    +    See !140
    +*   Fixed theme-specific place holder image for articles
    +    See !139
    diff --git a/fastlane/metadata/android/en-US/changelogs/43.txt b/fastlane/metadata/android/en-US/changelogs/43.txt
    new file mode 100644
    index 0000000..7f9fe21
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/43.txt
    @@ -0,0 +1,7 @@
    +# 1.8.4
    +*   Fixed long blog title overlapping date
    +    See !149 #164
    +*   Fixed crash when loading certain videos
    +    See !148 #163
    +*   Fixed opening in browser from notification not marking as read or dismissing
    +    See !146 #155
    diff --git a/fastlane/metadata/android/en-US/changelogs/44.txt b/fastlane/metadata/android/en-US/changelogs/44.txt
    new file mode 100644
    index 0000000..6ad7a24
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/44.txt
    @@ -0,0 +1,12 @@
    +# 1.8.5
    +*   Fixed parsing of feeds without unique guids or links (NixOS)
    +    See !162
    +*   Changed so feed search finds alternate links in body of documents
    +    See !162
    +*   Fixed feed results not showing error message on *second* search
    +    See !162
    +*   Feeder can now be used to *open* links, not just accept *shared* ones
    +    See !161 #174
    +*   Fixed notifications so that all actions will mark item as read also
    +    See !160
    +*   Fixed app losing state if in reader and switching to another app and 
    \ No newline at end of file
    diff --git a/fastlane/metadata/android/en-US/changelogs/45.txt b/fastlane/metadata/android/en-US/changelogs/45.txt
    new file mode 100644
    index 0000000..22914a3
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/45.txt
    @@ -0,0 +1,3 @@
    +# 1.8.6
    +*   Fixed notification "Open in"-actions not working
    +    See !164
    diff --git a/fastlane/metadata/android/en-US/changelogs/46.txt b/fastlane/metadata/android/en-US/changelogs/46.txt
    new file mode 100644
    index 0000000..7d84db2
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/46.txt
    @@ -0,0 +1,10 @@
    +# 1.8.7
    +*   Added support for RTL
    +    Some devices might still not render perfectly though
    +    See !165 #176
    +*   Fixed youtube previews not showing
    +    See !168
    +*   Changed plaintext rendering to not include '[image alt text]' in text
    +    See !167
    +*   Changed so that notification actions do not open the app after pressing Back
    +    See !166
    diff --git a/fastlane/metadata/android/en-US/changelogs/47.txt b/fastlane/metadata/android/en-US/changelogs/47.txt
    new file mode 100644
    index 0000000..bbc5705
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/47.txt
    @@ -0,0 +1,7 @@
    +# 1.8.8
    +*   Changed plaintext conversion to stop formatting as markdown
    +    See !172
    +*   Fixed not being able to parse dates in certain feeds
    +    See !170
    +*   Fixed so feeds without publication dates gets some when synced
    +    See !169 #178
    diff --git a/fastlane/metadata/android/en-US/changelogs/48.txt b/fastlane/metadata/android/en-US/changelogs/48.txt
    new file mode 100644
    index 0000000..c35e7fd
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/48.txt
    @@ -0,0 +1,5 @@
    +# 1.8.9
    +*   Increased http timeouts to 30 seconds from 5 seconds
    +    See !175
    +*   Changed so time of publication (and not just date) is shown in Article
    +    See !174 #61
    diff --git a/fastlane/metadata/android/en-US/changelogs/49.txt b/fastlane/metadata/android/en-US/changelogs/49.txt
    new file mode 100644
    index 0000000..5f912e4
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/49.txt
    @@ -0,0 +1,5 @@
    +# 1.8.10
    +*   Update Simplified Chinese Translation
    +    Thanks to linsui
    +    See !179
    +*   Added option to mark items as read as you scroll (defaults to true)
    diff --git a/fastlane/metadata/android/en-US/changelogs/50.txt b/fastlane/metadata/android/en-US/changelogs/50.txt
    new file mode 100644
    index 0000000..6ded91a
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/50.txt
    @@ -0,0 +1,5 @@
    +# 1.8.11
    +
    +Removed "mark as read when scrolling". It had a bug when toggling display of read items, and it was very "surprising" to some users.
    +
    +Will be back when bug free and off by default.
    diff --git a/fastlane/metadata/android/en-US/changelogs/51.txt b/fastlane/metadata/android/en-US/changelogs/51.txt
    new file mode 100644
    index 0000000..9979e34
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/51.txt
    @@ -0,0 +1,6 @@
    +# 1.8.12
    +*   Fixed webview being obscured by the action bar
    +    See !182 #179 #173
    +*   Added Spanish translation
    +    Thanks to Khar Khamal
    +    See !180
    diff --git a/fastlane/metadata/android/en-US/changelogs/52.txt b/fastlane/metadata/android/en-US/changelogs/52.txt
    new file mode 100644
    index 0000000..fe62206
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/52.txt
    @@ -0,0 +1,11 @@
    +# 1.8.13
    +*   Fixed edit dialog starting with the wrong theme
    +    See !187
    +*   Fixed spelling error in Spanish
    +    See !185
    +*   Fixed webview resetting night mode
    +    See !185 #172
    +*   Migrated to single activity; app should feel faster
    +    See !185
    +*   Fixed thumbnails not showing in Engadget feed
    +    See !183 #186
    diff --git a/fastlane/metadata/android/en-US/changelogs/53.txt b/fastlane/metadata/android/en-US/changelogs/53.txt
    new file mode 100644
    index 0000000..9ae3425
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/53.txt
    @@ -0,0 +1,5 @@
    +# 1.8.14
    +*   Fixed crash on tablets
    +    See !189 #191
    +*   Fixed handling of URLs with only user (such as http://user@...)
    +    See !188
    diff --git a/fastlane/metadata/android/en-US/changelogs/54.txt b/fastlane/metadata/android/en-US/changelogs/54.txt
    new file mode 100644
    index 0000000..41fe88a
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/54.txt
    @@ -0,0 +1,3 @@
    +# 1.8.15
    +*   Improved webview: cookie dialogs should no longer be off screen
    +    See !190
    diff --git a/fastlane/metadata/android/en-US/changelogs/55.txt b/fastlane/metadata/android/en-US/changelogs/55.txt
    new file mode 100644
    index 0000000..b3b6850
    --- /dev/null
    +++ b/fastlane/metadata/android/en-US/changelogs/55.txt
    @@ -0,0 +1,3 @@
    +# 1.8.16
    +*   Fixed a null pointer crash if bare 
  • tag was encountered + See !192 diff --git a/fastlane/metadata/android/en-US/changelogs/56.txt b/fastlane/metadata/android/en-US/changelogs/56.txt new file mode 100644 index 0000000..6205878 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/56.txt @@ -0,0 +1,5 @@ +# 1.8.17 +* Made feed title clickable in Reader + See !194 #205 +* Fixed crash when notification contained items to be marked as read + See !193 #204 diff --git a/fastlane/metadata/android/en-US/changelogs/57.txt b/fastlane/metadata/android/en-US/changelogs/57.txt new file mode 100644 index 0000000..1151c0e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/57.txt @@ -0,0 +1,6 @@ +# 1.8.18 +* Indonesian translation + Thanks to zmni + See !196 +* Fixed back button handling in web view + See !195 diff --git a/fastlane/metadata/android/en-US/changelogs/58.txt b/fastlane/metadata/android/en-US/changelogs/58.txt new file mode 100644 index 0000000..5ea47db --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/58.txt @@ -0,0 +1,6 @@ +# 1.8.19 +* Added czech translation + Thanks to Tomas + See !198 +* Added option to toggle Javascript in Webview + See !197 diff --git a/fastlane/metadata/android/en-US/changelogs/59.txt b/fastlane/metadata/android/en-US/changelogs/59.txt new file mode 100644 index 0000000..3cfd71b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/59.txt @@ -0,0 +1,6 @@ +# 1.8.20 +* Changed 'Report bug' to open the Gitlab issues page instead of an email + See !201 +* Updated Czech translation + Thanks to Tomáš Tihlařík + See !200 !199 diff --git a/fastlane/metadata/android/en-US/changelogs/60.txt b/fastlane/metadata/android/en-US/changelogs/60.txt new file mode 100644 index 0000000..c63a746 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/60.txt @@ -0,0 +1,5 @@ +# 1.8.21 +* Long press items to open a context menu with various actions + See !202 +* List will now auto scroll to top when new items are downloaded if list is already at the top + See !202 diff --git a/fastlane/metadata/android/en-US/changelogs/61.txt b/fastlane/metadata/android/en-US/changelogs/61.txt new file mode 100644 index 0000000..18acac9 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/61.txt @@ -0,0 +1,4 @@ +# 1.8.22 +* Update Spanish translations + Thanks to Khar Khamal + See !203 diff --git a/fastlane/metadata/android/en-US/changelogs/62.txt b/fastlane/metadata/android/en-US/changelogs/62.txt new file mode 100644 index 0000000..0cb16ab --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/62.txt @@ -0,0 +1,6 @@ +# 1.8.23 +* List should once again remember where you were when you come back + See !206 #219 +* Spanish translation + Thanks to Khar Khamal + See !205 diff --git a/fastlane/metadata/android/en-US/changelogs/63.txt b/fastlane/metadata/android/en-US/changelogs/63.txt new file mode 100644 index 0000000..46b9d65 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/63.txt @@ -0,0 +1,6 @@ +# 1.8.24 +* Fixed alignment issue in RTL layout + See !208 #224 +* Update Italian (it) translation + Thanks to Emanuele Petriglia + See !207 diff --git a/fastlane/metadata/android/en-US/changelogs/65.txt b/fastlane/metadata/android/en-US/changelogs/65.txt new file mode 100644 index 0000000..c8ca134 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/65.txt @@ -0,0 +1,5 @@ +# 1.8.26 +* Stores feed content primarily in files instead of database + See !209 #227 +* More feeds should now have thumbnails displayed + See !210 #231 diff --git a/fastlane/metadata/android/en-US/changelogs/66.txt b/fastlane/metadata/android/en-US/changelogs/66.txt new file mode 100644 index 0000000..d6f61d5 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/66.txt @@ -0,0 +1,3 @@ +# 1.8.27 + +Minor bug fixes and tweaks. diff --git a/fastlane/metadata/android/en-US/changelogs/67.txt b/fastlane/metadata/android/en-US/changelogs/67.txt new file mode 100644 index 0000000..f84b635 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/67.txt @@ -0,0 +1,3 @@ +# 1.8.28 + +* Fixed a crash when clicking on notification diff --git a/fastlane/metadata/android/en-US/changelogs/68.txt b/fastlane/metadata/android/en-US/changelogs/68.txt new file mode 100644 index 0000000..300e706 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/68.txt @@ -0,0 +1,3 @@ +# 1.8.29 +* Added a UserAgent to fix sites blocking requests + See !214 #248 diff --git a/fastlane/metadata/android/en-US/changelogs/69.txt b/fastlane/metadata/android/en-US/changelogs/69.txt new file mode 100644 index 0000000..4281e93 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/69.txt @@ -0,0 +1,8 @@ +# 1.8.30 + * [49e7f76] Replaced day-night theme with manual control over themes + * [d54ccbc] Fixed scrollbar ghosting + * [3614f8a] Added another theme which follows system night mode + * [4022f62] Save navigation state and restore it + * [d72d7fa] Increased speed of app and implemented system-follow theme + * [7df3dc2] Removed conscrypt + * [e9a6dc3] Updated versions of libraries used diff --git a/fastlane/metadata/android/en-US/changelogs/70.txt b/fastlane/metadata/android/en-US/changelogs/70.txt new file mode 100644 index 0000000..1012f22 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/70.txt @@ -0,0 +1,8 @@ +# 1.9.0 +Jonas Kalderstam (3): + * [ae1338e] Added additional accessibility strings + * [25e9602] Added dialog for deleting multiple feeds + * [da3089e] Changed sort order to include synchronization time + +Khar Khamal (1): + * [ff491f1] Updated Spanish translations diff --git a/fastlane/metadata/android/en-US/changelogs/71.txt b/fastlane/metadata/android/en-US/changelogs/71.txt new file mode 100644 index 0000000..f92b024 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/71.txt @@ -0,0 +1,2 @@ +# 1.9.1 + * [72f6d12] Disabled R9 minification to avoid crash on Android Kitkat diff --git a/fastlane/metadata/android/en-US/changelogs/72.txt b/fastlane/metadata/android/en-US/changelogs/72.txt new file mode 100644 index 0000000..b09c773 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/72.txt @@ -0,0 +1,12 @@ +# 1.9.2 +Jonas Kalderstam (2): + * [d7eeb89] Fixed incorrect titles shown in delete dialog + +Karol Kosek (1): + * [1d64c7f] Updated Polish translation + +Khar Khamal (1): + * [3a3df99] Updated Spanish translation + +Vadik Sirekanyan (1): + * [85fc6d1] Added option for hiding thumbnails diff --git a/fastlane/metadata/android/en-US/changelogs/73.txt b/fastlane/metadata/android/en-US/changelogs/73.txt new file mode 100644 index 0000000..ecbccfb --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/73.txt @@ -0,0 +1,8 @@ +# 1.9.3 +Jonas Kalderstam (4): + * [614597d] Fixed sort order to be the minimum of syncing time and publish date + * [5596669] Updated share menu to use modern chooser + * [c59b2f5] Fixed items with no links showing "show in browser" buttons + +Tomáš Tihlařík (1): + * [ada5da8] Updated Czech translation diff --git a/fastlane/metadata/android/en-US/changelogs/74.txt b/fastlane/metadata/android/en-US/changelogs/74.txt new file mode 100644 index 0000000..03eee2f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/74.txt @@ -0,0 +1,6 @@ +# 1.9.4 +Jonas Kalderstam (9): + * [6003e84c] Fixed monospacing of pre-tags + * [fd87f04b] Removed html formatting from titles + * [6f6ed5ca] Added share option for feeds + * [bfa1a293] Fixed parsing some feeds with bad server responses diff --git a/fastlane/metadata/android/en-US/changelogs/75.txt b/fastlane/metadata/android/en-US/changelogs/75.txt new file mode 100644 index 0000000..aeb2409 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/75.txt @@ -0,0 +1,6 @@ +# 1.9.5 +Philipp Hutterer (1): + * [9222bf71] Bugfix: decode encoded credentials before request + +zmni (1): + * [60007125] Update Indonesian translation diff --git a/fastlane/metadata/android/en-US/changelogs/76.txt b/fastlane/metadata/android/en-US/changelogs/76.txt new file mode 100644 index 0000000..1d8bd1f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/76.txt @@ -0,0 +1,15 @@ +# 1.9.6 +Jonas Kalderstam (2): + * [47bc0a5c] Fixed possible crash in case you pressed two feed items at + once + +Khar Khamal (2): + * [8aa6649e] Updated Spanish translation + * [2b9180c3] Updated Spanish translation + +Ramzan Sheikh (5): + * [fd7570e7] Modified FeedItemsViewModel to use LiveData for sorting + preference + * [d130f0d0] Added reverse sort option to settings menu + * [cf70edfe] Added sorting option utilities to PrefUtils.kt + * [61128e4f] Modified FeedItemDao and FeedIte \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/77.txt b/fastlane/metadata/android/en-US/changelogs/77.txt new file mode 100644 index 0000000..47b54e1 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/77.txt @@ -0,0 +1,7 @@ +# 1.9.7 +Tomáš Tihlařík (2): + * [251ffe8d] Updated Czech translation + * [8d92b9ac] Updated Czech translation + +linsui (1): + * [a7b65165] Updated Simplified Chinese Translation diff --git a/fastlane/metadata/android/en-US/changelogs/78.txt b/fastlane/metadata/android/en-US/changelogs/78.txt new file mode 100644 index 0000000..5b15644 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/78.txt @@ -0,0 +1,12 @@ +# 1.9.8 +Jonas Kalderstam (2): + * [e3245b9c] Added 'mark as unread' to the webview menu + +Khar Khamal (1): + * [d8b09639] Updated Spanish translation + +Michael Hynes (1): + * [7d1e419b] Added an option to disable floating action button. + +Sam Clie (1): + * [bdedadd5] Fixed typo in Chinese translation diff --git a/fastlane/metadata/android/en-US/changelogs/79.txt b/fastlane/metadata/android/en-US/changelogs/79.txt new file mode 100644 index 0000000..521cf3f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/79.txt @@ -0,0 +1,12 @@ +# 1.9.9 +Jonas Kalderstam (4): + * [b4827aaa] Fixed text formatting not updating with System night mode + +Khar Khamal (1): + * [37646e21] Fixed typo in Spanish translation + +Tomáš Tihlařík (1): + * [b2cb4a11] Updated Czech translation + +aevw (1): + * [a2ac9334] Added Portuguese (Brazil) translation diff --git a/fastlane/metadata/android/en-US/changelogs/80.txt b/fastlane/metadata/android/en-US/changelogs/80.txt new file mode 100644 index 0000000..c42195f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/80.txt @@ -0,0 +1,16 @@ +# 1.10.0 +Jonas Kalderstam (5): + * [3a3d3689] Added preference for battery optimization + * [0d17d374] Fixed custom tab not showing as default option for opening + links + * [c8b57882] Added option to preload links in custom tab + +Khar Khamal (1): + * [0fdac915] Update Spanish strings.xml for Custom Tab + +Sudeep Duggal (1): + * [2c211b53] Feeder now opts out of sending usage metrics of WebView to + Google + +Tomáš Tihlařík (1): + * [1709c2fd] Update Czech strings.xml for Custom Tab \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/81.txt b/fastlane/metadata/android/en-US/changelogs/81.txt new file mode 100644 index 0000000..9c996d9 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/81.txt @@ -0,0 +1,14 @@ +# 1.10.1 +Jonas Kalderstam (2): + * [b9b3bd76] Reworded tooltip to reduce confusion + * [a4d8dd3b] Increased synchronization speed + +Khar Khamal (2): + * [756cb108] Update strings.xml for Spanish language + * [ffff95dd] Update strings.xml for Spanish language + +aevw (1): + * [1fd20db4] Updated Portuguese translation + +linsui (1): + * [19b64a13] Update Simplified Chinese translation diff --git a/fastlane/metadata/android/en-US/changelogs/82.txt b/fastlane/metadata/android/en-US/changelogs/82.txt new file mode 100644 index 0000000..e07357f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/82.txt @@ -0,0 +1,6 @@ +# 1.10.2 +Fëdor T (1): + * [e9787dee] Updated Russian translation + +Muha Aliss (1): + * [2885b218] Turkish translations added diff --git a/fastlane/metadata/android/en-US/changelogs/83.txt b/fastlane/metadata/android/en-US/changelogs/83.txt new file mode 100644 index 0000000..0999461 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/83.txt @@ -0,0 +1,3 @@ +# 1.10.3 +Jonas Kalderstam (1): + * [4827e41c] Fixed crash when base64 encoded images were present in feeds diff --git a/fastlane/metadata/android/en-US/changelogs/84.txt b/fastlane/metadata/android/en-US/changelogs/84.txt new file mode 100644 index 0000000..a22e294 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/84.txt @@ -0,0 +1,3 @@ +# 1.10.4 +Jonas Kalderstam (1): + * [51ef23e6] App is now compiled against Android 11 (SDK-30, R) diff --git a/fastlane/metadata/android/en-US/changelogs/85.txt b/fastlane/metadata/android/en-US/changelogs/85.txt new file mode 100644 index 0000000..1777c1b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/85.txt @@ -0,0 +1,15 @@ +# 1.10.5 +Armand Lynch (2): + * [08b6aa7f] Adds 'mark above as read' option + * [14c07701] Remove code duplication + +Enrico Lovisotto (1): + * [487a250c] Improved Italian translation and added missing items + +Jonas Kalderstam (5): + * [a622d655] Added minification to the app to make it faster to install + * [3ebd53c3] Fixed scroll position being reset in Reader + +Khar Khamal (1): + * [6663bdf2] Update Spanish strings.xml to add one new string and correct + other string diff --git a/fastlane/metadata/android/en-US/changelogs/86.txt b/fastlane/metadata/android/en-US/changelogs/86.txt new file mode 100644 index 0000000..11b963e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/86.txt @@ -0,0 +1,5 @@ +# 1.10.6 +Jonas Kalderstam (5): + * [06f7fb81] Added a scrollbar to the Reader + * [05078389] Fixed atom feed html content being unescaped twice + * [e8c5470d] Fixed some additional html escaping cases diff --git a/fastlane/metadata/android/en-US/changelogs/87.txt b/fastlane/metadata/android/en-US/changelogs/87.txt new file mode 100644 index 0000000..8d1bd0b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/87.txt @@ -0,0 +1,14 @@ +# 1.10.7 +Jonas Kalderstam (22): + * [27cd9114] Updated translations + * [5fa9116f] Enabled minification for play and release builds + +Muha Aliss (2): + * [45ac6e09] Turkish translation updated + * [387db7cd] Turkish translate checked and updated. + +mezysinc (4): + * [6dd67f76] description in ptbr + * [3de13944] full desc. ptbr + * [4044ee48] Delete .gitkeep + * [589ac044] updated strings ptbr diff --git a/fastlane/metadata/android/en-US/changelogs/88.txt b/fastlane/metadata/android/en-US/changelogs/88.txt new file mode 100644 index 0000000..c24de3c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/88.txt @@ -0,0 +1,3 @@ +# 1.10.8 +Jonas Kalderstam (2): + * [472dc314] Fixed reader going blank after opening a web view diff --git a/fastlane/metadata/android/en-US/changelogs/89.txt b/fastlane/metadata/android/en-US/changelogs/89.txt new file mode 100644 index 0000000..5544c21 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/89.txt @@ -0,0 +1,7 @@ +# 1.10.9 +Jonas Kalderstam (3): + * [5ac2bc2c] Disabled minification due to crash on old Android + * [0add4d20] Added comments to some strings + +Space Cowboy (5): + * [7a715fa4] Updated translations from Crowdin diff --git a/fastlane/metadata/android/en-US/changelogs/90.txt b/fastlane/metadata/android/en-US/changelogs/90.txt new file mode 100644 index 0000000..7a772fa --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/90.txt @@ -0,0 +1,3 @@ +# 1.10.10 +Space Cowboy (3): + * [b316df06] New translations from Crowdin diff --git a/fastlane/metadata/android/en-US/changelogs/91.txt b/fastlane/metadata/android/en-US/changelogs/91.txt new file mode 100644 index 0000000..7db68eb --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/91.txt @@ -0,0 +1,19 @@ +# 1.10.11 +Allan Nordhøy (2): + * [c64b4a57] Updated Norwegian Bokmål translation using Weblate + * [853b7f0a] Translated using Weblate (Norwegian Bokmål) + +El Pirujo (1): + * [18a10d55] Translated using Weblate (Spanish) + +George (1): + * [f317a3ee] Translated using Weblate (Greek) + +J. Lavoie (1): + * [53b67002] Translated using Weblate (Italian) + +Jakub Fabijan (1): + * [a084f837] Added Esperanto translation using Weblate + +Jonas Kalderstam (15): + * [9e9c46f5] Replaced Crowdin widget with Webla \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/92.txt b/fastlane/metadata/android/en-US/changelogs/92.txt new file mode 100644 index 0000000..48801e0 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/92.txt @@ -0,0 +1,12 @@ +# 1.10.12 +Belmar Begić (1): + * [07443bf7] Updated Bosnian translation using Weblate + +Jakub Fabijan (1): + * [7b225d25] Updated Esperanto translation using Weblate + +Jonas Kalderstam (9): + * [365bd45c] Removed empty translations + +Reza Almanda (1): + * [b088b923] Updated Indonesian translation using Weblate diff --git a/fastlane/metadata/android/en-US/changelogs/93.txt b/fastlane/metadata/android/en-US/changelogs/93.txt new file mode 100644 index 0000000..b4d3c22 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/93.txt @@ -0,0 +1,19 @@ +# 1.10.13 +Eduardo Rodrigues (1): + * [7d01b89f] Translated using Weblate (Portuguese (Brazil)) + +Jonas Kalderstam (3): + * [9f191f73] Implemented parallel load of images in Reader view + +Meiru (2): + * [a92e14d8] Updated Japanese translation using Weblate + * [607a0947] Translated using Weblate (Japanese) + +Reza Almanda (1): + * [253fdd6d] Translated using Weblate (Indonesian) + +daywalk3r666 (1): + * [017de69c] Translated using Weblate (German) + +vachan-maker (2): + * [c71b9210] Updated Malayalam tra \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/94.txt b/fastlane/metadata/android/en-US/changelogs/94.txt new file mode 100644 index 0000000..143acc8 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/94.txt @@ -0,0 +1,12 @@ +# 1.10.14 +Jonas Kalderstam (2): + * [3777ebfd] Added error reporting when trying to add a feed fails + +Meiru (1): + * [ab59bc7a] Updated Japanese translation using Weblate + +kak mi (1): + * [0215e61c] Updated Chinese (Simplified) translation using Weblate + +vachan-maker (1): + * [1221c6f3] Updated Malayalam translation using Weblate diff --git a/fastlane/metadata/android/en-US/changelogs/95.txt b/fastlane/metadata/android/en-US/changelogs/95.txt new file mode 100644 index 0000000..02e24a4 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/95.txt @@ -0,0 +1,19 @@ +# 1.11.0 +Allan Nordhøy (2): + * [4e05cb55] Updated Norwegian Bokmål translation using Weblate + +Eduardo (1): + * [7d23f022] Updated Portuguese (Brazil) translation using Weblate + +El Pirujo (2): + * [4af3761e] Updated Spanish translation using Weblate + +J. Lavoie (2): + * [65079f61] Updated Italian translation using Weblate + +Jakub Fabijan (1): + * [d49aa9e6] Updated Esperanto translation using Weblate + +Jonas Kalderstam (7): + * [074e85ac] Fixed links not opening after screen rotation + * [2bd413a \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/96.txt b/fastlane/metadata/android/en-US/changelogs/96.txt new file mode 100644 index 0000000..d552c3f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/96.txt @@ -0,0 +1,7 @@ +# 1.11.1 +Jonas Kalderstam (2): + * [130137d3] Fixed database test + * [aa9ebbd3] Maybe fixed a nullpointer error + +Nikita Epifanov (1): + * [d09adafe] Updated Russian translation using Weblate diff --git a/fastlane/metadata/android/en-US/changelogs/97.txt b/fastlane/metadata/android/en-US/changelogs/97.txt new file mode 100644 index 0000000..3ad8998 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/97.txt @@ -0,0 +1,11 @@ +# 1.11.2 +Eric (1): + * [b5a50dfb] Updated Chinese (Simplified) translation using Weblate + +Jonas Kalderstam (5): + * [130137d3] Fixed database test + * [aa9ebbd3] Maybe fixed a nullpointer error + * [6023a40c] Fixed sporadic error while loading images + +Nikita Epifanov (1): + * [d09adafe] Updated Russian translation using Weblate diff --git a/fastlane/metadata/android/en-US/changelogs/98.txt b/fastlane/metadata/android/en-US/changelogs/98.txt new file mode 100644 index 0000000..16b86f1 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/98.txt @@ -0,0 +1,13 @@ +# 1.11.3 +Eric (1): + * [b5a50dfb] Updated Chinese (Simplified) translation using Weblate + +Jonas Kalderstam (9): + * [aa9ebbd3] Maybe fixed a nullpointer error + * [6023a40c] Fixed sporadic error while loading images + * [56b7c946] Fixed reader going blank after opening webview and going back + * [da0d2a9f] Updated view models with correct nullability + * [078a486c] Fixed additional fragment view lifecycle issues + +Nikita Epifanov (1): + * [d09adafe] Updated Russian translation using Weblate diff --git a/fastlane/metadata/android/en-US/changelogs/99.txt b/fastlane/metadata/android/en-US/changelogs/99.txt new file mode 100644 index 0000000..f0bd16e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/99.txt @@ -0,0 +1,19 @@ +# 1.12.0 +El Pirujo (1): + * [ddf06c3a] Updated Spanish translation using Weblate + +Eric (1): + * [34e65ed7] Updated Chinese (Simplified) translation using Weblate + +Francesco Bonazzi (2): + * [6d51fd8c] Add support for reading feeds aloud with Android's + TextToSpeech engine + * [770ce381] moved text-to-speech code to model-view class + +Hierax Swiftwing (1): + * [c1e336fe] Translated using Weblate (Serbian) + +J. Lavoie (1): + * [d491cd62] Updated Italian translation using Weblate + +Jonas Kalde \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/default.txt b/fastlane/metadata/android/en-US/changelogs/default.txt new file mode 100644 index 0000000..a7bb4c5 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/default.txt @@ -0,0 +1 @@ +* Bug fixes and improvements diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt new file mode 100644 index 0000000..84e9f67 --- /dev/null +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -0,0 +1,19 @@ +

    Are you sick of bloated non-free readers that steal your personal information?
    +Are you tired of convoluted syncing setups requiring hours of server configuration?
    +Are you fed up with having to create accounts everywhere?

    + +

    Try Feeder instead!

    + +

    Feeder is a fully free/libre feed reader. It supports all common feed formats, including JSONFeed. It doesn't track you. It doesn't require any setup. It doesn't even need you to create an account! Just setup your feeds, or import them from your old reader via OPML, then get on with syncing and reading.

    + +

    Features

    + +
      +
    • Parses HTML and displays it in a native TextView
    • +
    • Offline reading
    • +
    • Background synchronization
    • +
    • Notifications
    • +
    • OPML Import/Export
    • +
    • Handy access to enclosure links
    • +
    • Material design
    • +
    diff --git a/fastlane/metadata/android/en-US/images/featureGraphic.png b/fastlane/metadata/android/en-US/images/featureGraphic.png new file mode 100644 index 0000000..d63282b Binary files /dev/null and b/fastlane/metadata/android/en-US/images/featureGraphic.png differ diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 0000000..91a7de9 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/icon.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png new file mode 100644 index 0000000..d0c2d65 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png new file mode 100644 index 0000000..5c5cbb2 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png new file mode 100644 index 0000000..7a5c1c5 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png new file mode 100644 index 0000000..9800733 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png new file mode 100644 index 0000000..dc69dfc Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/6_en-US.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/6_en-US.png new file mode 100644 index 0000000..2ef6831 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/6_en-US.png differ diff --git a/fastlane/metadata/android/en-US/images/promoGraphic.png b/fastlane/metadata/android/en-US/images/promoGraphic.png new file mode 100644 index 0000000..247f7f3 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/promoGraphic.png differ diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt new file mode 100644 index 0000000..3ebe26f --- /dev/null +++ b/fastlane/metadata/android/en-US/short_description.txt @@ -0,0 +1 @@ +An awesome Free and Open Source RSS Feed reader \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt new file mode 100644 index 0000000..2d9dea9 --- /dev/null +++ b/fastlane/metadata/android/en-US/title.txt @@ -0,0 +1 @@ +Feeder \ No newline at end of file diff --git a/fastlane/metadata/android/eo/full_description.txt b/fastlane/metadata/android/eo/full_description.txt new file mode 100644 index 0000000..4854c8c --- /dev/null +++ b/fastlane/metadata/android/eo/full_description.txt @@ -0,0 +1,19 @@ +

    Ĉu vi malŝatas malrapidajn neliberajn flulegilojn, kiuj ŝtelas viajn personajn informojn?
    +Ĉu vi lacas de komplikaj sinkronigaj agordoj, kiuj postulas horojn da servila agordado?
    +Ĉu vi malamas ĉieajn kreendajn kontojn?

    + +

    Provu Feeder anstataŭe!

    + +

    Feeder estas tute libera/malfermitkoda flulegilo. Ĝi subtenas ĉiujn oftajn dosierformojn de fluoj, inkluzive de JSONFeed. Ĝi ne spuras vin. Ĝi ne bezonas agordadon. Ĝi eĉ ne igas vin krei konton! Nur agordu viajn fluojn aŭ enportu ilin de via malnova legilo per OPML, kaj eksinkronigu kaj eklegu.

    + +

    Trajtoj

    + +
      +
    • Analizas HTML kaj montras ĝin per indiĝena TextView
    • +
    • Senreta legado
    • +
    • Fona sinkronigado
    • +
    • Sciigoj
    • +
    • Enporto/elporto de OPML
    • +
    • Facila aliro al RSS-envolvaĵoj
    • +
    • Materiala dezajno
    • +
    diff --git a/fastlane/metadata/android/eo/short_description.txt b/fastlane/metadata/android/eo/short_description.txt new file mode 100644 index 0000000..d98e927 --- /dev/null +++ b/fastlane/metadata/android/eo/short_description.txt @@ -0,0 +1 @@ +Bonega Libera kaj Malfermitfonta RSS-legilo diff --git a/fastlane/metadata/android/es-ES/full_description.txt b/fastlane/metadata/android/es-ES/full_description.txt new file mode 100644 index 0000000..81c5afa --- /dev/null +++ b/fastlane/metadata/android/es-ES/full_description.txt @@ -0,0 +1,19 @@ +

    ¿Estás harto de lectores inflados no libres que roban tu información personal?
    +¿Está cansado de complicadas configuraciones de sincronización que requieren horas de configuración del servidor?
    +¿Estás harto de tener que crear cuentas en todas partes?

    + +

    ¡Prueba Feeder!

    + +

    Feeder es un lector de noticias totalmente gratuito. Admite todos los formatos comunes, incluido JSONFeed. No te rastrea. No requiere ninguna configuración. ¡Ni siquiera necesita que crees una cuenta! Simplemente configura tus orígenes o impórtalos desde tu antiguo lector a través de OPML, luego continúa con la sincronización y la lectura.

    + +

    Características

    + +
      +
    • Analiza HTML y lo muestra en un TextView nativo
    • +
    • Lectura sin conexión
    • +
    • Sincronización en segundo plano
    • +
    • Notificaciones
    • +
    • Importar/Exportar en OPML
    • +
    • Acceso práctico a los enlaces
    • +
    • Diseño Material
    • +
    diff --git a/fastlane/metadata/android/es-ES/short_description.txt b/fastlane/metadata/android/es-ES/short_description.txt new file mode 100644 index 0000000..0cafc00 --- /dev/null +++ b/fastlane/metadata/android/es-ES/short_description.txt @@ -0,0 +1 @@ +Un impresionante lector de RSS de código abierto y libre diff --git a/fastlane/metadata/android/fi-FI/full_description.txt b/fastlane/metadata/android/fi-FI/full_description.txt new file mode 100644 index 0000000..f6ba0fc --- /dev/null +++ b/fastlane/metadata/android/fi-FI/full_description.txt @@ -0,0 +1,19 @@ +

    Oletko kyllästynyt paisuneisiin ei-vapaisiin lukijoihin, jotka varastavat henkilökohtaisia tietojasi?
    +Oletko kyllästynyt sekaviin synkronointijärjestelmiin joiden kanssa menee monta tuntia palvelimien määrittelyssä?
    +Oletko kyllästynyt tunnusten tekemiseen joka paikkaan?

    + +

    Kokeile sen sijaan Feederiä!

    + +

    Feeder on täysin vapaa ja ilmainen syötelukija. Se tukee kaikkia yleisimpiä syötemuotoja, myös JSONFeediä. Se ei seuraa sinua. Se ei tarvitse mitään määrittelyä. Se ei edes tarvitse sinun tekevän tunnuksia toimiakseen! Laita omat syötteet, tuo ne vanhasta lukijasta OPML avulla ja pääset synkronoimaan ja lukemaan.

    + +

    Ominaisuudet

    + +
      +
    • Jäsentää HTML ja näyttää sen natiivissa TextViewissä
    • +
    • Offline-lukeminen
    • +
    • Taustasynkronointi
    • +
    • Ilmoitukset
    • +
    • OPML-tuonti/vienti
    • +
    • Kätevä pääsy liitelinkkeihin
    • +
    • Material design
    • +
    diff --git a/fastlane/metadata/android/fi-FI/short_description.txt b/fastlane/metadata/android/fi-FI/short_description.txt new file mode 100644 index 0000000..d98e33f --- /dev/null +++ b/fastlane/metadata/android/fi-FI/short_description.txt @@ -0,0 +1 @@ +Mahtava vapaa ja avoimen lähdekoodin RSS-syötteen lukija diff --git a/fastlane/metadata/android/fr-FR/full_description.txt b/fastlane/metadata/android/fr-FR/full_description.txt new file mode 100644 index 0000000..47f2b6f --- /dev/null +++ b/fastlane/metadata/android/fr-FR/full_description.txt @@ -0,0 +1,19 @@ +

    En avez-vous assez des lecteurs non libres gonflés qui volent vos informations personnelles ?
    +Êtes-vous fatigué·e des configurations de synchronisation compliquées nécessitant des heures de configuration de serveur ?
    +Vous en avez assez de devoir créer des comptes partout ?

    + +

    Essayez plutôt Feeder !

    + +

    Feeder est un lecteur de flux entièrement libre. Il prend en charge tous les formats de flux courants, y compris JSONFeed. Il ne vous traque pas. Il ne nécessite aucune configuration. Vous n'avez même pas besoin de créer de compte ! Configurez simplement vos flux ou importez-les depuis votre ancien lecteur via OPML, puis poursuivez la synchronisation et la lecture.

    + +

    Fonctionnalités

    + +
      +
    • Analyse le code HTML et l'affiche dans un TextView natif
    • +
    • Lecture hors ligne
    • +
    • Synchronisation en arrière-plan
    • +
    • Notifications
    • +
    • Importation/exportation OPML
    • +
    • Accès pratique aux liens enclosure links
    • +
    • Material design
    • +
    diff --git a/fastlane/metadata/android/fr-FR/short_description.txt b/fastlane/metadata/android/fr-FR/short_description.txt new file mode 100644 index 0000000..5f7d012 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/short_description.txt @@ -0,0 +1 @@ +Un super lecteur de flux RSS gratuit et à code source ouvert diff --git a/fastlane/metadata/android/hi-IN/full_description.txt b/fastlane/metadata/android/hi-IN/full_description.txt new file mode 100644 index 0000000..54d882c --- /dev/null +++ b/fastlane/metadata/android/hi-IN/full_description.txt @@ -0,0 +1,19 @@ +

    क्या आप भारी भरकम और पैसा कमाने की इच्छा रखने वाले फीड रीडर से परेशान हो चुके है?
    +क्या आप अपनीं फीड को सिंक करने में घंटो बर्बाद करते है?
    +क्या आप हर जगह अकाउंट बनाकर परेशां हो चुके है?

    + +

    Try Feeder instead!

    + +

    Feeder is a fully free/libre feed reader. It supports all common feed formats, including JSONFeed. It doesn't track you. It doesn't require any setup. It doesn't even need you to create an account! Just setup your feeds, or import them from your old reader via OPML, then get on with syncing and reading.

    + +

    Features

    + +
      +
    • Parses HTML and displays it in a native TextView
    • +
    • Offline reading
    • +
    • Background synchronization
    • +
    • Notifications
    • +
    • OPML Import/Export
    • +
    • Handy access to enclosure links
    • +
    • Material design
    • +
    diff --git a/fastlane/metadata/android/hi-IN/short_description.txt b/fastlane/metadata/android/hi-IN/short_description.txt new file mode 100644 index 0000000..ee405b2 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/short_description.txt @@ -0,0 +1 @@ +एक कमाल का मुफ़्त और ओपन सोर्स आरएसएस फीड पढ़ने का सॉफ्टवेयर diff --git a/fastlane/metadata/android/id/full_description.txt b/fastlane/metadata/android/id/full_description.txt new file mode 100644 index 0000000..907d5cb --- /dev/null +++ b/fastlane/metadata/android/id/full_description.txt @@ -0,0 +1,19 @@ +

    Apakah Anda muak dengan bloated reader yang mencuri informasi pribadi Anda?
    +Apakah Anda bosan dengan pengaturan sinkronisasi berbelit-belit yang membutuhkan jam konfigurasi server?
    +Apakah Anda muak dengan harus membuat akun di mana-mana?

    + +

    Cobalah Feeder sebagai gantinya!

    + +

    Feeder adalah pembaca umpan gratis / libre. Mendukung semua format umpan termasuk JSONFeed. Kami tidak melacakmu dan tidak memerlukan pengaturan apapun. Bahkan tidak perlu Anda membuat akun! Cukup atur umpan Anda, atau impor dari reader lama Anda melalui OPML, lalu lanjutkan dengan sinkronisasi dan membaca.

    + +

    Fitur

    + +
      +
    • Mengurai HTML dan menampilkannya dalam TextView asli
    • +
    • Membaca secara offline
    • +
    • Sinkronisasi latar belakang
    • +
    • Notifikasi
    • +
    • Impor/Ekspor OPML
    • +
    • Akses berguna ke tautan
    • +
    • Desain material
    • +
    diff --git a/fastlane/metadata/android/id/short_description.txt b/fastlane/metadata/android/id/short_description.txt new file mode 100644 index 0000000..91bcee6 --- /dev/null +++ b/fastlane/metadata/android/id/short_description.txt @@ -0,0 +1 @@ +Pembaca Umpan RSS Gratis dan Open Source yang luar biasa diff --git a/fastlane/metadata/android/it-IT/full_description.txt b/fastlane/metadata/android/it-IT/full_description.txt new file mode 100644 index 0000000..afeaef6 --- /dev/null +++ b/fastlane/metadata/android/it-IT/full_description.txt @@ -0,0 +1,19 @@ +

    Sei stufo/a dei lettori gonfi e non liberi che rubano le tue informazioni personali?
    +Sei stanco/a di configurazioni di sincronizzazione contorte che richiedono ore di configurazione del server?
    +Sei stufo/a di dover creare account ovunque?

    + +

    Prova invece Feeder!

    + +

    Feeder è un lettore di flussi completamente libero. Supporta tutti i formati di flussi comuni, incluso JSONFeed. Non ti segue. Non richiede alcuna configurazione. Non è nemmeno necessario che tu crei un account! È sufficiente impostare i flussi o importarli dal vecchio lettore tramite OPML, quindi procedere con la sincronizzazione e la lettura.

    + +

    Caratteristiche

    + +
      +
    • Analizza l'HTML e lo visualizza in un TextView nativo
    • +
    • Lettura fuori linea
    • +
    • Sincronizzazione nello sfondo
    • +
    • Notifiche
    • +
    • Importazione/esportazione OPML
    • +
    • Accesso facile ai collegamenti degli allegati
    • +
    • Material design
    • +
    diff --git a/fastlane/metadata/android/it-IT/short_description.txt b/fastlane/metadata/android/it-IT/short_description.txt new file mode 100644 index 0000000..72122bc --- /dev/null +++ b/fastlane/metadata/android/it-IT/short_description.txt @@ -0,0 +1 @@ +Un fantastico lettore di flussi RSS gratuito e con un codice aperto diff --git a/fastlane/metadata/android/ja-JP/full_description.txt b/fastlane/metadata/android/ja-JP/full_description.txt new file mode 100644 index 0000000..7a363e2 --- /dev/null +++ b/fastlane/metadata/android/ja-JP/full_description.txt @@ -0,0 +1,19 @@ +

    あなたの個人情報を抜き取る、高慢な有料リーダーにうんざりしてますか?
    +サーバー設定に何時間もかかる、複雑な同期設定に飽き飽きしませんか?
    +どこでもアカウントを作らなければならないことは面倒ではありませんか?

    + +

    代わりにFeederを試してみてください!

    + +

    Feederは完全無料、フリーのフィードリーダーです。JSONフィードを含めた、すべての一般的なフィード形式をサポートしています。あなたを追跡することはありません。設定は不要です。アカウント作成も必要ありません。フィードを設定するか、OPMLを使って古いリーダーからフィードをインポートするだけで、同期して読み込めるようになります。

    + +

    特徴

    + +
      +
    • HTMLを解析し、ネイティブのテキストビューアに表示
    • +
    • オフラインでの閲覧
    • +
    • バックグラウンド同期
    • +
    • 通知
    • +
    • OPMLのインポート/エクスポート
    • +
    • エンクロージャリンクへの容易なアクセス
    • +
    • マテリアルデザイン
    • +
    diff --git a/fastlane/metadata/android/ja-JP/short_description.txt b/fastlane/metadata/android/ja-JP/short_description.txt new file mode 100644 index 0000000..9810ebf --- /dev/null +++ b/fastlane/metadata/android/ja-JP/short_description.txt @@ -0,0 +1 @@ +無料でオープンソースのRSSフィードリーダー diff --git a/fastlane/metadata/android/lt/full_description.txt b/fastlane/metadata/android/lt/full_description.txt new file mode 100644 index 0000000..224448a --- /dev/null +++ b/fastlane/metadata/android/lt/full_description.txt @@ -0,0 +1,19 @@ +

    Ar jums atsibodo išpūsti nemokami skaitytuvai, kurie vagia jūsų asmeninę informaciją?
    +Ar pavargote nuo sudėtingų sinchronizavimo nustatymų, reikalaujančių valandų valandas konfigūruoti serverį?
    +Ar jums atsibodo visur kurti paskyras?

    . + +

    Išbandykite „Feeder“!

    + +

    „Feeder“ - tai visiškai nemokama ir laisva kanalų skaityklė. Ji palaiko visus įprastus kanalų formatus, įskaitant JSONFeed. Ji jūsų neseka. Nereikalauja jokių nustatymų. Net nereikia susikurti paskyros! Tiesiog nustatykite savo kanalus arba importuokite juos iš senosios skaityklės per OPML, tada sinchronizuokite ir skaitykite

    . + +

    Savybės

    + +
      +
    • Išanalizuoja HTML ir rodo jį gimtajame „TextView“
    • +
    • Skaitymas neprisijungus
    • +
    • Fono sinchronizavimas
    • +
    • Pranešimai
    • +
    • OPML importavimas/eksportavimas
    • +
    • Patogi prieiga prie uždarų nuorodų
    • +
    • Material dizainas
    • +
    diff --git a/fastlane/metadata/android/lt/short_description.txt b/fastlane/metadata/android/lt/short_description.txt new file mode 100644 index 0000000..6e8a679 --- /dev/null +++ b/fastlane/metadata/android/lt/short_description.txt @@ -0,0 +1 @@ +Nuostabi nemokamo ir atviro kodo RSS skaityklė diff --git a/fastlane/metadata/android/lt/title.txt b/fastlane/metadata/android/lt/title.txt new file mode 100644 index 0000000..2d9dea9 --- /dev/null +++ b/fastlane/metadata/android/lt/title.txt @@ -0,0 +1 @@ +Feeder \ No newline at end of file diff --git a/fastlane/metadata/android/nb_NO/full_description.txt b/fastlane/metadata/android/nb_NO/full_description.txt new file mode 100644 index 0000000..5881c61 --- /dev/null +++ b/fastlane/metadata/android/nb_NO/full_description.txt @@ -0,0 +1,19 @@ +

    Lei av ufrie lesere som stjeler personvernsinfo?
    +Tar du deg i å synkronisere oppsett mellom maskiner selv?
    +Gått lei av å lage kontoer overalt?

    + +

    Prøv Feeder!

    + +

    Fri leser. Støtter alle informasjonskanalformater, inkludert JSONFeed. Den sporer deg ikke, og krever ikke noe oppsett. Du trenger ikke engang en konto. Importer informasjonskanalene dine fra din gamle leser via OPML, eller legg dem til, så synkroniseres lesingen.

    + +

    Funksjoner

    + +
      +
    • Tolker HTML og viser det i egen tekstvisning
    • +
    • Frakoblet lesing
    • +
    • Bakgrunnssynkronisering
    • +
    • Merknader
    • +
    • OPML-import/eksport
    • +
    • Hendig tilgang til lukkingslenker
    • +
    • Materiell design
    • +
    diff --git a/fastlane/metadata/android/nb_NO/short_description.txt b/fastlane/metadata/android/nb_NO/short_description.txt new file mode 100644 index 0000000..2b51cce --- /dev/null +++ b/fastlane/metadata/android/nb_NO/short_description.txt @@ -0,0 +1 @@ +Fri RSS-informasjonskanalleser diff --git a/fastlane/metadata/android/pl-PL/full_description.txt b/fastlane/metadata/android/pl-PL/full_description.txt new file mode 100644 index 0000000..64ec752 --- /dev/null +++ b/fastlane/metadata/android/pl-PL/full_description.txt @@ -0,0 +1,19 @@ +

    Masz już dość ciężkich, niewolnych czytników, które kradną twoje dane?
    +Jesteś już zmęczony zagmatwanymi ustawieniami synchronizacji wymagającymi wielu godzin konfiguracji serwera?
    +Czy chcesz tworzyć wszędzie osobne konta?

    + +

    Zamiast tego wypróbuj Feeder!

    + +

    Feeder jest w pełni wolnym i darmowym czytnikiem RSS. Wspiera wszystkie popularne formaty kanałów, w tym JSONFeed. Feeder cię nie śledzi. Nie wymaga żadnych konfiguracji. Nie musisz nawet tworzyć konta! Po prostu skonfiguruj kanały lub zaimportuj je ze starego czytnika przez OPML, a następnie zacznij synchronizować i czytać.

    + +

    Funkcje

    + +
      +
    • Przetwarza HTML i wyświetla go w natywnym widoku tekstu
    • +
    • Czytanie offline
    • +
    • Synchronizacja w tle
    • +
    • Powiadomienia
    • +
    • Import/Eksport OPML
    • +
    • Poręczny dostęp do zamieszczonych linków
    • +
    • Material design
    • +
    diff --git a/fastlane/metadata/android/pl-PL/short_description.txt b/fastlane/metadata/android/pl-PL/short_description.txt new file mode 100644 index 0000000..6b698a1 --- /dev/null +++ b/fastlane/metadata/android/pl-PL/short_description.txt @@ -0,0 +1 @@ +Niesamowity, darmowy i otwarty czytnik RSS diff --git a/fastlane/metadata/android/pt-BR/full_description.txt b/fastlane/metadata/android/pt-BR/full_description.txt new file mode 100644 index 0000000..6a507cb --- /dev/null +++ b/fastlane/metadata/android/pt-BR/full_description.txt @@ -0,0 +1,19 @@ +

    Você está farto de leitores não livres, sobrecarregados, repletos de coisas que além disso roubam suas informações pessoais?
    +Você está cansado de complicadas soluções de sincronização que requerem horas de configurações de servidor?
    +Você está farto de ter que criar contas em todos os lugares?

    + +

    Experimente o Feeder em vez disso!

    + +

    O Feeder é um leitor de 'feeds' totalmente livre. Ele suporta todos os formatos de 'feeds' comuns, incluindo JSONFeed. Ele não rastreia você. Ele não requer nenhuma configuração. Ele não precisa nem mesmo que você crie uma conta! Basta configurar seus 'feeds', ou importá-los de seu antigo leitor via arquivo OPML, e prosseguir com a sincronização e a leitura.

    + +

    Funcionalidades

    + +
      +
    • Processa HTML e o exibe em um TextView nativo
    • +
    • Leitura offline
    • +
    • Sincronização em segundo plano
    • +
    • Notificações
    • +
    • Importação/Exportação de/a arquivo OPML
    • +
    • Acesso prático aos Enclosure Links
    • +
    • Material design
    • +
    diff --git a/fastlane/metadata/android/pt-BR/short_description.txt b/fastlane/metadata/android/pt-BR/short_description.txt new file mode 100644 index 0000000..7c68a1e --- /dev/null +++ b/fastlane/metadata/android/pt-BR/short_description.txt @@ -0,0 +1 @@ +Um fantástico leitor de RSS Feed gratuito e de código aberto diff --git a/fastlane/metadata/android/pt-PT/full_description.txt b/fastlane/metadata/android/pt-PT/full_description.txt new file mode 100644 index 0000000..18c5b70 --- /dev/null +++ b/fastlane/metadata/android/pt-PT/full_description.txt @@ -0,0 +1,19 @@ +

    Está farto de leitores não livres, sobrecarregados, repletos de coisas que, além disso, roubam as suas informações pessoais?
    +Está cansado de complicadas soluções de sincronização que requerem horas de configurações de servidor?
    +Está farto de ter que criar contas em todos os lugares?

    + +

    Experimente o Feeder em vez disso!

    + +

    O Feeder é um leitor de 'feeds' totalmente livre. Suporta todos os formatos de 'feeds' comuns e inclui JSONFeed. Não o rastreia. Não requer nenhuma configuração. Não precisa nem mesmo que crie uma conta! Basta configurar os seus 'feeds', ou importá-los do seu antigo leitor via arquivo OPML, e prosseguir com a sincronização e a leitura.

    + +

    Funcionalidades

    + +
      +
    • Processa HTML e o exibe em um TextView nativo
    • +
    • Leitura offline
    • +
    • Sincronização em segundo plano
    • +
    • Notificações
    • +
    • Importação/Exportação de/a ficheiros OPML
    • +
    • Acesso prático aos Enclosure Links
    • +
    • Desenho Material
    • +
    diff --git a/fastlane/metadata/android/pt-PT/short_description.txt b/fastlane/metadata/android/pt-PT/short_description.txt new file mode 100644 index 0000000..7c68a1e --- /dev/null +++ b/fastlane/metadata/android/pt-PT/short_description.txt @@ -0,0 +1 @@ +Um fantástico leitor de RSS Feed gratuito e de código aberto diff --git a/fastlane/metadata/android/ro/full_description.txt b/fastlane/metadata/android/ro/full_description.txt new file mode 100644 index 0000000..a1b7501 --- /dev/null +++ b/fastlane/metadata/android/ro/full_description.txt @@ -0,0 +1,19 @@ +

    V-ați săturat de cititoarele umflate și non-gratuite care vă fură informațiile personale?
    +V-ați săturat de setări de sincronizare complicate care necesită ore de configurare a serverului?
    +V-ați săturat să trebuiască să vă creați conturi peste tot?

    + +

    Încearcă în schimb Feeder!

    + +

    Feeder este un cititor de feed-uri complet gratuit/liber. Acesta suportă toate formatele de fluxuri comune, inclusiv JSONFeed. Nu vă urmărește. Nu necesită nicio configurare. Nici măcar nu are nevoie să vă creați un cont! Trebuie doar să vă configurați fluxurile sau să le importați de la vechiul cititor prin OPML, apoi treceți la sincronizare și citire.

    + +

    Caracteristici

    + +
      +
    • Parează HTML și îl afișează într-un TextView nativ
    • +
    • Citire offline
    • +
    • Sincronizare în fundal
    • +
    • Notificări
    • +
    • OPML Import/Export
    • +
    • Acces facil la legăturile de închidere
    • +
    • Material design
    • +
    diff --git a/fastlane/metadata/android/ro/short_description.txt b/fastlane/metadata/android/ro/short_description.txt new file mode 100644 index 0000000..90c5851 --- /dev/null +++ b/fastlane/metadata/android/ro/short_description.txt @@ -0,0 +1 @@ +Un minunat cititor de fluxuri RSS gratuit și cu sursă deschisă diff --git a/fastlane/metadata/android/ru-RU/full_description.txt b/fastlane/metadata/android/ru-RU/full_description.txt new file mode 100644 index 0000000..cff269e --- /dev/null +++ b/fastlane/metadata/android/ru-RU/full_description.txt @@ -0,0 +1,19 @@ +

    Вам надоели раздутые не свободные программы для чтения, которые крадут вашу личную информацию?
    +Вы устали от запутанных настроек синхронизации, требующих часов настройки сервера?
    +Вам надоело создавать учетные записи везде?

    + +

    Попробуйте Feeder!

    + +

    Feeder - это полностью бесплатная программа для чтения каналов. Он поддерживает все распространенные форматы каналов, включая JSONFeed. Он вас не отслеживает. Не требует никакой настройки. Вам даже не нужно создавать учетную запись! Просто настройте свои каналы или импортируйте их из старого устройства чтения через OPML, а затем приступайте к синхронизации и чтению.

    + +

    Функции

    + +
      +
    • Разбирает HTML и отображает его в собственном TextView
    • +
    • Чтение офлайн
    • +
    • Фоновая синхронизация
    • +
    • Уведомления
    • +
    • Импорт / экспорт OPML
    • +
    • Удобный доступ к ссылкам на приложения
    • +
    • Материальный дизайн
    • +
    diff --git a/fastlane/metadata/android/ru-RU/short_description.txt b/fastlane/metadata/android/ru-RU/short_description.txt new file mode 100644 index 0000000..33f0c5e --- /dev/null +++ b/fastlane/metadata/android/ru-RU/short_description.txt @@ -0,0 +1 @@ +Отличная программа для чтения RSS-каналов с открытым исходным кодом diff --git a/fastlane/metadata/android/sr/full_description.txt b/fastlane/metadata/android/sr/full_description.txt new file mode 100644 index 0000000..98d3e38 --- /dev/null +++ b/fastlane/metadata/android/sr/full_description.txt @@ -0,0 +1,19 @@ +

    Досадили су ти претрпани читачи који нису бесплатни и краду твоје личне податке?
    +Уморан си од запетљаних поставки за синхронизацију које захтевају часове подешавања послужитеља?
    +Доста ти је отварања налога свуда?

    + +

    Преузми Feeder!

    + +

    Feeder је потпуно бесплатан читач извора. Подржава све уобичајене облике извора, укључујући и JSONFeed. Не прати те. Нису неопходна никаква почетна подешавања. Није потребно ни налог да отвориш! Само је потребно поставити своје изворе, или их увести из старога читача помоћу OPML датотеке, а потом се прелази на синхронизацију и читање.

    + +

    Могућности

    + +
      +
    • Рашчлањивање HTML-а и приказ у уграђеноме прегледнику текста (TextView)
    • +
    • Ванмрежно читање
    • +
    • Позадинска синхронизација
    • +
    • Обавести
    • +
    • Увоз/Извоз OPML датотека
    • +
    • Згодан приступ приложеним повезницама
    • +
    • Material design
    • +
    diff --git a/fastlane/metadata/android/sr/short_description.txt b/fastlane/metadata/android/sr/short_description.txt new file mode 100644 index 0000000..103be02 --- /dev/null +++ b/fastlane/metadata/android/sr/short_description.txt @@ -0,0 +1 @@ +Сјајан бесплатан отворенокôдни читач RSS извора diff --git a/fastlane/metadata/android/sv-SE/full_description.txt b/fastlane/metadata/android/sv-SE/full_description.txt new file mode 100644 index 0000000..5642720 --- /dev/null +++ b/fastlane/metadata/android/sv-SE/full_description.txt @@ -0,0 +1,19 @@ +

    Är du less på stora ofria appar som stjäl dina personuppgifter?
    +Har du fått nog av komplicerade synkroniseringsinställningar som kräver timmar av konfiguration?
    +Är du trött på att skapa nya konton överallt?

    + +

    Pröva Feeder istället!

    + +

    Feeder är en helt fri flödesläsare. Den stödjer alla vanliga flödesformat, inklusive JSONFeed. Den spionerar inte på dig. Den behöver inga inställningar. Du behöver inte ens skapa något konto! Bara lägg till dina flöden, eller importera dom från din förra läsare via OPML, sen är du igång med synkronisering och läsning.

    + +

    Egenskaper

    + +
      +
    • Tolkar HTML och visar den i en riktig TextView
    • +
    • Offline-läsning
    • +
    • Bakgrundssynkronisering
    • +
    • Notiser
    • +
    • OPML import/export
    • +
    • Enkel åtkomst till bifogad media
    • +
    • Material design
    • +
    diff --git a/fastlane/metadata/android/sv-SE/short_description.txt b/fastlane/metadata/android/sv-SE/short_description.txt new file mode 100644 index 0000000..6aacd1e --- /dev/null +++ b/fastlane/metadata/android/sv-SE/short_description.txt @@ -0,0 +1 @@ +En fantastisk fri RSS-läsare med öppen källkod \ No newline at end of file diff --git a/fastlane/metadata/android/ta-IN/full_description.txt b/fastlane/metadata/android/ta-IN/full_description.txt new file mode 100644 index 0000000..c0ada4b --- /dev/null +++ b/fastlane/metadata/android/ta-IN/full_description.txt @@ -0,0 +1,21 @@ +

    உங்கள் தனிப்பட்ட தகவல்களைத் திருடும் இலவசமில்லாத வாசகர்களால் நீங்கள் நோய்வாய்ப்பட்டிருக்கிறீர்களா?
    + +மணிநேர சேவையக உள்ளமைவு தேவைப்படும் சுருண்ட ஒத்திசைவு அமைப்புகளில் நீங்கள் சோர்வடைகிறீர்களா?
    +எல்லா இடங்களிலும் கணக்குகளை உருவாக்க வேண்டியிருப்பதால் நீங்கள் சோர்வடைகிறீர்களா?

    + +

    அதற்கு பதிலாக ஃபீடரை முயற்சிக்கவும்!

    + +

    ஊட்டி ஒரு முழு இலவச / இலவச ஊட்ட வாசகர். இது JSONFeed உட்பட அனைத்து பொதுவான ஊட்ட வடிவங்களையும் ஆதரிக்கிறது. இது உங்களை கண்காணிக்காது. இதற்கு எந்த அமைப்பும் தேவையில்லை. நீங்கள் ஒரு கணக்கை உருவாக்க கூட தேவையில்லை! உங்கள் ஊட்டங்களை அமைக்கவும் அல்லது உங்கள் பழைய வாசகரிடமிருந்து OPML வழியாக இறக்குமதி செய்யவும், பின்னர் ஒத்திசைவு மற்றும் வாசிப்பைப் பெறவும்.

    + +

    அம்சங்கள்

    + +
      +
    • HTML ஐ பாகுபடுத்தி அதை சொந்த உரைக்காட்சியில் காண்பிக்கும்
    • +
    • ஆஃப்லைன் வாசிப்பு
    • +
    • பின்னணி ஒத்திசைவு
    • + +
    • அறிவிப்புகள்
    • +
    • OPML இறக்குமதி / ஏற்றுமதி
    • +
    • இணை இணைப்புகளுக்கான எளிதான அணுகல்
    • +
    • பொருள் வடிவமைப்பு
    • +
    diff --git a/fastlane/metadata/android/ta-IN/short_description.txt b/fastlane/metadata/android/ta-IN/short_description.txt new file mode 100644 index 0000000..f4b0ae9 --- /dev/null +++ b/fastlane/metadata/android/ta-IN/short_description.txt @@ -0,0 +1 @@ +ஒரு அற்புதமான இலவச மற்றும் திறந்த மூல RSS ஊட்ட வாசகர் diff --git a/fastlane/metadata/android/tr-TR/full_description.txt b/fastlane/metadata/android/tr-TR/full_description.txt new file mode 100644 index 0000000..edd0326 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/full_description.txt @@ -0,0 +1,19 @@ +

    Kişisel bilgilerinizi çalan, özgür olmayan ve şişirilmiş okuyuculardan bıktınız mı?
    +Saatlerce sunucu yapılandırması gerektiren karmaşık eşzamanlama kurulumlarından sıkıldınız mı?
    +Her yerde hesap oluşturmaktan gına mı geldi?

    + +

    O zaman Feeder'ı deneyin!

    + +

    Feeder, tamamen özgür bir yayın okuyucusudur. JSONFeed dahil tüm yaygın yayın biçimlerini destekler. Sizi takip etmez. Herhangi bir kurulum gerektirmez. Hesap oluşturmanıza bile gerek yok! Yayın akışılarınızı ayarlayın veya eski okuyucunuzdan OPML aracılığıyla içe aktarın, ardından eşzamanlayıp okumaya başlayın.

    + +

    Özellikler

    + +
      +
    • HTML'yi ayrıştırır ve yerel bir TextView'da görüntüler
    • +
    • Çevrim dışı okuma
    • +
    • Arka planda eşzamanlama
    • +
    • Bildirimler
    • +
    • OPML içe/dışa aktarma
    • +
    • Ek bağlantılara pratik erişim
    • +
    • Materyal tasarım
    • +
    diff --git a/fastlane/metadata/android/tr-TR/short_description.txt b/fastlane/metadata/android/tr-TR/short_description.txt new file mode 100644 index 0000000..e116320 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/short_description.txt @@ -0,0 +1 @@ +Özgür ve açık kaynaklı harika bir RSS yayın okuyucusu diff --git a/fastlane/metadata/android/vi/full_description.txt b/fastlane/metadata/android/vi/full_description.txt new file mode 100644 index 0000000..01c32de --- /dev/null +++ b/fastlane/metadata/android/vi/full_description.txt @@ -0,0 +1,19 @@ +

    Bạn có chán các trình đọc gây nặng máy, không tự do và ăn trộm thông tin cá nhân của bạn không?
    +Bạn có chán các thiết lập đồng bộ phức tạp yêu cầu hàng tiếng đồng hồ cho việc thiết lập máy chủ không?
    +Bạn có chán việc phải tạo tài khoản ở khắp mọi nơi không?

    + +

    Thay vào đó hãy thử Feeder!

    + +

    Feeder là một trình đọc nguồn dữ liệu hoàn toàn tự do. Nó hỗ trợ tất cả định dạng nguồn dữ liệu phổ biến, bao gồm cả JSONFeed. Nó không theo dõi bạn. Nó không yêu cầu bất kỳ thiết lập nào. Nó còn không cần bạn tạo tài khoản! Chỉ cần thiết lập các nguồn dữ liệu của bạn, hoặc nhập chúng từ trình đọc cũ của bạn qua OPML, rồi tiếp tục với việc đồng bộ và đọc.

    + +

    Các tính năng

    + +
      +
    • Xử lý HTML và hiển thị nó trong TextView của hệ thống
    • +
    • Đọc ngoại tuyến
    • +
    • Đồng bộ hoá trong nền
    • +
    • Thông báo
    • +
    • Nhập/Xuất OPML
    • +
    • Truy cập thuận tiện vào các liên kết bao bọc
    • +
    • Thiết kế Material
    • +
    diff --git a/fastlane/metadata/android/vi/short_description.txt b/fastlane/metadata/android/vi/short_description.txt new file mode 100644 index 0000000..9a84ebb --- /dev/null +++ b/fastlane/metadata/android/vi/short_description.txt @@ -0,0 +1 @@ +Một trình đọc nguồn dữ liệu RSS tự do và mã nguồn mở tuyệt vời diff --git a/fastlane/metadata/android/zh-CN/full_description.txt b/fastlane/metadata/android/zh-CN/full_description.txt new file mode 100644 index 0000000..7bf18e1 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/full_description.txt @@ -0,0 +1,19 @@ +

    你是否早已厌倦了臃肿不自由的阅读器窃取你的个人信息?
    +你是否疲于需要数小时的服务器配置的复杂同步设置?
    +你是否对到处都需要创建账户感到不满?

    + +

    不如试试 Feeder 吧!

    + +

    Feeder 是一款完全自由的订阅阅读器。 它支持所有通用订阅格式,包括 JSONFeed。 它不会跟踪你。 它不需要任何配置。 它甚至不需要你创建账户! 只需设置你的订阅,或从你的旧阅读器中通过 OPML导入,然后就可以开始同步和阅读了。

    + +

    特性

    + +
      +
    • 解析 HTML 并以原生文字视图显示
    • +
    • 离线阅读
    • +
    • 后台同步
    • +
    • 通知
    • +
    • OPML 导入/导出
    • +
    • 便捷访问链接
    • +
    • Material design
    • +
    diff --git a/fastlane/metadata/android/zh-CN/short_description.txt b/fastlane/metadata/android/zh-CN/short_description.txt new file mode 100644 index 0000000..ed0392e --- /dev/null +++ b/fastlane/metadata/android/zh-CN/short_description.txt @@ -0,0 +1 @@ +优秀、自由并开源的 RSS 订阅阅读器 diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..70a1496 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,22 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Settings specified in this file will override any Gradle settings +# configured through the IDE. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +android.enableJetifier=true +android.useAndroidX=true + +org.gradle.caching=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..f3d88b1 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..d0854ed --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon May 17 09:26:13 CEST 2021 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..2fe81a7 --- /dev/null +++ b/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..9618d8d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,100 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/graphics/f_foreground_512.png b/graphics/f_foreground_512.png new file mode 100644 index 0000000..0a0fe6b Binary files /dev/null and b/graphics/f_foreground_512.png differ diff --git a/graphics/featureGraphic.xcf b/graphics/featureGraphic.xcf new file mode 100644 index 0000000..54c8c7d Binary files /dev/null and b/graphics/featureGraphic.xcf differ diff --git a/graphics/feeder_square.zip b/graphics/feeder_square.zip new file mode 100644 index 0000000..8b37827 Binary files /dev/null and b/graphics/feeder_square.zip differ diff --git a/graphics/feeder_wide.zip b/graphics/feeder_wide.zip new file mode 100644 index 0000000..f7635b4 Binary files /dev/null and b/graphics/feeder_wide.zip differ diff --git a/graphics/ic_launcher_circle.zip b/graphics/ic_launcher_circle.zip new file mode 100644 index 0000000..cbceeb4 Binary files /dev/null and b/graphics/ic_launcher_circle.zip differ diff --git a/graphics/ic_launcher_foreground.zip b/graphics/ic_launcher_foreground.zip new file mode 100644 index 0000000..8596ffc Binary files /dev/null and b/graphics/ic_launcher_foreground.zip differ diff --git a/graphics/ic_launcher_square.zip b/graphics/ic_launcher_square.zip new file mode 100644 index 0000000..585fb60 Binary files /dev/null and b/graphics/ic_launcher_square.zip differ diff --git a/graphics/ic_launcher_tallrect.zip b/graphics/ic_launcher_tallrect.zip new file mode 100644 index 0000000..ec905fc Binary files /dev/null and b/graphics/ic_launcher_tallrect.zip differ diff --git a/graphics/ic_launcher_widerect.zip b/graphics/ic_launcher_widerect.zip new file mode 100644 index 0000000..679fef6 Binary files /dev/null and b/graphics/ic_launcher_widerect.zip differ diff --git a/graphics/icon.xcf b/graphics/icon.xcf new file mode 100644 index 0000000..6a0b725 Binary files /dev/null and b/graphics/icon.xcf differ diff --git a/graphics/promo_res_180.png b/graphics/promo_res_180.png new file mode 100644 index 0000000..247f7f3 Binary files /dev/null and b/graphics/promo_res_180.png differ diff --git a/graphics/promo_res_402.png b/graphics/promo_res_402.png new file mode 100644 index 0000000..51f74fe Binary files /dev/null and b/graphics/promo_res_402.png differ diff --git a/graphics/sonsie-one.zip b/graphics/sonsie-one.zip new file mode 100644 index 0000000..ad02974 Binary files /dev/null and b/graphics/sonsie-one.zip differ diff --git a/graphics/web_hi_res_512.png b/graphics/web_hi_res_512.png new file mode 100644 index 0000000..7452e74 Binary files /dev/null and b/graphics/web_hi_res_512.png differ diff --git a/jsonfeed-parser/build.gradle.kts b/jsonfeed-parser/build.gradle.kts new file mode 100644 index 0000000..aaeec39 --- /dev/null +++ b/jsonfeed-parser/build.gradle.kts @@ -0,0 +1,43 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + kotlin("jvm") + `java-library` +} + +val compileKotlin: KotlinCompile by tasks + +compileKotlin.kotlinOptions.jvmTarget = "1.8" + +configurations.all { + resolutionStrategy { + failOnVersionConflict() + + val kotlin_version: String by project + val okio_version: String by project + + force("com.squareup.okio:okio:$okio_version") + force("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version") + force("org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version") + force("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version") + force("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version") + force("org.jetbrains.kotlin:kotlin-reflect:$kotlin_version") + } +} + + +dependencies { + val kotlin_version: String by project + val okhttp_version: String by project + val moshi_version: String by project + + implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version") + api(platform("com.squareup.okhttp3:okhttp-bom:$okhttp_version")) + api("com.squareup.okhttp3:okhttp") + api("com.squareup.moshi:moshi:$moshi_version") + + // tests + testImplementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version") + testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version") + testImplementation("junit:junit:4.12") +} diff --git a/jsonfeed-parser/src/main/kotlin/com/nononsenseapps/jsonfeed/JsonFeedParser.kt b/jsonfeed-parser/src/main/kotlin/com/nononsenseapps/jsonfeed/JsonFeedParser.kt new file mode 100644 index 0000000..b24648d --- /dev/null +++ b/jsonfeed-parser/src/main/kotlin/com/nononsenseapps/jsonfeed/JsonFeedParser.kt @@ -0,0 +1,203 @@ +package com.nononsenseapps.jsonfeed + +import com.squareup.moshi.JsonAdapter +import com.squareup.moshi.Moshi +import okhttp3.Cache +import okhttp3.OkHttpClient +import okhttp3.Request +import okio.BufferedSource +import okio.buffer +import okio.source +import java.io.File +import java.io.IOException +import java.util.concurrent.TimeUnit + +// 10 mins +const val MIN_MAXAGE = 600 +val MAX_AGE_PATTERN = """max-age=(\d+)""".toRegex() + +fun cachingHttpClient( + cacheDirectory: File? = null, + cacheSize: Long = 10L * 1024L * 1024L, + trustAllCerts: Boolean = true, + connectTimeoutSecs: Long = 30L, + readTimeoutSecs: Long = 30L +): OkHttpClient { + val builder: OkHttpClient.Builder = OkHttpClient.Builder() + + if (cacheDirectory != null) { + builder.cache(Cache(cacheDirectory, cacheSize)) + } + + // Not all web servers have good cache settings defined, so overwrite feeds to allow caching + // for 20 mins if whatever it says is bad + builder.addNetworkInterceptor { + val response = it.proceed(it.request()) + + try { + val cacheHeaders = response.headers("Cache-Control") + + var maxAge = -1 + + for (header in cacheHeaders) { + MAX_AGE_PATTERN.find(header)?.let { + maxAge = it.groupValues.last().toInt() + } + } + + maxAge = maxOf(maxAge, MIN_MAXAGE) + + response.newBuilder() + .header("Cache-Control", "public, max-age=$maxAge") + .build() + } catch (ignored: Throwable) { + response + } + } + + builder + .connectTimeout(connectTimeoutSecs, TimeUnit.SECONDS) + .readTimeout(readTimeoutSecs, TimeUnit.SECONDS) + .followRedirects(true) + + if (trustAllCerts) { + builder.trustAllCerts() + } + + return builder.build() +} + +fun feedAdapter(): JsonAdapter = Moshi.Builder().build().adapter(Feed::class.java) + +/** + * A parser for JSONFeeds. CacheDirectory and CacheSize are only relevant if feeds are downloaded. They are not used + * for parsing JSON directly. + */ +class JsonFeedParser( + private val httpClient: OkHttpClient, + private val jsonFeedAdapter: JsonAdapter +) { + + constructor( + cacheDirectory: File? = null, + cacheSize: Long = 10L * 1024L * 1024L, + trustAllCerts: Boolean = true, + connectTimeoutSecs: Long = 5L, + readTimeoutSecs: Long = 5L + ) : this( + cachingHttpClient( + cacheDirectory = cacheDirectory, + cacheSize = cacheSize, + trustAllCerts = trustAllCerts, + connectTimeoutSecs = connectTimeoutSecs, + readTimeoutSecs = readTimeoutSecs + ), + feedAdapter() + ) + + /** + * Download a JSONFeed and parse it + */ + fun parseUrl(url: String): Feed { + val request: Request + try { + request = Request.Builder() + .url(url) + .build() + } catch (error: Throwable) { + throw IllegalArgumentException("Bad URL. Perhaps it is missing an http:// prefix?", error) + } + + val response = httpClient.newCall(request).execute() + + if (!response.isSuccessful) { + throw IOException("Failed to download feed: $response") + } + + val body = response.body + if (body != null) { + body.source().inputStream().use { + return parseJsonStream(it.source().buffer()) + } + } else { + throw IOException("Failed to parse feed: body was NULL") + } + } + + /** + * Parse a JSONFeed + */ + fun parseJson(json: String): Feed = + json.byteInputStream().use { return parseJsonStream(it.source().buffer()) } + + /** + * Parse a JSONFeed + */ + fun parseJsonBytes(json: ByteArray): Feed = + json.inputStream().use { return parseJsonStream(it.source().buffer()) } + + /** + * Parse a JSONFeed + */ + @Suppress("MemberVisibilityCanPrivate") + fun parseJsonStream(json: BufferedSource): Feed { + val result = jsonFeedAdapter.fromJson(json) + + when { + result != null -> return result + else -> throw IOException("Failed to parse JSONFeed") + } + } +} + +data class Feed( + val version: String? = "https://jsonfeed.org/version/1", + val title: String?, + val home_page_url: String? = null, + val feed_url: String? = null, + val description: String? = null, + val user_comment: String? = null, + val next_url: String? = null, + val icon: String? = null, + val favicon: String? = null, + val author: Author? = null, + val expired: Boolean? = null, + val hubs: List? = null, + val items: List? +) + +data class Author( + val name: String? = null, + val url: String? = null, + val avatar: String? = null +) + +data class Item( + val id: String?, + val url: String? = null, + val external_url: String? = null, + val title: String? = null, + val content_html: String? = null, + val content_text: String? = null, + val summary: String? = null, + val image: String? = null, + val banner_image: String? = null, + val date_published: String? = null, + val date_modified: String? = null, + val author: Author? = null, + val tags: List? = null, + val attachments: List? = null +) + +data class Attachment( + val url: String?, + val mime_type: String? = null, + val title: String? = null, + val size_in_bytes: Long? = null, + val duration_in_seconds: Long? = null +) + +data class Hub( + val type: String?, + val url: String? +) diff --git a/jsonfeed-parser/src/main/kotlin/com/nononsenseapps/jsonfeed/OkHttpBuilderExtensions.kt b/jsonfeed-parser/src/main/kotlin/com/nononsenseapps/jsonfeed/OkHttpBuilderExtensions.kt new file mode 100644 index 0000000..891fb89 --- /dev/null +++ b/jsonfeed-parser/src/main/kotlin/com/nononsenseapps/jsonfeed/OkHttpBuilderExtensions.kt @@ -0,0 +1,35 @@ +package com.nononsenseapps.jsonfeed + +import okhttp3.OkHttpClient +import java.security.KeyManagementException +import java.security.NoSuchAlgorithmException +import java.security.cert.X509Certificate +import javax.net.ssl.HostnameVerifier +import javax.net.ssl.SSLContext +import javax.net.ssl.TrustManager +import javax.net.ssl.X509TrustManager + +fun OkHttpClient.Builder.trustAllCerts() { + try { + val trustManager = object : X509TrustManager { + override fun checkClientTrusted(chain: Array?, authType: String?) { + } + + override fun checkServerTrusted(chain: Array?, authType: String?) { + } + + override fun getAcceptedIssuers(): Array = emptyArray() + } + + val sslContext = SSLContext.getInstance("TLS") + sslContext.init(null, arrayOf(trustManager), null) + val sslSocketFactory = sslContext.socketFactory + + sslSocketFactory(sslSocketFactory, trustManager) + .hostnameVerifier(HostnameVerifier { _, _ -> true }) + } catch (e: NoSuchAlgorithmException) { + // ignore + } catch (e: KeyManagementException) { + // ignore + } +} diff --git a/jsonfeed-parser/src/test/kotlin/com/nononsenseapps/jsonfeed/JsonFeedParserTest.kt b/jsonfeed-parser/src/test/kotlin/com/nononsenseapps/jsonfeed/JsonFeedParserTest.kt new file mode 100644 index 0000000..56946cf --- /dev/null +++ b/jsonfeed-parser/src/test/kotlin/com/nononsenseapps/jsonfeed/JsonFeedParserTest.kt @@ -0,0 +1,114 @@ +package com.nononsenseapps.jsonfeed + +import org.junit.Rule +import org.junit.Test +import org.junit.rules.ExpectedException +import kotlin.test.assertEquals + +class JsonFeedParserTest { + + @Rule + @JvmField + val expected: ExpectedException = ExpectedException.none() + + @Test + fun basic() { + val parser = JsonFeedParser() + + val feed = parser.parseJson( + """ +{ + "version": "https://jsonfeed.org/version/1", + "title": "My Example Feed", + "home_page_url": "https://example.org/", + "feed_url": "https://example.org/feed.json", + "items": [ + { + "id": "2", + "content_text": "This is a second item.", + "url": "https://example.org/second-item" + }, + { + "id": "1", + "content_html": "

    Hello, world!

    ", + "url": "https://example.org/initial-post" + } + ] +} + """ + ) + + assertEquals("https://jsonfeed.org/version/1", feed.version) + assertEquals("My Example Feed", feed.title) + assertEquals("https://example.org/", feed.home_page_url) + assertEquals("https://example.org/feed.json", feed.feed_url) + + assertEquals(2, feed.items?.size) + + assertEquals("2", feed.items!![0].id) + assertEquals("This is a second item.", feed.items!![0].content_text) + assertEquals("https://example.org/second-item", feed.items!![0].url) + + assertEquals("1", feed.items!![1].id) + assertEquals("

    Hello, world!

    ", feed.items!![1].content_html) + assertEquals("https://example.org/initial-post", feed.items!![1].url) + } + + @Test + fun dateParsing() { + val parser = JsonFeedParser() + + val feed = parser.parseJson( + """ +{ + "version": "https://jsonfeed.org/version/1", + "title": "My Example Feed", + "home_page_url": "https://example.org/", + "feed_url": "https://example.org/feed.json", + "items": [ + { + "id": "1", + "content_html": "

    Hello, world!

    ", + "url": "https://example.org/initial-post", + "date_published": "2010-02-07T14:04:00-05:00", + "date_modified": "2012-03-08T15:05:01+09:00" + } + ] +} + """ + ) + + assertEquals("https://jsonfeed.org/version/1", feed.version) + assertEquals("My Example Feed", feed.title) + assertEquals("https://example.org/", feed.home_page_url) + assertEquals("https://example.org/feed.json", feed.feed_url) + + assertEquals(1, feed.items?.size) + + assertEquals("1", feed.items!![0].id) + assertEquals("

    Hello, world!

    ", feed.items!![0].content_html) + assertEquals("https://example.org/initial-post", feed.items!![0].url) + + assertEquals("2010-02-07T14:04:00-05:00", feed.items!![0].date_published) + assertEquals("2012-03-08T15:05:01+09:00", feed.items!![0].date_modified) + } + + @Test + fun cowboyOnline() { + val parser = JsonFeedParser() + + val feed = parser.parseUrl("https://cowboyprogrammer.org/feed.json") + + assertEquals("https://jsonfeed.org/version/1", feed.version) + assertEquals("Cowboy Programmer", feed.title) + assertEquals("Space Cowboy", feed.author?.name) + assertEquals("https://cowboyprogrammer.org/css/images/logo.png", feed.icon) + } + + @Test + fun badUrl() { + expected.expectMessage("Bad URL. Perhaps it is missing an http:// prefix?") + expected.expect(IllegalArgumentException::class.java) + JsonFeedParser().parseUrl("cowboyprogrammer.org/feed.json") + } +} diff --git a/release.sh b/release.sh new file mode 100755 index 0000000..86a7534 --- /dev/null +++ b/release.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +set -u + +TARGET="${1:-HEAD}" + + +current_default="$(git describe --tags --abbrev=0 "${TARGET}")" + + +echo >&2 -n "Current version [${current_default}]: " +read -r current_in + +if [ -z "${current_in}" ]; then + CURRENT_VERSION="${current_default}" +else + CURRENT_VERSION="${current_in}" +fi + +next_default="$(cat app/build.gradle | grep "versionName" | sed "s|\s*versionName \"\(.*\)\"|\\1|")" +echo >&2 -n "Next version [${next_default}]: " +read -r next_in + +if [ -z "${next_in}" ]; then + NEXT_VERSION="${next_default}" +else + NEXT_VERSION="${next_in}" +fi + +CURRENT_CODE="$(cat app/build.gradle | grep "versionCode" | sed "s|\s*versionCode\s*\([0-9]\+\)|\\1|")" +echo >&2 "Current code ${CURRENT_CODE}" + +let next_code_default=CURRENT_CODE+1 + +echo >&2 -n "Next code [${next_code_default}]: " +read -r next_code_in + +if [ -z "${next_code_in}" ]; then + NEXT_CODE="${next_code_default}" +else + NEXT_CODE="${next_code_in}" +fi + +CL="# ${NEXT_VERSION} +$(git shortlog -w76,2,9 --format='* [%h] %s' ${CURRENT_VERSION}..HEAD) +" + +tmpfile="$(mktemp)" + +echo "${CL}" > "${tmpfile}" + +sensible-editor "${tmpfile}" + +echo >&2 "Changelog for [${NEXT_VERSION}]:" +cat >&2 "${tmpfile}" + +read -r -p "Write changelog? [y/N] " response +if [[ "$response" =~ ^[yY]$ ]] +then + # Playstore has a limit + head --bytes=500 "${tmpfile}" >"fastlane/metadata/android/en-US/changelogs/${NEXT_CODE}.txt" + + PREV="" + if [ -f CHANGELOG.md ]; then + read -r -d '' PREV CHANGELOG.md <