diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..681f41a --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,116 @@ + + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+
\ No newline at end of file diff --git a/README.md b/README.md index 0f7b5a8..95a1a18 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ A library containing over 2000 material vector icons that can be easily used as Drawable, a standalone View or inside menu resource files. Tired of having to search for and generate png resources every time you want to test something? This library puts an end to that burden and makes swapping icons a breeze, check out the usage below and you'll see why. +# Icon Library version: 4.7.95 + # Demo ![](http://i.imgur.com/KXHfXo8.gif) diff --git a/app/app.iml b/app/app.iml index c7b32c8..0b1cb9d 100644 --- a/app/app.iml +++ b/app/app.iml @@ -1,9 +1,11 @@ - + @@ -17,30 +19,30 @@ - - - + + + - - + + - - - - - - + + + + + - - - - + + + + @@ -48,6 +50,13 @@ + + + + + + + @@ -76,39 +85,42 @@ - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e68e456..dec5ea8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,13 +3,13 @@ apply plugin: 'com.android.application' repositories { maven { url "http://dl.bintray.com/codecrafted/maven" } } android { - compileSdkVersion 27 - buildToolsVersion '25.0.3' + compileSdkVersion 29 + buildToolsVersion '29.0.2' defaultConfig { applicationId "net.steamcrafted.materialiconview" - minSdkVersion 14 - targetSdkVersion 27 + minSdkVersion 21 + targetSdkVersion 29 versionCode 1 versionName "1.0" } @@ -21,15 +21,14 @@ android { } - lintOptions { abortOnError false } } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:27.1.1' + //implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.0.2' //compile 'net.steamcrafted:materialiconlib:1.1.2' - compile project(":materialiconlib") + implementation project(":materialiconlib") } diff --git a/app/src/main/assets/materialdesignicons-webfont.ttf b/app/src/main/assets/materialdesignicons-webfont.ttf index ec65b66..ad34046 100644 Binary files a/app/src/main/assets/materialdesignicons-webfont.ttf and b/app/src/main/assets/materialdesignicons-webfont.ttf differ diff --git a/app/src/main/java/net/steamcrafted/materialiconview/ImageAdapter.java b/app/src/main/java/net/steamcrafted/materialiconview/ImageAdapter.java index 1d25f45..e7388ee 100644 --- a/app/src/main/java/net/steamcrafted/materialiconview/ImageAdapter.java +++ b/app/src/main/java/net/steamcrafted/materialiconview/ImageAdapter.java @@ -1,7 +1,9 @@ package net.steamcrafted.materialiconview; import android.graphics.Color; -import android.support.annotation.NonNull; + +import androidx.annotation.NonNull; + import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -14,6 +16,7 @@ import net.steamcrafted.materialiconlib.MaterialDrawableBuilder; import net.steamcrafted.materialiconlib.MaterialIconUtils; +import net.steamcrafted.materialiconlib.MaterialIconValues; import net.steamcrafted.materialiconlib.MaterialIconView; import java.util.List; @@ -21,46 +24,53 @@ /** * Created by Wannes2 on 21/07/2015. */ -public class ImageAdapter extends BaseAdapter { +public class ImageAdapter extends BaseAdapter +{ - List icons; + MaterialIconValues icons; - public ImageAdapter(@NonNull List iconin){ + public ImageAdapter(@NonNull MaterialIconValues iconin) + { this.icons = iconin; } @Override - public int getCount() { + public int getCount() + { return icons.size(); } @Override - public Object getItem(int i) { + public Object getItem(int i) + { return icons.get(i); } @Override - public long getItemId(int i) { + public long getItemId(int i) + { return i; } @Override - public View getView(int i, View view, ViewGroup viewGroup) { - if(view == null){ + public View getView(int i, View view, ViewGroup viewGroup) + { + if (view == null) + { view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.image_list_item, null, false); view.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.WRAP_CONTENT, AbsListView.LayoutParams.WRAP_CONTENT)); } FrameLayout host = (FrameLayout) view; ImageView v = (ImageView) host.getChildAt(0); - TextView tv = (TextView) host.getChildAt(1); + TextView tv = (TextView) host.getChildAt(1); v.setImageDrawable( MaterialDrawableBuilder.with(viewGroup.getContext()) - .setIcon(icons.get(i)) - .setColor(Color.BLACK) - .setSizePx(viewGroup.getWidth() / 5) - .build() + .setIcon(icons.get(i)) + .setColor(Color.BLACK) + .setSizePx(viewGroup.getWidth() / 5) + .build() ); - tv.setText(icons.get(i).name()); + tv.setText(icons.getName(i)); return view; } } diff --git a/app/src/main/java/net/steamcrafted/materialiconview/MainActivity.java b/app/src/main/java/net/steamcrafted/materialiconview/MainActivity.java index d9b7376..5743e3b 100644 --- a/app/src/main/java/net/steamcrafted/materialiconview/MainActivity.java +++ b/app/src/main/java/net/steamcrafted/materialiconview/MainActivity.java @@ -2,41 +2,47 @@ import android.graphics.Color; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.view.SupportMenuInflater; -import android.support.v7.widget.Toolbar; import android.view.Menu; import android.widget.GridView; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.view.SupportMenuInflater; +import androidx.appcompat.widget.Toolbar; + import net.steamcrafted.materialiconlib.MaterialDrawableBuilder; +import net.steamcrafted.materialiconlib.MaterialIconValues; import net.steamcrafted.materialiconlib.MaterialIconView; import net.steamcrafted.materialiconlib.MaterialMenuInflater; import java.util.Arrays; import java.util.List; -public class MainActivity extends AppCompatActivity { +public class MainActivity extends AppCompatActivity +{ MaterialIconView mIcon; GridView mListview; @Override - protected void onCreate(Bundle savedInstanceState) { + protected void onCreate(Bundle savedInstanceState) + { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListview = (GridView) findViewById(R.id.listview); - List vals = Arrays.asList(MaterialDrawableBuilder.IconValue.values()); + //List vals = Arrays.asList(MaterialDrawableBuilder.IconValue.values()); - ImageAdapter adapt = new ImageAdapter(vals); + ImageAdapter adapt = new ImageAdapter(new MaterialIconValues(this)); mListview.setAdapter(adapt); final Toolbar toolbar1 = (Toolbar) findViewById(R.id.toolbar_1); MaterialMenuInflater.with(toolbar1.getContext(), new SupportMenuInflater(toolbar1.getContext())) .inflate(R.menu.menu_nocolor, toolbar1.getMenu()); + final MaterialIconView miv = (MaterialIconView) findViewById(R.id.file_icon); + miv.setIcon("file_account"); // Activity Theme materialIconColor attribute (lowest priority default color) // View specific Theme e.g. app:theme="..." (2nd lowest in priority) @@ -76,7 +82,8 @@ protected void onCreate(Bundle savedInstanceState) { } @Override - public boolean onCreateOptionsMenu(Menu menu) { + public boolean onCreateOptionsMenu(Menu menu) + { MaterialMenuInflater.with(this).inflate(R.menu.menu_main, menu); return true; } diff --git a/app/src/main/java/net/steamcrafted/materialiconview/SetBoundsTest.java b/app/src/main/java/net/steamcrafted/materialiconview/SetBoundsTest.java index fdb6b94..a798369 100644 --- a/app/src/main/java/net/steamcrafted/materialiconview/SetBoundsTest.java +++ b/app/src/main/java/net/steamcrafted/materialiconview/SetBoundsTest.java @@ -38,7 +38,7 @@ public SetBoundsTest(Context context, AttributeSet attrs, int defStyle) { private void init(final AttributeSet attrs, final int defStyle) { mDrawable = MaterialDrawableBuilder.with(getContext()) - .setIcon(MaterialDrawableBuilder.IconValue.NUMERIC_7_BOX) + .setIconByName("file") .setColor(Color.RED) .setSizeDp(1) .build(); diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 8c81146..54bfeab 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -71,45 +71,43 @@ --> - - + android:orientation="vertical"> - + app:theme="@style/ToolbarTheme" + app:title="Toolbar context" /> + app:materialIcon="file" + app:materialIconColor="?attr/materialIconColor" /> - + android:paddingRight="@dimen/activity_horizontal_margin" + android:paddingBottom="@dimen/activity_vertical_margin" + tools:context=".MainActivity" /> diff --git a/build.gradle b/build.gradle index 35f16b1..468ddad 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,10 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.0' + classpath 'com.android.tools.build:gradle:3.5.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c14560b..472be66 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip diff --git a/material-icon-lib.iml b/material-icon-lib.iml new file mode 100644 index 0000000..b3bc2e7 --- /dev/null +++ b/material-icon-lib.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/materialiconlib/build.gradle b/materialiconlib/build.gradle index 4229265..a899774 100644 --- a/materialiconlib/build.gradle +++ b/materialiconlib/build.gradle @@ -4,15 +4,15 @@ apply plugin: 'com.android.library' ext { PUBLISH_GROUP_ID = 'net.steamcrafted' PUBLISH_ARTIFACT_ID = 'materialiconlib' - PUBLISH_VERSION = '1.1.5' + PUBLISH_VERSION = '1.1.5GP' } android { - compileSdkVersion 27 - buildToolsVersion '25.0.3' + compileSdkVersion 29 + buildToolsVersion '29.0.2' defaultConfig { - minSdkVersion 4 + minSdkVersion 21 targetSdkVersion 27 versionCode 1 versionName "1.0" @@ -29,4 +29,9 @@ android { } -apply from: 'https://raw.githubusercontent.com/ArthurHub/release-android-library/master/android-release-aar.gradle' \ No newline at end of file +dependencies { + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.annotation:annotation:1.0.2' +} + +//apply from: 'https://raw.githubusercontent.com/ArthurHub/release-android-library/master/android-release-aar.gradle' \ No newline at end of file diff --git a/materialiconlib/materialiconlib.iml b/materialiconlib/materialiconlib.iml index cebed64..b23fc9f 100644 --- a/materialiconlib/materialiconlib.iml +++ b/materialiconlib/materialiconlib.iml @@ -1,9 +1,11 @@ - + @@ -17,31 +19,31 @@ - - - + + + - - + + - - - - - - + + + + + - - - - + + + + @@ -49,6 +51,13 @@ + + + + + + + @@ -77,30 +86,39 @@ - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/materialiconlib/src/main/assets/materialdesignicons-webfont.ttf b/materialiconlib/src/main/assets/materialdesignicons-webfont.ttf index ec65b66..ad34046 100644 Binary files a/materialiconlib/src/main/assets/materialdesignicons-webfont.ttf and b/materialiconlib/src/main/assets/materialdesignicons-webfont.ttf differ diff --git a/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialDrawableBuilder.java b/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialDrawableBuilder.java index 6cc77fe..8bec31a 100644 --- a/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialDrawableBuilder.java +++ b/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialDrawableBuilder.java @@ -3,6 +3,7 @@ /** * Created by Wannes2 on 19/07/2015. */ + import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; @@ -15,7 +16,7 @@ /** * Builder used to create a MaterialDrawable. Provide a context and at least an icon to build. - * + *

* Example usage: *

*
@@ -26,15 +27,16 @@
  *     .build();
  * 
*/ -public class MaterialDrawableBuilder { +public class MaterialDrawableBuilder +{ - public static enum IconValue {VECTOR_SQUARE,ACCESS_POINT,ACCESS_POINT_NETWORK,ACCOUNT,ACCOUNT_ALERT,ACCOUNT_BOX,ACCOUNT_BOX_OUTLINE,ACCOUNT_CHECK,ACCOUNT_CIRCLE,ACCOUNT_CONVERT,ACCOUNT_KEY,ACCOUNT_LOCATION,ACCOUNT_MINUS,ACCOUNT_MULTIPLE,ACCOUNT_MULTIPLE_OUTLINE,ACCOUNT_MULTIPLE_PLUS,ACCOUNT_NETWORK,ACCOUNT_OFF,ACCOUNT_OUTLINE,ACCOUNT_PLUS,ACCOUNT_REMOVE,ACCOUNT_SEARCH,ACCOUNT_STAR,ORBIT,ACCOUNT_SWITCH,ADJUST,AIR_CONDITIONER,AIRBALLOON,AIRPLANE,AIRPLANE_OFF,AIRPLAY,ALARM,ALARM_CHECK,ALARM_MULTIPLE,ALARM_OFF,ALARM_PLUS,ALBUM,ALERT,ALERT_BOX,ALERT_CIRCLE,ALERT_OCTAGON,ALERT_OUTLINE,ALPHA,ALPHABETICAL,AMAZON,AMAZON_DRIVE,AMBULANCE,AMPLIFIER,ANCHOR,ANDROID,ANDROID_DEBUG_BRIDGE,ANDROID_STUDIO,APPLE,APPLE_FINDER,APPLE_IOS,APPLE_ICLOUD,APPLE_SAFARI,FONT_AWESOME,APPS,ARCHIVE,ARRANGE_BRING_FORWARD,ARRANGE_BRING_TO_FRONT,ARRANGE_SEND_BACKWARD,ARRANGE_SEND_TO_BACK,ARROW_ALL,ARROW_BOTTOM_LEFT,ARROW_BOTTOM_RIGHT,ARROW_COLLAPSE_ALL,ARROW_DOWN,ARROW_DOWN_THICK,ARROW_DOWN_BOLD_CIRCLE,ARROW_DOWN_BOLD_CIRCLE_OUTLINE,ARROW_DOWN_BOLD_HEXAGON_OUTLINE,ARROW_DOWN_DROP_CIRCLE,ARROW_DOWN_DROP_CIRCLE_OUTLINE,ARROW_EXPAND_ALL,ARROW_LEFT,ARROW_LEFT_THICK,ARROW_LEFT_BOLD_CIRCLE,ARROW_LEFT_BOLD_CIRCLE_OUTLINE,ARROW_LEFT_BOLD_HEXAGON_OUTLINE,ARROW_LEFT_DROP_CIRCLE,ARROW_LEFT_DROP_CIRCLE_OUTLINE,ARROW_RIGHT,ARROW_RIGHT_THICK,ARROW_RIGHT_BOLD_CIRCLE,ARROW_RIGHT_BOLD_CIRCLE_OUTLINE,ARROW_RIGHT_BOLD_HEXAGON_OUTLINE,ARROW_RIGHT_DROP_CIRCLE,ARROW_RIGHT_DROP_CIRCLE_OUTLINE,ARROW_TOP_LEFT,ARROW_TOP_RIGHT,ARROW_UP,ARROW_UP_THICK,ARROW_UP_BOLD_CIRCLE,ARROW_UP_BOLD_CIRCLE_OUTLINE,ARROW_UP_BOLD_HEXAGON_OUTLINE,ARROW_UP_DROP_CIRCLE,ARROW_UP_DROP_CIRCLE_OUTLINE,ASSISTANT,AT,ATTACHMENT,AUDIOBOOK,AUTO_FIX,AUTO_UPLOAD,AUTORENEW,AV_TIMER,BABY,BACKBURGER,BACKSPACE,BACKUP_RESTORE,BANK,BARCODE,BARCODE_SCAN,BARLEY,BARREL,BASECAMP,BASKET,BASKET_FILL,BASKET_UNFILL,BATTERY,BATTERY_10,BATTERY_20,BATTERY_30,BATTERY_40,BATTERY_50,BATTERY_60,BATTERY_70,BATTERY_80,BATTERY_90,BATTERY_ALERT,BATTERY_CHARGING,BATTERY_CHARGING_100,BATTERY_CHARGING_20,BATTERY_CHARGING_30,BATTERY_CHARGING_40,BATTERY_CHARGING_60,BATTERY_CHARGING_80,BATTERY_CHARGING_90,BATTERY_MINUS,BATTERY_NEGATIVE,BATTERY_OUTLINE,BATTERY_PLUS,BATTERY_POSITIVE,BATTERY_UNKNOWN,BEACH,FLASK,FLASK_EMPTY,FLASK_EMPTY_OUTLINE,FLASK_OUTLINE,BEATS,BEER,BEHANCE,BELL,BELL_OFF,BELL_OUTLINE,BELL_PLUS,BELL_RING,BELL_RING_OUTLINE,BELL_SLEEP,BETA,BIBLE,BIKE,BING,BINOCULARS,BIO,BIOHAZARD,BITBUCKET,BLACK_MESA,BLACKBERRY,BLENDER,BLINDS,BLOCK_HELPER,BLOGGER,BLUETOOTH,BLUETOOTH_AUDIO,BLUETOOTH_CONNECT,BLUETOOTH_OFF,BLUETOOTH_SETTINGS,BLUETOOTH_TRANSFER,BLUR,BLUR_LINEAR,BLUR_OFF,BLUR_RADIAL,BONE,BOOK,BOOK_MULTIPLE,BOOK_MULTIPLE_VARIANT,BOOK_OPEN,BOOK_OPEN_VARIANT,BOOK_VARIANT,BOOKMARK,BOOKMARK_CHECK,BOOKMARK_MUSIC,BOOKMARK_OUTLINE,BOOKMARK_PLUS_OUTLINE,BOOKMARK_PLUS,BOOKMARK_REMOVE,BORDER_ALL,BORDER_BOTTOM,BORDER_COLOR,BORDER_HORIZONTAL,BORDER_INSIDE,BORDER_LEFT,BORDER_NONE,BORDER_OUTSIDE,BORDER_RIGHT,BORDER_STYLE,BORDER_TOP,BORDER_VERTICAL,BOWLING,BOX,BOX_CUTTER,BRIEFCASE,BRIEFCASE_CHECK,BRIEFCASE_DOWNLOAD,BRIEFCASE_UPLOAD,BRIGHTNESS_1,BRIGHTNESS_2,BRIGHTNESS_3,BRIGHTNESS_4,BRIGHTNESS_5,BRIGHTNESS_6,BRIGHTNESS_7,BRIGHTNESS_AUTO,BROOM,BRUSH,BUG,BULLETIN_BOARD,BULLHORN,BUS,CACHED,CAKE,CAKE_LAYERED,CAKE_VARIANT,CALCULATOR,CALENDAR,CALENDAR_BLANK,CALENDAR_CHECK,CALENDAR_CLOCK,CALENDAR_MULTIPLE,CALENDAR_MULTIPLE_CHECK,CALENDAR_PLUS,CALENDAR_REMOVE,CALENDAR_TEXT,CALENDAR_TODAY,CALL_MADE,CALL_MERGE,CALL_MISSED,CALL_RECEIVED,CALL_SPLIT,CAMCORDER,CAMCORDER_BOX,CAMCORDER_BOX_OFF,CAMCORDER_OFF,CAMERA,CAMERA_ENHANCE,CAMERA_FRONT,CAMERA_FRONT_VARIANT,CAMERA_IRIS,CAMERA_PARTY_MODE,CAMERA_REAR,CAMERA_REAR_VARIANT,CAMERA_SWITCH,CAMERA_TIMER,CANDYCANE,CAR,CAR_BATTERY,CAR_CONNECTED,CAR_WASH,CARROT,CART,CART_OUTLINE,CART_PLUS,CASE_SENSITIVE_ALT,CASH,CASH_100,CASH_MULTIPLE,CASH_USD,CAST,CAST_CONNECTED,CASTLE,CAT,CELLPHONE,CELLPHONE_ANDROID,CELLPHONE_BASIC,CELLPHONE_DOCK,CELLPHONE_IPHONE,CELLPHONE_LINK,CELLPHONE_LINK_OFF,CELLPHONE_SETTINGS,CERTIFICATE,CHAIR_SCHOOL,CHART_ARC,CHART_AREASPLINE,CHART_BAR,CHART_HISTOGRAM,CHART_LINE,CHART_PIE,CHECK,CHECK_ALL,CHECKBOX_BLANK,CHECKBOX_BLANK_CIRCLE,CHECKBOX_BLANK_CIRCLE_OUTLINE,CHECKBOX_BLANK_OUTLINE,CHECKBOX_MARKED,CHECKBOX_MARKED_CIRCLE,CHECKBOX_MARKED_CIRCLE_OUTLINE,CHECKBOX_MARKED_OUTLINE,CHECKBOX_MULTIPLE_BLANK,CHECKBOX_MULTIPLE_BLANK_OUTLINE,CHECKBOX_MULTIPLE_MARKED,CHECKBOX_MULTIPLE_MARKED_OUTLINE,CHECKERBOARD,CHEMICAL_WEAPON,CHEVRON_DOUBLE_DOWN,CHEVRON_DOUBLE_LEFT,CHEVRON_DOUBLE_RIGHT,CHEVRON_DOUBLE_UP,CHEVRON_DOWN,CHEVRON_LEFT,CHEVRON_RIGHT,CHEVRON_UP,CHURCH,CISCO_WEBEX,CITY,CLIPBOARD,CLIPBOARD_ACCOUNT,CLIPBOARD_ALERT,CLIPBOARD_ARROW_DOWN,CLIPBOARD_ARROW_LEFT,CLIPBOARD_CHECK,CLIPBOARD_OUTLINE,CLIPBOARD_TEXT,CLIPPY,CLOCK,CLOCK_END,CLOCK_FAST,CLOCK_IN,CLOCK_OUT,CLOCK_START,CLOSE,CLOSE_BOX,CLOSE_BOX_OUTLINE,CLOSE_CIRCLE,CLOSE_CIRCLE_OUTLINE,CLOSE_NETWORK,CLOSE_OCTAGON,CLOSE_OCTAGON_OUTLINE,CLOSED_CAPTION,CLOUD,CLOUD_CHECK,CLOUD_CIRCLE,CLOUD_DOWNLOAD,CLOUD_OUTLINE,CLOUD_OFF_OUTLINE,CLOUD_PRINT,CLOUD_PRINT_OUTLINE,CLOUD_UPLOAD,CODE_ARRAY,CODE_BRACES,CODE_BRACKETS,CODE_EQUAL,CODE_GREATER_THAN,CODE_GREATER_THAN_OR_EQUAL,CODE_LESS_THAN,CODE_LESS_THAN_OR_EQUAL,CODE_NOT_EQUAL,CODE_NOT_EQUAL_VARIANT,CODE_PARENTHESES,CODE_STRING,CODE_TAGS,CODEPEN,COFFEE,COFFEE_TO_GO,COIN,COLOR_HELPER,COMMENT,COMMENT_ACCOUNT,COMMENT_ACCOUNT_OUTLINE,COMMENT_ALERT,COMMENT_ALERT_OUTLINE,COMMENT_CHECK,COMMENT_CHECK_OUTLINE,COMMENT_MULTIPLE_OUTLINE,COMMENT_OUTLINE,COMMENT_PLUS_OUTLINE,COMMENT_PROCESSING,COMMENT_PROCESSING_OUTLINE,COMMENT_QUESTION_OUTLINE,COMMENT_REMOVE_OUTLINE,COMMENT_TEXT,COMMENT_TEXT_OUTLINE,COMPARE,COMPASS,COMPASS_OUTLINE,CONSOLE,CONTACT_MAIL,CONTENT_COPY,CONTENT_CUT,CONTENT_DUPLICATE,CONTENT_PASTE,CONTENT_SAVE,CONTENT_SAVE_ALL,CONTRAST,CONTRAST_BOX,CONTRAST_CIRCLE,COOKIE,COUNTER,COW,CREDIT_CARD,CREDIT_CARD_MULTIPLE,CREDIT_CARD_SCAN,CROP,CROP_FREE,CROP_LANDSCAPE,CROP_PORTRAIT,CROP_SQUARE,CROSSHAIRS,CROSSHAIRS_GPS,CROWN,CUBE,CUBE_OUTLINE,CUBE_SEND,CUBE_UNFOLDED,CUP,CUP_WATER,CURRENCY_BTC,CURRENCY_EUR,CURRENCY_GBP,CURRENCY_INR,CURRENCY_NGN,CURRENCY_RUB,CURRENCY_TRY,CURRENCY_USD,CURSOR_DEFAULT,CURSOR_DEFAULT_OUTLINE,CURSOR_MOVE,CURSOR_POINTER,DATABASE,DATABASE_MINUS,DATABASE_PLUS,DEBUG_STEP_INTO,DEBUG_STEP_OUT,DEBUG_STEP_OVER,DECIMAL_DECREASE,DECIMAL_INCREASE,DELETE,DELETE_VARIANT,DELTA,DESKPHONE,DESKTOP_MAC,DESKTOP_TOWER,DETAILS,DEVIANTART,DIAMOND,CREATION,DICE_1,DICE_2,DICE_3,DICE_4,DICE_5,DICE_6,DIRECTIONS,DISK_ALERT,DISQUS,DISQUS_OUTLINE,DIVISION,DIVISION_BOX,DNS,DOMAIN,DOTS_HORIZONTAL,DOTS_VERTICAL,DOWNLOAD,DRAG,DRAG_HORIZONTAL,DRAG_VERTICAL,DRAWING,DRAWING_BOX,DRIBBBLE,DRIBBBLE_BOX,DRONE,DROPBOX,DRUPAL,DUCK,DUMBBELL,EARTH,EARTH_OFF,EDGE,EJECT,ELEVATION_DECLINE,ELEVATION_RISE,ELEVATOR,EMAIL,EMAIL_OPEN,EMAIL_OUTLINE,EMAIL_SECURE,EMOTICON,EMOTICON_COOL,EMOTICON_DEVIL,EMOTICON_HAPPY,EMOTICON_NEUTRAL,EMOTICON_POOP,EMOTICON_SAD,EMOTICON_TONGUE,ENGINE,ENGINE_OUTLINE,EQUAL,EQUAL_BOX,ERASER,ESCALATOR,ETHERNET,ETHERNET_CABLE,ETHERNET_CABLE_OFF,ETSY,EVERNOTE,EXCLAMATION,EXIT_TO_APP,EXPORT,EYE,EYE_OFF,EYEDROPPER,EYEDROPPER_VARIANT,FACEBOOK,FACEBOOK_BOX,FACEBOOK_MESSENGER,FACTORY,FAN,FAST_FORWARD,FAX,FERRY,FILE,FILE_CHART,FILE_CHECK,FILE_CLOUD,FILE_DELIMITED,FILE_DOCUMENT,FILE_DOCUMENT_BOX,FILE_EXCEL,FILE_EXCEL_BOX,FILE_EXPORT,FILE_FIND,FILE_IMAGE,FILE_IMPORT,FILE_LOCK,FILE_MULTIPLE,FILE_MUSIC,FILE_OUTLINE,FILE_PDF,FILE_PDF_BOX,FILE_POWERPOINT,FILE_POWERPOINT_BOX,FILE_PRESENTATION_BOX,FILE_SEND,FILE_VIDEO,FILE_WORD,FILE_WORD_BOX,FILE_XML,FILM,FILMSTRIP,FILMSTRIP_OFF,FILTER,FILTER_OUTLINE,FILTER_REMOVE,FILTER_REMOVE_OUTLINE,FILTER_VARIANT,FINGERPRINT,FIRE,FIREFOX,FISH,FLAG,FLAG_CHECKERED,FLAG_OUTLINE,FLAG_VARIANT_OUTLINE,FLAG_TRIANGLE,FLAG_VARIANT,FLASH,FLASH_AUTO,FLASH_OFF,FLASHLIGHT,FLASHLIGHT_OFF,FLATTR,FLIP_TO_BACK,FLIP_TO_FRONT,FLOPPY,FLOWER,FOLDER,FOLDER_ACCOUNT,FOLDER_DOWNLOAD,FOLDER_GOOGLE_DRIVE,FOLDER_IMAGE,FOLDER_LOCK,FOLDER_LOCK_OPEN,FOLDER_MOVE,FOLDER_MULTIPLE,FOLDER_MULTIPLE_IMAGE,FOLDER_MULTIPLE_OUTLINE,FOLDER_OUTLINE,FOLDER_PLUS,FOLDER_REMOVE,FOLDER_UPLOAD,FOOD,FOOD_APPLE,FOOD_VARIANT,FOOTBALL,FOOTBALL_AUSTRALIAN,FOOTBALL_HELMET,FORMAT_ALIGN_CENTER,FORMAT_ALIGN_JUSTIFY,FORMAT_ALIGN_LEFT,FORMAT_ALIGN_RIGHT,FORMAT_BOLD,FORMAT_CLEAR,FORMAT_COLOR_FILL,FORMAT_FLOAT_CENTER,FORMAT_FLOAT_LEFT,FORMAT_FLOAT_NONE,FORMAT_FLOAT_RIGHT,FORMAT_HEADER_1,FORMAT_HEADER_2,FORMAT_HEADER_3,FORMAT_HEADER_4,FORMAT_HEADER_5,FORMAT_HEADER_6,FORMAT_HEADER_DECREASE,FORMAT_HEADER_EQUAL,FORMAT_HEADER_INCREASE,FORMAT_HEADER_POUND,FORMAT_INDENT_DECREASE,FORMAT_INDENT_INCREASE,FORMAT_ITALIC,FORMAT_LINE_SPACING,FORMAT_LIST_BULLETED,FORMAT_LIST_BULLETED_TYPE,FORMAT_LIST_NUMBERS,FORMAT_PAINT,FORMAT_PARAGRAPH,FORMAT_QUOTE_CLOSE,FORMAT_SIZE,FORMAT_STRIKETHROUGH,FORMAT_STRIKETHROUGH_VARIANT,FORMAT_SUBSCRIPT,FORMAT_SUPERSCRIPT,FORMAT_TEXT,FORMAT_TEXTDIRECTION_L_TO_R,FORMAT_TEXTDIRECTION_R_TO_L,FORMAT_UNDERLINE,FORMAT_WRAP_INLINE,FORMAT_WRAP_SQUARE,FORMAT_WRAP_TIGHT,FORMAT_WRAP_TOP_BOTTOM,FORUM,FORWARD,FOURSQUARE,FRIDGE,FRIDGE_FILLED,FRIDGE_FILLED_BOTTOM,FRIDGE_FILLED_TOP,FULLSCREEN,FULLSCREEN_EXIT,FUNCTION,GAMEPAD,GAMEPAD_VARIANT,GAS_STATION,GATE,GAUGE,GAVEL,GENDER_FEMALE,GENDER_MALE,GENDER_MALE_FEMALE,GENDER_TRANSGENDER,GHOST,GIFT,GIT,GITHUB_BOX,GITHUB_CIRCLE,GLASS_FLUTE,GLASS_MUG,GLASS_STANGE,GLASS_TULIP,GLASSDOOR,GLASSES,GMAIL,GNOME,GOOGLE,GOOGLE_CARDBOARD,GOOGLE_CHROME,GOOGLE_CIRCLES,GOOGLE_CIRCLES_COMMUNITIES,GOOGLE_CIRCLES_EXTENDED,GOOGLE_CIRCLES_GROUP,GOOGLE_CONTROLLER,GOOGLE_CONTROLLER_OFF,GOOGLE_DRIVE,GOOGLE_EARTH,GOOGLE_GLASS,GOOGLE_NEARBY,GOOGLE_PAGES,GOOGLE_PHYSICAL_WEB,GOOGLE_PLAY,GOOGLE_PLUS,GOOGLE_PLUS_BOX,GOOGLE_TRANSLATE,GOOGLE_WALLET,GRID,GRID_OFF,GROUP,GUITAR_ELECTRIC,GUITAR_PICK,GUITAR_PICK_OUTLINE,HAND_POINTING_RIGHT,HANGER,GOOGLE_HANGOUTS,HARDDISK,HEADPHONES,HEADPHONES_BOX,HEADPHONES_SETTINGS,HEADSET,HEADSET_DOCK,HEADSET_OFF,HEART,HEART_BOX,HEART_BOX_OUTLINE,HEART_BROKEN,HEART_OUTLINE,HELP,HELP_CIRCLE,HEXAGON,HEXAGON_OUTLINE,HISTORY,HOLOLENS,HOME,HOME_MODERN,HOME_VARIANT,HOPS,HOSPITAL,HOSPITAL_BUILDING,HOSPITAL_MARKER,HOTEL,HOUZZ,HOUZZ_BOX,HUMAN,HUMAN_CHILD,HUMAN_MALE_FEMALE,IMAGE,IMAGE_ALBUM,IMAGE_AREA,IMAGE_AREA_CLOSE,IMAGE_BROKEN,IMAGE_BROKEN_VARIANT,IMAGE_FILTER,IMAGE_FILTER_BLACK_WHITE,IMAGE_FILTER_CENTER_FOCUS,IMAGE_FILTER_CENTER_FOCUS_WEAK,IMAGE_FILTER_DRAMA,IMAGE_FILTER_FRAMES,IMAGE_FILTER_HDR,IMAGE_FILTER_NONE,IMAGE_FILTER_TILT_SHIFT,IMAGE_FILTER_VINTAGE,IMAGE_MULTIPLE,IMPORT_ICON,INBOX_ARROW_DOWN,INFORMATION,INFORMATION_OUTLINE,INSTAGRAM,INSTAPAPER,INTERNET_EXPLORER,INVERT_COLORS,JEEPNEY,JIRA,JSFIDDLE,KEG,KEY,KEY_CHANGE,KEY_MINUS,KEY_PLUS,KEY_REMOVE,KEY_VARIANT,KEYBOARD,KEYBOARD_BACKSPACE,KEYBOARD_CAPS,KEYBOARD_CLOSE,KEYBOARD_OFF,KEYBOARD_RETURN,KEYBOARD_TAB,KEYBOARD_VARIANT,KODI,LABEL,LABEL_OUTLINE,LAN,LAN_CONNECT,LAN_DISCONNECT,LAN_PENDING,LANGUAGE_CSHARP,LANGUAGE_CSS3,LANGUAGE_HTML5,LANGUAGE_JAVASCRIPT,LANGUAGE_PHP,LANGUAGE_PYTHON,LANGUAGE_PYTHON_TEXT,LAPTOP,LAPTOP_CHROMEBOOK,LAPTOP_MAC,LAPTOP_WINDOWS,LASTFM,LAUNCH,LAYERS,LAYERS_OFF,LEAF,LED_OFF,LED_ON,LED_OUTLINE,LED_VARIANT_OFF,LED_VARIANT_ON,LED_VARIANT_OUTLINE,LIBRARY,LIBRARY_BOOKS,LIBRARY_MUSIC,LIBRARY_PLUS,LIGHTBULB,LIGHTBULB_OUTLINE,LINK,LINK_OFF,LINK_VARIANT,LINK_VARIANT_OFF,LINKEDIN,LINKEDIN_BOX,LINUX,LOCK,LOCK_OPEN,LOCK_OPEN_OUTLINE,LOCK_OUTLINE,LOGIN,LOGOUT,LOOKS,LOUPE,LUMX,MAGNET,MAGNET_ON,MAGNIFY,MAGNIFY_MINUS,MAGNIFY_PLUS,MAIL_RU,MAP,MAP_MARKER,MAP_MARKER_CIRCLE,MAP_MARKER_MULTIPLE,MAP_MARKER_OFF,MAP_MARKER_RADIUS,MARGIN,MARKDOWN,MARKER_CHECK,GLASS_COCKTAIL,MATERIAL_UI,MATH_COMPASS,MAXCDN,MEDIUM,MEMORY,MENU,MENU_DOWN,MENU_LEFT,MENU_RIGHT,MENU_UP,MESSAGE,MESSAGE_ALERT,MESSAGE_DRAW,MESSAGE_IMAGE,MESSAGE_OUTLINE,MESSAGE_PROCESSING,MESSAGE_REPLY,MESSAGE_REPLY_TEXT,MESSAGE_TEXT,MESSAGE_TEXT_OUTLINE,MESSAGE_VIDEO,MICROPHONE,MICROPHONE_OFF,MICROPHONE_OUTLINE,MICROPHONE_SETTINGS,MICROPHONE_VARIANT,MICROPHONE_VARIANT_OFF,MICROSOFT,MINECRAFT,MINUS,MINUS_BOX,MINUS_CIRCLE,MINUS_CIRCLE_OUTLINE,MINUS_NETWORK,MONITOR,MONITOR_MULTIPLE,MORE,MOTORBIKE,MOUSE,MOUSE_OFF,MOUSE_VARIANT,MOUSE_VARIANT_OFF,MOVIE,MULTIPLICATION,MULTIPLICATION_BOX,MUSIC_BOX,MUSIC_BOX_OUTLINE,MUSIC_CIRCLE,MUSIC_NOTE,MUSIC_NOTE_EIGHTH,MUSIC_NOTE_HALF,MUSIC_NOTE_OFF,MUSIC_NOTE_QUARTER,MUSIC_NOTE_SIXTEENTH,MUSIC_NOTE_WHOLE,NATURE,NATURE_PEOPLE,NAVIGATION,NEEDLE,SMOKE_DETECTOR,THERMOSTAT,NEW_BOX,NEWSPAPER,NFC,NFC_TAP,NFC_VARIANT,NODEJS,NOTE,NOTE_OUTLINE,NOTE_PLUS,NOTE_PLUS_OUTLINE,NOTE_TEXT,NOTIFICATION_CLEAR_ALL,NUMERIC,NUMERIC_0_BOX,NUMERIC_0_BOX_MULTIPLE_OUTLINE,NUMERIC_0_BOX_OUTLINE,NUMERIC_1_BOX,NUMERIC_1_BOX_MULTIPLE_OUTLINE,NUMERIC_1_BOX_OUTLINE,NUMERIC_2_BOX,NUMERIC_2_BOX_MULTIPLE_OUTLINE,NUMERIC_2_BOX_OUTLINE,NUMERIC_3_BOX,NUMERIC_3_BOX_MULTIPLE_OUTLINE,NUMERIC_3_BOX_OUTLINE,NUMERIC_4_BOX,NUMERIC_4_BOX_MULTIPLE_OUTLINE,NUMERIC_4_BOX_OUTLINE,NUMERIC_5_BOX,NUMERIC_5_BOX_MULTIPLE_OUTLINE,NUMERIC_5_BOX_OUTLINE,NUMERIC_6_BOX,NUMERIC_6_BOX_MULTIPLE_OUTLINE,NUMERIC_6_BOX_OUTLINE,NUMERIC_7_BOX,NUMERIC_7_BOX_MULTIPLE_OUTLINE,NUMERIC_7_BOX_OUTLINE,NUMERIC_8_BOX,NUMERIC_8_BOX_MULTIPLE_OUTLINE,NUMERIC_8_BOX_OUTLINE,NUMERIC_9_BOX,NUMERIC_9_BOX_MULTIPLE_OUTLINE,NUMERIC_9_BOX_OUTLINE,NUMERIC_9_PLUS_BOX,NUMERIC_9_PLUS_BOX_MULTIPLE_OUTLINE,NUMERIC_9_PLUS_BOX_OUTLINE,NUTRITION,OCTAGON,OCTAGON_OUTLINE,ODNOKLASSNIKI,OFFICE,OIL,OIL_TEMPERATURE,OMEGA,ONEDRIVE,OPEN_IN_APP,OPEN_IN_NEW,OPENID,OPERA,ORNAMENT,ORNAMENT_VARIANT,INBOX_ARROW_UP,OWL,PACKAGE_ICON,PACKAGE_DOWN,PACKAGE_UP,PACKAGE_VARIANT,PACKAGE_VARIANT_CLOSED,PALETTE,PALETTE_ADVANCED,PANDA,PANDORA,PANORAMA,PANORAMA_FISHEYE,PANORAMA_HORIZONTAL,PANORAMA_VERTICAL,PANORAMA_WIDE_ANGLE,PAPER_CUT_VERTICAL,PAPERCLIP,PARKING,PAUSE,PAUSE_CIRCLE,PAUSE_CIRCLE_OUTLINE,PAUSE_OCTAGON,PAUSE_OCTAGON_OUTLINE,PAW,PEN,PENCIL,PENCIL_BOX,PENCIL_BOX_OUTLINE,PENCIL_LOCK,PENCIL_OFF,PERCENT,PHARMACY,PHONE,PHONE_BLUETOOTH,PHONE_FORWARD,PHONE_HANGUP,PHONE_IN_TALK,PHONE_INCOMING,PHONE_LOCKED,PHONE_LOG,PHONE_MISSED,PHONE_OUTGOING,PHONE_PAUSED,PHONE_SETTINGS,PHONE_VOIP,PI,PI_BOX,PIG,PILL,PIN,PIN_OFF,PINE_TREE,PINE_TREE_BOX,PINTEREST,PINTEREST_BOX,PIZZA,PLAY,PLAY_BOX_OUTLINE,PLAY_CIRCLE,PLAY_CIRCLE_OUTLINE,PLAY_PAUSE,PLAY_PROTECTED_CONTENT,PLAYLIST_MINUS,PLAYLIST_PLAY,PLAYLIST_PLUS,PLAYLIST_REMOVE,PLAYSTATION,PLUS,PLUS_BOX,PLUS_CIRCLE,PLUS_CIRCLE_MULTIPLE_OUTLINE,PLUS_CIRCLE_OUTLINE,PLUS_NETWORK,PLUS_ONE,POCKET,POKEBALL,POLAROID,POLL,POLL_BOX,POLYMER,POPCORN,POUND,POUND_BOX,POWER,POWER_SETTINGS,POWER_SOCKET,PRESENTATION,PRESENTATION_PLAY,PRINTER,PRINTER_3D,PRINTER_ALERT,PROFESSIONAL_HEXAGON,PROJECTOR,PROJECTOR_SCREEN,PULSE,PUZZLE,QRCODE,QRCODE_SCAN,QUADCOPTER,QUALITY_HIGH,QUICKTIME,RADAR,RADIATOR,RADIO,RADIO_HANDHELD,RADIO_TOWER,RADIOACTIVE,RADIOBOX_BLANK,RADIOBOX_MARKED,RASPBERRYPI,RAY_END,RAY_END_ARROW,RAY_START,RAY_START_ARROW,RAY_START_END,RAY_VERTEX,LASTPASS,READ,YOUTUBE_TV,RECEIPT,RECORD,RECORD_REC,RECYCLE,REDDIT,REDO,REDO_VARIANT,REFRESH,REGEX,RELATIVE_SCALE,RELOAD,REMOTE,RENAME_BOX,REPEAT,REPEAT_OFF,REPEAT_ONCE,REPLAY,REPLY,REPLY_ALL,REPRODUCTION,RESIZE_BOTTOM_RIGHT,RESPONSIVE,REWIND,RIBBON,ROAD,ROAD_VARIANT,ROCKET,ROTATE_3D,ROTATE_LEFT,ROTATE_LEFT_VARIANT,ROTATE_RIGHT,ROTATE_RIGHT_VARIANT,ROUTER_WIRELESS,ROUTES,RSS,RSS_BOX,RULER,RUN_FAST,SALE,SATELLITE,SATELLITE_VARIANT,SCALE,SCALE_BATHROOM,SCHOOL,SCREEN_ROTATION,SCREEN_ROTATION_LOCK,SCREWDRIVER,SCRIPT,SD,SEAL,SEAT_FLAT,SEAT_FLAT_ANGLED,SEAT_INDIVIDUAL_SUITE,SEAT_LEGROOM_EXTRA,SEAT_LEGROOM_NORMAL,SEAT_LEGROOM_REDUCED,SEAT_RECLINE_EXTRA,SEAT_RECLINE_NORMAL,SECURITY,SECURITY_NETWORK,SELECT,SELECT_ALL,SELECT_INVERSE,SELECT_OFF,SELECTION,SEND,SERVER,SERVER_MINUS,SERVER_NETWORK,SERVER_NETWORK_OFF,SERVER_OFF,SERVER_PLUS,SERVER_REMOVE,SERVER_SECURITY,SETTINGS,SETTINGS_BOX,SHAPE_PLUS,SHARE,SHARE_VARIANT,SHIELD,SHIELD_OUTLINE,SHOPPING,SHOPPING_MUSIC,SHREDDER,SHUFFLE,SHUFFLE_DISABLED,SHUFFLE_VARIANT,SIGMA,SIGN_CAUTION,SIGNAL,SILVERWARE,SILVERWARE_FORK,SILVERWARE_SPOON,SILVERWARE_VARIANT,SIM,SIM_ALERT,SIM_OFF,SITEMAP,SKIP_BACKWARD,SKIP_FORWARD,SKIP_NEXT,SKIP_PREVIOUS,SKYPE,SKYPE_BUSINESS,SLACK,SLEEP,SLEEP_OFF,SMOKING,SMOKING_OFF,SNAPCHAT,SNOWMAN,SOCCER,SOFA,SORT,SORT_ALPHABETICAL,SORT_ASCENDING,SORT_DESCENDING,SORT_NUMERIC,SORT_VARIANT,SOUNDCLOUD,SOURCE_FORK,SOURCE_PULL,SPEAKER,SPEAKER_OFF,SPEEDOMETER,SPELLCHECK,SPOTIFY,SPOTLIGHT,SPOTLIGHT_BEAM,SQUARE_INC,SQUARE_INC_CASH,STACK_OVERFLOW,STAIRS,STAR,STAR_CIRCLE,STAR_HALF,STAR_OFF,STAR_OUTLINE,STEAM,STEERING,STEP_BACKWARD,STEP_BACKWARD_2,STEP_FORWARD,STEP_FORWARD_2,STETHOSCOPE,STOCKING,STOP,STORE,STORE_24_HOUR,STOVE,SUBWAY_VARIANT,SUNGLASSES,SWAP_HORIZONTAL,SWAP_VERTICAL,SWIM,SWITCH_ICON,SWORD,SYNC,SYNC_ALERT,SYNC_OFF,TAB,TAB_UNSELECTED,TABLE,TABLE_COLUMN_PLUS_AFTER,TABLE_COLUMN_PLUS_BEFORE,TABLE_COLUMN_REMOVE,TABLE_COLUMN_WIDTH,TABLE_EDIT,TABLE_LARGE,TABLE_ROW_HEIGHT,TABLE_ROW_PLUS_AFTER,TABLE_ROW_PLUS_BEFORE,TABLE_ROW_REMOVE,TABLET,TABLET_ANDROID,TABLET_IPAD,TAG,TAG_FACES,TAG_MULTIPLE,TAG_OUTLINE,TAG_TEXT_OUTLINE,TARGET,TAXI,TEAMVIEWER,TELEGRAM,TELEVISION,TELEVISION_GUIDE,TEMPERATURE_CELSIUS,TEMPERATURE_FAHRENHEIT,TEMPERATURE_KELVIN,TENNIS,TENT,TERRAIN,TEXT_TO_SPEECH,TEXT_TO_SPEECH_OFF,TEXTURE,THEATER,THEME_LIGHT_DARK,THERMOMETER,THERMOMETER_LINES,THUMB_DOWN,THUMB_DOWN_OUTLINE,THUMB_UP,THUMB_UP_OUTLINE,THUMBS_UP_DOWN,TICKET,TICKET_ACCOUNT,TICKET_CONFIRMATION,TIE,TIMELAPSE,TIMER,TIMER_10,TIMER_3,TIMER_OFF,TIMER_SAND,TIMETABLE,TOGGLE_SWITCH,TOGGLE_SWITCH_OFF,TOOLTIP,TOOLTIP_EDIT,TOOLTIP_IMAGE,TOOLTIP_OUTLINE,TOOLTIP_OUTLINE_PLUS,TOOLTIP_TEXT,TOOTH_OUTLINE,TOR,TRAFFIC_LIGHT,TRAIN,TRAM,TRANSCRIBE,TRANSCRIBE_CLOSE,TRANSFER,TREE,TRELLO,TRENDING_DOWN,TRENDING_NEUTRAL,TRENDING_UP,TRIANGLE,TRIANGLE_OUTLINE,TROPHY,TROPHY_AWARD,TROPHY_OUTLINE,TROPHY_VARIANT,TROPHY_VARIANT_OUTLINE,TRUCK,TRUCK_DELIVERY,TSHIRT_CREW,TSHIRT_V,TUMBLR,TUMBLR_REBLOG,TWITCH,TWITTER,TWITTER_BOX,TWITTER_CIRCLE,TWITTER_RETWEET,UBUNTU,UMBRACO,UMBRELLA,UMBRELLA_OUTLINE,UNDO,UNDO_VARIANT,UNFOLD_LESS_HORIZONTAL,UNFOLD_MORE_HORIZONTAL,UNGROUP,UNTAPPD,UPLOAD,USB,VECTOR_ARRANGE_ABOVE,VECTOR_ARRANGE_BELOW,VECTOR_CIRCLE,VECTOR_CIRCLE_VARIANT,VECTOR_COMBINE,VECTOR_CURVE,VECTOR_DIFFERENCE,VECTOR_DIFFERENCE_AB,VECTOR_DIFFERENCE_BA,VECTOR_INTERSECTION,VECTOR_LINE,VECTOR_POINT,VECTOR_POLYGON,VECTOR_POLYLINE,VECTOR_SELECTION,VECTOR_TRIANGLE,VECTOR_UNION,VERIFIED,VIBRATE,VIDEO,VIDEO_OFF,VIDEO_SWITCH,VIEW_AGENDA,VIEW_ARRAY,VIEW_CAROUSEL,VIEW_COLUMN,VIEW_DASHBOARD,VIEW_DAY,VIEW_GRID,VIEW_HEADLINE,VIEW_LIST,VIEW_MODULE,VIEW_QUILT,VIEW_STREAM,VIEW_WEEK,VIMEO,VENMO,VK,VK_BOX,VK_CIRCLE,VLC,VOICEMAIL,VOLUME_HIGH,VOLUME_LOW,VOLUME_MEDIUM,VOLUME_OFF,VPN,WALK,WALLET,WALLET_GIFTCARD,WALLET_MEMBERSHIP,WALLET_TRAVEL,WAN,WATCH,WATCH_EXPORT,WATCH_IMPORT,WATER,WATER_OFF,WATER_PERCENT,WATER_PUMP,WEATHER_CLOUDY,WEATHER_FOG,WEATHER_HAIL,WEATHER_LIGHTNING,WEATHER_NIGHT,WEATHER_PARTLYCLOUDY,WEATHER_POURING,WEATHER_RAINY,WEATHER_SNOWY,WEATHER_SUNNY,WEATHER_SUNSET,WEATHER_SUNSET_DOWN,WEATHER_SUNSET_UP,WEATHER_WINDY,WEATHER_WINDY_VARIANT,WEB,WEBCAM,WEIGHT,WEIGHT_KILOGRAM,WHATSAPP,WHEELCHAIR_ACCESSIBILITY,WHITE_BALANCE_AUTO,WHITE_BALANCE_INCANDESCENT,WHITE_BALANCE_IRIDESCENT,WHITE_BALANCE_SUNNY,WIFI,WIFI_OFF,WII,WIKIPEDIA,WINDOW_CLOSE,WINDOW_CLOSED,WINDOW_MAXIMIZE,WINDOW_MINIMIZE,WINDOW_OPEN,WINDOW_RESTORE,WINDOWS,WORDPRESS,WORKER,WRAP,WRENCH,WUNDERLIST,XBOX,XBOX_CONTROLLER,XBOX_CONTROLLER_OFF,XDA,XING,XING_BOX,XING_CIRCLE,XML,YEAST,YELP,YOUTUBE,ZIP_BOX,SURROUND_SOUND,VECTOR_RECTANGLE,PLAYLIST_CHECK,FORMAT_LINE_STYLE,FORMAT_LINE_WEIGHT,TRANSLATE,VOICE,OPACITY,NEAR_ME,CLOCK_ALERT,HUMAN_PREGNANT,STICKER,SCALE_BALANCE,ACCOUNT_CARD_DETAILS,ACCOUNT_MULTIPLE_MINUS,AIRPLANE_LANDING,AIRPLANE_TAKEOFF,ALERT_CIRCLE_OUTLINE,ALTIMETER,ANIMATION,BOOK_MINUS,BOOK_OPEN_PAGE_VARIANT,BOOK_PLUS,BOOMBOX,BULLSEYE,COMMENT_REMOVE,CAMERA_OFF,CHECK_CIRCLE,CHECK_CIRCLE_OUTLINE,CANDLE,CHART_BUBBLE,CREDIT_CARD_OFF,CUP_OFF,COPYRIGHT,CURSOR_TEXT,DELETE_FOREVER,DELETE_SWEEP,DICE_D20,DICE_D4,DICE_D6,DICE_D8,DISK,EMAIL_OPEN_OUTLINE,EMAIL_VARIANT,EV_STATION,FOOD_FORK_DRINK,FOOD_OFF,FORMAT_TITLE,GOOGLE_MAPS,HEART_PULSE,HIGHWAY,HOME_MAP_MARKER,INCOGNITO,KETTLE,LOCK_PLUS,LOGIN_VARIANT,LOGOUT_VARIANT,MUSIC_NOTE_BLUETOOTH,MUSIC_NOTE_BLUETOOTH_OFF,PAGE_FIRST,PAGE_LAST,PHONE_CLASSIC,PRIORITY_HIGH,PRIORITY_LOW,QQCHAT,POOL,ROUNDED_CORNER,ROWING,SAXOPHONE,SIGNAL_VARIANT,STACK_EXCHANGE,SUBDIRECTORY_ARROW_LEFT,SUBDIRECTORY_ARROW_RIGHT,TEXTBOX,VIOLIN,VISUALSTUDIO,WECHAT,WATERMARK,FILE_HIDDEN,APPLICATION,ARROW_COLLAPSE,ARROW_EXPAND,BOWL,BRIDGE,BUFFER,CHIP,CONTENT_SAVE_SETTINGS,DIALPAD,DICTIONARY,FORMAT_HORIZONTAL_ALIGN_CENTER,FORMAT_HORIZONTAL_ALIGN_LEFT,FORMAT_HORIZONTAL_ALIGN_RIGHT,FORMAT_VERTICAL_ALIGN_BOTTOM,FORMAT_VERTICAL_ALIGN_CENTER,FORMAT_VERTICAL_ALIGN_TOP,HACKERNEWS,HELP_CIRCLE_OUTLINE,JSON,LAMBDA,MATRIX,METEOR,MIXCLOUD,SIGMA_LOWER,SOURCE_BRANCH,SOURCE_MERGE,TUNE,WEBHOOK,ACCOUNT_SETTINGS,ACCOUNT_SETTINGS_VARIANT,APPLE_KEYBOARD_CAPS,APPLE_KEYBOARD_COMMAND,APPLE_KEYBOARD_CONTROL,APPLE_KEYBOARD_OPTION,APPLE_KEYBOARD_SHIFT,BOX_SHADOW,CARDS,CARDS_OUTLINE,CARDS_PLAYING_OUTLINE,CHECKBOX_MULTIPLE_BLANK_CIRCLE,CHECKBOX_MULTIPLE_BLANK_CIRCLE_OUTLINE,CHECKBOX_MULTIPLE_MARKED_CIRCLE,CHECKBOX_MULTIPLE_MARKED_CIRCLE_OUTLINE,CLOUD_SYNC,COLLAGE,DIRECTIONS_FORK,ERASER_VARIANT,FACE,FACE_PROFILE,FILE_TREE,FORMAT_ANNOTATION_PLUS,GAS_CYLINDER,GREASE_PENCIL,HUMAN_FEMALE,HUMAN_GREETING,HUMAN_HANDSDOWN,HUMAN_HANDSUP,HUMAN_MALE,INFORMATION_VARIANT,LEAD_PENCIL,MAP_MARKER_MINUS,MAP_MARKER_PLUS,MARKER,MESSAGE_PLUS,MICROSCOPE,MOVE_RESIZE,MOVE_RESIZE_VARIANT,PAW_OFF,PHONE_MINUS,PHONE_PLUS,POT,POT_MIX,SERIAL_PORT,SHAPE_CIRCLE_PLUS,SHAPE_POLYGON_PLUS,SHAPE_RECTANGLE_PLUS,SHAPE_SQUARE_PLUS,SKIP_NEXT_CIRCLE,SKIP_NEXT_CIRCLE_OUTLINE,SKIP_PREVIOUS_CIRCLE,SKIP_PREVIOUS_CIRCLE_OUTLINE,SPRAY,STOP_CIRCLE,STOP_CIRCLE_OUTLINE,TEST_TUBE,TEXT_SHADOW,TUNE_VERTICAL,CART_OFF,CHART_GANTT,CHART_SCATTERPLOT_HEXBIN,CHART_TIMELINE,DISCORD,FILE_RESTORE,LANGUAGE_C,LANGUAGE_CPP,XAML,BANDCAMP,CREDIT_CARD_PLUS,ITUNES,BOW_TIE,CALENDAR_RANGE,CURRENCY_USD_OFF,FLASH_RED_EYE,OAR,PIANO,WEATHER_LIGHTNING_RAINY,WEATHER_SNOWY_RAINY,YIN_YANG,TOWER_BEACH,TOWER_FIRE,DELETE_CIRCLE,DNA,HAMBURGER,GONDOLA,INBOX,REORDER_HORIZONTAL,REORDER_VERTICAL,SECURITY_HOME,TAG_HEART,SKULL,SOLID,ALARM_SNOOZE,BABY_BUGGY,BEAKER,BOMB,CALENDAR_QUESTION,CAMERA_BURST,CODE_TAGS_CHECK,COINS,CROP_ROTATE,DEVELOPER_BOARD,DO_NOT_DISTURB,DO_NOT_DISTURB_OFF,DOUBAN,EMOTICON_DEAD,EMOTICON_EXCITED,FOLDER_STAR,FORMAT_COLOR_TEXT,FORMAT_SECTION,GRADIENT,HOME_OUTLINE,MESSAGE_BULLETED,MESSAGE_BULLETED_OFF,NUKE,POWER_PLUG,POWER_PLUG_OFF,PUBLISH,RESTORE,ROBOT,FORMAT_ROTATE_90,SCANNER,SUBWAY,TIMER_SAND_EMPTY,TRANSIT_TRANSFER,UNITY,UPDATE,WATCH_VIBRATE,ANGULAR,DOLBY,EMBY,LAMP,MENU_DOWN_OUTLINE,MENU_UP_OUTLINE,NOTE_MULTIPLE,NOTE_MULTIPLE_OUTLINE,PLEX,PLANE_SHIELD,ACCOUNT_EDIT,ALERT_DECAGRAM,ALL_INCLUSIVE,ANGULARJS,ARROW_DOWN_BOX,ARROW_LEFT_BOX,ARROW_RIGHT_BOX,ARROW_UP_BOX,ASTERISK,BOMB_OFF,BOOTSTRAP,CARDS_VARIANT,CLIPBOARD_FLOW,CLOSE_OUTLINE,COFFEE_OUTLINE,CONTACTS,DELETE_EMPTY,EARTH_BOX,EARTH_BOX_OFF,EMAIL_ALERT,EYE_OUTLINE,EYE_OFF_OUTLINE,FAST_FORWARD_OUTLINE,FEATHER,FIND_REPLACE,FLASH_OUTLINE,FORMAT_FONT,FORMAT_PAGE_BREAK,FORMAT_PILCROW,GARAGE,GARAGE_OPEN,GITHUB_FACE,GOOGLE_KEEP,GOOGLE_PHOTOS,HEART_HALF_FULL,HEART_HALF,HEART_HALF_OUTLINE,HEXAGON_MULTIPLE,HOOK,HOOK_OFF,INFINITY,LANGUAGE_SWIFT,LANGUAGE_TYPESCRIPT,LAPTOP_OFF,LIGHTBULB_ON,LIGHTBULB_ON_OUTLINE,LOCK_PATTERN,LOOP,MAGNIFY_MINUS_OUTLINE,MAGNIFY_PLUS_OUTLINE,MAILBOX,MEDICAL_BAG,MESSAGE_SETTINGS,MESSAGE_SETTINGS_VARIANT,MINUS_BOX_OUTLINE,NETWORK,DOWNLOAD_NETWORK,HELP_NETWORK,UPLOAD_NETWORK,NPM,NUT,OCTAGRAM,PAGE_LAYOUT_BODY,PAGE_LAYOUT_FOOTER,PAGE_LAYOUT_HEADER,PAGE_LAYOUT_SIDEBAR_LEFT,PAGE_LAYOUT_SIDEBAR_RIGHT,PENCIL_CIRCLE,PENTAGON,PENTAGON_OUTLINE,PILLAR,PISTOL,PLUS_BOX_OUTLINE,PLUS_OUTLINE,PRESCRIPTION,PRINTER_SETTINGS,REACT,RESTART,REWIND_OUTLINE,RHOMBUS,RHOMBUS_OUTLINE,ROBOT_VACUUM,RUN,SEARCH_WEB,SHOVEL,SHOVEL_OFF,SIGNAL_2G,SIGNAL_3G,SIGNAL_4G,SIGNAL_HSPA,SIGNAL_HSPA_PLUS,SNOWFLAKE,SOURCE_COMMIT,SOURCE_COMMIT_END,SOURCE_COMMIT_END_LOCAL,SOURCE_COMMIT_LOCAL,SOURCE_COMMIT_NEXT_LOCAL,SOURCE_COMMIT_START,SOURCE_COMMIT_START_NEXT_LOCAL,SPEAKER_WIRELESS,STADIUM,SVG,TAG_PLUS,TAG_REMOVE,TICKET_PERCENT,TILDE,TREASURE_CHEST,TRUCK_TRAILER,VIEW_PARALLEL,VIEW_SEQUENTIAL,WASHING_MACHINE,WEBPACK,WIDGETS,WIIU,ARROW_DOWN_BOLD,ARROW_DOWN_BOLD_BOX,ARROW_DOWN_BOLD_BOX_OUTLINE,ARROW_LEFT_BOLD,ARROW_LEFT_BOLD_BOX,ARROW_LEFT_BOLD_BOX_OUTLINE,ARROW_RIGHT_BOLD,ARROW_RIGHT_BOLD_BOX,ARROW_RIGHT_BOLD_BOX_OUTLINE,ARROW_UP_BOLD,ARROW_UP_BOLD_BOX,ARROW_UP_BOLD_BOX_OUTLINE,CANCEL,FILE_ACCOUNT,GESTURE_DOUBLE_TAP,GESTURE_SWIPE_DOWN,GESTURE_SWIPE_LEFT,GESTURE_SWIPE_RIGHT,GESTURE_SWIPE_UP,GESTURE_TAP,GESTURE_TWO_DOUBLE_TAP,GESTURE_TWO_TAP,HUMBLE_BUNDLE,KICKSTARTER,NETFLIX,ONENOTE,PERISCOPE,UBER,VECTOR_RADIUS,XBOX_CONTROLLER_BATTERY_ALERT,XBOX_CONTROLLER_BATTERY_EMPTY,XBOX_CONTROLLER_BATTERY_FULL,XBOX_CONTROLLER_BATTERY_LOW,XBOX_CONTROLLER_BATTERY_MEDIUM,XBOX_CONTROLLER_BATTERY_UNKNOWN,CLIPBOARD_PLUS,FILE_PLUS,FORMAT_ALIGN_BOTTOM,FORMAT_ALIGN_MIDDLE,FORMAT_ALIGN_TOP,FORMAT_LIST_CHECKS,FORMAT_QUOTE_OPEN,GRID_LARGE,HEART_OFF,MUSIC,MUSIC_OFF,TAB_PLUS,VOLUME_PLUS,VOLUME_MINUS,VOLUME_MUTE,UNFOLD_LESS_VERTICAL,UNFOLD_MORE_VERTICAL,TACO,SQUARE_OUTLINE,SQUARE,CIRCLE,CIRCLE_OUTLINE,ALERT_OCTAGRAM,ATOM,CEILING_LIGHT,CHART_BAR_STACKED,CHART_LINE_STACKED,DECAGRAM,DECAGRAM_OUTLINE,DICE_MULTIPLE,DICE_D10,FOLDER_OPEN,GUITAR_ACOUSTIC,LOADING,LOCK_RESET,NINJA,OCTAGRAM_OUTLINE,PENCIL_CIRCLE_OUTLINE,SELECTION_OFF,SET_ALL,SET_CENTER,SET_CENTER_RIGHT,SET_LEFT,SET_LEFT_CENTER,SET_LEFT_RIGHT,SET_NONE,SET_RIGHT,SHIELD_HALF_FULL,SIGN_DIRECTION,SIGN_TEXT,SIGNAL_OFF,SQUARE_ROOT,STICKER_EMOJI,SUMMIT,SWORD_CROSS,TRUCK_FAST,YAMMER,CAST_OFF,HELP_BOX,TIMER_SAND_FULL,WAVES,ALARM_BELL,ALARM_LIGHT,ANDROID_HEAD,APPROVAL,ARROW_COLLAPSE_DOWN,ARROW_COLLAPSE_LEFT,ARROW_COLLAPSE_RIGHT,ARROW_COLLAPSE_UP,ARROW_EXPAND_DOWN,ARROW_EXPAND_LEFT,ARROW_EXPAND_RIGHT,ARROW_EXPAND_UP,BOOK_SECURE,BOOK_UNSECURE,BUS_ARTICULATED_END,BUS_ARTICULATED_FRONT,BUS_DOUBLE_DECKER,BUS_SCHOOL,BUS_SIDE,CAMERA_GOPRO,CAMERA_METERING_CENTER,CAMERA_METERING_MATRIX,CAMERA_METERING_PARTIAL,CAMERA_METERING_SPOT,CANNABIS,CAR_CONVERTIBLE,CAR_ESTATE,CAR_HATCHBACK,CAR_PICKUP,CAR_SIDE,CAR_SPORTS,CARAVAN,CCTV,CHART_DONUT,CHART_DONUT_VARIANT,CHART_LINE_VARIANT,CHILI_HOT,CHILI_MEDIUM,CHILI_MILD,CLOUD_BRACES,CLOUD_TAGS,CONSOLE_LINE,CORN,CURRENCY_CHF,CURRENCY_CNY,CURRENCY_ETH,CURRENCY_JPY,CURRENCY_KRW,CURRENCY_SIGN,CURRENCY_TWD,DESKTOP_CLASSIC,DIP_SWITCH,DONKEY,DOTS_HORIZONTAL_CIRCLE,DOTS_VERTICAL_CIRCLE,EAR_HEARING,ELEPHANT,EVENTBRITE,FOOD_CROISSANT,FORKLIFT,FUEL,GESTURE,GOOGLE_ANALYTICS,GOOGLE_ASSISTANT,HEADPHONES_OFF,HIGH_DEFINITION,HOME_ASSISTANT,HOME_AUTOMATION,HOME_CIRCLE,LANGUAGE_GO,LANGUAGE_R,LAVA_LAMP,LED_STRIP,LOCKER,LOCKER_MULTIPLE,MAP_MARKER_OUTLINE,METRONOME,METRONOME_TICK,MICRO_SD,MIXER,MOVIE_ROLL,MUSHROOM,MUSHROOM_OUTLINE,NINTENDO_SWITCH,NULL_ICON,PASSPORT,PERIODIC_TABLE_CO2,PIPE,PIPE_DISCONNECTED,POWER_SOCKET_EU,POWER_SOCKET_UK,POWER_SOCKET_US,RICE,RING,SASS,SEND_SECURE,SOY_SAUCE,STANDARD_DEFINITION,SURROUND_SOUND_2_0,SURROUND_SOUND_3_1,SURROUND_SOUND_5_1,SURROUND_SOUND_7_1,TELEVISION_CLASSIC,TEXTBOX_PASSWORD,THOUGHT_BUBBLE,THOUGHT_BUBBLE_OUTLINE,TRACKPAD,ULTRA_HIGH_DEFINITION,VAN_PASSENGER,VAN_UTILITY,VANISH,VIDEO_3D,WALL,XMPP,ACCOUNT_MULTIPLE_PLUS_OUTLINE,ACCOUNT_PLUS_OUTLINE,GOOGLE_ALLO,ARTIST,ATLASSIAN,AZURE,BASKETBALL,BATTERY_CHARGING_WIRELESS,BATTERY_CHARGING_WIRELESS_10,BATTERY_CHARGING_WIRELESS_20,BATTERY_CHARGING_WIRELESS_30,BATTERY_CHARGING_WIRELESS_40,BATTERY_CHARGING_WIRELESS_50,BATTERY_CHARGING_WIRELESS_60,BATTERY_CHARGING_WIRELESS_70,BATTERY_CHARGING_WIRELESS_80,BATTERY_CHARGING_WIRELESS_90,BATTERY_CHARGING_WIRELESS_ALERT,BATTERY_CHARGING_WIRELESS_OUTLINE,BITCOIN,BRIEFCASE_OUTLINE,CELLPHONE_WIRELESS,CLOVER,COMMENT_QUESTION,CONTENT_SAVE_OUTLINE,DELETE_RESTORE,DOOR,DOOR_CLOSED,DOOR_OPEN,FAN_OFF,FILE_PERCENT,FINANCE,FLASH_CIRCLE,FLOOR_PLAN,FORUM_OUTLINE,GOLF,GOOGLE_HOME,GUY_FAWKES_MASK,HOME_ACCOUNT,HOME_HEART,HOT_TUB,HULU,ICE_CREAM,IMAGE_OFF,KARATE,LADYBUG,NOTEBOOK,PHONE_RETURN,POKER_CHIP,SHAPE,SHAPE_OUTLINE,SHIP_WHEEL,SOCCER_FIELD,TABLE_COLUMN,TABLE_OF_CONTENTS,TABLE_ROW,TABLE_SETTINGS,TELEVISION_BOX,TELEVISION_CLASSIC_OFF,TELEVISION_OFF,TOWING,UPLOAD_MULTIPLE,VIDEO_4K_BOX,VIDEO_INPUT_ANTENNA,VIDEO_INPUT_COMPONENT,VIDEO_INPUT_HDMI,VIDEO_INPUT_SVIDEO,VIEW_DASHBOARD_VARIANT,VUEJS,XAMARIN,XAMARIN_OUTLINE,YOUTUBE_CREATOR_STUDIO,YOUTUBE_GAMING,ACCOUNT_GROUP,ACCUSOFT,AIRPORT,ARROW_COLLAPSE_HORIZONTAL,ARROW_COLLAPSE_VERTICAL,ARROW_EXPAND_HORIZONTAL,ARROW_EXPAND_VERTICAL,AUGMENTED_REALITY,BADMINTON,BASEBALL,BASEBALL_BAT,BOTTLE_WINE,CHECK_OUTLINE,CHECKBOX_INTERMEDIATE,CHESS_KING,CHESS_KNIGHT,CHESS_PAWN,CHESS_QUEEN,CHESS_ROOK,CHESS_BISHOP,CLIPBOARD_PULSE,CLIPBOARD_PULSE_OUTLINE,COMMENT_MULTIPLE,COMMENT_TEXT_MULTIPLE,COMMENT_TEXT_MULTIPLE_OUTLINE,CRANE,CURLING,CURRENCY_BDT,CURRENCY_KZT,DATABASE_SEARCH,DICE_D12,DOCKER,DOORBELL_VIDEO,ETHEREUM,EYE_PLUS,EYE_PLUS_OUTLINE,EYE_SETTINGS,EYE_SETTINGS_OUTLINE,FILE_QUESTION,FOLDER_NETWORK,FUNCTION_VARIANT,GARAGE_ALERT,GAUGE_EMPTY,GAUGE_FULL,GAUGE_LOW,GLASS_WINE,GRAPHQL,HIGH_DEFINITION_BOX,HOCKEY_PUCK,HOCKEY_STICKS,HOME_ALERT,IMAGE_PLUS,JQUERY,LIFEBUOY,MIXED_REALITY,NATIVESCRIPT,ONEPASSWORD,PATREON,PAYPAL,PEACE,PHONE_ROTATE_LANDSCAPE,PHONE_ROTATE_PORTRAIT,PIER,PIER_CRANE,PIPE_LEAK,PISTON,PLAY_NETWORK,REMINDER,ROOM_SERVICE,SALESFORCE,SECURITY_ACCOUNT,TEACH,THERMOSTAT_BOX,TRACTOR,VECTOR_ELLIPSE,VIRTUAL_REALITY,WATCH_EXPORT_VARIANT,WATCH_IMPORT_VARIANT,WATCH_VARIANT,WEATHER_HURRICANE,ACCOUNT_HEART,ALIEN,ANVIL,BATTERY_CHARGING_10,BATTERY_CHARGING_50,BATTERY_CHARGING_70,BATTERY_CHARGING_OUTLINE,BED_EMPTY,BORDER_ALL_VARIANT,BORDER_BOTTOM_VARIANT,BORDER_LEFT_VARIANT,BORDER_NONE_VARIANT,BORDER_RIGHT_VARIANT,BORDER_TOP_VARIANT,CALENDAR_EDIT,CLIPBOARD_CHECK_OUTLINE,CONSOLE_NETWORK,FILE_COMPARE,FIRE_TRUCK,FOLDER_KEY,FOLDER_KEY_NETWORK,GPU,HOME_CURRENCY_USD,INBOX_MULTIPLE,LANGUAGE_LUA,LOCK_SMART,MICROPHONE_MINUS,MICROPHONE_PLUS,PALETTE_SWATCH,PERIODIC_TABLE,PICKAXE,QRCODE_EDIT,REMOTE_DESKTOP,SAUSAGE,SETTINGS_OUTLINE,SIGNAL_CELLULAR_1,SIGNAL_CELLULAR_2,SIGNAL_CELLULAR_3,SIGNAL_CELLULAR_OUTLINE,SSH,SWAP_HORIZONTAL_VARIANT,SWAP_VERTICAL_VARIANT,TOOTH,TRAIN_VARIANT,ACCOUNT_MULTIPLE_CHECK,AMAZON_ALEXA,ARCH,AXE,BULLSEYE_ARROW,BUS_CLOCK,CAMERA_ACCOUNT,CAMERA_IMAGE,CAR_LIMOUSINE,CARDS_CLUB,CARDS_DIAMOND,CARDS_HEART,CARDS_SPADE,CELLPHONE_TEXT,CELLPHONE_MESSAGE,CHART_MULTILINE,CIRCLE_EDIT_OUTLINE,COGS,CREDIT_CARD_SETTINGS,DEATH_STAR,DEATH_STAR_VARIANT,DEBIAN,FEDORA,FILE_UNDO,FLOOR_LAMP,FOLDER_EDIT,FORMAT_COLUMNS,FREEBSD,GATE_AND,GATE_NAND,GATE_NOR,GATE_NOT,GATE_OR,GATE_XNOR,GATE_XOR,GENTOO,GLOBE_MODEL,HAMMER,HOME_LOCK,HOME_LOCK_OPEN,LINUX_MINT,LOCK_ALERT,LOCK_QUESTION,MAP_MARKER_DISTANCE,MIDI,MIDI_PORT,NAS,NETWORK_STRENGTH_1,NETWORK_STRENGTH_1_ALERT,NETWORK_STRENGTH_2,NETWORK_STRENGTH_2_ALERT,NETWORK_STRENGTH_3,NETWORK_STRENGTH_3_ALERT,NETWORK_STRENGTH_4,NETWORK_STRENGTH_4_ALERT,NETWORK_STRENGTH_OFF,NETWORK_STRENGTH_OFF_OUTLINE,NETWORK_STRENGTH_OUTLINE,PLAY_SPEED,PLAYLIST_EDIT,POWER_CYCLE,POWER_OFF,POWER_ON,POWER_SLEEP,POWER_SOCKET_AU,POWER_STANDBY,RABBIT,ROBOT_VACUUM_VARIANT,SATELLITE_UPLINK,SCANNER_OFF,SLACKWARE,SQUARE_EDIT_OUTLINE,STEAM_BOX,STEERING_OFF,TABLE_SEARCH,TAG_MINUS,TEST_TUBE_EMPTY,TEST_TUBE_OFF,TICKET_OUTLINE,TRACK_LIGHT,TRANSITION,TRANSITION_MASKED,TUMBLE_DRYER,TUMBLR_BOX,VIDEO_ACCOUNT,VIDEO_IMAGE,VIDEO_STABILIZATION,WALL_SCONCE,WALL_SCONCE_FLAT,WALL_SCONCE_VARIANT,WIFI_STRENGTH_1,WIFI_STRENGTH_1_ALERT,WIFI_STRENGTH_1_LOCK,WIFI_STRENGTH_2,WIFI_STRENGTH_2_ALERT,WIFI_STRENGTH_2_LOCK,WIFI_STRENGTH_3,WIFI_STRENGTH_3_ALERT,WIFI_STRENGTH_3_LOCK,WIFI_STRENGTH_4,WIFI_STRENGTH_4_ALERT,WIFI_STRENGTH_4_LOCK,WIFI_STRENGTH_ALERT_OUTLINE,WIFI_STRENGTH_LOCK_OUTLINE,WIFI_STRENGTH_OFF,WIFI_STRENGTH_OFF_OUTLINE,WIFI_STRENGTH_OUTLINE,PIN_OFF_OUTLINE,PIN_OUTLINE,SHARE_OUTLINE,TRACKPAD_LOCK}; + //public static enum IconValue {VECTOR_SQUARE,ACCESS_POINT,ACCESS_POINT_NETWORK,ACCOUNT,ACCOUNT_ALERT,ACCOUNT_BOX,ACCOUNT_BOX_OUTLINE,ACCOUNT_CHECK,ACCOUNT_CIRCLE,ACCOUNT_CONVERT,ACCOUNT_KEY,ACCOUNT_LOCATION,ACCOUNT_MINUS,ACCOUNT_MULTIPLE,ACCOUNT_MULTIPLE_OUTLINE,ACCOUNT_MULTIPLE_PLUS,ACCOUNT_NETWORK,ACCOUNT_OFF,ACCOUNT_OUTLINE,ACCOUNT_PLUS,ACCOUNT_REMOVE,ACCOUNT_SEARCH,ACCOUNT_STAR,ORBIT,ACCOUNT_SWITCH,ADJUST,AIR_CONDITIONER,AIRBALLOON,AIRPLANE,AIRPLANE_OFF,AIRPLAY,ALARM,ALARM_CHECK,ALARM_MULTIPLE,ALARM_OFF,ALARM_PLUS,ALBUM,ALERT,ALERT_BOX,ALERT_CIRCLE,ALERT_OCTAGON,ALERT_OUTLINE,ALPHA,ALPHABETICAL,AMAZON,AMAZON_DRIVE,AMBULANCE,AMPLIFIER,ANCHOR,ANDROID,ANDROID_DEBUG_BRIDGE,ANDROID_STUDIO,APPLE,APPLE_FINDER,APPLE_IOS,APPLE_ICLOUD,APPLE_SAFARI,FONT_AWESOME,APPS,ARCHIVE,ARRANGE_BRING_FORWARD,ARRANGE_BRING_TO_FRONT,ARRANGE_SEND_BACKWARD,ARRANGE_SEND_TO_BACK,ARROW_ALL,ARROW_BOTTOM_LEFT,ARROW_BOTTOM_RIGHT,ARROW_COLLAPSE_ALL,ARROW_DOWN,ARROW_DOWN_THICK,ARROW_DOWN_BOLD_CIRCLE,ARROW_DOWN_BOLD_CIRCLE_OUTLINE,ARROW_DOWN_BOLD_HEXAGON_OUTLINE,ARROW_DOWN_DROP_CIRCLE,ARROW_DOWN_DROP_CIRCLE_OUTLINE,ARROW_EXPAND_ALL,ARROW_LEFT,ARROW_LEFT_THICK,ARROW_LEFT_BOLD_CIRCLE,ARROW_LEFT_BOLD_CIRCLE_OUTLINE,ARROW_LEFT_BOLD_HEXAGON_OUTLINE,ARROW_LEFT_DROP_CIRCLE,ARROW_LEFT_DROP_CIRCLE_OUTLINE,ARROW_RIGHT,ARROW_RIGHT_THICK,ARROW_RIGHT_BOLD_CIRCLE,ARROW_RIGHT_BOLD_CIRCLE_OUTLINE,ARROW_RIGHT_BOLD_HEXAGON_OUTLINE,ARROW_RIGHT_DROP_CIRCLE,ARROW_RIGHT_DROP_CIRCLE_OUTLINE,ARROW_TOP_LEFT,ARROW_TOP_RIGHT,ARROW_UP,ARROW_UP_THICK,ARROW_UP_BOLD_CIRCLE,ARROW_UP_BOLD_CIRCLE_OUTLINE,ARROW_UP_BOLD_HEXAGON_OUTLINE,ARROW_UP_DROP_CIRCLE,ARROW_UP_DROP_CIRCLE_OUTLINE,ASSISTANT,AT,ATTACHMENT,AUDIOBOOK,AUTO_FIX,AUTO_UPLOAD,AUTORENEW,AV_TIMER,BABY,BACKBURGER,BACKSPACE,BACKUP_RESTORE,BANK,BARCODE,BARCODE_SCAN,BARLEY,BARREL,BASECAMP,BASKET,BASKET_FILL,BASKET_UNFILL,BATTERY,BATTERY_10,BATTERY_20,BATTERY_30,BATTERY_40,BATTERY_50,BATTERY_60,BATTERY_70,BATTERY_80,BATTERY_90,BATTERY_ALERT,BATTERY_CHARGING,BATTERY_CHARGING_100,BATTERY_CHARGING_20,BATTERY_CHARGING_30,BATTERY_CHARGING_40,BATTERY_CHARGING_60,BATTERY_CHARGING_80,BATTERY_CHARGING_90,BATTERY_MINUS,BATTERY_NEGATIVE,BATTERY_OUTLINE,BATTERY_PLUS,BATTERY_POSITIVE,BATTERY_UNKNOWN,BEACH,FLASK,FLASK_EMPTY,FLASK_EMPTY_OUTLINE,FLASK_OUTLINE,BEATS,BEER,BEHANCE,BELL,BELL_OFF,BELL_OUTLINE,BELL_PLUS,BELL_RING,BELL_RING_OUTLINE,BELL_SLEEP,BETA,BIBLE,BIKE,BING,BINOCULARS,BIO,BIOHAZARD,BITBUCKET,BLACK_MESA,BLACKBERRY,BLENDER,BLINDS,BLOCK_HELPER,BLOGGER,BLUETOOTH,BLUETOOTH_AUDIO,BLUETOOTH_CONNECT,BLUETOOTH_OFF,BLUETOOTH_SETTINGS,BLUETOOTH_TRANSFER,BLUR,BLUR_LINEAR,BLUR_OFF,BLUR_RADIAL,BONE,BOOK,BOOK_MULTIPLE,BOOK_MULTIPLE_VARIANT,BOOK_OPEN,BOOK_OPEN_VARIANT,BOOK_VARIANT,BOOKMARK,BOOKMARK_CHECK,BOOKMARK_MUSIC,BOOKMARK_OUTLINE,BOOKMARK_PLUS_OUTLINE,BOOKMARK_PLUS,BOOKMARK_REMOVE,BORDER_ALL,BORDER_BOTTOM,BORDER_COLOR,BORDER_HORIZONTAL,BORDER_INSIDE,BORDER_LEFT,BORDER_NONE,BORDER_OUTSIDE,BORDER_RIGHT,BORDER_STYLE,BORDER_TOP,BORDER_VERTICAL,BOWLING,BOX,BOX_CUTTER,BRIEFCASE,BRIEFCASE_CHECK,BRIEFCASE_DOWNLOAD,BRIEFCASE_UPLOAD,BRIGHTNESS_1,BRIGHTNESS_2,BRIGHTNESS_3,BRIGHTNESS_4,BRIGHTNESS_5,BRIGHTNESS_6,BRIGHTNESS_7,BRIGHTNESS_AUTO,BROOM,BRUSH,BUG,BULLETIN_BOARD,BULLHORN,BUS,CACHED,CAKE,CAKE_LAYERED,CAKE_VARIANT,CALCULATOR,CALENDAR,CALENDAR_BLANK,CALENDAR_CHECK,CALENDAR_CLOCK,CALENDAR_MULTIPLE,CALENDAR_MULTIPLE_CHECK,CALENDAR_PLUS,CALENDAR_REMOVE,CALENDAR_TEXT,CALENDAR_TODAY,CALL_MADE,CALL_MERGE,CALL_MISSED,CALL_RECEIVED,CALL_SPLIT,CAMCORDER,CAMCORDER_BOX,CAMCORDER_BOX_OFF,CAMCORDER_OFF,CAMERA,CAMERA_ENHANCE,CAMERA_FRONT,CAMERA_FRONT_VARIANT,CAMERA_IRIS,CAMERA_PARTY_MODE,CAMERA_REAR,CAMERA_REAR_VARIANT,CAMERA_SWITCH,CAMERA_TIMER,CANDYCANE,CAR,CAR_BATTERY,CAR_CONNECTED,CAR_WASH,CARROT,CART,CART_OUTLINE,CART_PLUS,CASE_SENSITIVE_ALT,CASH,CASH_100,CASH_MULTIPLE,CASH_USD,CAST,CAST_CONNECTED,CASTLE,CAT,CELLPHONE,CELLPHONE_ANDROID,CELLPHONE_BASIC,CELLPHONE_DOCK,CELLPHONE_IPHONE,CELLPHONE_LINK,CELLPHONE_LINK_OFF,CELLPHONE_SETTINGS,CERTIFICATE,CHAIR_SCHOOL,CHART_ARC,CHART_AREASPLINE,CHART_BAR,CHART_HISTOGRAM,CHART_LINE,CHART_PIE,CHECK,CHECK_ALL,CHECKBOX_BLANK,CHECKBOX_BLANK_CIRCLE,CHECKBOX_BLANK_CIRCLE_OUTLINE,CHECKBOX_BLANK_OUTLINE,CHECKBOX_MARKED,CHECKBOX_MARKED_CIRCLE,CHECKBOX_MARKED_CIRCLE_OUTLINE,CHECKBOX_MARKED_OUTLINE,CHECKBOX_MULTIPLE_BLANK,CHECKBOX_MULTIPLE_BLANK_OUTLINE,CHECKBOX_MULTIPLE_MARKED,CHECKBOX_MULTIPLE_MARKED_OUTLINE,CHECKERBOARD,CHEMICAL_WEAPON,CHEVRON_DOUBLE_DOWN,CHEVRON_DOUBLE_LEFT,CHEVRON_DOUBLE_RIGHT,CHEVRON_DOUBLE_UP,CHEVRON_DOWN,CHEVRON_LEFT,CHEVRON_RIGHT,CHEVRON_UP,CHURCH,CISCO_WEBEX,CITY,CLIPBOARD,CLIPBOARD_ACCOUNT,CLIPBOARD_ALERT,CLIPBOARD_ARROW_DOWN,CLIPBOARD_ARROW_LEFT,CLIPBOARD_CHECK,CLIPBOARD_OUTLINE,CLIPBOARD_TEXT,CLIPPY,CLOCK,CLOCK_END,CLOCK_FAST,CLOCK_IN,CLOCK_OUT,CLOCK_START,CLOSE,CLOSE_BOX,CLOSE_BOX_OUTLINE,CLOSE_CIRCLE,CLOSE_CIRCLE_OUTLINE,CLOSE_NETWORK,CLOSE_OCTAGON,CLOSE_OCTAGON_OUTLINE,CLOSED_CAPTION,CLOUD,CLOUD_CHECK,CLOUD_CIRCLE,CLOUD_DOWNLOAD,CLOUD_OUTLINE,CLOUD_OFF_OUTLINE,CLOUD_PRINT,CLOUD_PRINT_OUTLINE,CLOUD_UPLOAD,CODE_ARRAY,CODE_BRACES,CODE_BRACKETS,CODE_EQUAL,CODE_GREATER_THAN,CODE_GREATER_THAN_OR_EQUAL,CODE_LESS_THAN,CODE_LESS_THAN_OR_EQUAL,CODE_NOT_EQUAL,CODE_NOT_EQUAL_VARIANT,CODE_PARENTHESES,CODE_STRING,CODE_TAGS,CODEPEN,COFFEE,COFFEE_TO_GO,COIN,COLOR_HELPER,COMMENT,COMMENT_ACCOUNT,COMMENT_ACCOUNT_OUTLINE,COMMENT_ALERT,COMMENT_ALERT_OUTLINE,COMMENT_CHECK,COMMENT_CHECK_OUTLINE,COMMENT_MULTIPLE_OUTLINE,COMMENT_OUTLINE,COMMENT_PLUS_OUTLINE,COMMENT_PROCESSING,COMMENT_PROCESSING_OUTLINE,COMMENT_QUESTION_OUTLINE,COMMENT_REMOVE_OUTLINE,COMMENT_TEXT,COMMENT_TEXT_OUTLINE,COMPARE,COMPASS,COMPASS_OUTLINE,CONSOLE,CONTACT_MAIL,CONTENT_COPY,CONTENT_CUT,CONTENT_DUPLICATE,CONTENT_PASTE,CONTENT_SAVE,CONTENT_SAVE_ALL,CONTRAST,CONTRAST_BOX,CONTRAST_CIRCLE,COOKIE,COUNTER,COW,CREDIT_CARD,CREDIT_CARD_MULTIPLE,CREDIT_CARD_SCAN,CROP,CROP_FREE,CROP_LANDSCAPE,CROP_PORTRAIT,CROP_SQUARE,CROSSHAIRS,CROSSHAIRS_GPS,CROWN,CUBE,CUBE_OUTLINE,CUBE_SEND,CUBE_UNFOLDED,CUP,CUP_WATER,CURRENCY_BTC,CURRENCY_EUR,CURRENCY_GBP,CURRENCY_INR,CURRENCY_NGN,CURRENCY_RUB,CURRENCY_TRY,CURRENCY_USD,CURSOR_DEFAULT,CURSOR_DEFAULT_OUTLINE,CURSOR_MOVE,CURSOR_POINTER,DATABASE,DATABASE_MINUS,DATABASE_PLUS,DEBUG_STEP_INTO,DEBUG_STEP_OUT,DEBUG_STEP_OVER,DECIMAL_DECREASE,DECIMAL_INCREASE,DELETE,DELETE_VARIANT,DELTA,DESKPHONE,DESKTOP_MAC,DESKTOP_TOWER,DETAILS,DEVIANTART,DIAMOND,CREATION,DICE_1,DICE_2,DICE_3,DICE_4,DICE_5,DICE_6,DIRECTIONS,DISK_ALERT,DISQUS,DISQUS_OUTLINE,DIVISION,DIVISION_BOX,DNS,DOMAIN,DOTS_HORIZONTAL,DOTS_VERTICAL,DOWNLOAD,DRAG,DRAG_HORIZONTAL,DRAG_VERTICAL,DRAWING,DRAWING_BOX,DRIBBBLE,DRIBBBLE_BOX,DRONE,DROPBOX,DRUPAL,DUCK,DUMBBELL,EARTH,EARTH_OFF,EDGE,EJECT,ELEVATION_DECLINE,ELEVATION_RISE,ELEVATOR,EMAIL,EMAIL_OPEN,EMAIL_OUTLINE,EMAIL_SECURE,EMOTICON,EMOTICON_COOL,EMOTICON_DEVIL,EMOTICON_HAPPY,EMOTICON_NEUTRAL,EMOTICON_POOP,EMOTICON_SAD,EMOTICON_TONGUE,ENGINE,ENGINE_OUTLINE,EQUAL,EQUAL_BOX,ERASER,ESCALATOR,ETHERNET,ETHERNET_CABLE,ETHERNET_CABLE_OFF,ETSY,EVERNOTE,EXCLAMATION,EXIT_TO_APP,EXPORT,EYE,EYE_OFF,EYEDROPPER,EYEDROPPER_VARIANT,FACEBOOK,FACEBOOK_BOX,FACEBOOK_MESSENGER,FACTORY,FAN,FAST_FORWARD,FAX,FERRY,FILE,FILE_CHART,FILE_CHECK,FILE_CLOUD,FILE_DELIMITED,FILE_DOCUMENT,FILE_DOCUMENT_BOX,FILE_EXCEL,FILE_EXCEL_BOX,FILE_EXPORT,FILE_FIND,FILE_IMAGE,FILE_IMPORT,FILE_LOCK,FILE_MULTIPLE,FILE_MUSIC,FILE_OUTLINE,FILE_PDF,FILE_PDF_BOX,FILE_POWERPOINT,FILE_POWERPOINT_BOX,FILE_PRESENTATION_BOX,FILE_SEND,FILE_VIDEO,FILE_WORD,FILE_WORD_BOX,FILE_XML,FILM,FILMSTRIP,FILMSTRIP_OFF,FILTER,FILTER_OUTLINE,FILTER_REMOVE,FILTER_REMOVE_OUTLINE,FILTER_VARIANT,FINGERPRINT,FIRE,FIREFOX,FISH,FLAG,FLAG_CHECKERED,FLAG_OUTLINE,FLAG_VARIANT_OUTLINE,FLAG_TRIANGLE,FLAG_VARIANT,FLASH,FLASH_AUTO,FLASH_OFF,FLASHLIGHT,FLASHLIGHT_OFF,FLATTR,FLIP_TO_BACK,FLIP_TO_FRONT,FLOPPY,FLOWER,FOLDER,FOLDER_ACCOUNT,FOLDER_DOWNLOAD,FOLDER_GOOGLE_DRIVE,FOLDER_IMAGE,FOLDER_LOCK,FOLDER_LOCK_OPEN,FOLDER_MOVE,FOLDER_MULTIPLE,FOLDER_MULTIPLE_IMAGE,FOLDER_MULTIPLE_OUTLINE,FOLDER_OUTLINE,FOLDER_PLUS,FOLDER_REMOVE,FOLDER_UPLOAD,FOOD,FOOD_APPLE,FOOD_VARIANT,FOOTBALL,FOOTBALL_AUSTRALIAN,FOOTBALL_HELMET,FORMAT_ALIGN_CENTER,FORMAT_ALIGN_JUSTIFY,FORMAT_ALIGN_LEFT,FORMAT_ALIGN_RIGHT,FORMAT_BOLD,FORMAT_CLEAR,FORMAT_COLOR_FILL,FORMAT_FLOAT_CENTER,FORMAT_FLOAT_LEFT,FORMAT_FLOAT_NONE,FORMAT_FLOAT_RIGHT,FORMAT_HEADER_1,FORMAT_HEADER_2,FORMAT_HEADER_3,FORMAT_HEADER_4,FORMAT_HEADER_5,FORMAT_HEADER_6,FORMAT_HEADER_DECREASE,FORMAT_HEADER_EQUAL,FORMAT_HEADER_INCREASE,FORMAT_HEADER_POUND,FORMAT_INDENT_DECREASE,FORMAT_INDENT_INCREASE,FORMAT_ITALIC,FORMAT_LINE_SPACING,FORMAT_LIST_BULLETED,FORMAT_LIST_BULLETED_TYPE,FORMAT_LIST_NUMBERS,FORMAT_PAINT,FORMAT_PARAGRAPH,FORMAT_QUOTE_CLOSE,FORMAT_SIZE,FORMAT_STRIKETHROUGH,FORMAT_STRIKETHROUGH_VARIANT,FORMAT_SUBSCRIPT,FORMAT_SUPERSCRIPT,FORMAT_TEXT,FORMAT_TEXTDIRECTION_L_TO_R,FORMAT_TEXTDIRECTION_R_TO_L,FORMAT_UNDERLINE,FORMAT_WRAP_INLINE,FORMAT_WRAP_SQUARE,FORMAT_WRAP_TIGHT,FORMAT_WRAP_TOP_BOTTOM,FORUM,FORWARD,FOURSQUARE,FRIDGE,FRIDGE_FILLED,FRIDGE_FILLED_BOTTOM,FRIDGE_FILLED_TOP,FULLSCREEN,FULLSCREEN_EXIT,FUNCTION,GAMEPAD,GAMEPAD_VARIANT,GAS_STATION,GATE,GAUGE,GAVEL,GENDER_FEMALE,GENDER_MALE,GENDER_MALE_FEMALE,GENDER_TRANSGENDER,GHOST,GIFT,GIT,GITHUB_BOX,GITHUB_CIRCLE,GLASS_FLUTE,GLASS_MUG,GLASS_STANGE,GLASS_TULIP,GLASSDOOR,GLASSES,GMAIL,GNOME,GOOGLE,GOOGLE_CARDBOARD,GOOGLE_CHROME,GOOGLE_CIRCLES,GOOGLE_CIRCLES_COMMUNITIES,GOOGLE_CIRCLES_EXTENDED,GOOGLE_CIRCLES_GROUP,GOOGLE_CONTROLLER,GOOGLE_CONTROLLER_OFF,GOOGLE_DRIVE,GOOGLE_EARTH,GOOGLE_GLASS,GOOGLE_NEARBY,GOOGLE_PAGES,GOOGLE_PHYSICAL_WEB,GOOGLE_PLAY,GOOGLE_PLUS,GOOGLE_PLUS_BOX,GOOGLE_TRANSLATE,GOOGLE_WALLET,GRID,GRID_OFF,GROUP,GUITAR_ELECTRIC,GUITAR_PICK,GUITAR_PICK_OUTLINE,HAND_POINTING_RIGHT,HANGER,GOOGLE_HANGOUTS,HARDDISK,HEADPHONES,HEADPHONES_BOX,HEADPHONES_SETTINGS,HEADSET,HEADSET_DOCK,HEADSET_OFF,HEART,HEART_BOX,HEART_BOX_OUTLINE,HEART_BROKEN,HEART_OUTLINE,HELP,HELP_CIRCLE,HEXAGON,HEXAGON_OUTLINE,HISTORY,HOLOLENS,HOME,HOME_MODERN,HOME_VARIANT,HOPS,HOSPITAL,HOSPITAL_BUILDING,HOSPITAL_MARKER,HOTEL,HOUZZ,HOUZZ_BOX,HUMAN,HUMAN_CHILD,HUMAN_MALE_FEMALE,IMAGE,IMAGE_ALBUM,IMAGE_AREA,IMAGE_AREA_CLOSE,IMAGE_BROKEN,IMAGE_BROKEN_VARIANT,IMAGE_FILTER,IMAGE_FILTER_BLACK_WHITE,IMAGE_FILTER_CENTER_FOCUS,IMAGE_FILTER_CENTER_FOCUS_WEAK,IMAGE_FILTER_DRAMA,IMAGE_FILTER_FRAMES,IMAGE_FILTER_HDR,IMAGE_FILTER_NONE,IMAGE_FILTER_TILT_SHIFT,IMAGE_FILTER_VINTAGE,IMAGE_MULTIPLE,IMPORT_ICON,INBOX_ARROW_DOWN,INFORMATION,INFORMATION_OUTLINE,INSTAGRAM,INSTAPAPER,INTERNET_EXPLORER,INVERT_COLORS,JEEPNEY,JIRA,JSFIDDLE,KEG,KEY,KEY_CHANGE,KEY_MINUS,KEY_PLUS,KEY_REMOVE,KEY_VARIANT,KEYBOARD,KEYBOARD_BACKSPACE,KEYBOARD_CAPS,KEYBOARD_CLOSE,KEYBOARD_OFF,KEYBOARD_RETURN,KEYBOARD_TAB,KEYBOARD_VARIANT,KODI,LABEL,LABEL_OUTLINE,LAN,LAN_CONNECT,LAN_DISCONNECT,LAN_PENDING,LANGUAGE_CSHARP,LANGUAGE_CSS3,LANGUAGE_HTML5,LANGUAGE_JAVASCRIPT,LANGUAGE_PHP,LANGUAGE_PYTHON,LANGUAGE_PYTHON_TEXT,LAPTOP,LAPTOP_CHROMEBOOK,LAPTOP_MAC,LAPTOP_WINDOWS,LASTFM,LAUNCH,LAYERS,LAYERS_OFF,LEAF,LED_OFF,LED_ON,LED_OUTLINE,LED_VARIANT_OFF,LED_VARIANT_ON,LED_VARIANT_OUTLINE,LIBRARY,LIBRARY_BOOKS,LIBRARY_MUSIC,LIBRARY_PLUS,LIGHTBULB,LIGHTBULB_OUTLINE,LINK,LINK_OFF,LINK_VARIANT,LINK_VARIANT_OFF,LINKEDIN,LINKEDIN_BOX,LINUX,LOCK,LOCK_OPEN,LOCK_OPEN_OUTLINE,LOCK_OUTLINE,LOGIN,LOGOUT,LOOKS,LOUPE,LUMX,MAGNET,MAGNET_ON,MAGNIFY,MAGNIFY_MINUS,MAGNIFY_PLUS,MAIL_RU,MAP,MAP_MARKER,MAP_MARKER_CIRCLE,MAP_MARKER_MULTIPLE,MAP_MARKER_OFF,MAP_MARKER_RADIUS,MARGIN,MARKDOWN,MARKER_CHECK,GLASS_COCKTAIL,MATERIAL_UI,MATH_COMPASS,MAXCDN,MEDIUM,MEMORY,MENU,MENU_DOWN,MENU_LEFT,MENU_RIGHT,MENU_UP,MESSAGE,MESSAGE_ALERT,MESSAGE_DRAW,MESSAGE_IMAGE,MESSAGE_OUTLINE,MESSAGE_PROCESSING,MESSAGE_REPLY,MESSAGE_REPLY_TEXT,MESSAGE_TEXT,MESSAGE_TEXT_OUTLINE,MESSAGE_VIDEO,MICROPHONE,MICROPHONE_OFF,MICROPHONE_OUTLINE,MICROPHONE_SETTINGS,MICROPHONE_VARIANT,MICROPHONE_VARIANT_OFF,MICROSOFT,MINECRAFT,MINUS,MINUS_BOX,MINUS_CIRCLE,MINUS_CIRCLE_OUTLINE,MINUS_NETWORK,MONITOR,MONITOR_MULTIPLE,MORE,MOTORBIKE,MOUSE,MOUSE_OFF,MOUSE_VARIANT,MOUSE_VARIANT_OFF,MOVIE,MULTIPLICATION,MULTIPLICATION_BOX,MUSIC_BOX,MUSIC_BOX_OUTLINE,MUSIC_CIRCLE,MUSIC_NOTE,MUSIC_NOTE_EIGHTH,MUSIC_NOTE_HALF,MUSIC_NOTE_OFF,MUSIC_NOTE_QUARTER,MUSIC_NOTE_SIXTEENTH,MUSIC_NOTE_WHOLE,NATURE,NATURE_PEOPLE,NAVIGATION,NEEDLE,SMOKE_DETECTOR,THERMOSTAT,NEW_BOX,NEWSPAPER,NFC,NFC_TAP,NFC_VARIANT,NODEJS,NOTE,NOTE_OUTLINE,NOTE_PLUS,NOTE_PLUS_OUTLINE,NOTE_TEXT,NOTIFICATION_CLEAR_ALL,NUMERIC,NUMERIC_0_BOX,NUMERIC_0_BOX_MULTIPLE_OUTLINE,NUMERIC_0_BOX_OUTLINE,NUMERIC_1_BOX,NUMERIC_1_BOX_MULTIPLE_OUTLINE,NUMERIC_1_BOX_OUTLINE,NUMERIC_2_BOX,NUMERIC_2_BOX_MULTIPLE_OUTLINE,NUMERIC_2_BOX_OUTLINE,NUMERIC_3_BOX,NUMERIC_3_BOX_MULTIPLE_OUTLINE,NUMERIC_3_BOX_OUTLINE,NUMERIC_4_BOX,NUMERIC_4_BOX_MULTIPLE_OUTLINE,NUMERIC_4_BOX_OUTLINE,NUMERIC_5_BOX,NUMERIC_5_BOX_MULTIPLE_OUTLINE,NUMERIC_5_BOX_OUTLINE,NUMERIC_6_BOX,NUMERIC_6_BOX_MULTIPLE_OUTLINE,NUMERIC_6_BOX_OUTLINE,NUMERIC_7_BOX,NUMERIC_7_BOX_MULTIPLE_OUTLINE,NUMERIC_7_BOX_OUTLINE,NUMERIC_8_BOX,NUMERIC_8_BOX_MULTIPLE_OUTLINE,NUMERIC_8_BOX_OUTLINE,NUMERIC_9_BOX,NUMERIC_9_BOX_MULTIPLE_OUTLINE,NUMERIC_9_BOX_OUTLINE,NUMERIC_9_PLUS_BOX,NUMERIC_9_PLUS_BOX_MULTIPLE_OUTLINE,NUMERIC_9_PLUS_BOX_OUTLINE,NUTRITION,OCTAGON,OCTAGON_OUTLINE,ODNOKLASSNIKI,OFFICE,OIL,OIL_TEMPERATURE,OMEGA,ONEDRIVE,OPEN_IN_APP,OPEN_IN_NEW,OPENID,OPERA,ORNAMENT,ORNAMENT_VARIANT,INBOX_ARROW_UP,OWL,PACKAGE_ICON,PACKAGE_DOWN,PACKAGE_UP,PACKAGE_VARIANT,PACKAGE_VARIANT_CLOSED,PALETTE,PALETTE_ADVANCED,PANDA,PANDORA,PANORAMA,PANORAMA_FISHEYE,PANORAMA_HORIZONTAL,PANORAMA_VERTICAL,PANORAMA_WIDE_ANGLE,PAPER_CUT_VERTICAL,PAPERCLIP,PARKING,PAUSE,PAUSE_CIRCLE,PAUSE_CIRCLE_OUTLINE,PAUSE_OCTAGON,PAUSE_OCTAGON_OUTLINE,PAW,PEN,PENCIL,PENCIL_BOX,PENCIL_BOX_OUTLINE,PENCIL_LOCK,PENCIL_OFF,PERCENT,PHARMACY,PHONE,PHONE_BLUETOOTH,PHONE_FORWARD,PHONE_HANGUP,PHONE_IN_TALK,PHONE_INCOMING,PHONE_LOCKED,PHONE_LOG,PHONE_MISSED,PHONE_OUTGOING,PHONE_PAUSED,PHONE_SETTINGS,PHONE_VOIP,PI,PI_BOX,PIG,PILL,PIN,PIN_OFF,PINE_TREE,PINE_TREE_BOX,PINTEREST,PINTEREST_BOX,PIZZA,PLAY,PLAY_BOX_OUTLINE,PLAY_CIRCLE,PLAY_CIRCLE_OUTLINE,PLAY_PAUSE,PLAY_PROTECTED_CONTENT,PLAYLIST_MINUS,PLAYLIST_PLAY,PLAYLIST_PLUS,PLAYLIST_REMOVE,PLAYSTATION,PLUS,PLUS_BOX,PLUS_CIRCLE,PLUS_CIRCLE_MULTIPLE_OUTLINE,PLUS_CIRCLE_OUTLINE,PLUS_NETWORK,PLUS_ONE,POCKET,POKEBALL,POLAROID,POLL,POLL_BOX,POLYMER,POPCORN,POUND,POUND_BOX,POWER,POWER_SETTINGS,POWER_SOCKET,PRESENTATION,PRESENTATION_PLAY,PRINTER,PRINTER_3D,PRINTER_ALERT,PROFESSIONAL_HEXAGON,PROJECTOR,PROJECTOR_SCREEN,PULSE,PUZZLE,QRCODE,QRCODE_SCAN,QUADCOPTER,QUALITY_HIGH,QUICKTIME,RADAR,RADIATOR,RADIO,RADIO_HANDHELD,RADIO_TOWER,RADIOACTIVE,RADIOBOX_BLANK,RADIOBOX_MARKED,RASPBERRYPI,RAY_END,RAY_END_ARROW,RAY_START,RAY_START_ARROW,RAY_START_END,RAY_VERTEX,LASTPASS,READ,YOUTUBE_TV,RECEIPT,RECORD,RECORD_REC,RECYCLE,REDDIT,REDO,REDO_VARIANT,REFRESH,REGEX,RELATIVE_SCALE,RELOAD,REMOTE,RENAME_BOX,REPEAT,REPEAT_OFF,REPEAT_ONCE,REPLAY,REPLY,REPLY_ALL,REPRODUCTION,RESIZE_BOTTOM_RIGHT,RESPONSIVE,REWIND,RIBBON,ROAD,ROAD_VARIANT,ROCKET,ROTATE_3D,ROTATE_LEFT,ROTATE_LEFT_VARIANT,ROTATE_RIGHT,ROTATE_RIGHT_VARIANT,ROUTER_WIRELESS,ROUTES,RSS,RSS_BOX,RULER,RUN_FAST,SALE,SATELLITE,SATELLITE_VARIANT,SCALE,SCALE_BATHROOM,SCHOOL,SCREEN_ROTATION,SCREEN_ROTATION_LOCK,SCREWDRIVER,SCRIPT,SD,SEAL,SEAT_FLAT,SEAT_FLAT_ANGLED,SEAT_INDIVIDUAL_SUITE,SEAT_LEGROOM_EXTRA,SEAT_LEGROOM_NORMAL,SEAT_LEGROOM_REDUCED,SEAT_RECLINE_EXTRA,SEAT_RECLINE_NORMAL,SECURITY,SECURITY_NETWORK,SELECT,SELECT_ALL,SELECT_INVERSE,SELECT_OFF,SELECTION,SEND,SERVER,SERVER_MINUS,SERVER_NETWORK,SERVER_NETWORK_OFF,SERVER_OFF,SERVER_PLUS,SERVER_REMOVE,SERVER_SECURITY,SETTINGS,SETTINGS_BOX,SHAPE_PLUS,SHARE,SHARE_VARIANT,SHIELD,SHIELD_OUTLINE,SHOPPING,SHOPPING_MUSIC,SHREDDER,SHUFFLE,SHUFFLE_DISABLED,SHUFFLE_VARIANT,SIGMA,SIGN_CAUTION,SIGNAL,SILVERWARE,SILVERWARE_FORK,SILVERWARE_SPOON,SILVERWARE_VARIANT,SIM,SIM_ALERT,SIM_OFF,SITEMAP,SKIP_BACKWARD,SKIP_FORWARD,SKIP_NEXT,SKIP_PREVIOUS,SKYPE,SKYPE_BUSINESS,SLACK,SLEEP,SLEEP_OFF,SMOKING,SMOKING_OFF,SNAPCHAT,SNOWMAN,SOCCER,SOFA,SORT,SORT_ALPHABETICAL,SORT_ASCENDING,SORT_DESCENDING,SORT_NUMERIC,SORT_VARIANT,SOUNDCLOUD,SOURCE_FORK,SOURCE_PULL,SPEAKER,SPEAKER_OFF,SPEEDOMETER,SPELLCHECK,SPOTIFY,SPOTLIGHT,SPOTLIGHT_BEAM,SQUARE_INC,SQUARE_INC_CASH,STACK_OVERFLOW,STAIRS,STAR,STAR_CIRCLE,STAR_HALF,STAR_OFF,STAR_OUTLINE,STEAM,STEERING,STEP_BACKWARD,STEP_BACKWARD_2,STEP_FORWARD,STEP_FORWARD_2,STETHOSCOPE,STOCKING,STOP,STORE,STORE_24_HOUR,STOVE,SUBWAY_VARIANT,SUNGLASSES,SWAP_HORIZONTAL,SWAP_VERTICAL,SWIM,SWITCH_ICON,SWORD,SYNC,SYNC_ALERT,SYNC_OFF,TAB,TAB_UNSELECTED,TABLE,TABLE_COLUMN_PLUS_AFTER,TABLE_COLUMN_PLUS_BEFORE,TABLE_COLUMN_REMOVE,TABLE_COLUMN_WIDTH,TABLE_EDIT,TABLE_LARGE,TABLE_ROW_HEIGHT,TABLE_ROW_PLUS_AFTER,TABLE_ROW_PLUS_BEFORE,TABLE_ROW_REMOVE,TABLET,TABLET_ANDROID,TABLET_IPAD,TAG,TAG_FACES,TAG_MULTIPLE,TAG_OUTLINE,TAG_TEXT_OUTLINE,TARGET,TAXI,TEAMVIEWER,TELEGRAM,TELEVISION,TELEVISION_GUIDE,TEMPERATURE_CELSIUS,TEMPERATURE_FAHRENHEIT,TEMPERATURE_KELVIN,TENNIS,TENT,TERRAIN,TEXT_TO_SPEECH,TEXT_TO_SPEECH_OFF,TEXTURE,THEATER,THEME_LIGHT_DARK,THERMOMETER,THERMOMETER_LINES,THUMB_DOWN,THUMB_DOWN_OUTLINE,THUMB_UP,THUMB_UP_OUTLINE,THUMBS_UP_DOWN,TICKET,TICKET_ACCOUNT,TICKET_CONFIRMATION,TIE,TIMELAPSE,TIMER,TIMER_10,TIMER_3,TIMER_OFF,TIMER_SAND,TIMETABLE,TOGGLE_SWITCH,TOGGLE_SWITCH_OFF,TOOLTIP,TOOLTIP_EDIT,TOOLTIP_IMAGE,TOOLTIP_OUTLINE,TOOLTIP_OUTLINE_PLUS,TOOLTIP_TEXT,TOOTH_OUTLINE,TOR,TRAFFIC_LIGHT,TRAIN,TRAM,TRANSCRIBE,TRANSCRIBE_CLOSE,TRANSFER,TREE,TRELLO,TRENDING_DOWN,TRENDING_NEUTRAL,TRENDING_UP,TRIANGLE,TRIANGLE_OUTLINE,TROPHY,TROPHY_AWARD,TROPHY_OUTLINE,TROPHY_VARIANT,TROPHY_VARIANT_OUTLINE,TRUCK,TRUCK_DELIVERY,TSHIRT_CREW,TSHIRT_V,TUMBLR,TUMBLR_REBLOG,TWITCH,TWITTER,TWITTER_BOX,TWITTER_CIRCLE,TWITTER_RETWEET,UBUNTU,UMBRACO,UMBRELLA,UMBRELLA_OUTLINE,UNDO,UNDO_VARIANT,UNFOLD_LESS_HORIZONTAL,UNFOLD_MORE_HORIZONTAL,UNGROUP,UNTAPPD,UPLOAD,USB,VECTOR_ARRANGE_ABOVE,VECTOR_ARRANGE_BELOW,VECTOR_CIRCLE,VECTOR_CIRCLE_VARIANT,VECTOR_COMBINE,VECTOR_CURVE,VECTOR_DIFFERENCE,VECTOR_DIFFERENCE_AB,VECTOR_DIFFERENCE_BA,VECTOR_INTERSECTION,VECTOR_LINE,VECTOR_POINT,VECTOR_POLYGON,VECTOR_POLYLINE,VECTOR_SELECTION,VECTOR_TRIANGLE,VECTOR_UNION,VERIFIED,VIBRATE,VIDEO,VIDEO_OFF,VIDEO_SWITCH,VIEW_AGENDA,VIEW_ARRAY,VIEW_CAROUSEL,VIEW_COLUMN,VIEW_DASHBOARD,VIEW_DAY,VIEW_GRID,VIEW_HEADLINE,VIEW_LIST,VIEW_MODULE,VIEW_QUILT,VIEW_STREAM,VIEW_WEEK,VIMEO,VENMO,VK,VK_BOX,VK_CIRCLE,VLC,VOICEMAIL,VOLUME_HIGH,VOLUME_LOW,VOLUME_MEDIUM,VOLUME_OFF,VPN,WALK,WALLET,WALLET_GIFTCARD,WALLET_MEMBERSHIP,WALLET_TRAVEL,WAN,WATCH,WATCH_EXPORT,WATCH_IMPORT,WATER,WATER_OFF,WATER_PERCENT,WATER_PUMP,WEATHER_CLOUDY,WEATHER_FOG,WEATHER_HAIL,WEATHER_LIGHTNING,WEATHER_NIGHT,WEATHER_PARTLYCLOUDY,WEATHER_POURING,WEATHER_RAINY,WEATHER_SNOWY,WEATHER_SUNNY,WEATHER_SUNSET,WEATHER_SUNSET_DOWN,WEATHER_SUNSET_UP,WEATHER_WINDY,WEATHER_WINDY_VARIANT,WEB,WEBCAM,WEIGHT,WEIGHT_KILOGRAM,WHATSAPP,WHEELCHAIR_ACCESSIBILITY,WHITE_BALANCE_AUTO,WHITE_BALANCE_INCANDESCENT,WHITE_BALANCE_IRIDESCENT,WHITE_BALANCE_SUNNY,WIFI,WIFI_OFF,WII,WIKIPEDIA,WINDOW_CLOSE,WINDOW_CLOSED,WINDOW_MAXIMIZE,WINDOW_MINIMIZE,WINDOW_OPEN,WINDOW_RESTORE,WINDOWS,WORDPRESS,WORKER,WRAP,WRENCH,WUNDERLIST,XBOX,XBOX_CONTROLLER,XBOX_CONTROLLER_OFF,XDA,XING,XING_BOX,XING_CIRCLE,XML,YEAST,YELP,YOUTUBE,ZIP_BOX,SURROUND_SOUND,VECTOR_RECTANGLE,PLAYLIST_CHECK,FORMAT_LINE_STYLE,FORMAT_LINE_WEIGHT,TRANSLATE,VOICE,OPACITY,NEAR_ME,CLOCK_ALERT,HUMAN_PREGNANT,STICKER,SCALE_BALANCE,ACCOUNT_CARD_DETAILS,ACCOUNT_MULTIPLE_MINUS,AIRPLANE_LANDING,AIRPLANE_TAKEOFF,ALERT_CIRCLE_OUTLINE,ALTIMETER,ANIMATION,BOOK_MINUS,BOOK_OPEN_PAGE_VARIANT,BOOK_PLUS,BOOMBOX,BULLSEYE,COMMENT_REMOVE,CAMERA_OFF,CHECK_CIRCLE,CHECK_CIRCLE_OUTLINE,CANDLE,CHART_BUBBLE,CREDIT_CARD_OFF,CUP_OFF,COPYRIGHT,CURSOR_TEXT,DELETE_FOREVER,DELETE_SWEEP,DICE_D20,DICE_D4,DICE_D6,DICE_D8,DISK,EMAIL_OPEN_OUTLINE,EMAIL_VARIANT,EV_STATION,FOOD_FORK_DRINK,FOOD_OFF,FORMAT_TITLE,GOOGLE_MAPS,HEART_PULSE,HIGHWAY,HOME_MAP_MARKER,INCOGNITO,KETTLE,LOCK_PLUS,LOGIN_VARIANT,LOGOUT_VARIANT,MUSIC_NOTE_BLUETOOTH,MUSIC_NOTE_BLUETOOTH_OFF,PAGE_FIRST,PAGE_LAST,PHONE_CLASSIC,PRIORITY_HIGH,PRIORITY_LOW,QQCHAT,POOL,ROUNDED_CORNER,ROWING,SAXOPHONE,SIGNAL_VARIANT,STACK_EXCHANGE,SUBDIRECTORY_ARROW_LEFT,SUBDIRECTORY_ARROW_RIGHT,TEXTBOX,VIOLIN,VISUALSTUDIO,WECHAT,WATERMARK,FILE_HIDDEN,APPLICATION,ARROW_COLLAPSE,ARROW_EXPAND,BOWL,BRIDGE,BUFFER,CHIP,CONTENT_SAVE_SETTINGS,DIALPAD,DICTIONARY,FORMAT_HORIZONTAL_ALIGN_CENTER,FORMAT_HORIZONTAL_ALIGN_LEFT,FORMAT_HORIZONTAL_ALIGN_RIGHT,FORMAT_VERTICAL_ALIGN_BOTTOM,FORMAT_VERTICAL_ALIGN_CENTER,FORMAT_VERTICAL_ALIGN_TOP,HACKERNEWS,HELP_CIRCLE_OUTLINE,JSON,LAMBDA,MATRIX,METEOR,MIXCLOUD,SIGMA_LOWER,SOURCE_BRANCH,SOURCE_MERGE,TUNE,WEBHOOK,ACCOUNT_SETTINGS,ACCOUNT_SETTINGS_VARIANT,APPLE_KEYBOARD_CAPS,APPLE_KEYBOARD_COMMAND,APPLE_KEYBOARD_CONTROL,APPLE_KEYBOARD_OPTION,APPLE_KEYBOARD_SHIFT,BOX_SHADOW,CARDS,CARDS_OUTLINE,CARDS_PLAYING_OUTLINE,CHECKBOX_MULTIPLE_BLANK_CIRCLE,CHECKBOX_MULTIPLE_BLANK_CIRCLE_OUTLINE,CHECKBOX_MULTIPLE_MARKED_CIRCLE,CHECKBOX_MULTIPLE_MARKED_CIRCLE_OUTLINE,CLOUD_SYNC,COLLAGE,DIRECTIONS_FORK,ERASER_VARIANT,FACE,FACE_PROFILE,FILE_TREE,FORMAT_ANNOTATION_PLUS,GAS_CYLINDER,GREASE_PENCIL,HUMAN_FEMALE,HUMAN_GREETING,HUMAN_HANDSDOWN,HUMAN_HANDSUP,HUMAN_MALE,INFORMATION_VARIANT,LEAD_PENCIL,MAP_MARKER_MINUS,MAP_MARKER_PLUS,MARKER,MESSAGE_PLUS,MICROSCOPE,MOVE_RESIZE,MOVE_RESIZE_VARIANT,PAW_OFF,PHONE_MINUS,PHONE_PLUS,POT,POT_MIX,SERIAL_PORT,SHAPE_CIRCLE_PLUS,SHAPE_POLYGON_PLUS,SHAPE_RECTANGLE_PLUS,SHAPE_SQUARE_PLUS,SKIP_NEXT_CIRCLE,SKIP_NEXT_CIRCLE_OUTLINE,SKIP_PREVIOUS_CIRCLE,SKIP_PREVIOUS_CIRCLE_OUTLINE,SPRAY,STOP_CIRCLE,STOP_CIRCLE_OUTLINE,TEST_TUBE,TEXT_SHADOW,TUNE_VERTICAL,CART_OFF,CHART_GANTT,CHART_SCATTERPLOT_HEXBIN,CHART_TIMELINE,DISCORD,FILE_RESTORE,LANGUAGE_C,LANGUAGE_CPP,XAML,BANDCAMP,CREDIT_CARD_PLUS,ITUNES,BOW_TIE,CALENDAR_RANGE,CURRENCY_USD_OFF,FLASH_RED_EYE,OAR,PIANO,WEATHER_LIGHTNING_RAINY,WEATHER_SNOWY_RAINY,YIN_YANG,TOWER_BEACH,TOWER_FIRE,DELETE_CIRCLE,DNA,HAMBURGER,GONDOLA,INBOX,REORDER_HORIZONTAL,REORDER_VERTICAL,SECURITY_HOME,TAG_HEART,SKULL,SOLID,ALARM_SNOOZE,BABY_BUGGY,BEAKER,BOMB,CALENDAR_QUESTION,CAMERA_BURST,CODE_TAGS_CHECK,COINS,CROP_ROTATE,DEVELOPER_BOARD,DO_NOT_DISTURB,DO_NOT_DISTURB_OFF,DOUBAN,EMOTICON_DEAD,EMOTICON_EXCITED,FOLDER_STAR,FORMAT_COLOR_TEXT,FORMAT_SECTION,GRADIENT,HOME_OUTLINE,MESSAGE_BULLETED,MESSAGE_BULLETED_OFF,NUKE,POWER_PLUG,POWER_PLUG_OFF,PUBLISH,RESTORE,ROBOT,FORMAT_ROTATE_90,SCANNER,SUBWAY,TIMER_SAND_EMPTY,TRANSIT_TRANSFER,UNITY,UPDATE,WATCH_VIBRATE,ANGULAR,DOLBY,EMBY,LAMP,MENU_DOWN_OUTLINE,MENU_UP_OUTLINE,NOTE_MULTIPLE,NOTE_MULTIPLE_OUTLINE,PLEX,PLANE_SHIELD,ACCOUNT_EDIT,ALERT_DECAGRAM,ALL_INCLUSIVE,ANGULARJS,ARROW_DOWN_BOX,ARROW_LEFT_BOX,ARROW_RIGHT_BOX,ARROW_UP_BOX,ASTERISK,BOMB_OFF,BOOTSTRAP,CARDS_VARIANT,CLIPBOARD_FLOW,CLOSE_OUTLINE,COFFEE_OUTLINE,CONTACTS,DELETE_EMPTY,EARTH_BOX,EARTH_BOX_OFF,EMAIL_ALERT,EYE_OUTLINE,EYE_OFF_OUTLINE,FAST_FORWARD_OUTLINE,FEATHER,FIND_REPLACE,FLASH_OUTLINE,FORMAT_FONT,FORMAT_PAGE_BREAK,FORMAT_PILCROW,GARAGE,GARAGE_OPEN,GITHUB_FACE,GOOGLE_KEEP,GOOGLE_PHOTOS,HEART_HALF_FULL,HEART_HALF,HEART_HALF_OUTLINE,HEXAGON_MULTIPLE,HOOK,HOOK_OFF,INFINITY,LANGUAGE_SWIFT,LANGUAGE_TYPESCRIPT,LAPTOP_OFF,LIGHTBULB_ON,LIGHTBULB_ON_OUTLINE,LOCK_PATTERN,LOOP,MAGNIFY_MINUS_OUTLINE,MAGNIFY_PLUS_OUTLINE,MAILBOX,MEDICAL_BAG,MESSAGE_SETTINGS,MESSAGE_SETTINGS_VARIANT,MINUS_BOX_OUTLINE,NETWORK,DOWNLOAD_NETWORK,HELP_NETWORK,UPLOAD_NETWORK,NPM,NUT,OCTAGRAM,PAGE_LAYOUT_BODY,PAGE_LAYOUT_FOOTER,PAGE_LAYOUT_HEADER,PAGE_LAYOUT_SIDEBAR_LEFT,PAGE_LAYOUT_SIDEBAR_RIGHT,PENCIL_CIRCLE,PENTAGON,PENTAGON_OUTLINE,PILLAR,PISTOL,PLUS_BOX_OUTLINE,PLUS_OUTLINE,PRESCRIPTION,PRINTER_SETTINGS,REACT,RESTART,REWIND_OUTLINE,RHOMBUS,RHOMBUS_OUTLINE,ROBOT_VACUUM,RUN,SEARCH_WEB,SHOVEL,SHOVEL_OFF,SIGNAL_2G,SIGNAL_3G,SIGNAL_4G,SIGNAL_HSPA,SIGNAL_HSPA_PLUS,SNOWFLAKE,SOURCE_COMMIT,SOURCE_COMMIT_END,SOURCE_COMMIT_END_LOCAL,SOURCE_COMMIT_LOCAL,SOURCE_COMMIT_NEXT_LOCAL,SOURCE_COMMIT_START,SOURCE_COMMIT_START_NEXT_LOCAL,SPEAKER_WIRELESS,STADIUM,SVG,TAG_PLUS,TAG_REMOVE,TICKET_PERCENT,TILDE,TREASURE_CHEST,TRUCK_TRAILER,VIEW_PARALLEL,VIEW_SEQUENTIAL,WASHING_MACHINE,WEBPACK,WIDGETS,WIIU,ARROW_DOWN_BOLD,ARROW_DOWN_BOLD_BOX,ARROW_DOWN_BOLD_BOX_OUTLINE,ARROW_LEFT_BOLD,ARROW_LEFT_BOLD_BOX,ARROW_LEFT_BOLD_BOX_OUTLINE,ARROW_RIGHT_BOLD,ARROW_RIGHT_BOLD_BOX,ARROW_RIGHT_BOLD_BOX_OUTLINE,ARROW_UP_BOLD,ARROW_UP_BOLD_BOX,ARROW_UP_BOLD_BOX_OUTLINE,CANCEL,FILE_ACCOUNT,GESTURE_DOUBLE_TAP,GESTURE_SWIPE_DOWN,GESTURE_SWIPE_LEFT,GESTURE_SWIPE_RIGHT,GESTURE_SWIPE_UP,GESTURE_TAP,GESTURE_TWO_DOUBLE_TAP,GESTURE_TWO_TAP,HUMBLE_BUNDLE,KICKSTARTER,NETFLIX,ONENOTE,PERISCOPE,UBER,VECTOR_RADIUS,XBOX_CONTROLLER_BATTERY_ALERT,XBOX_CONTROLLER_BATTERY_EMPTY,XBOX_CONTROLLER_BATTERY_FULL,XBOX_CONTROLLER_BATTERY_LOW,XBOX_CONTROLLER_BATTERY_MEDIUM,XBOX_CONTROLLER_BATTERY_UNKNOWN,CLIPBOARD_PLUS,FILE_PLUS,FORMAT_ALIGN_BOTTOM,FORMAT_ALIGN_MIDDLE,FORMAT_ALIGN_TOP,FORMAT_LIST_CHECKS,FORMAT_QUOTE_OPEN,GRID_LARGE,HEART_OFF,MUSIC,MUSIC_OFF,TAB_PLUS,VOLUME_PLUS,VOLUME_MINUS,VOLUME_MUTE,UNFOLD_LESS_VERTICAL,UNFOLD_MORE_VERTICAL,TACO,SQUARE_OUTLINE,SQUARE,CIRCLE,CIRCLE_OUTLINE,ALERT_OCTAGRAM,ATOM,CEILING_LIGHT,CHART_BAR_STACKED,CHART_LINE_STACKED,DECAGRAM,DECAGRAM_OUTLINE,DICE_MULTIPLE,DICE_D10,FOLDER_OPEN,GUITAR_ACOUSTIC,LOADING,LOCK_RESET,NINJA,OCTAGRAM_OUTLINE,PENCIL_CIRCLE_OUTLINE,SELECTION_OFF,SET_ALL,SET_CENTER,SET_CENTER_RIGHT,SET_LEFT,SET_LEFT_CENTER,SET_LEFT_RIGHT,SET_NONE,SET_RIGHT,SHIELD_HALF_FULL,SIGN_DIRECTION,SIGN_TEXT,SIGNAL_OFF,SQUARE_ROOT,STICKER_EMOJI,SUMMIT,SWORD_CROSS,TRUCK_FAST,YAMMER,CAST_OFF,HELP_BOX,TIMER_SAND_FULL,WAVES,ALARM_BELL,ALARM_LIGHT,ANDROID_HEAD,APPROVAL,ARROW_COLLAPSE_DOWN,ARROW_COLLAPSE_LEFT,ARROW_COLLAPSE_RIGHT,ARROW_COLLAPSE_UP,ARROW_EXPAND_DOWN,ARROW_EXPAND_LEFT,ARROW_EXPAND_RIGHT,ARROW_EXPAND_UP,BOOK_SECURE,BOOK_UNSECURE,BUS_ARTICULATED_END,BUS_ARTICULATED_FRONT,BUS_DOUBLE_DECKER,BUS_SCHOOL,BUS_SIDE,CAMERA_GOPRO,CAMERA_METERING_CENTER,CAMERA_METERING_MATRIX,CAMERA_METERING_PARTIAL,CAMERA_METERING_SPOT,CANNABIS,CAR_CONVERTIBLE,CAR_ESTATE,CAR_HATCHBACK,CAR_PICKUP,CAR_SIDE,CAR_SPORTS,CARAVAN,CCTV,CHART_DONUT,CHART_DONUT_VARIANT,CHART_LINE_VARIANT,CHILI_HOT,CHILI_MEDIUM,CHILI_MILD,CLOUD_BRACES,CLOUD_TAGS,CONSOLE_LINE,CORN,CURRENCY_CHF,CURRENCY_CNY,CURRENCY_ETH,CURRENCY_JPY,CURRENCY_KRW,CURRENCY_SIGN,CURRENCY_TWD,DESKTOP_CLASSIC,DIP_SWITCH,DONKEY,DOTS_HORIZONTAL_CIRCLE,DOTS_VERTICAL_CIRCLE,EAR_HEARING,ELEPHANT,EVENTBRITE,FOOD_CROISSANT,FORKLIFT,FUEL,GESTURE,GOOGLE_ANALYTICS,GOOGLE_ASSISTANT,HEADPHONES_OFF,HIGH_DEFINITION,HOME_ASSISTANT,HOME_AUTOMATION,HOME_CIRCLE,LANGUAGE_GO,LANGUAGE_R,LAVA_LAMP,LED_STRIP,LOCKER,LOCKER_MULTIPLE,MAP_MARKER_OUTLINE,METRONOME,METRONOME_TICK,MICRO_SD,MIXER,MOVIE_ROLL,MUSHROOM,MUSHROOM_OUTLINE,NINTENDO_SWITCH,NULL_ICON,PASSPORT,PERIODIC_TABLE_CO2,PIPE,PIPE_DISCONNECTED,POWER_SOCKET_EU,POWER_SOCKET_UK,POWER_SOCKET_US,RICE,RING,SASS,SEND_SECURE,SOY_SAUCE,STANDARD_DEFINITION,SURROUND_SOUND_2_0,SURROUND_SOUND_3_1,SURROUND_SOUND_5_1,SURROUND_SOUND_7_1,TELEVISION_CLASSIC,TEXTBOX_PASSWORD,THOUGHT_BUBBLE,THOUGHT_BUBBLE_OUTLINE,TRACKPAD,ULTRA_HIGH_DEFINITION,VAN_PASSENGER,VAN_UTILITY,VANISH,VIDEO_3D,WALL,XMPP,ACCOUNT_MULTIPLE_PLUS_OUTLINE,ACCOUNT_PLUS_OUTLINE,GOOGLE_ALLO,ARTIST,ATLASSIAN,AZURE,BASKETBALL,BATTERY_CHARGING_WIRELESS,BATTERY_CHARGING_WIRELESS_10,BATTERY_CHARGING_WIRELESS_20,BATTERY_CHARGING_WIRELESS_30,BATTERY_CHARGING_WIRELESS_40,BATTERY_CHARGING_WIRELESS_50,BATTERY_CHARGING_WIRELESS_60,BATTERY_CHARGING_WIRELESS_70,BATTERY_CHARGING_WIRELESS_80,BATTERY_CHARGING_WIRELESS_90,BATTERY_CHARGING_WIRELESS_ALERT,BATTERY_CHARGING_WIRELESS_OUTLINE,BITCOIN,BRIEFCASE_OUTLINE,CELLPHONE_WIRELESS,CLOVER,COMMENT_QUESTION,CONTENT_SAVE_OUTLINE,DELETE_RESTORE,DOOR,DOOR_CLOSED,DOOR_OPEN,FAN_OFF,FILE_PERCENT,FINANCE,FLASH_CIRCLE,FLOOR_PLAN,FORUM_OUTLINE,GOLF,GOOGLE_HOME,GUY_FAWKES_MASK,HOME_ACCOUNT,HOME_HEART,HOT_TUB,HULU,ICE_CREAM,IMAGE_OFF,KARATE,LADYBUG,NOTEBOOK,PHONE_RETURN,POKER_CHIP,SHAPE,SHAPE_OUTLINE,SHIP_WHEEL,SOCCER_FIELD,TABLE_COLUMN,TABLE_OF_CONTENTS,TABLE_ROW,TABLE_SETTINGS,TELEVISION_BOX,TELEVISION_CLASSIC_OFF,TELEVISION_OFF,TOWING,UPLOAD_MULTIPLE,VIDEO_4K_BOX,VIDEO_INPUT_ANTENNA,VIDEO_INPUT_COMPONENT,VIDEO_INPUT_HDMI,VIDEO_INPUT_SVIDEO,VIEW_DASHBOARD_VARIANT,VUEJS,XAMARIN,XAMARIN_OUTLINE,YOUTUBE_CREATOR_STUDIO,YOUTUBE_GAMING,ACCOUNT_GROUP,ACCUSOFT,AIRPORT,ARROW_COLLAPSE_HORIZONTAL,ARROW_COLLAPSE_VERTICAL,ARROW_EXPAND_HORIZONTAL,ARROW_EXPAND_VERTICAL,AUGMENTED_REALITY,BADMINTON,BASEBALL,BASEBALL_BAT,BOTTLE_WINE,CHECK_OUTLINE,CHECKBOX_INTERMEDIATE,CHESS_KING,CHESS_KNIGHT,CHESS_PAWN,CHESS_QUEEN,CHESS_ROOK,CHESS_BISHOP,CLIPBOARD_PULSE,CLIPBOARD_PULSE_OUTLINE,COMMENT_MULTIPLE,COMMENT_TEXT_MULTIPLE,COMMENT_TEXT_MULTIPLE_OUTLINE,CRANE,CURLING,CURRENCY_BDT,CURRENCY_KZT,DATABASE_SEARCH,DICE_D12,DOCKER,DOORBELL_VIDEO,ETHEREUM,EYE_PLUS,EYE_PLUS_OUTLINE,EYE_SETTINGS,EYE_SETTINGS_OUTLINE,FILE_QUESTION,FOLDER_NETWORK,FUNCTION_VARIANT,GARAGE_ALERT,GAUGE_EMPTY,GAUGE_FULL,GAUGE_LOW,GLASS_WINE,GRAPHQL,HIGH_DEFINITION_BOX,HOCKEY_PUCK,HOCKEY_STICKS,HOME_ALERT,IMAGE_PLUS,JQUERY,LIFEBUOY,MIXED_REALITY,NATIVESCRIPT,ONEPASSWORD,PATREON,PAYPAL,PEACE,PHONE_ROTATE_LANDSCAPE,PHONE_ROTATE_PORTRAIT,PIER,PIER_CRANE,PIPE_LEAK,PISTON,PLAY_NETWORK,REMINDER,ROOM_SERVICE,SALESFORCE,SECURITY_ACCOUNT,TEACH,THERMOSTAT_BOX,TRACTOR,VECTOR_ELLIPSE,VIRTUAL_REALITY,WATCH_EXPORT_VARIANT,WATCH_IMPORT_VARIANT,WATCH_VARIANT,WEATHER_HURRICANE,ACCOUNT_HEART,ALIEN,ANVIL,BATTERY_CHARGING_10,BATTERY_CHARGING_50,BATTERY_CHARGING_70,BATTERY_CHARGING_OUTLINE,BED_EMPTY,BORDER_ALL_VARIANT,BORDER_BOTTOM_VARIANT,BORDER_LEFT_VARIANT,BORDER_NONE_VARIANT,BORDER_RIGHT_VARIANT,BORDER_TOP_VARIANT,CALENDAR_EDIT,CLIPBOARD_CHECK_OUTLINE,CONSOLE_NETWORK,FILE_COMPARE,FIRE_TRUCK,FOLDER_KEY,FOLDER_KEY_NETWORK,GPU,HOME_CURRENCY_USD,INBOX_MULTIPLE,LANGUAGE_LUA,LOCK_SMART,MICROPHONE_MINUS,MICROPHONE_PLUS,PALETTE_SWATCH,PERIODIC_TABLE,PICKAXE,QRCODE_EDIT,REMOTE_DESKTOP,SAUSAGE,SETTINGS_OUTLINE,SIGNAL_CELLULAR_1,SIGNAL_CELLULAR_2,SIGNAL_CELLULAR_3,SIGNAL_CELLULAR_OUTLINE,SSH,SWAP_HORIZONTAL_VARIANT,SWAP_VERTICAL_VARIANT,TOOTH,TRAIN_VARIANT,ACCOUNT_MULTIPLE_CHECK,AMAZON_ALEXA,ARCH,AXE,BULLSEYE_ARROW,BUS_CLOCK,CAMERA_ACCOUNT,CAMERA_IMAGE,CAR_LIMOUSINE,CARDS_CLUB,CARDS_DIAMOND,CARDS_HEART,CARDS_SPADE,CELLPHONE_TEXT,CELLPHONE_MESSAGE,CHART_MULTILINE,CIRCLE_EDIT_OUTLINE,COGS,CREDIT_CARD_SETTINGS,DEATH_STAR,DEATH_STAR_VARIANT,DEBIAN,FEDORA,FILE_UNDO,FLOOR_LAMP,FOLDER_EDIT,FORMAT_COLUMNS,FREEBSD,GATE_AND,GATE_NAND,GATE_NOR,GATE_NOT,GATE_OR,GATE_XNOR,GATE_XOR,GENTOO,GLOBE_MODEL,HAMMER,HOME_LOCK,HOME_LOCK_OPEN,LINUX_MINT,LOCK_ALERT,LOCK_QUESTION,MAP_MARKER_DISTANCE,MIDI,MIDI_PORT,NAS,NETWORK_STRENGTH_1,NETWORK_STRENGTH_1_ALERT,NETWORK_STRENGTH_2,NETWORK_STRENGTH_2_ALERT,NETWORK_STRENGTH_3,NETWORK_STRENGTH_3_ALERT,NETWORK_STRENGTH_4,NETWORK_STRENGTH_4_ALERT,NETWORK_STRENGTH_OFF,NETWORK_STRENGTH_OFF_OUTLINE,NETWORK_STRENGTH_OUTLINE,PLAY_SPEED,PLAYLIST_EDIT,POWER_CYCLE,POWER_OFF,POWER_ON,POWER_SLEEP,POWER_SOCKET_AU,POWER_STANDBY,RABBIT,ROBOT_VACUUM_VARIANT,SATELLITE_UPLINK,SCANNER_OFF,SLACKWARE,SQUARE_EDIT_OUTLINE,STEAM_BOX,STEERING_OFF,TABLE_SEARCH,TAG_MINUS,TEST_TUBE_EMPTY,TEST_TUBE_OFF,TICKET_OUTLINE,TRACK_LIGHT,TRANSITION,TRANSITION_MASKED,TUMBLE_DRYER,TUMBLR_BOX,VIDEO_ACCOUNT,VIDEO_IMAGE,VIDEO_STABILIZATION,WALL_SCONCE,WALL_SCONCE_FLAT,WALL_SCONCE_VARIANT,WIFI_STRENGTH_1,WIFI_STRENGTH_1_ALERT,WIFI_STRENGTH_1_LOCK,WIFI_STRENGTH_2,WIFI_STRENGTH_2_ALERT,WIFI_STRENGTH_2_LOCK,WIFI_STRENGTH_3,WIFI_STRENGTH_3_ALERT,WIFI_STRENGTH_3_LOCK,WIFI_STRENGTH_4,WIFI_STRENGTH_4_ALERT,WIFI_STRENGTH_4_LOCK,WIFI_STRENGTH_ALERT_OUTLINE,WIFI_STRENGTH_LOCK_OUTLINE,WIFI_STRENGTH_OFF,WIFI_STRENGTH_OFF_OUTLINE,WIFI_STRENGTH_OUTLINE,PIN_OFF_OUTLINE,PIN_OUTLINE,SHARE_OUTLINE,TRACKPAD_LOCK}; public static final int ANDROID_ACTIONBAR_ICON_SIZE_DP = 24; private final Context context; - private IconValue icon = null; + private Integer icon = null; private TextPaint paint; @@ -49,7 +51,8 @@ public static enum IconValue {VECTOR_SQUARE,ACCESS_POINT,ACCESS_POINT_NETWORK,AC * * @param context Your activity or application context. */ - private MaterialDrawableBuilder(Context context) { + private MaterialDrawableBuilder(Context context) + { this.context = context; //this.icon = icon; paint = new TextPaint(); @@ -62,30 +65,48 @@ private MaterialDrawableBuilder(Context context) { setToActionbarSize(); setColor(Color.BLACK); + + // Instantiate so hashmap is filled up + new MaterialIconValues(context); } - public static MaterialDrawableBuilder with(Context context){ + public static MaterialDrawableBuilder with(Context context) + { return new MaterialDrawableBuilder(context); } - public Drawable build() throws IconNotSetException{ - if(icon == null){ + public Drawable build() throws IconNotSetException + { + if (icon == null) + { throw new IconNotSetException(); } return new MaterialDrawable(icon, paint, size, alpha); } - public MaterialDrawableBuilder setIcon(IconValue iconValue){ + public MaterialDrawableBuilder setIcon(Integer iconValue) + { icon = iconValue; return this; } + public MaterialDrawableBuilder setIcon(String name) + { + if (MaterialIconValues.iconExists(name)) + icon = MaterialIconValues.getValueByName(name); + else + icon = MaterialIconValues.getValueByName("close_box"); + return this; + } + + /** * Set the size of this icon to the standard Android ActionBar. * * @return The current IconDrawable for chaining. */ - public MaterialDrawableBuilder setToActionbarSize() { + public MaterialDrawableBuilder setToActionbarSize() + { return setSizeDp(ANDROID_ACTIONBAR_ICON_SIZE_DP); } @@ -95,7 +116,8 @@ public MaterialDrawableBuilder setToActionbarSize() { * @param dimenRes The dimension resource. * @return The current IconDrawable for chaining. */ - public MaterialDrawableBuilder setSizeResource(int dimenRes) { + public MaterialDrawableBuilder setSizeResource(int dimenRes) + { return setSizePx(context.getResources().getDimensionPixelSize(dimenRes)); } @@ -105,7 +127,8 @@ public MaterialDrawableBuilder setSizeResource(int dimenRes) { * @param size The size in density-independent pixels (dp). * @return The current IconDrawable for chaining. */ - public MaterialDrawableBuilder setSizeDp(int size) { + public MaterialDrawableBuilder setSizeDp(int size) + { return setSizePx(MaterialIconUtils.convertDpToPx(context, size)); } @@ -115,7 +138,8 @@ public MaterialDrawableBuilder setSizeDp(int size) { * @param size The size in pixels (px). * @return The current IconDrawable for chaining. */ - public MaterialDrawableBuilder setSizePx(int size) { + public MaterialDrawableBuilder setSizePx(int size) + { this.size = size; bounds.set(0, 0, size, size); return this; @@ -127,7 +151,8 @@ public MaterialDrawableBuilder setSizePx(int size) { * @param color The color, usually from android.graphics.Color or 0xFF012345. * @return The current IconDrawable for chaining. */ - public MaterialDrawableBuilder setColor(int color) { + public MaterialDrawableBuilder setColor(int color) + { paint.setColor(color); setAlpha(Color.alpha(color)); return this; @@ -139,28 +164,33 @@ public MaterialDrawableBuilder setColor(int color) { * @param colorRes The color resource, from your R file. * @return The current IconDrawable for chaining. */ - public MaterialDrawableBuilder setColorResource(int colorRes) { + public MaterialDrawableBuilder setColorResource(int colorRes) + { setColor(context.getResources().getColor(colorRes)); return this; } - public MaterialDrawableBuilder setAlpha(int alpha) { + public MaterialDrawableBuilder setAlpha(int alpha) + { this.alpha = alpha; paint.setAlpha(alpha); return this; } - public MaterialDrawableBuilder setColorFilter(ColorFilter cf) { + public MaterialDrawableBuilder setColorFilter(ColorFilter cf) + { paint.setColorFilter(cf); return this; } - public MaterialDrawableBuilder clearColorFilter() { + public MaterialDrawableBuilder clearColorFilter() + { paint.setColorFilter(null); return this; } - public int getOpacity() { + public int getOpacity() + { return this.alpha; } @@ -169,13 +199,23 @@ public int getOpacity() { * * @param style to be applied */ - public MaterialDrawableBuilder setStyle(Paint.Style style) { + public MaterialDrawableBuilder setStyle(Paint.Style style) + { paint.setStyle(style); return this; } - private class IconNotSetException extends RuntimeException { - public IconNotSetException() { + public MaterialDrawableBuilder setIconByName(String iconname) + { + + setIcon(MaterialIconValues.getValueByName(iconname)); + return this; + } + + private class IconNotSetException extends RuntimeException + { + public IconNotSetException() + { this("No icon provided when building MaterialDrawable."); } @@ -195,8 +235,9 @@ public IconNotSetException(String message, Throwable cause) } } - private class MaterialDrawable extends Drawable { - private IconValue icon; + private class MaterialDrawable extends Drawable + { + private Integer icon; private TextPaint paint; private int size = -1; private int alpha = 255; @@ -204,9 +245,10 @@ private class MaterialDrawable extends Drawable { /** * Create a MaterialDrawable. * - * @param icon The icon you want this drawable to display. + * @param icon The icon you want this drawable to display. */ - public MaterialDrawable(IconValue icon, TextPaint paint, int size, int alpha) { + public MaterialDrawable(Integer icon, TextPaint paint, int size, int alpha) + { this.icon = icon; this.paint = paint; this.setSizePx(size); @@ -221,7 +263,8 @@ public MaterialDrawable(IconValue icon, TextPaint paint, int size, int alpha) { * @param size The size in pixels (px). * @return The current IconDrawable for chaining. */ - public MaterialDrawable setSizePx(int size) { + public MaterialDrawable setSizePx(int size) + { this.size = size; setBounds(0, 0, size, size); invalidateSelf(); @@ -242,25 +285,29 @@ public MaterialDrawable setTextPaint(TextPaint p){ }*/ @Override - public int getIntrinsicHeight() { + public int getIntrinsicHeight() + { return size; } @Override - public int getIntrinsicWidth() { + public int getIntrinsicWidth() + { return size; } private final Rect mCachedRect = new Rect(); + @Override - public void draw(Canvas canvas) { + public void draw(Canvas canvas) + { // Center drawable within available bounds int boundsWidth = getBounds().width(); int boundsHeight = getBounds().height(); int dimen = Math.min(boundsWidth, boundsHeight); paint.setTextSize(dimen); - String textValue = MaterialIconUtils.getIconString(icon.ordinal()); + String textValue = MaterialIconUtils.getIconString(icon); paint.getTextBounds(textValue, 0, 1, mCachedRect); float textBottom = getBounds().top + (boundsHeight - mCachedRect.height()) / 2f + mCachedRect.height() - mCachedRect.bottom; @@ -268,12 +315,14 @@ public void draw(Canvas canvas) { } @Override - public boolean isStateful() { + public boolean isStateful() + { return true; } @Override - public boolean setState(int[] stateSet) { + public boolean setState(int[] stateSet) + { int oldValue = paint.getAlpha(); int newValue = alpha;//Utils.isEnabled(stateSet) ? alpha : alpha / 2; paint.setAlpha(newValue); @@ -281,23 +330,27 @@ public boolean setState(int[] stateSet) { } @Override - public void setAlpha(int alpha) { + public void setAlpha(int alpha) + { this.alpha = alpha; paint.setAlpha(alpha); } @Override - public void setColorFilter(ColorFilter cf) { + public void setColorFilter(ColorFilter cf) + { paint.setColorFilter(cf); } @Override - public void clearColorFilter() { + public void clearColorFilter() + { paint.setColorFilter(null); } @Override - public int getOpacity() { + public int getOpacity() + { return PixelFormat.UNKNOWN; } @@ -306,7 +359,8 @@ public int getOpacity() { * * @param style to be applied */ - public void setStyle(Paint.Style style) { + public void setStyle(Paint.Style style) + { paint.setStyle(style); } diff --git a/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconUtils.java b/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconUtils.java index 8904eb9..a878376 100644 --- a/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconUtils.java +++ b/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconUtils.java @@ -9,32 +9,41 @@ /** * Created by Wannes2 on 19/07/2015. */ -public class MaterialIconUtils { +public class MaterialIconUtils +{ private static final String mFontPath = "materialdesignicons-webfont.ttf"; private static Typeface materialFont; - private MaterialIconUtils() { + private MaterialIconUtils() + { // Prevents instantiation } - static Typeface getTypeFace(Context context){ - if(materialFont == null) materialFont = Typeface.createFromAsset(context.getAssets(), mFontPath); + static Typeface getTypeFace(Context context) + { + if (materialFont == null) + materialFont = Typeface.createFromAsset(context.getAssets(), mFontPath); return materialFont; } - static int convertDpToPx(Context context, float dp) { + static int convertDpToPx(Context context, float dp) + { return (int) applyDimension(COMPLEX_UNIT_DIP, dp, - context.getResources().getDisplayMetrics()); + context.getResources().getDisplayMetrics()); } - public static String getIconString(int iconIndex){ - return new String(Character.toChars(0xF001 + iconIndex)); + public static String getIconString(int iconIndex) + { + return new String(Character.toChars(iconIndex)); } - public static int getColorResource(Context context, int colorResource){ - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { + public static int getColorResource(Context context, int colorResource) + { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) + { return context.getResources().getColor(colorResource, context.getTheme()); - }else{ + } else + { return context.getResources().getColor(colorResource); } } diff --git a/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconValues.java b/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconValues.java new file mode 100644 index 0000000..d6b95ae --- /dev/null +++ b/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconValues.java @@ -0,0 +1,102 @@ +package net.steamcrafted.materialiconlib; + +import android.content.Context; +import android.content.res.TypedArray; +import android.content.res.XmlResourceParser; +import android.util.Log; + +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlPullParserFactory; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Collection; +import java.util.HashMap; + +public class MaterialIconValues +{ + + static protected HashMap mIconValues; + Context mContext; + static protected boolean mHashInitialized = false; + + static + { + mIconValues = new HashMap<>(); + } + + public MaterialIconValues(Context context) + { + mContext = context; + if (!mHashInitialized) + { + try + { + final XmlResourceParser parser = context.getResources().getXml(R.xml.icons); + int eventType = parser.getEventType(); + while (eventType != XmlPullParser.END_DOCUMENT) + { + if (eventType == XmlPullParser.START_DOCUMENT) + { + + Log.d("XML parsing", "In start document"); + } else if (eventType == XmlPullParser.START_TAG) + { + Log.d("XML parsing", "In start tag = " + parser.getName()); + if ("enum".equals(parser.getName())) + { + String s = parser.getAttributeValue(null, "name"); + String sv = parser.getAttributeValue(null, "value"); + Integer i = Integer.parseInt(sv, 16); + + mIconValues.put(s, i); + Log.d("XML parsing", "Name is = " + parser.getAttributeValue(null, "name")); + } + } else if (eventType == XmlPullParser.END_TAG) + { + Log.d("XML parsing", "In end tag = " + parser.getName()); + + } else if (eventType == XmlPullParser.TEXT) + { + Log.d("XML parsing", "Have text = " + parser.getAttributeValue(7)); + } + eventType = parser.next(); + + } + } catch (IOException | XmlPullParserException e) + { + e.printStackTrace(); + } + mHashInitialized = true; + } + } + + + static public Integer get(Integer i) + { + return (Integer) mIconValues.values().toArray()[i]; + } + + static public Integer size() + { + return mIconValues.size(); + } + + static public String getName(Integer i) + { + return (String) mIconValues.keySet().toArray()[i]; + } + + public static Integer getValueByName(String name) + { + return mIconValues.get(name); + } + + public static boolean iconExists(String name) + { + return (mIconValues.get(name) != null ? true : false); + } +} + + diff --git a/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconView.java b/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconView.java index 8b858e3..f110a8a 100644 --- a/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconView.java +++ b/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialIconView.java @@ -12,35 +12,58 @@ /** * Created by Wannes2 on 21/07/2015. */ -public class MaterialIconView extends ImageView { +public class MaterialIconView extends ImageView +{ private MaterialDrawableBuilder mBuilder; private Drawable mDrawable; - private MaterialDrawableBuilder.IconValue mIcon; + private Integer mIcon; private int mOverruledSize = -1; private static final int ACTIONBAR_HEIGHT_DP = 24; - public MaterialIconView(Context context) { + private static Context mContext; + + + static public Context myContext() + { + return mContext; + } + + public MaterialIconView(Context context) + { super(context); init(); + mContext = context; + // Instantiate so hashmap is filled up + new MaterialIconValues(context); } - public MaterialIconView(Context context, AttributeSet attrs) { + public MaterialIconView(Context context, AttributeSet attrs) + { super(context, attrs); init(context, attrs); + mContext = context; + // Instantiate so hashmap is filled up + new MaterialIconValues(context); } - public MaterialIconView(Context context, AttributeSet attrs, int defStyle) { + public MaterialIconView(Context context, AttributeSet attrs, int defStyle) + { super(context, attrs, defStyle); init(context, attrs); + mContext = context; + // Instantiate so hashmap is filled up + new MaterialIconValues(context); } @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - if(mDrawable == null){ + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) + { + if (mDrawable == null) + { int size = MaterialIconUtils.convertDpToPx(getContext(), 24); final int width = MeasureSpec.getMode(widthMeasureSpec); final int height = MeasureSpec.getMode(heightMeasureSpec); @@ -48,72 +71,96 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int paddinghori = getPaddingLeft() + getPaddingRight(); int paddingvert = getPaddingTop() + getPaddingBottom(); - if(width == MeasureSpec.UNSPECIFIED && height == MeasureSpec.UNSPECIFIED){ + if (width == MeasureSpec.UNSPECIFIED && height == MeasureSpec.UNSPECIFIED) + { // do nothing, just default 24 dp size - }else if(width == MeasureSpec.UNSPECIFIED){ + } else if (width == MeasureSpec.UNSPECIFIED) + { size = MeasureSpec.getSize(heightMeasureSpec) - paddingvert; - }else if(height == MeasureSpec.UNSPECIFIED){ + } else if (height == MeasureSpec.UNSPECIFIED) + { size = MeasureSpec.getSize(widthMeasureSpec) - paddinghori; - }else{ + } else + { size = Math.min(MeasureSpec.getSize(heightMeasureSpec) - paddingvert, MeasureSpec.getSize(widthMeasureSpec) - paddinghori); } size = Math.max(0, size); super.onMeasure(widthMeasureSpec, heightMeasureSpec); regenerateDrawable(); - }else{ + } else + { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } - private void init(){ + private void init() + { mBuilder = MaterialDrawableBuilder.with(getContext()); } - private void init(Context context, AttributeSet attrs){ + private void init(Context context, AttributeSet attrs) + { init(); TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MaterialIconViewFormat); - try { + try + { int type = array.getInt(R.styleable.MaterialIconViewFormat_materialIcon, 0); - if(type >= 0) setIcon(type); - } catch (Exception e){ + if (type >= 0) setIcon(type); + } catch (Exception e) + { } - try { + try + { int color = array.getColor(R.styleable.MaterialIconViewFormat_materialIconColor, Color.BLACK); setColor(color); - } catch (Exception e){ + } catch (Exception e) + { } - try { + try + { int size = array.getDimensionPixelSize(R.styleable.MaterialIconViewFormat_materialIconSize, -1); - if(size >= 0) setSizePx(size); - } catch (Exception e){ + if (size >= 0) setSizePx(size); + } catch (Exception e) + { } array.recycle(); } - private void setIcon(int iconIndex){ - setIcon(MaterialDrawableBuilder.IconValue.values()[iconIndex]); -} + private void setIcon(int iconIndex) + { + setIcon((Integer) iconIndex); + } - public void setIcon(MaterialDrawableBuilder.IconValue iconValue){ + public void setIcon(Integer iconValue) + { mIcon = iconValue; mBuilder.setIcon(iconValue); regenerateDrawable(); } + public void setIcon(String name) + { + if (MaterialIconValues.iconExists(name)) + setIcon(MaterialIconValues.getValueByName(name)); + else + setIcon(MaterialIconValues.getValueByName("close_box")); + } + /** * Set the size of this icon to the standard Android ActionBar. */ - public void setToActionbarSize() { + public void setToActionbarSize() + { setSizeDp(ACTIONBAR_HEIGHT_DP); } @@ -122,7 +169,8 @@ public void setToActionbarSize() { * * @param dimenRes The dimension resource. */ - public void setSizeResource(int dimenRes) { + public void setSizeResource(int dimenRes) + { mBuilder.setSizeResource(dimenRes); mOverruledSize = (getContext().getResources().getDimensionPixelSize(dimenRes)); regenerateDrawable(); @@ -133,7 +181,8 @@ public void setSizeResource(int dimenRes) { * * @param size The size in density-independent pixels (dp). */ - public void setSizeDp(int size) { + public void setSizeDp(int size) + { mBuilder.setSizeDp(size); mOverruledSize = MaterialIconUtils.convertDpToPx(getContext(), size); regenerateDrawable(); @@ -144,7 +193,8 @@ public void setSizeDp(int size) { * * @param size The size in pixels (px). */ - public void setSizePx(int size) { + public void setSizePx(int size) + { mBuilder.setSizePx(size); mOverruledSize = size; regenerateDrawable(); @@ -155,7 +205,8 @@ public void setSizePx(int size) { * * @param color The color, usually from android.graphics.Color or 0xFF012345. */ - public void setColor(int color) { + public void setColor(int color) + { mBuilder.setColor(color); regenerateDrawable(); } @@ -165,7 +216,8 @@ public void setColor(int color) { * * @param colorRes The color resource, from your R file. */ - public void setColorResource(int colorRes) { + public void setColorResource(int colorRes) + { mBuilder.setColorResource(colorRes); regenerateDrawable(); } @@ -175,20 +227,24 @@ public void setColorResource(int colorRes) { * * @param style to be applied */ - public void setStyle(Paint.Style style) { + public void setStyle(Paint.Style style) + { mBuilder.setStyle(style); regenerateDrawable(); } - private void regenerateDrawable(){ - if(mIcon != null){ + private void regenerateDrawable() + { + if (mIcon != null) + { mDrawable = mBuilder.build(); super.setImageDrawable(mDrawable); } } @Override - protected void onDraw(Canvas canvas) { + protected void onDraw(Canvas canvas) + { if (getWidth() == 0 || getHeight() == 0) return; int scaledWidth = getMeasuredWidth(); @@ -196,19 +252,25 @@ protected void onDraw(Canvas canvas) { int scaleddimen = (mOverruledSize >= 0) ? mOverruledSize : Math.min(scaledHeight, scaledWidth); boolean redraw = false; - if(mDrawable == null){ + if (mDrawable == null) + { redraw = true; - }else{ + } else + { int initialdimen = Math.min(mDrawable.getIntrinsicHeight(), mDrawable.getIntrinsicHeight()); - if(initialdimen != scaleddimen){ + if (initialdimen != scaleddimen) + { redraw = true; } } - if(redraw){ - if(mOverruledSize >= 0){ + if (redraw) + { + if (mOverruledSize >= 0) + { mBuilder.setSizePx(mOverruledSize); - }else{ + } else + { mBuilder.setSizePx(scaleddimen); } regenerateDrawable(); @@ -217,5 +279,4 @@ protected void onDraw(Canvas canvas) { super.onDraw(canvas); } - } \ No newline at end of file diff --git a/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialMenuInflater.java b/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialMenuInflater.java index e036e56..4bfca71 100644 --- a/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialMenuInflater.java +++ b/materialiconlib/src/main/java/net/steamcrafted/materialiconlib/MaterialMenuInflater.java @@ -21,14 +21,21 @@ import java.util.ArrayList; import java.util.List; -public class MaterialMenuInflater { - /** Menu tag name in XML. */ +public class MaterialMenuInflater +{ + /** + * Menu tag name in XML. + */ private static final String XML_MENU = "menu"; - /** Group tag name in XML. */ + /** + * Group tag name in XML. + */ private static final String XML_GROUP = "group"; - /** Item tag name in XML. */ + /** + * Item tag name in XML. + */ private static final String XML_ITEM = "item"; private final Context mContext; @@ -40,31 +47,38 @@ public class MaterialMenuInflater { * * @see Activity#getMenuInflater() */ - private MaterialMenuInflater(Context context, MenuInflater inflater) { + private MaterialMenuInflater(Context context, MenuInflater inflater) + { mContext = context; mInflater = inflater; mDefaultColor = getDefaultColor(); + // Instantiate so hashmap is filled up + new MaterialIconValues(context); } - public static MaterialMenuInflater with(Context context){ + public static MaterialMenuInflater with(Context context) + { return new MaterialMenuInflater( context, context instanceof Activity ? - ((Activity)context).getMenuInflater() + ((Activity) context).getMenuInflater() : new MenuInflater(context) ); } - public static MaterialMenuInflater with(Context context, MenuInflater inflater){ + public static MaterialMenuInflater with(Context context, MenuInflater inflater) + { return new MaterialMenuInflater(context, inflater); } - public MaterialMenuInflater setDefaultColor(int color){ + public MaterialMenuInflater setDefaultColor(int color) + { mDefaultColor = color; return this; } - public MaterialMenuInflater setDefaultColorResource(int colorRes){ + public MaterialMenuInflater setDefaultColorResource(int colorRes) + { mDefaultColor = MaterialIconUtils.getColorResource(mContext, colorRes); return this; } @@ -74,11 +88,12 @@ public MaterialMenuInflater setDefaultColorResource(int colorRes){ * {@link InflateException} if there is an error. * * @param menuRes Resource ID for an XML layout resource to load (e.g., - * R.menu.main_activity)) - * @param menu The Menu to inflate into. The items and submenus will be - * added to this Menu. + * R.menu.main_activity)) + * @param menu The Menu to inflate into. The items and submenus will be + * added to this Menu. */ - public void inflate(int menuRes, Menu menu) { + public void inflate(int menuRes, Menu menu) + { menu.clear(); mInflater.inflate(menuRes, menu); @@ -86,19 +101,24 @@ public void inflate(int menuRes, Menu menu) { afterInflate(menuRes, menu); } - private void afterInflate(int menuRes, Menu menu){ + private void afterInflate(int menuRes, Menu menu) + { IconData root = new IconData(0, 0, 0); XmlResourceParser parser = null; - try { + try + { parser = mContext.getResources().getLayout(menuRes); AttributeSet attrs = Xml.asAttributeSet(parser); parseMenu(parser, attrs, root); - } catch (XmlPullParserException e) { + } catch (XmlPullParserException e) + { throw new InflateException("Error inflating menu XML", e); - } catch (IOException e) { + } catch (IOException e) + { throw new InflateException("Error inflating menu XML", e); - } finally { + } finally + { if (parser != null) parser.close(); // populate the menu with the parsed icons @@ -106,41 +126,49 @@ private void afterInflate(int menuRes, Menu menu){ } } - private int getDefaultColor(){ + private int getDefaultColor() + { TypedValue outValue = new TypedValue(); mContext.getTheme().resolveAttribute(R.attr.materialIconColor, outValue, true); // Colorstatelist/color resource - if(outValue.resourceId != 0 && outValue.type == TypedValue.TYPE_ATTRIBUTE){ + if (outValue.resourceId != 0 && outValue.type == TypedValue.TYPE_ATTRIBUTE) + { ColorStateList stateList = null; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) + { stateList = mContext.getResources().getColorStateList(outValue.resourceId, mContext.getTheme()); - }else{ + } else + { stateList = mContext.getResources().getColorStateList(outValue.resourceId); } - if(stateList != null) return stateList.getDefaultColor(); + if (stateList != null) return stateList.getDefaultColor(); } // Regular inline color int - if(outValue.type <= TypedValue.TYPE_LAST_COLOR_INT && outValue.type >= TypedValue.TYPE_FIRST_COLOR_INT){ + if (outValue.type <= TypedValue.TYPE_LAST_COLOR_INT && outValue.type >= TypedValue.TYPE_FIRST_COLOR_INT) + { return outValue.data; } return Color.BLACK; } - private void populateIcons(Menu menu, IconData root, int defaultIconColor) { - for(int i = 0; i < menu.size(); i++){ + private void populateIcons(Menu menu, IconData root, int defaultIconColor) + { + for (int i = 0; i < menu.size(); i++) + { MenuItem m = menu.getItem(i); IconData d = root.children.get(i); - if(m.hasSubMenu()){ + if (m.hasSubMenu()) + { populateIcons(m.getSubMenu(), d, defaultIconColor); } - if(d.itemIconResId >= 0) + if (d.itemIconResId >= 0) m.setIcon( MaterialDrawableBuilder.with(mContext) - .setIcon(MaterialDrawableBuilder.IconValue.values()[d.itemIconResId]) + .setIcon(d.itemIconResId) .setColor(d.itemColor != -1 ? d.itemColor : defaultIconColor) .setToActionbarSize() .build() @@ -153,7 +181,8 @@ private void populateIcons(Menu menu, IconData root, int defaultIconColor) { * call this recursively. */ private void parseMenu(XmlPullParser parser, AttributeSet attrs, IconData menu) - throws XmlPullParserException, IOException { + throws XmlPullParserException, IOException + { MenuState menuState = new MenuState(menu); int eventType = parser.getEventType(); @@ -162,10 +191,13 @@ private void parseMenu(XmlPullParser parser, AttributeSet attrs, IconData menu) String unknownTagName = null; // This loop will skip to the menu start tag - do { - if (eventType == XmlPullParser.START_TAG) { + do + { + if (eventType == XmlPullParser.START_TAG) + { tagName = parser.getName(); - if (tagName.equals(XML_MENU)) { + if (tagName.equals(XML_MENU)) + { // Go to next tag eventType = parser.next(); break; @@ -177,25 +209,32 @@ private void parseMenu(XmlPullParser parser, AttributeSet attrs, IconData menu) } while (eventType != XmlPullParser.END_DOCUMENT); boolean reachedEndOfMenu = false; - while (!reachedEndOfMenu) { - switch (eventType) { + while (!reachedEndOfMenu) + { + switch (eventType) + { case XmlPullParser.START_TAG: - if (lookingForEndOfUnknownTag) { + if (lookingForEndOfUnknownTag) + { break; } tagName = parser.getName(); - if (tagName.equals(XML_GROUP)) { + if (tagName.equals(XML_GROUP)) + { menuState.readGroup(attrs); - } else if (tagName.equals(XML_ITEM)) { + } else if (tagName.equals(XML_ITEM)) + { menuState.readItem(attrs); - } else if (tagName.equals(XML_MENU)) { + } else if (tagName.equals(XML_MENU)) + { // A menu start tag denotes a submenu for an item IconData subMenu = menuState.addSubMenuItem(); // Parse the submenu into returned SubMenu parseMenu(parser, attrs, subMenu); - } else { + } else + { lookingForEndOfUnknownTag = true; unknownTagName = tagName; } @@ -203,18 +242,23 @@ private void parseMenu(XmlPullParser parser, AttributeSet attrs, IconData menu) case XmlPullParser.END_TAG: tagName = parser.getName(); - if (lookingForEndOfUnknownTag && tagName.equals(unknownTagName)) { + if (lookingForEndOfUnknownTag && tagName.equals(unknownTagName)) + { lookingForEndOfUnknownTag = false; unknownTagName = null; - } else if (tagName.equals(XML_GROUP)) { + } else if (tagName.equals(XML_GROUP)) + { menuState.resetGroup(); - } else if (tagName.equals(XML_ITEM)) { + } else if (tagName.equals(XML_ITEM)) + { // Add the item if it hasn't been added (if the item was // a submenu, it would have been added already) - if (!menuState.hasAddedItem()) { + if (!menuState.hasAddedItem()) + { menuState.addItem(); } - } else if (tagName.equals(XML_MENU)) { + } else if (tagName.equals(XML_MENU)) + { reachedEndOfMenu = true; } break; @@ -227,13 +271,15 @@ private void parseMenu(XmlPullParser parser, AttributeSet attrs, IconData menu) } } - private class IconData { + private class IconData + { public int itemIconResId; public int itemColor; public int categoryOrder; public List children = new ArrayList<>(); - public IconData(int itemIconResId, int itemColor, int categoryOrder) { + public IconData(int itemIconResId, int itemColor, int categoryOrder) + { this.itemIconResId = itemIconResId; this.itemColor = itemColor; this.categoryOrder = categoryOrder; @@ -246,7 +292,8 @@ public IconData(int itemIconResId, int itemColor, int categoryOrder) { * Groups can not be nested unless there is another menu (which will have * its state class). */ - private class MenuState { + private class MenuState + { /** * This is the part of an order integer that the user can provide. @@ -296,13 +343,15 @@ private class MenuState { private IconData menu; - public MenuState(IconData menu) { + public MenuState(IconData menu) + { this.menu = menu; resetGroup(); } - public void resetGroup() { + public void resetGroup() + { groupCategory = defaultItemCategory; groupOrder = defaultItemOrder; } @@ -310,7 +359,8 @@ public void resetGroup() { /** * Called when the parser is pointing to a group tag. */ - public void readGroup(AttributeSet attrs) { + public void readGroup(AttributeSet attrs) + { TypedArray a = mContext.obtainStyledAttributes(attrs, net.steamcrafted.materialiconlib.R.styleable.MaterialMenuGroup); @@ -323,7 +373,8 @@ public void readGroup(AttributeSet attrs) { /** * Called when the parser is pointing to an item tag. */ - public void readItem(AttributeSet attrs) { + public void readItem(AttributeSet attrs) + { TypedArray a = mContext.getApplicationContext().obtainStyledAttributes(attrs, net.steamcrafted.materialiconlib.R.styleable.MaterialIconViewFormat); @@ -345,7 +396,8 @@ public void readItem(AttributeSet attrs) { itemAdded = false; } - public IconData addItem() { + public IconData addItem() + { itemAdded = true; final int ordering = getOrdering(categoryOrder); @@ -357,11 +409,13 @@ public IconData addItem() { return item; } - public IconData addSubMenuItem() { + public IconData addSubMenuItem() + { return addItem(); } - public boolean hasAddedItem() { + public boolean hasAddedItem() + { return itemAdded; } @@ -371,15 +425,17 @@ public boolean hasAddedItem() { * categories, and combine it with the lower bits. * * @param categoryOrder The category order for a particular item (if it has - * not been or/add with a category, the default category is - * assumed). + * not been or/add with a category, the default category is + * assumed). * @return An ordering integer that can be used to order this item across - * all the items (even from other categories). + * all the items (even from other categories). */ - private int getOrdering(int categoryOrder) { + private int getOrdering(int categoryOrder) + { final int index = (categoryOrder & CATEGORY_MASK) >> CATEGORY_SHIFT; - if (index < 0 || index >= sCategoryToOrder.length) { + if (index < 0 || index >= sCategoryToOrder.length) + { throw new IllegalArgumentException("order does not contain a valid category."); } @@ -387,10 +443,13 @@ private int getOrdering(int categoryOrder) { } - private int findInsertIndex(List items, int ordering) { - for (int i = items.size() - 1; i >= 0; i--) { + private int findInsertIndex(List items, int ordering) + { + for (int i = items.size() - 1; i >= 0; i--) + { IconData item = items.get(i); - if (item.categoryOrder <= ordering) { + if (item.categoryOrder <= ordering) + { return i + 1; } } diff --git a/materialiconlib/src/main/res/values/attrs.xml b/materialiconlib/src/main/res/values/attrs.xml index 7973b98..40ff308 100644 --- a/materialiconlib/src/main/res/values/attrs.xml +++ b/materialiconlib/src/main/res/values/attrs.xml @@ -1,2369 +1,4816 @@ - - + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/materialiconlib/src/main/res/xml/icons.xml b/materialiconlib/src/main/res/xml/icons.xml new file mode 100644 index 0000000..caf9d1e --- /dev/null +++ b/materialiconlib/src/main/res/xml/icons.xml @@ -0,0 +1,14389 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file