honghengqiang 3 years ago
parent
commit
8fa2315735
100 changed files with 2700 additions and 2947 deletions
  1. 1 0
      .idea/gradle.xml
  2. 9 0
      .idea/misc.xml
  3. 55 2939
      app/mapping.txt
  4. 13 0
      app/src/main/java/com/swago/app/SwagoApp.kt
  5. 1250 0
      app/src/main/java/com/swago/app/authpack.java
  6. 2 0
      baseswago/build.gradle
  7. 22 6
      baseswago/src/main/java/com/swago/baseswago/agora/AgoraManager.kt
  8. 3 0
      build.gradle
  9. 1 1
      lib_beauty/build.gradle
  10. 1 1
      lib_beauty/src/main/java/com/swago/lib_beauty/FURenderer.java
  11. 1 0
      lib_beautyui/.gitignore
  12. 45 0
      lib_beautyui/build.gradle
  13. 0 0
      lib_beautyui/consumer-rules.pro
  14. 21 0
      lib_beautyui/proguard-rules.pro
  15. 24 0
      lib_beautyui/src/androidTest/java/com/swago/lib_beautyui/ExampleInstrumentedTest.kt
  16. 5 0
      lib_beautyui/src/main/AndroidManifest.xml
  17. 143 0
      lib_beautyui/src/main/java/com/swago/lib_beautyui/BaseDialogFragment.kt
  18. 175 0
      lib_beautyui/src/main/java/com/swago/lib_beautyui/BeautyDialogFragment.kt
  19. 27 0
      lib_beautyui/src/main/java/com/swago/lib_beautyui/FaceBeautyAdapter.kt
  20. 277 0
      lib_beautyui/src/main/java/com/swago/lib_beautyui/FaceBeautySource.java
  21. 28 0
      lib_beautyui/src/main/java/com/swago/lib_beautyui/FaceFilterAdapter.kt
  22. 63 0
      lib_beautyui/src/main/java/com/swago/lib_beautyui/IndicatorSeekBar.java
  23. 18 0
      lib_beautyui/src/main/java/com/swago/lib_beautyui/bean/FaceBeautyBean.kt
  24. 10 0
      lib_beautyui/src/main/java/com/swago/lib_beautyui/bean/FaceBeautyFilterBean.kt
  25. 18 0
      lib_beautyui/src/main/res/anim/dialog_from_bottom_enter.xml
  26. 20 0
      lib_beautyui/src/main/res/anim/dialog_to_bottom_out.xml
  27. 28 0
      lib_beautyui/src/main/res/drawable/bg_seekbar_progressbar.xml
  28. 6 0
      lib_beautyui/src/main/res/drawable/bottom_radio_color.xml
  29. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_angle_close_selector.xml
  30. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_angle_open_selector.xml
  31. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_cheek_bones_close_selector.xml
  32. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_cheek_bones_open_selector.xml
  33. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_chin_close_selector.xml
  34. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_chin_open_selector.xml
  35. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_distance_close_selector.xml
  36. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_distance_open_selector.xml
  37. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_enlarge_eye_close_selector.xml
  38. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_enlarge_eye_open_selector.xml
  39. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_cheekthin_close_selector.xml
  40. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_cheekthin_open_selector.xml
  41. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_little_close_selector.xml
  42. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_little_open_selector.xml
  43. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_narrow_close_selector.xml
  44. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_narrow_open_selector.xml
  45. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_v_close_selector.xml
  46. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_v_open_selector.xml
  47. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_forehead_close_selector.xml
  48. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_forehead_open_selector.xml
  49. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_lower_jaw_close_selector.xml
  50. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_lower_jaw_open_selector.xml
  51. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_mouth_close_selector.xml
  52. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_mouth_open_selector.xml
  53. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_open_eyes_close_selector.xml
  54. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_open_eyes_open_selector.xml
  55. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_proboscis_close_selector.xml
  56. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_proboscis_open_selector.xml
  57. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_round_eye_close_selector.xml
  58. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_round_eye_open_selector.xml
  59. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_shrinking_close_selector.xml
  60. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_shrinking_open_selector.xml
  61. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_smile_close_selector.xml
  62. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_smile_open_selector.xml
  63. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_thin_nose_close_selector.xml
  64. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_shape_thin_nose_open_selector.xml
  65. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_buffing_close_selector.xml
  66. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_buffing_open_selector.xml
  67. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_color_close_selector.xml
  68. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_color_open_selector.xml
  69. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_dark_circles_close_selector.xml
  70. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_dark_circles_open_selector.xml
  71. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_eyes_bright_close_selector.xml
  72. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_eyes_bright_open_selector.xml
  73. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_red_close_selector.xml
  74. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_red_open_selector.xml
  75. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_sharpen_close_selector.xml
  76. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_sharpen_open_selector.xml
  77. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_teeth_close_selector.xml
  78. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_teeth_open_selector.xml
  79. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_wrinkle_close_selector.xml
  80. 5 0
      lib_beautyui/src/main/res/drawable/icon_beauty_skin_wrinkle_open_selector.xml
  81. 9 0
      lib_beautyui/src/main/res/drawable/seekbar_thumb.xml
  82. 5 0
      lib_beautyui/src/main/res/drawable/shape_border.xml
  83. 81 0
      lib_beautyui/src/main/res/layout/fragment_dialog_beauty.xml
  84. 47 0
      lib_beautyui/src/main/res/layout/item_beauty.xml
  85. 32 0
      lib_beautyui/src/main/res/layout/view_indicator_seekbar.xml
  86. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_angle_close_checked.png
  87. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_angle_close_normal.png
  88. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_angle_open_checked.png
  89. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_angle_open_normal.png
  90. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_buffing_close_checked.png
  91. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_buffing_close_normal.png
  92. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_buffing_open_checked.png
  93. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_buffing_open_normal.png
  94. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_cheek_bones_close_checked.png
  95. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_cheek_bones_close_normal.png
  96. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_cheek_bones_open_checked.png
  97. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_cheek_bones_open_normal.png
  98. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_chin_close_checked.png
  99. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_chin_close_normal.png
  100. BIN
      lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_chin_open_checked.png

+ 1 - 0
.idea/gradle.xml

@@ -14,6 +14,7 @@
             <option value="$PROJECT_DIR$/baseswago" />
             <option value="$PROJECT_DIR$/home" />
             <option value="$PROJECT_DIR$/lib_beauty" />
+            <option value="$PROJECT_DIR$/lib_beautyui" />
             <option value="$PROJECT_DIR$/lib_country_picker" />
             <option value="$PROJECT_DIR$/login" />
             <option value="$PROJECT_DIR$/room" />

+ 9 - 0
.idea/misc.xml

@@ -97,6 +97,15 @@
         <entry key="home/src/main/res/layout/item_search.xml" value="0.33" />
         <entry key="home/src/main/res/layout/layout_message.xml" value="0.24324324324324326" />
         <entry key="home/src/main/res/layout/layout_view_header.xml" value="0.2203125" />
+        <entry key="lib_beautyui/src/main/res/drawable/bg_seekbar_progressbar.xml" value="0.251" />
+        <entry key="lib_beautyui/src/main/res/drawable/bottom_radio_color.xml" value="0.251" />
+        <entry key="lib_beautyui/src/main/res/drawable/icon_beauty_shape_angle_close_selector.xml" value="0.251" />
+        <entry key="lib_beautyui/src/main/res/drawable/icon_beauty_shape_angle_open_selector.xml" value="0.251" />
+        <entry key="lib_beautyui/src/main/res/drawable/icon_beauty_shape_cheek_bones_close_selector.xml" value="0.251" />
+        <entry key="lib_beautyui/src/main/res/drawable/seekbar_thumb.xml" value="0.251" />
+        <entry key="lib_beautyui/src/main/res/layout/fragment_dialog_beauty.xml" value="0.24375" />
+        <entry key="lib_beautyui/src/main/res/layout/item_beauty.xml" value="0.35" />
+        <entry key="lib_beautyui/src/main/res/layout/view_indicator_seekbar.xml" value="0.35" />
         <entry key="login/src/main/res/drawable/shape_ffbb56_ff7f8f_ff56b7.xml" value="0.251" />
         <entry key="login/src/main/res/drawable/shape_white_5.xml" value="0.39375" />
         <entry key="login/src/main/res/layout/activity_login.xml" value="0.33" />

File diff suppressed because it is too large
+ 55 - 2939
app/mapping.txt


+ 13 - 0
app/src/main/java/com/swago/app/SwagoApp.kt

@@ -13,7 +13,10 @@ import com.swago.baseswago.constant.UrlConstant
 import com.swago.baseswago.dialog.ForceOfflineDialog
 import com.swago.baseswago.util.ActivityManagerUtil
 import com.swago.baseswago.util.AppContext
+import com.swago.baseswago.util.LogUtil
 import com.swago.baseswago.util.UserInfo
+import com.swago.lib_beauty.FuBeautyManager
+import com.swago.lib_beauty.IOperateCallback
 import com.tencent.qcloud.tim.uikit.TUIKit
 import com.tencent.qcloud.tim.uikit.TUIKitImpl
 import com.tencent.qcloud.tim.uikit.base.IMEventListener
@@ -68,6 +71,16 @@ class SwagoApp : Application() {
                 }
             }
         })
+
+        FuBeautyManager.initBeauty(this,authpack.A(),object: IOperateCallback {
+            override fun onFail(errCode: Int, errMsg: String) {
+                LogUtil.d("失败--$errCode---$errMsg")
+            }
+
+            override fun onSuccess(code: Int, msg: String) {
+                LogUtil.d("成功--$code---$msg")
+            }
+        })
     }
 
     override fun attachBaseContext(base: Context?) {

+ 1250 - 0
app/src/main/java/com/swago/app/authpack.java

@@ -0,0 +1,1250 @@
+package com.swago.app;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class authpack {
+	public static int sha1_32(byte[] buf){int ret=0;try{byte[] digest=MessageDigest.getInstance("SHA1").digest(buf);return ((int)(digest[0]&0xff)<<24)+((int)(digest[1]&0xff)<<16)+((int)(digest[2]&0xff)<<8)+((int)(digest[3]&0xff)<<0);}catch(Exception e){}return ret;}
+	public static byte[] A(){
+		byte[] buf=new byte[1237];
+		int i=0;
+		for(i=99;i<119;i++){ buf[0]=(byte)i; if(sha1_32(buf)==968015050){break;} }
+		for(i=26;i<34;i++){ buf[1]=(byte)i; if(sha1_32(buf)==-2090652975){break;} }
+		for(i=62;i<72;i++){ buf[2]=(byte)i; if(sha1_32(buf)==-1667960973){break;} }
+		for(i=-3;i<15;i++){ buf[3]=(byte)i; if(sha1_32(buf)==-1667960973){break;} }
+		for(i=13;i<33;i++){ buf[4]=(byte)i; if(sha1_32(buf)==324967393){break;} }
+		for(i=-60;i<-48;i++){ buf[5]=(byte)i; if(sha1_32(buf)==-683403577){break;} }
+		for(i=-51;i<-34;i++){ buf[6]=(byte)i; if(sha1_32(buf)==1274266831){break;} }
+		for(i=12;i<31;i++){ buf[7]=(byte)i; if(sha1_32(buf)==732769961){break;} }
+		for(i=-128;i<-113;i++){ buf[8]=(byte)i; if(sha1_32(buf)==-1547925604){break;} }
+		for(i=77;i<89;i++){ buf[9]=(byte)i; if(sha1_32(buf)==831780334){break;} }
+		for(i=66;i<83;i++){ buf[10]=(byte)i; if(sha1_32(buf)==811292490){break;} }
+		for(i=-89;i<-68;i++){ buf[11]=(byte)i; if(sha1_32(buf)==-1215173785){break;} }
+		for(i=-60;i<-47;i++){ buf[12]=(byte)i; if(sha1_32(buf)==-2083823276){break;} }
+		for(i=-38;i<-23;i++){ buf[13]=(byte)i; if(sha1_32(buf)==-1048343036){break;} }
+		for(i=-125;i<-117;i++){ buf[14]=(byte)i; if(sha1_32(buf)==-1953299277){break;} }
+		for(i=-101;i<-78;i++){ buf[15]=(byte)i; if(sha1_32(buf)==293681206){break;} }
+		for(i=-36;i<-27;i++){ buf[16]=(byte)i; if(sha1_32(buf)==-2043440954){break;} }
+		for(i=-93;i<-79;i++){ buf[17]=(byte)i; if(sha1_32(buf)==-791672348){break;} }
+		for(i=65;i<77;i++){ buf[18]=(byte)i; if(sha1_32(buf)==-833054909){break;} }
+		for(i=64;i<75;i++){ buf[19]=(byte)i; if(sha1_32(buf)==46442270){break;} }
+		for(i=94;i<108;i++){ buf[20]=(byte)i; if(sha1_32(buf)==-1863975690){break;} }
+		for(i=-48;i<-26;i++){ buf[21]=(byte)i; if(sha1_32(buf)==-1581713994){break;} }
+		for(i=11;i<22;i++){ buf[22]=(byte)i; if(sha1_32(buf)==-196814470){break;} }
+		for(i=-89;i<-79;i++){ buf[23]=(byte)i; if(sha1_32(buf)==-1452266777){break;} }
+		for(i=-42;i<-28;i++){ buf[24]=(byte)i; if(sha1_32(buf)==955432083){break;} }
+		for(i=19;i<33;i++){ buf[25]=(byte)i; if(sha1_32(buf)==-2144575321){break;} }
+		for(i=-1;i<22;i++){ buf[26]=(byte)i; if(sha1_32(buf)==92062502){break;} }
+		for(i=-5;i<13;i++){ buf[27]=(byte)i; if(sha1_32(buf)==-1676641430){break;} }
+		for(i=59;i<73;i++){ buf[28]=(byte)i; if(sha1_32(buf)==-1600243540){break;} }
+		for(i=-72;i<-71;i++){ buf[29]=(byte)i; if(sha1_32(buf)==-1884708007){break;} }
+		for(i=59;i<76;i++){ buf[30]=(byte)i; if(sha1_32(buf)==-1310429601){break;} }
+		for(i=99;i<114;i++){ buf[31]=(byte)i; if(sha1_32(buf)==-917198908){break;} }
+		for(i=52;i<72;i++){ buf[32]=(byte)i; if(sha1_32(buf)==1993500955){break;} }
+		for(i=-100;i<-90;i++){ buf[33]=(byte)i; if(sha1_32(buf)==-1032428542){break;} }
+		for(i=93;i<109;i++){ buf[34]=(byte)i; if(sha1_32(buf)==-588030560){break;} }
+		for(i=-32;i<-26;i++){ buf[35]=(byte)i; if(sha1_32(buf)==-1897183561){break;} }
+		for(i=-38;i<-18;i++){ buf[36]=(byte)i; if(sha1_32(buf)==-917989706){break;} }
+		for(i=-93;i<-87;i++){ buf[37]=(byte)i; if(sha1_32(buf)==2147341383){break;} }
+		for(i=-91;i<-67;i++){ buf[38]=(byte)i; if(sha1_32(buf)==-694810520){break;} }
+		for(i=-124;i<-107;i++){ buf[39]=(byte)i; if(sha1_32(buf)==-997872468){break;} }
+		for(i=48;i<62;i++){ buf[40]=(byte)i; if(sha1_32(buf)==-1762488732){break;} }
+		for(i=-78;i<-56;i++){ buf[41]=(byte)i; if(sha1_32(buf)==1029114602){break;} }
+		for(i=7;i<18;i++){ buf[42]=(byte)i; if(sha1_32(buf)==693046160){break;} }
+		for(i=110;i<128;i++){ buf[43]=(byte)i; if(sha1_32(buf)==-2138648410){break;} }
+		for(i=-11;i<-4;i++){ buf[44]=(byte)i; if(sha1_32(buf)==-1282678030){break;} }
+		for(i=-4;i<7;i++){ buf[45]=(byte)i; if(sha1_32(buf)==-676207438){break;} }
+		for(i=-89;i<-78;i++){ buf[46]=(byte)i; if(sha1_32(buf)==59084698){break;} }
+		for(i=-73;i<-61;i++){ buf[47]=(byte)i; if(sha1_32(buf)==-671518709){break;} }
+		for(i=86;i<99;i++){ buf[48]=(byte)i; if(sha1_32(buf)==-570090740){break;} }
+		for(i=118;i<128;i++){ buf[49]=(byte)i; if(sha1_32(buf)==7813251){break;} }
+		for(i=5;i<27;i++){ buf[50]=(byte)i; if(sha1_32(buf)==1911698540){break;} }
+		for(i=70;i<99;i++){ buf[51]=(byte)i; if(sha1_32(buf)==440159717){break;} }
+		for(i=46;i<61;i++){ buf[52]=(byte)i; if(sha1_32(buf)==14375151){break;} }
+		for(i=80;i<96;i++){ buf[53]=(byte)i; if(sha1_32(buf)==-1253486649){break;} }
+		for(i=-55;i<-45;i++){ buf[54]=(byte)i; if(sha1_32(buf)==687704355){break;} }
+		for(i=69;i<97;i++){ buf[55]=(byte)i; if(sha1_32(buf)==1681497776){break;} }
+		for(i=72;i<96;i++){ buf[56]=(byte)i; if(sha1_32(buf)==-1891478933){break;} }
+		for(i=59;i<78;i++){ buf[57]=(byte)i; if(sha1_32(buf)==-513378804){break;} }
+		for(i=-74;i<-60;i++){ buf[58]=(byte)i; if(sha1_32(buf)==2066262356){break;} }
+		for(i=43;i<59;i++){ buf[59]=(byte)i; if(sha1_32(buf)==1219636831){break;} }
+		for(i=4;i<19;i++){ buf[60]=(byte)i; if(sha1_32(buf)==-976105430){break;} }
+		for(i=-83;i<-63;i++){ buf[61]=(byte)i; if(sha1_32(buf)==1737368410){break;} }
+		for(i=112;i<123;i++){ buf[62]=(byte)i; if(sha1_32(buf)==-2144183222){break;} }
+		for(i=-56;i<-32;i++){ buf[63]=(byte)i; if(sha1_32(buf)==347141478){break;} }
+		for(i=60;i<68;i++){ buf[64]=(byte)i; if(sha1_32(buf)==60170072){break;} }
+		for(i=3;i<11;i++){ buf[65]=(byte)i; if(sha1_32(buf)==1730713924){break;} }
+		for(i=85;i<90;i++){ buf[66]=(byte)i; if(sha1_32(buf)==508779700){break;} }
+		for(i=-66;i<-40;i++){ buf[67]=(byte)i; if(sha1_32(buf)==2029589962){break;} }
+		for(i=104;i<120;i++){ buf[68]=(byte)i; if(sha1_32(buf)==-876577580){break;} }
+		for(i=-128;i<-123;i++){ buf[69]=(byte)i; if(sha1_32(buf)==-359928417){break;} }
+		for(i=-128;i<-116;i++){ buf[70]=(byte)i; if(sha1_32(buf)==233740183){break;} }
+		for(i=18;i<32;i++){ buf[71]=(byte)i; if(sha1_32(buf)==-1123029779){break;} }
+		for(i=114;i<128;i++){ buf[72]=(byte)i; if(sha1_32(buf)==1059824859){break;} }
+		for(i=19;i<31;i++){ buf[73]=(byte)i; if(sha1_32(buf)==-1210265922){break;} }
+		for(i=7;i<32;i++){ buf[74]=(byte)i; if(sha1_32(buf)==-1515242462){break;} }
+		for(i=77;i<106;i++){ buf[75]=(byte)i; if(sha1_32(buf)==2066339935){break;} }
+		for(i=42;i<67;i++){ buf[76]=(byte)i; if(sha1_32(buf)==-1001540554){break;} }
+		for(i=-44;i<-26;i++){ buf[77]=(byte)i; if(sha1_32(buf)==543816798){break;} }
+		for(i=98;i<116;i++){ buf[78]=(byte)i; if(sha1_32(buf)==-110408713){break;} }
+		for(i=105;i<124;i++){ buf[79]=(byte)i; if(sha1_32(buf)==-896647141){break;} }
+		for(i=-5;i<10;i++){ buf[80]=(byte)i; if(sha1_32(buf)==-355238297){break;} }
+		for(i=-68;i<-49;i++){ buf[81]=(byte)i; if(sha1_32(buf)==206932964){break;} }
+		for(i=81;i<94;i++){ buf[82]=(byte)i; if(sha1_32(buf)==216677591){break;} }
+		for(i=-128;i<-104;i++){ buf[83]=(byte)i; if(sha1_32(buf)==1511712700){break;} }
+		for(i=117;i<127;i++){ buf[84]=(byte)i; if(sha1_32(buf)==-965298063){break;} }
+		for(i=-128;i<-108;i++){ buf[85]=(byte)i; if(sha1_32(buf)==176058824){break;} }
+		for(i=-29;i<-16;i++){ buf[86]=(byte)i; if(sha1_32(buf)==1754396619){break;} }
+		for(i=17;i<37;i++){ buf[87]=(byte)i; if(sha1_32(buf)==-1662251343){break;} }
+		for(i=-33;i<-10;i++){ buf[88]=(byte)i; if(sha1_32(buf)==-364052233){break;} }
+		for(i=62;i<84;i++){ buf[89]=(byte)i; if(sha1_32(buf)==-1333304572){break;} }
+		for(i=111;i<128;i++){ buf[90]=(byte)i; if(sha1_32(buf)==-1019055595){break;} }
+		for(i=-68;i<-49;i++){ buf[91]=(byte)i; if(sha1_32(buf)==-1879164948){break;} }
+		for(i=-63;i<-55;i++){ buf[92]=(byte)i; if(sha1_32(buf)==1738777352){break;} }
+		for(i=106;i<110;i++){ buf[93]=(byte)i; if(sha1_32(buf)==1888305257){break;} }
+		for(i=-12;i<-6;i++){ buf[94]=(byte)i; if(sha1_32(buf)==-905209952){break;} }
+		for(i=107;i<109;i++){ buf[95]=(byte)i; if(sha1_32(buf)==-1545404766){break;} }
+		for(i=-13;i<-7;i++){ buf[96]=(byte)i; if(sha1_32(buf)==-807869460){break;} }
+		for(i=76;i<92;i++){ buf[97]=(byte)i; if(sha1_32(buf)==-69721725){break;} }
+		for(i=54;i<74;i++){ buf[98]=(byte)i; if(sha1_32(buf)==1036746587){break;} }
+		for(i=119;i<128;i++){ buf[99]=(byte)i; if(sha1_32(buf)==734853112){break;} }
+		for(i=-97;i<-91;i++){ buf[100]=(byte)i; if(sha1_32(buf)==-1118698680){break;} }
+		for(i=35;i<54;i++){ buf[101]=(byte)i; if(sha1_32(buf)==-564849773){break;} }
+		for(i=63;i<92;i++){ buf[102]=(byte)i; if(sha1_32(buf)==1377312982){break;} }
+		for(i=41;i<61;i++){ buf[103]=(byte)i; if(sha1_32(buf)==783336843){break;} }
+		for(i=-119;i<-116;i++){ buf[104]=(byte)i; if(sha1_32(buf)==-1621050801){break;} }
+		for(i=-118;i<-111;i++){ buf[105]=(byte)i; if(sha1_32(buf)==-612557968){break;} }
+		for(i=31;i<55;i++){ buf[106]=(byte)i; if(sha1_32(buf)==1043261041){break;} }
+		for(i=60;i<76;i++){ buf[107]=(byte)i; if(sha1_32(buf)==-1215775933){break;} }
+		for(i=21;i<37;i++){ buf[108]=(byte)i; if(sha1_32(buf)==1260664745){break;} }
+		for(i=-115;i<-96;i++){ buf[109]=(byte)i; if(sha1_32(buf)==291061240){break;} }
+		for(i=79;i<94;i++){ buf[110]=(byte)i; if(sha1_32(buf)==1813604953){break;} }
+		for(i=76;i<89;i++){ buf[111]=(byte)i; if(sha1_32(buf)==1228513209){break;} }
+		for(i=-91;i<-73;i++){ buf[112]=(byte)i; if(sha1_32(buf)==714970593){break;} }
+		for(i=-128;i<-118;i++){ buf[113]=(byte)i; if(sha1_32(buf)==1464428183){break;} }
+		for(i=-33;i<-12;i++){ buf[114]=(byte)i; if(sha1_32(buf)==-1516698607){break;} }
+		for(i=-54;i<-39;i++){ buf[115]=(byte)i; if(sha1_32(buf)==-151338819){break;} }
+		for(i=-21;i<6;i++){ buf[116]=(byte)i; if(sha1_32(buf)==-592216310){break;} }
+		for(i=-80;i<-62;i++){ buf[117]=(byte)i; if(sha1_32(buf)==-1325277413){break;} }
+		for(i=4;i<12;i++){ buf[118]=(byte)i; if(sha1_32(buf)==-209113443){break;} }
+		for(i=-72;i<-54;i++){ buf[119]=(byte)i; if(sha1_32(buf)==498158108){break;} }
+		for(i=90;i<114;i++){ buf[120]=(byte)i; if(sha1_32(buf)==-77951893){break;} }
+		for(i=-119;i<-99;i++){ buf[121]=(byte)i; if(sha1_32(buf)==1999405741){break;} }
+		for(i=-17;i<-1;i++){ buf[122]=(byte)i; if(sha1_32(buf)==183875318){break;} }
+		for(i=-107;i<-96;i++){ buf[123]=(byte)i; if(sha1_32(buf)==-1791693857){break;} }
+		for(i=-118;i<-95;i++){ buf[124]=(byte)i; if(sha1_32(buf)==-39776154){break;} }
+		for(i=-63;i<-50;i++){ buf[125]=(byte)i; if(sha1_32(buf)==-703806259){break;} }
+		for(i=31;i<38;i++){ buf[126]=(byte)i; if(sha1_32(buf)==-1900817912){break;} }
+		for(i=-75;i<-62;i++){ buf[127]=(byte)i; if(sha1_32(buf)==1559738420){break;} }
+		for(i=112;i<122;i++){ buf[128]=(byte)i; if(sha1_32(buf)==-1231049522){break;} }
+		for(i=-125;i<-104;i++){ buf[129]=(byte)i; if(sha1_32(buf)==-1376995713){break;} }
+		for(i=37;i<48;i++){ buf[130]=(byte)i; if(sha1_32(buf)==407397272){break;} }
+		for(i=18;i<31;i++){ buf[131]=(byte)i; if(sha1_32(buf)==436782320){break;} }
+		for(i=-128;i<-124;i++){ buf[132]=(byte)i; if(sha1_32(buf)==736390611){break;} }
+		for(i=-51;i<-40;i++){ buf[133]=(byte)i; if(sha1_32(buf)==1947128588){break;} }
+		for(i=-128;i<-126;i++){ buf[134]=(byte)i; if(sha1_32(buf)==-961891096){break;} }
+		for(i=7;i<19;i++){ buf[135]=(byte)i; if(sha1_32(buf)==859898950){break;} }
+		for(i=78;i<98;i++){ buf[136]=(byte)i; if(sha1_32(buf)==1824155931){break;} }
+		for(i=-35;i<-12;i++){ buf[137]=(byte)i; if(sha1_32(buf)==-1732145869){break;} }
+		for(i=-106;i<-91;i++){ buf[138]=(byte)i; if(sha1_32(buf)==1380730191){break;} }
+		for(i=-107;i<-96;i++){ buf[139]=(byte)i; if(sha1_32(buf)==-1164969244){break;} }
+		for(i=-98;i<-72;i++){ buf[140]=(byte)i; if(sha1_32(buf)==5206735){break;} }
+		for(i=-56;i<-42;i++){ buf[141]=(byte)i; if(sha1_32(buf)==-260241878){break;} }
+		for(i=94;i<120;i++){ buf[142]=(byte)i; if(sha1_32(buf)==45684804){break;} }
+		for(i=-61;i<-35;i++){ buf[143]=(byte)i; if(sha1_32(buf)==-1009087730){break;} }
+		for(i=-78;i<-66;i++){ buf[144]=(byte)i; if(sha1_32(buf)==1995148834){break;} }
+		for(i=95;i<119;i++){ buf[145]=(byte)i; if(sha1_32(buf)==-1774968435){break;} }
+		for(i=-64;i<-52;i++){ buf[146]=(byte)i; if(sha1_32(buf)==1673736282){break;} }
+		for(i=122;i<126;i++){ buf[147]=(byte)i; if(sha1_32(buf)==-821292109){break;} }
+		for(i=-96;i<-78;i++){ buf[148]=(byte)i; if(sha1_32(buf)==2051404163){break;} }
+		for(i=38;i<54;i++){ buf[149]=(byte)i; if(sha1_32(buf)==-309192871){break;} }
+		for(i=54;i<79;i++){ buf[150]=(byte)i; if(sha1_32(buf)==614944610){break;} }
+		for(i=109;i<118;i++){ buf[151]=(byte)i; if(sha1_32(buf)==-773103442){break;} }
+		for(i=19;i<35;i++){ buf[152]=(byte)i; if(sha1_32(buf)==-1576179032){break;} }
+		for(i=-18;i<-4;i++){ buf[153]=(byte)i; if(sha1_32(buf)==1278666641){break;} }
+		for(i=51;i<78;i++){ buf[154]=(byte)i; if(sha1_32(buf)==-1966361609){break;} }
+		for(i=81;i<94;i++){ buf[155]=(byte)i; if(sha1_32(buf)==878764075){break;} }
+		for(i=-20;i<-1;i++){ buf[156]=(byte)i; if(sha1_32(buf)==-829739819){break;} }
+		for(i=77;i<96;i++){ buf[157]=(byte)i; if(sha1_32(buf)==-1002043370){break;} }
+		for(i=111;i<128;i++){ buf[158]=(byte)i; if(sha1_32(buf)==1659088106){break;} }
+		for(i=92;i<99;i++){ buf[159]=(byte)i; if(sha1_32(buf)==-1224065602){break;} }
+		for(i=50;i<62;i++){ buf[160]=(byte)i; if(sha1_32(buf)==1320438874){break;} }
+		for(i=-21;i<-8;i++){ buf[161]=(byte)i; if(sha1_32(buf)==-1024330156){break;} }
+		for(i=-53;i<-48;i++){ buf[162]=(byte)i; if(sha1_32(buf)==-219818341){break;} }
+		for(i=-103;i<-89;i++){ buf[163]=(byte)i; if(sha1_32(buf)==422381541){break;} }
+		for(i=-30;i<-22;i++){ buf[164]=(byte)i; if(sha1_32(buf)==169660481){break;} }
+		for(i=80;i<87;i++){ buf[165]=(byte)i; if(sha1_32(buf)==539711827){break;} }
+		for(i=-62;i<-44;i++){ buf[166]=(byte)i; if(sha1_32(buf)==-2045670820){break;} }
+		for(i=80;i<85;i++){ buf[167]=(byte)i; if(sha1_32(buf)==714541881){break;} }
+		for(i=-44;i<-38;i++){ buf[168]=(byte)i; if(sha1_32(buf)==919632440){break;} }
+		for(i=60;i<79;i++){ buf[169]=(byte)i; if(sha1_32(buf)==1047585021){break;} }
+		for(i=-102;i<-82;i++){ buf[170]=(byte)i; if(sha1_32(buf)==265196867){break;} }
+		for(i=87;i<104;i++){ buf[171]=(byte)i; if(sha1_32(buf)==1488919275){break;} }
+		for(i=94;i<120;i++){ buf[172]=(byte)i; if(sha1_32(buf)==1294142717){break;} }
+		for(i=52;i<78;i++){ buf[173]=(byte)i; if(sha1_32(buf)==1702419240){break;} }
+		for(i=-34;i<-24;i++){ buf[174]=(byte)i; if(sha1_32(buf)==-1540358609){break;} }
+		for(i=-88;i<-76;i++){ buf[175]=(byte)i; if(sha1_32(buf)==-516179340){break;} }
+		for(i=-35;i<-18;i++){ buf[176]=(byte)i; if(sha1_32(buf)==-1872233215){break;} }
+		for(i=47;i<61;i++){ buf[177]=(byte)i; if(sha1_32(buf)==-368122346){break;} }
+		for(i=-93;i<-79;i++){ buf[178]=(byte)i; if(sha1_32(buf)==-92277868){break;} }
+		for(i=47;i<62;i++){ buf[179]=(byte)i; if(sha1_32(buf)==727518360){break;} }
+		for(i=-99;i<-91;i++){ buf[180]=(byte)i; if(sha1_32(buf)==-1857278029){break;} }
+		for(i=0;i<25;i++){ buf[181]=(byte)i; if(sha1_32(buf)==443700540){break;} }
+		for(i=-105;i<-92;i++){ buf[182]=(byte)i; if(sha1_32(buf)==64464254){break;} }
+		for(i=-50;i<-43;i++){ buf[183]=(byte)i; if(sha1_32(buf)==1290903675){break;} }
+		for(i=-128;i<-118;i++){ buf[184]=(byte)i; if(sha1_32(buf)==2044875492){break;} }
+		for(i=-61;i<-59;i++){ buf[185]=(byte)i; if(sha1_32(buf)==-978743292){break;} }
+		for(i=108;i<121;i++){ buf[186]=(byte)i; if(sha1_32(buf)==1439314282){break;} }
+		for(i=-116;i<-91;i++){ buf[187]=(byte)i; if(sha1_32(buf)==1639264738){break;} }
+		for(i=36;i<51;i++){ buf[188]=(byte)i; if(sha1_32(buf)==-1308767489){break;} }
+		for(i=-128;i<-113;i++){ buf[189]=(byte)i; if(sha1_32(buf)==-1513101493){break;} }
+		for(i=84;i<105;i++){ buf[190]=(byte)i; if(sha1_32(buf)==-1442181630){break;} }
+		for(i=-6;i<17;i++){ buf[191]=(byte)i; if(sha1_32(buf)==996014621){break;} }
+		for(i=-50;i<-33;i++){ buf[192]=(byte)i; if(sha1_32(buf)==-1057607991){break;} }
+		for(i=-35;i<-23;i++){ buf[193]=(byte)i; if(sha1_32(buf)==-1200359108){break;} }
+		for(i=60;i<70;i++){ buf[194]=(byte)i; if(sha1_32(buf)==-1785743120){break;} }
+		for(i=-74;i<-55;i++){ buf[195]=(byte)i; if(sha1_32(buf)==1611810377){break;} }
+		for(i=-54;i<-37;i++){ buf[196]=(byte)i; if(sha1_32(buf)==1067697123){break;} }
+		for(i=-128;i<-118;i++){ buf[197]=(byte)i; if(sha1_32(buf)==-337550152){break;} }
+		for(i=-5;i<5;i++){ buf[198]=(byte)i; if(sha1_32(buf)==37948943){break;} }
+		for(i=-90;i<-81;i++){ buf[199]=(byte)i; if(sha1_32(buf)==-308352046){break;} }
+		for(i=-112;i<-93;i++){ buf[200]=(byte)i; if(sha1_32(buf)==-2016188221){break;} }
+		for(i=-56;i<-38;i++){ buf[201]=(byte)i; if(sha1_32(buf)==-2112855733){break;} }
+		for(i=-79;i<-52;i++){ buf[202]=(byte)i; if(sha1_32(buf)==1800508908){break;} }
+		for(i=-100;i<-72;i++){ buf[203]=(byte)i; if(sha1_32(buf)==-831966816){break;} }
+		for(i=-81;i<-69;i++){ buf[204]=(byte)i; if(sha1_32(buf)==-483795291){break;} }
+		for(i=67;i<71;i++){ buf[205]=(byte)i; if(sha1_32(buf)==-1773505254){break;} }
+		for(i=48;i<73;i++){ buf[206]=(byte)i; if(sha1_32(buf)==-870119042){break;} }
+		for(i=107;i<124;i++){ buf[207]=(byte)i; if(sha1_32(buf)==1747142483){break;} }
+		for(i=27;i<38;i++){ buf[208]=(byte)i; if(sha1_32(buf)==-1971464091){break;} }
+		for(i=-16;i<-1;i++){ buf[209]=(byte)i; if(sha1_32(buf)==-263244085){break;} }
+		for(i=-103;i<-83;i++){ buf[210]=(byte)i; if(sha1_32(buf)==-1912902275){break;} }
+		for(i=107;i<124;i++){ buf[211]=(byte)i; if(sha1_32(buf)==468660796){break;} }
+		for(i=-128;i<-119;i++){ buf[212]=(byte)i; if(sha1_32(buf)==516788937){break;} }
+		for(i=99;i<113;i++){ buf[213]=(byte)i; if(sha1_32(buf)==153013721){break;} }
+		for(i=5;i<15;i++){ buf[214]=(byte)i; if(sha1_32(buf)==-362870561){break;} }
+		for(i=-74;i<-61;i++){ buf[215]=(byte)i; if(sha1_32(buf)==-915822529){break;} }
+		for(i=-32;i<-13;i++){ buf[216]=(byte)i; if(sha1_32(buf)==991402759){break;} }
+		for(i=20;i<30;i++){ buf[217]=(byte)i; if(sha1_32(buf)==-2104714104){break;} }
+		for(i=85;i<110;i++){ buf[218]=(byte)i; if(sha1_32(buf)==-348632450){break;} }
+		for(i=22;i<42;i++){ buf[219]=(byte)i; if(sha1_32(buf)==-429388918){break;} }
+		for(i=-30;i<-8;i++){ buf[220]=(byte)i; if(sha1_32(buf)==1516477428){break;} }
+		for(i=-128;i<-116;i++){ buf[221]=(byte)i; if(sha1_32(buf)==-446872387){break;} }
+		for(i=74;i<87;i++){ buf[222]=(byte)i; if(sha1_32(buf)==-81242025){break;} }
+		for(i=-59;i<-30;i++){ buf[223]=(byte)i; if(sha1_32(buf)==-1376879647){break;} }
+		for(i=-117;i<-92;i++){ buf[224]=(byte)i; if(sha1_32(buf)==-1664698547){break;} }
+		for(i=-88;i<-74;i++){ buf[225]=(byte)i; if(sha1_32(buf)==-2005499026){break;} }
+		for(i=100;i<123;i++){ buf[226]=(byte)i; if(sha1_32(buf)==-381862690){break;} }
+		for(i=76;i<87;i++){ buf[227]=(byte)i; if(sha1_32(buf)==1724635487){break;} }
+		for(i=-3;i<19;i++){ buf[228]=(byte)i; if(sha1_32(buf)==1524386733){break;} }
+		for(i=-35;i<-16;i++){ buf[229]=(byte)i; if(sha1_32(buf)==-2023397158){break;} }
+		for(i=-17;i<0;i++){ buf[230]=(byte)i; if(sha1_32(buf)==-18274232){break;} }
+		for(i=-23;i<-10;i++){ buf[231]=(byte)i; if(sha1_32(buf)==806036754){break;} }
+		for(i=48;i<59;i++){ buf[232]=(byte)i; if(sha1_32(buf)==1663594679){break;} }
+		for(i=59;i<80;i++){ buf[233]=(byte)i; if(sha1_32(buf)==413629587){break;} }
+		for(i=25;i<51;i++){ buf[234]=(byte)i; if(sha1_32(buf)==1987461199){break;} }
+		for(i=118;i<128;i++){ buf[235]=(byte)i; if(sha1_32(buf)==454079315){break;} }
+		for(i=-40;i<-29;i++){ buf[236]=(byte)i; if(sha1_32(buf)==-1540435509){break;} }
+		for(i=-69;i<-50;i++){ buf[237]=(byte)i; if(sha1_32(buf)==-978851175){break;} }
+		for(i=52;i<79;i++){ buf[238]=(byte)i; if(sha1_32(buf)==830039848){break;} }
+		for(i=56;i<78;i++){ buf[239]=(byte)i; if(sha1_32(buf)==-1233055096){break;} }
+		for(i=61;i<76;i++){ buf[240]=(byte)i; if(sha1_32(buf)==-335518276){break;} }
+		for(i=-49;i<-38;i++){ buf[241]=(byte)i; if(sha1_32(buf)==2091806847){break;} }
+		for(i=80;i<86;i++){ buf[242]=(byte)i; if(sha1_32(buf)==1305124620){break;} }
+		for(i=-94;i<-80;i++){ buf[243]=(byte)i; if(sha1_32(buf)==910084194){break;} }
+		for(i=20;i<31;i++){ buf[244]=(byte)i; if(sha1_32(buf)==-516699589){break;} }
+		for(i=115;i<121;i++){ buf[245]=(byte)i; if(sha1_32(buf)==-2005813345){break;} }
+		for(i=92;i<104;i++){ buf[246]=(byte)i; if(sha1_32(buf)==-1560355157){break;} }
+		for(i=89;i<99;i++){ buf[247]=(byte)i; if(sha1_32(buf)==-1376511771){break;} }
+		for(i=72;i<90;i++){ buf[248]=(byte)i; if(sha1_32(buf)==-712307438){break;} }
+		for(i=72;i<91;i++){ buf[249]=(byte)i; if(sha1_32(buf)==-1936675631){break;} }
+		for(i=42;i<60;i++){ buf[250]=(byte)i; if(sha1_32(buf)==1040993753){break;} }
+		for(i=21;i<38;i++){ buf[251]=(byte)i; if(sha1_32(buf)==1238735898){break;} }
+		for(i=-100;i<-89;i++){ buf[252]=(byte)i; if(sha1_32(buf)==256248495){break;} }
+		for(i=97;i<112;i++){ buf[253]=(byte)i; if(sha1_32(buf)==265771307){break;} }
+		for(i=-43;i<-15;i++){ buf[254]=(byte)i; if(sha1_32(buf)==425759742){break;} }
+		for(i=-119;i<-101;i++){ buf[255]=(byte)i; if(sha1_32(buf)==-575459695){break;} }
+		for(i=31;i<52;i++){ buf[256]=(byte)i; if(sha1_32(buf)==998395596){break;} }
+		for(i=-67;i<-38;i++){ buf[257]=(byte)i; if(sha1_32(buf)==-401272386){break;} }
+		for(i=-104;i<-80;i++){ buf[258]=(byte)i; if(sha1_32(buf)==-2001299107){break;} }
+		for(i=50;i<69;i++){ buf[259]=(byte)i; if(sha1_32(buf)==-1263413220){break;} }
+		for(i=-76;i<-69;i++){ buf[260]=(byte)i; if(sha1_32(buf)==394534692){break;} }
+		for(i=-6;i<10;i++){ buf[261]=(byte)i; if(sha1_32(buf)==1843997985){break;} }
+		for(i=94;i<109;i++){ buf[262]=(byte)i; if(sha1_32(buf)==462788470){break;} }
+		for(i=-50;i<-34;i++){ buf[263]=(byte)i; if(sha1_32(buf)==-538406326){break;} }
+		for(i=48;i<57;i++){ buf[264]=(byte)i; if(sha1_32(buf)==-1729308662){break;} }
+		for(i=68;i<86;i++){ buf[265]=(byte)i; if(sha1_32(buf)==-1115086502){break;} }
+		for(i=-8;i<8;i++){ buf[266]=(byte)i; if(sha1_32(buf)==2077743515){break;} }
+		for(i=-36;i<-25;i++){ buf[267]=(byte)i; if(sha1_32(buf)==995565177){break;} }
+		for(i=-122;i<-116;i++){ buf[268]=(byte)i; if(sha1_32(buf)==-1239665450){break;} }
+		for(i=-59;i<-54;i++){ buf[269]=(byte)i; if(sha1_32(buf)==-191641259){break;} }
+		for(i=-117;i<-101;i++){ buf[270]=(byte)i; if(sha1_32(buf)==-825052913){break;} }
+		for(i=70;i<89;i++){ buf[271]=(byte)i; if(sha1_32(buf)==-1155781610){break;} }
+		for(i=-114;i<-97;i++){ buf[272]=(byte)i; if(sha1_32(buf)==-1655707159){break;} }
+		for(i=14;i<28;i++){ buf[273]=(byte)i; if(sha1_32(buf)==-556803239){break;} }
+		for(i=61;i<77;i++){ buf[274]=(byte)i; if(sha1_32(buf)==1079811141){break;} }
+		for(i=-107;i<-95;i++){ buf[275]=(byte)i; if(sha1_32(buf)==-1799474994){break;} }
+		for(i=79;i<105;i++){ buf[276]=(byte)i; if(sha1_32(buf)==1148795461){break;} }
+		for(i=80;i<88;i++){ buf[277]=(byte)i; if(sha1_32(buf)==1284392554){break;} }
+		for(i=27;i<35;i++){ buf[278]=(byte)i; if(sha1_32(buf)==1663241420){break;} }
+		for(i=-48;i<-34;i++){ buf[279]=(byte)i; if(sha1_32(buf)==423141350){break;} }
+		for(i=44;i<66;i++){ buf[280]=(byte)i; if(sha1_32(buf)==1751819877){break;} }
+		for(i=103;i<115;i++){ buf[281]=(byte)i; if(sha1_32(buf)==-65826929){break;} }
+		for(i=-40;i<-17;i++){ buf[282]=(byte)i; if(sha1_32(buf)==-646987292){break;} }
+		for(i=91;i<113;i++){ buf[283]=(byte)i; if(sha1_32(buf)==305576456){break;} }
+		for(i=-82;i<-80;i++){ buf[284]=(byte)i; if(sha1_32(buf)==-148012790){break;} }
+		for(i=-128;i<-111;i++){ buf[285]=(byte)i; if(sha1_32(buf)==-1054625411){break;} }
+		for(i=111;i<128;i++){ buf[286]=(byte)i; if(sha1_32(buf)==-581854913){break;} }
+		for(i=-50;i<-25;i++){ buf[287]=(byte)i; if(sha1_32(buf)==1441703722){break;} }
+		for(i=87;i<108;i++){ buf[288]=(byte)i; if(sha1_32(buf)==967991198){break;} }
+		for(i=-77;i<-62;i++){ buf[289]=(byte)i; if(sha1_32(buf)==211901193){break;} }
+		for(i=-74;i<-58;i++){ buf[290]=(byte)i; if(sha1_32(buf)==98677265){break;} }
+		for(i=-64;i<-45;i++){ buf[291]=(byte)i; if(sha1_32(buf)==241149319){break;} }
+		for(i=-32;i<-19;i++){ buf[292]=(byte)i; if(sha1_32(buf)==-1854487322){break;} }
+		for(i=-46;i<-19;i++){ buf[293]=(byte)i; if(sha1_32(buf)==-2114737231){break;} }
+		for(i=115;i<128;i++){ buf[294]=(byte)i; if(sha1_32(buf)==126916423){break;} }
+		for(i=93;i<118;i++){ buf[295]=(byte)i; if(sha1_32(buf)==-100837006){break;} }
+		for(i=65;i<90;i++){ buf[296]=(byte)i; if(sha1_32(buf)==1575662145){break;} }
+		for(i=113;i<127;i++){ buf[297]=(byte)i; if(sha1_32(buf)==-1082082448){break;} }
+		for(i=-60;i<-35;i++){ buf[298]=(byte)i; if(sha1_32(buf)==-618881200){break;} }
+		for(i=-37;i<-19;i++){ buf[299]=(byte)i; if(sha1_32(buf)==317113273){break;} }
+		for(i=-90;i<-73;i++){ buf[300]=(byte)i; if(sha1_32(buf)==-177839013){break;} }
+		for(i=-128;i<-111;i++){ buf[301]=(byte)i; if(sha1_32(buf)==-947571510){break;} }
+		for(i=-35;i<-21;i++){ buf[302]=(byte)i; if(sha1_32(buf)==740732111){break;} }
+		for(i=-108;i<-96;i++){ buf[303]=(byte)i; if(sha1_32(buf)==-2133471030){break;} }
+		for(i=95;i<111;i++){ buf[304]=(byte)i; if(sha1_32(buf)==-18038908){break;} }
+		for(i=-20;i<1;i++){ buf[305]=(byte)i; if(sha1_32(buf)==-1559775512){break;} }
+		for(i=65;i<77;i++){ buf[306]=(byte)i; if(sha1_32(buf)==-929084061){break;} }
+		for(i=74;i<103;i++){ buf[307]=(byte)i; if(sha1_32(buf)==967406726){break;} }
+		for(i=25;i<43;i++){ buf[308]=(byte)i; if(sha1_32(buf)==-1016203595){break;} }
+		for(i=58;i<73;i++){ buf[309]=(byte)i; if(sha1_32(buf)==-1715762491){break;} }
+		for(i=62;i<66;i++){ buf[310]=(byte)i; if(sha1_32(buf)==-1142048322){break;} }
+		for(i=-73;i<-69;i++){ buf[311]=(byte)i; if(sha1_32(buf)==2106658307){break;} }
+		for(i=-65;i<-42;i++){ buf[312]=(byte)i; if(sha1_32(buf)==-370256803){break;} }
+		for(i=-6;i<6;i++){ buf[313]=(byte)i; if(sha1_32(buf)==1642666343){break;} }
+		for(i=4;i<11;i++){ buf[314]=(byte)i; if(sha1_32(buf)==1317985846){break;} }
+		for(i=-60;i<-50;i++){ buf[315]=(byte)i; if(sha1_32(buf)==-637999369){break;} }
+		for(i=-61;i<-46;i++){ buf[316]=(byte)i; if(sha1_32(buf)==-743051740){break;} }
+		for(i=23;i<43;i++){ buf[317]=(byte)i; if(sha1_32(buf)==151606381){break;} }
+		for(i=21;i<33;i++){ buf[318]=(byte)i; if(sha1_32(buf)==-1402988710){break;} }
+		for(i=-31;i<-26;i++){ buf[319]=(byte)i; if(sha1_32(buf)==872665202){break;} }
+		for(i=-128;i<-114;i++){ buf[320]=(byte)i; if(sha1_32(buf)==-1360599189){break;} }
+		for(i=-69;i<-49;i++){ buf[321]=(byte)i; if(sha1_32(buf)==-1417489878){break;} }
+		for(i=-27;i<-2;i++){ buf[322]=(byte)i; if(sha1_32(buf)==-1386438300){break;} }
+		for(i=71;i<82;i++){ buf[323]=(byte)i; if(sha1_32(buf)==-768297590){break;} }
+		for(i=25;i<46;i++){ buf[324]=(byte)i; if(sha1_32(buf)==457029899){break;} }
+		for(i=110;i<127;i++){ buf[325]=(byte)i; if(sha1_32(buf)==-829976562){break;} }
+		for(i=43;i<55;i++){ buf[326]=(byte)i; if(sha1_32(buf)==-730590430){break;} }
+		for(i=-128;i<-109;i++){ buf[327]=(byte)i; if(sha1_32(buf)==1332147446){break;} }
+		for(i=-19;i<4;i++){ buf[328]=(byte)i; if(sha1_32(buf)==25560796){break;} }
+		for(i=49;i<72;i++){ buf[329]=(byte)i; if(sha1_32(buf)==320461938){break;} }
+		for(i=-52;i<-43;i++){ buf[330]=(byte)i; if(sha1_32(buf)==-1051492908){break;} }
+		for(i=-68;i<-50;i++){ buf[331]=(byte)i; if(sha1_32(buf)==1432858152){break;} }
+		for(i=-7;i<-2;i++){ buf[332]=(byte)i; if(sha1_32(buf)==1624511309){break;} }
+		for(i=83;i<108;i++){ buf[333]=(byte)i; if(sha1_32(buf)==1772197245){break;} }
+		for(i=37;i<51;i++){ buf[334]=(byte)i; if(sha1_32(buf)==-1885518456){break;} }
+		for(i=116;i<128;i++){ buf[335]=(byte)i; if(sha1_32(buf)==-2141314789){break;} }
+		for(i=43;i<72;i++){ buf[336]=(byte)i; if(sha1_32(buf)==1915196136){break;} }
+		for(i=-29;i<-4;i++){ buf[337]=(byte)i; if(sha1_32(buf)==-7693022){break;} }
+		for(i=-98;i<-86;i++){ buf[338]=(byte)i; if(sha1_32(buf)==-1326273634){break;} }
+		for(i=23;i<32;i++){ buf[339]=(byte)i; if(sha1_32(buf)==-2086198817){break;} }
+		for(i=104;i<125;i++){ buf[340]=(byte)i; if(sha1_32(buf)==-154826621){break;} }
+		for(i=65;i<80;i++){ buf[341]=(byte)i; if(sha1_32(buf)==-1284930738){break;} }
+		for(i=-56;i<-40;i++){ buf[342]=(byte)i; if(sha1_32(buf)==256360416){break;} }
+		for(i=-77;i<-68;i++){ buf[343]=(byte)i; if(sha1_32(buf)==194883647){break;} }
+		for(i=78;i<89;i++){ buf[344]=(byte)i; if(sha1_32(buf)==1021018436){break;} }
+		for(i=90;i<110;i++){ buf[345]=(byte)i; if(sha1_32(buf)==1236877622){break;} }
+		for(i=-64;i<-61;i++){ buf[346]=(byte)i; if(sha1_32(buf)==-798883104){break;} }
+		for(i=-58;i<-37;i++){ buf[347]=(byte)i; if(sha1_32(buf)==-1778086748){break;} }
+		for(i=45;i<55;i++){ buf[348]=(byte)i; if(sha1_32(buf)==1254039130){break;} }
+		for(i=117;i<128;i++){ buf[349]=(byte)i; if(sha1_32(buf)==-985555745){break;} }
+		for(i=-99;i<-86;i++){ buf[350]=(byte)i; if(sha1_32(buf)==-1242670111){break;} }
+		for(i=-78;i<-71;i++){ buf[351]=(byte)i; if(sha1_32(buf)==-1356663855){break;} }
+		for(i=-128;i<-122;i++){ buf[352]=(byte)i; if(sha1_32(buf)==-815756439){break;} }
+		for(i=-13;i<3;i++){ buf[353]=(byte)i; if(sha1_32(buf)==1922672689){break;} }
+		for(i=-13;i<-7;i++){ buf[354]=(byte)i; if(sha1_32(buf)==-153922311){break;} }
+		for(i=-6;i<11;i++){ buf[355]=(byte)i; if(sha1_32(buf)==-63744792){break;} }
+		for(i=-9;i<-2;i++){ buf[356]=(byte)i; if(sha1_32(buf)==509266536){break;} }
+		for(i=-86;i<-76;i++){ buf[357]=(byte)i; if(sha1_32(buf)==1809786482){break;} }
+		for(i=-46;i<-33;i++){ buf[358]=(byte)i; if(sha1_32(buf)==1490737362){break;} }
+		for(i=110;i<113;i++){ buf[359]=(byte)i; if(sha1_32(buf)==-1634122797){break;} }
+		for(i=35;i<56;i++){ buf[360]=(byte)i; if(sha1_32(buf)==-39683552){break;} }
+		for(i=-90;i<-70;i++){ buf[361]=(byte)i; if(sha1_32(buf)==-1163113882){break;} }
+		for(i=4;i<27;i++){ buf[362]=(byte)i; if(sha1_32(buf)==561651982){break;} }
+		for(i=106;i<128;i++){ buf[363]=(byte)i; if(sha1_32(buf)==402118926){break;} }
+		for(i=94;i<108;i++){ buf[364]=(byte)i; if(sha1_32(buf)==140624341){break;} }
+		for(i=-121;i<-100;i++){ buf[365]=(byte)i; if(sha1_32(buf)==-31242787){break;} }
+		for(i=31;i<49;i++){ buf[366]=(byte)i; if(sha1_32(buf)==-1345177046){break;} }
+		for(i=2;i<22;i++){ buf[367]=(byte)i; if(sha1_32(buf)==1818817500){break;} }
+		for(i=46;i<62;i++){ buf[368]=(byte)i; if(sha1_32(buf)==1631715762){break;} }
+		for(i=-43;i<-31;i++){ buf[369]=(byte)i; if(sha1_32(buf)==625266530){break;} }
+		for(i=-103;i<-78;i++){ buf[370]=(byte)i; if(sha1_32(buf)==-144325397){break;} }
+		for(i=120;i<128;i++){ buf[371]=(byte)i; if(sha1_32(buf)==352550954){break;} }
+		for(i=26;i<49;i++){ buf[372]=(byte)i; if(sha1_32(buf)==-1522752790){break;} }
+		for(i=-56;i<-54;i++){ buf[373]=(byte)i; if(sha1_32(buf)==-845220583){break;} }
+		for(i=9;i<24;i++){ buf[374]=(byte)i; if(sha1_32(buf)==-417442911){break;} }
+		for(i=-111;i<-96;i++){ buf[375]=(byte)i; if(sha1_32(buf)==963108352){break;} }
+		for(i=64;i<81;i++){ buf[376]=(byte)i; if(sha1_32(buf)==2094341739){break;} }
+		for(i=-59;i<-40;i++){ buf[377]=(byte)i; if(sha1_32(buf)==1659423808){break;} }
+		for(i=-16;i<-13;i++){ buf[378]=(byte)i; if(sha1_32(buf)==-2071002220){break;} }
+		for(i=-128;i<-125;i++){ buf[379]=(byte)i; if(sha1_32(buf)==1652406816){break;} }
+		for(i=74;i<89;i++){ buf[380]=(byte)i; if(sha1_32(buf)==-211550839){break;} }
+		for(i=-100;i<-85;i++){ buf[381]=(byte)i; if(sha1_32(buf)==-518100259){break;} }
+		for(i=52;i<64;i++){ buf[382]=(byte)i; if(sha1_32(buf)==1347723997){break;} }
+		for(i=121;i<128;i++){ buf[383]=(byte)i; if(sha1_32(buf)==1559826762){break;} }
+		for(i=-55;i<-47;i++){ buf[384]=(byte)i; if(sha1_32(buf)==719220360){break;} }
+		for(i=-51;i<-34;i++){ buf[385]=(byte)i; if(sha1_32(buf)==1007157403){break;} }
+		for(i=111;i<124;i++){ buf[386]=(byte)i; if(sha1_32(buf)==-1419498717){break;} }
+		for(i=74;i<86;i++){ buf[387]=(byte)i; if(sha1_32(buf)==-1530981254){break;} }
+		for(i=-14;i<2;i++){ buf[388]=(byte)i; if(sha1_32(buf)==-145230775){break;} }
+		for(i=71;i<73;i++){ buf[389]=(byte)i; if(sha1_32(buf)==-255283792){break;} }
+		for(i=43;i<55;i++){ buf[390]=(byte)i; if(sha1_32(buf)==497701297){break;} }
+		for(i=17;i<29;i++){ buf[391]=(byte)i; if(sha1_32(buf)==-205364117){break;} }
+		for(i=-100;i<-84;i++){ buf[392]=(byte)i; if(sha1_32(buf)==650934004){break;} }
+		for(i=60;i<67;i++){ buf[393]=(byte)i; if(sha1_32(buf)==-1688879206){break;} }
+		for(i=75;i<90;i++){ buf[394]=(byte)i; if(sha1_32(buf)==-829019505){break;} }
+		for(i=-128;i<-119;i++){ buf[395]=(byte)i; if(sha1_32(buf)==927281434){break;} }
+		for(i=34;i<47;i++){ buf[396]=(byte)i; if(sha1_32(buf)==-648480939){break;} }
+		for(i=12;i<26;i++){ buf[397]=(byte)i; if(sha1_32(buf)==-823496773){break;} }
+		for(i=-99;i<-94;i++){ buf[398]=(byte)i; if(sha1_32(buf)==-1944475849){break;} }
+		for(i=-19;i<-12;i++){ buf[399]=(byte)i; if(sha1_32(buf)==1904578941){break;} }
+		for(i=12;i<28;i++){ buf[400]=(byte)i; if(sha1_32(buf)==1437419682){break;} }
+		for(i=-96;i<-79;i++){ buf[401]=(byte)i; if(sha1_32(buf)==-892068086){break;} }
+		for(i=-5;i<12;i++){ buf[402]=(byte)i; if(sha1_32(buf)==-2120006741){break;} }
+		for(i=-104;i<-81;i++){ buf[403]=(byte)i; if(sha1_32(buf)==2013473914){break;} }
+		for(i=23;i<39;i++){ buf[404]=(byte)i; if(sha1_32(buf)==-1327794743){break;} }
+		for(i=43;i<55;i++){ buf[405]=(byte)i; if(sha1_32(buf)==937009405){break;} }
+		for(i=119;i<122;i++){ buf[406]=(byte)i; if(sha1_32(buf)==1482986602){break;} }
+		for(i=-104;i<-82;i++){ buf[407]=(byte)i; if(sha1_32(buf)==312192272){break;} }
+		for(i=-26;i<-15;i++){ buf[408]=(byte)i; if(sha1_32(buf)==1095704952){break;} }
+		for(i=-59;i<-43;i++){ buf[409]=(byte)i; if(sha1_32(buf)==948101467){break;} }
+		for(i=-120;i<-94;i++){ buf[410]=(byte)i; if(sha1_32(buf)==-315146709){break;} }
+		for(i=-95;i<-87;i++){ buf[411]=(byte)i; if(sha1_32(buf)==-3899691){break;} }
+		for(i=91;i<105;i++){ buf[412]=(byte)i; if(sha1_32(buf)==813232949){break;} }
+		for(i=-73;i<-51;i++){ buf[413]=(byte)i; if(sha1_32(buf)==1734118540){break;} }
+		for(i=-72;i<-63;i++){ buf[414]=(byte)i; if(sha1_32(buf)==1235929349){break;} }
+		for(i=59;i<74;i++){ buf[415]=(byte)i; if(sha1_32(buf)==1556070781){break;} }
+		for(i=-128;i<-111;i++){ buf[416]=(byte)i; if(sha1_32(buf)==-692065532){break;} }
+		for(i=60;i<70;i++){ buf[417]=(byte)i; if(sha1_32(buf)==-656719562){break;} }
+		for(i=-56;i<-38;i++){ buf[418]=(byte)i; if(sha1_32(buf)==1945992188){break;} }
+		for(i=83;i<85;i++){ buf[419]=(byte)i; if(sha1_32(buf)==197698086){break;} }
+		for(i=48;i<66;i++){ buf[420]=(byte)i; if(sha1_32(buf)==70040005){break;} }
+		for(i=22;i<35;i++){ buf[421]=(byte)i; if(sha1_32(buf)==-574241964){break;} }
+		for(i=-54;i<-38;i++){ buf[422]=(byte)i; if(sha1_32(buf)==692425308){break;} }
+		for(i=-52;i<-29;i++){ buf[423]=(byte)i; if(sha1_32(buf)==-504318616){break;} }
+		for(i=-58;i<-35;i++){ buf[424]=(byte)i; if(sha1_32(buf)==-1511386926){break;} }
+		for(i=46;i<56;i++){ buf[425]=(byte)i; if(sha1_32(buf)==-500566997){break;} }
+		for(i=102;i<120;i++){ buf[426]=(byte)i; if(sha1_32(buf)==-412409781){break;} }
+		for(i=58;i<84;i++){ buf[427]=(byte)i; if(sha1_32(buf)==440798360){break;} }
+		for(i=78;i<95;i++){ buf[428]=(byte)i; if(sha1_32(buf)==-1954276997){break;} }
+		for(i=61;i<76;i++){ buf[429]=(byte)i; if(sha1_32(buf)==-134728878){break;} }
+		for(i=23;i<35;i++){ buf[430]=(byte)i; if(sha1_32(buf)==-1807356915){break;} }
+		for(i=-14;i<3;i++){ buf[431]=(byte)i; if(sha1_32(buf)==2033570311){break;} }
+		for(i=33;i<43;i++){ buf[432]=(byte)i; if(sha1_32(buf)==392640748){break;} }
+		for(i=-20;i<-3;i++){ buf[433]=(byte)i; if(sha1_32(buf)==-1419969955){break;} }
+		for(i=-126;i<-114;i++){ buf[434]=(byte)i; if(sha1_32(buf)==772566419){break;} }
+		for(i=-27;i<-16;i++){ buf[435]=(byte)i; if(sha1_32(buf)==297619528){break;} }
+		for(i=126;i<128;i++){ buf[436]=(byte)i; if(sha1_32(buf)==1385785288){break;} }
+		for(i=-51;i<-37;i++){ buf[437]=(byte)i; if(sha1_32(buf)==880294201){break;} }
+		for(i=-49;i<-21;i++){ buf[438]=(byte)i; if(sha1_32(buf)==-1294526762){break;} }
+		for(i=-26;i<-12;i++){ buf[439]=(byte)i; if(sha1_32(buf)==-156125962){break;} }
+		for(i=100;i<112;i++){ buf[440]=(byte)i; if(sha1_32(buf)==2006403991){break;} }
+		for(i=-61;i<-57;i++){ buf[441]=(byte)i; if(sha1_32(buf)==1718976824){break;} }
+		for(i=-16;i<-1;i++){ buf[442]=(byte)i; if(sha1_32(buf)==-116749740){break;} }
+		for(i=91;i<108;i++){ buf[443]=(byte)i; if(sha1_32(buf)==-413485904){break;} }
+		for(i=10;i<16;i++){ buf[444]=(byte)i; if(sha1_32(buf)==390025408){break;} }
+		for(i=-10;i<7;i++){ buf[445]=(byte)i; if(sha1_32(buf)==758686899){break;} }
+		for(i=75;i<78;i++){ buf[446]=(byte)i; if(sha1_32(buf)==-1325357907){break;} }
+		for(i=56;i<60;i++){ buf[447]=(byte)i; if(sha1_32(buf)==-997151333){break;} }
+		for(i=64;i<83;i++){ buf[448]=(byte)i; if(sha1_32(buf)==-1662879764){break;} }
+		for(i=-52;i<-39;i++){ buf[449]=(byte)i; if(sha1_32(buf)==-1003776372){break;} }
+		for(i=-76;i<-65;i++){ buf[450]=(byte)i; if(sha1_32(buf)==2006862105){break;} }
+		for(i=86;i<103;i++){ buf[451]=(byte)i; if(sha1_32(buf)==-1274011346){break;} }
+		for(i=-128;i<-113;i++){ buf[452]=(byte)i; if(sha1_32(buf)==1879398651){break;} }
+		for(i=-36;i<-21;i++){ buf[453]=(byte)i; if(sha1_32(buf)==-1639255165){break;} }
+		for(i=39;i<53;i++){ buf[454]=(byte)i; if(sha1_32(buf)==1817345659){break;} }
+		for(i=16;i<40;i++){ buf[455]=(byte)i; if(sha1_32(buf)==1839836208){break;} }
+		for(i=-72;i<-58;i++){ buf[456]=(byte)i; if(sha1_32(buf)==204040943){break;} }
+		for(i=-102;i<-86;i++){ buf[457]=(byte)i; if(sha1_32(buf)==1602982921){break;} }
+		for(i=64;i<81;i++){ buf[458]=(byte)i; if(sha1_32(buf)==-1733367814){break;} }
+		for(i=9;i<23;i++){ buf[459]=(byte)i; if(sha1_32(buf)==-2043930819){break;} }
+		for(i=39;i<50;i++){ buf[460]=(byte)i; if(sha1_32(buf)==1785871468){break;} }
+		for(i=34;i<48;i++){ buf[461]=(byte)i; if(sha1_32(buf)==1966201327){break;} }
+		for(i=120;i<128;i++){ buf[462]=(byte)i; if(sha1_32(buf)==1019347348){break;} }
+		for(i=-10;i<0;i++){ buf[463]=(byte)i; if(sha1_32(buf)==-209777892){break;} }
+		for(i=-119;i<-90;i++){ buf[464]=(byte)i; if(sha1_32(buf)==-731513430){break;} }
+		for(i=68;i<83;i++){ buf[465]=(byte)i; if(sha1_32(buf)==-465955926){break;} }
+		for(i=-46;i<-43;i++){ buf[466]=(byte)i; if(sha1_32(buf)==128926676){break;} }
+		for(i=112;i<118;i++){ buf[467]=(byte)i; if(sha1_32(buf)==1701166699){break;} }
+		for(i=94;i<121;i++){ buf[468]=(byte)i; if(sha1_32(buf)==-1622215387){break;} }
+		for(i=-83;i<-63;i++){ buf[469]=(byte)i; if(sha1_32(buf)==1433786956){break;} }
+		for(i=110;i<123;i++){ buf[470]=(byte)i; if(sha1_32(buf)==-275726831){break;} }
+		for(i=-118;i<-90;i++){ buf[471]=(byte)i; if(sha1_32(buf)==-1312472895){break;} }
+		for(i=107;i<128;i++){ buf[472]=(byte)i; if(sha1_32(buf)==673179471){break;} }
+		for(i=-51;i<-39;i++){ buf[473]=(byte)i; if(sha1_32(buf)==2038637339){break;} }
+		for(i=98;i<108;i++){ buf[474]=(byte)i; if(sha1_32(buf)==-139986743){break;} }
+		for(i=94;i<111;i++){ buf[475]=(byte)i; if(sha1_32(buf)==-106738546){break;} }
+		for(i=-115;i<-101;i++){ buf[476]=(byte)i; if(sha1_32(buf)==1955006077){break;} }
+		for(i=-21;i<-10;i++){ buf[477]=(byte)i; if(sha1_32(buf)==104471866){break;} }
+		for(i=-122;i<-96;i++){ buf[478]=(byte)i; if(sha1_32(buf)==-642729576){break;} }
+		for(i=-44;i<-35;i++){ buf[479]=(byte)i; if(sha1_32(buf)==707695167){break;} }
+		for(i=12;i<16;i++){ buf[480]=(byte)i; if(sha1_32(buf)==1054006277){break;} }
+		for(i=108;i<125;i++){ buf[481]=(byte)i; if(sha1_32(buf)==-179060197){break;} }
+		for(i=80;i<97;i++){ buf[482]=(byte)i; if(sha1_32(buf)==-15145420){break;} }
+		for(i=1;i<24;i++){ buf[483]=(byte)i; if(sha1_32(buf)==-326306831){break;} }
+		for(i=99;i<105;i++){ buf[484]=(byte)i; if(sha1_32(buf)==-850046943){break;} }
+		for(i=-111;i<-87;i++){ buf[485]=(byte)i; if(sha1_32(buf)==-432444614){break;} }
+		for(i=-80;i<-53;i++){ buf[486]=(byte)i; if(sha1_32(buf)==-691353014){break;} }
+		for(i=53;i<74;i++){ buf[487]=(byte)i; if(sha1_32(buf)==-655801843){break;} }
+		for(i=20;i<48;i++){ buf[488]=(byte)i; if(sha1_32(buf)==-926468227){break;} }
+		for(i=-32;i<-14;i++){ buf[489]=(byte)i; if(sha1_32(buf)==-172222890){break;} }
+		for(i=58;i<75;i++){ buf[490]=(byte)i; if(sha1_32(buf)==61082282){break;} }
+		for(i=-120;i<-105;i++){ buf[491]=(byte)i; if(sha1_32(buf)==1388549014){break;} }
+		for(i=39;i<64;i++){ buf[492]=(byte)i; if(sha1_32(buf)==1508362315){break;} }
+		for(i=-18;i<-1;i++){ buf[493]=(byte)i; if(sha1_32(buf)==-1432160599){break;} }
+		for(i=-42;i<-34;i++){ buf[494]=(byte)i; if(sha1_32(buf)==-678988139){break;} }
+		for(i=-88;i<-78;i++){ buf[495]=(byte)i; if(sha1_32(buf)==-1171114317){break;} }
+		for(i=57;i<77;i++){ buf[496]=(byte)i; if(sha1_32(buf)==-1346837991){break;} }
+		for(i=-20;i<2;i++){ buf[497]=(byte)i; if(sha1_32(buf)==-788487377){break;} }
+		for(i=93;i<107;i++){ buf[498]=(byte)i; if(sha1_32(buf)==-1027514728){break;} }
+		for(i=18;i<31;i++){ buf[499]=(byte)i; if(sha1_32(buf)==-2033435078){break;} }
+		for(i=0;i<21;i++){ buf[500]=(byte)i; if(sha1_32(buf)==1334304208){break;} }
+		for(i=91;i<120;i++){ buf[501]=(byte)i; if(sha1_32(buf)==956514894){break;} }
+		for(i=-26;i<-11;i++){ buf[502]=(byte)i; if(sha1_32(buf)==1505777191){break;} }
+		for(i=98;i<114;i++){ buf[503]=(byte)i; if(sha1_32(buf)==915356530){break;} }
+		for(i=111;i<128;i++){ buf[504]=(byte)i; if(sha1_32(buf)==-950249856){break;} }
+		for(i=97;i<103;i++){ buf[505]=(byte)i; if(sha1_32(buf)==1382871801){break;} }
+		for(i=102;i<122;i++){ buf[506]=(byte)i; if(sha1_32(buf)==-476143635){break;} }
+		for(i=64;i<70;i++){ buf[507]=(byte)i; if(sha1_32(buf)==-2071524480){break;} }
+		for(i=-101;i<-83;i++){ buf[508]=(byte)i; if(sha1_32(buf)==304681325){break;} }
+		for(i=113;i<128;i++){ buf[509]=(byte)i; if(sha1_32(buf)==670869803){break;} }
+		for(i=9;i<18;i++){ buf[510]=(byte)i; if(sha1_32(buf)==637937613){break;} }
+		for(i=110;i<128;i++){ buf[511]=(byte)i; if(sha1_32(buf)==-442517928){break;} }
+		for(i=100;i<110;i++){ buf[512]=(byte)i; if(sha1_32(buf)==-1986471280){break;} }
+		for(i=100;i<113;i++){ buf[513]=(byte)i; if(sha1_32(buf)==1503700589){break;} }
+		for(i=-128;i<-121;i++){ buf[514]=(byte)i; if(sha1_32(buf)==886428024){break;} }
+		for(i=-128;i<-120;i++){ buf[515]=(byte)i; if(sha1_32(buf)==-581350968){break;} }
+		for(i=-128;i<-111;i++){ buf[516]=(byte)i; if(sha1_32(buf)==-2094567266){break;} }
+		for(i=117;i<126;i++){ buf[517]=(byte)i; if(sha1_32(buf)==-2007639199){break;} }
+		for(i=40;i<57;i++){ buf[518]=(byte)i; if(sha1_32(buf)==-360568706){break;} }
+		for(i=-28;i<-7;i++){ buf[519]=(byte)i; if(sha1_32(buf)==1149526634){break;} }
+		for(i=-8;i<4;i++){ buf[520]=(byte)i; if(sha1_32(buf)==960124012){break;} }
+		for(i=-110;i<-88;i++){ buf[521]=(byte)i; if(sha1_32(buf)==-1067574472){break;} }
+		for(i=-81;i<-67;i++){ buf[522]=(byte)i; if(sha1_32(buf)==-16917824){break;} }
+		for(i=-43;i<-39;i++){ buf[523]=(byte)i; if(sha1_32(buf)==-711818536){break;} }
+		for(i=104;i<125;i++){ buf[524]=(byte)i; if(sha1_32(buf)==-802084009){break;} }
+		for(i=46;i<67;i++){ buf[525]=(byte)i; if(sha1_32(buf)==-2037876466){break;} }
+		for(i=-94;i<-84;i++){ buf[526]=(byte)i; if(sha1_32(buf)==2048362522){break;} }
+		for(i=60;i<86;i++){ buf[527]=(byte)i; if(sha1_32(buf)==1380366175){break;} }
+		for(i=68;i<84;i++){ buf[528]=(byte)i; if(sha1_32(buf)==1029807719){break;} }
+		for(i=-111;i<-90;i++){ buf[529]=(byte)i; if(sha1_32(buf)==764436426){break;} }
+		for(i=-54;i<-33;i++){ buf[530]=(byte)i; if(sha1_32(buf)==1361167146){break;} }
+		for(i=-128;i<-106;i++){ buf[531]=(byte)i; if(sha1_32(buf)==-562663318){break;} }
+		for(i=-23;i<-11;i++){ buf[532]=(byte)i; if(sha1_32(buf)==218883100){break;} }
+		for(i=-113;i<-88;i++){ buf[533]=(byte)i; if(sha1_32(buf)==868644978){break;} }
+		for(i=60;i<69;i++){ buf[534]=(byte)i; if(sha1_32(buf)==-1698785893){break;} }
+		for(i=97;i<123;i++){ buf[535]=(byte)i; if(sha1_32(buf)==128759080){break;} }
+		for(i=-21;i<-8;i++){ buf[536]=(byte)i; if(sha1_32(buf)==2018881787){break;} }
+		for(i=20;i<28;i++){ buf[537]=(byte)i; if(sha1_32(buf)==-401886825){break;} }
+		for(i=-63;i<-45;i++){ buf[538]=(byte)i; if(sha1_32(buf)==1127759497){break;} }
+		for(i=-90;i<-87;i++){ buf[539]=(byte)i; if(sha1_32(buf)==-568964438){break;} }
+		for(i=52;i<69;i++){ buf[540]=(byte)i; if(sha1_32(buf)==-1595469459){break;} }
+		for(i=25;i<43;i++){ buf[541]=(byte)i; if(sha1_32(buf)==852344673){break;} }
+		for(i=-85;i<-77;i++){ buf[542]=(byte)i; if(sha1_32(buf)==1374630540){break;} }
+		for(i=-7;i<12;i++){ buf[543]=(byte)i; if(sha1_32(buf)==1374630540){break;} }
+		for(i=55;i<64;i++){ buf[544]=(byte)i; if(sha1_32(buf)==1572170170){break;} }
+		for(i=88;i<94;i++){ buf[545]=(byte)i; if(sha1_32(buf)==-743304081){break;} }
+		for(i=50;i<53;i++){ buf[546]=(byte)i; if(sha1_32(buf)==220143552){break;} }
+		for(i=-23;i<-14;i++){ buf[547]=(byte)i; if(sha1_32(buf)==-1738681972){break;} }
+		for(i=85;i<111;i++){ buf[548]=(byte)i; if(sha1_32(buf)==-1331394088){break;} }
+		for(i=-128;i<-105;i++){ buf[549]=(byte)i; if(sha1_32(buf)==1631100359){break;} }
+		for(i=-83;i<-74;i++){ buf[550]=(byte)i; if(sha1_32(buf)==1888706876){break;} }
+		for(i=-125;i<-101;i++){ buf[551]=(byte)i; if(sha1_32(buf)==1551815145){break;} }
+		for(i=107;i<121;i++){ buf[552]=(byte)i; if(sha1_32(buf)==1135488641){break;} }
+		for(i=81;i<87;i++){ buf[553]=(byte)i; if(sha1_32(buf)==-218604536){break;} }
+		for(i=95;i<119;i++){ buf[554]=(byte)i; if(sha1_32(buf)==1573752644){break;} }
+		for(i=94;i<109;i++){ buf[555]=(byte)i; if(sha1_32(buf)==-1293615149){break;} }
+		for(i=31;i<46;i++){ buf[556]=(byte)i; if(sha1_32(buf)==-561389649){break;} }
+		for(i=-104;i<-86;i++){ buf[557]=(byte)i; if(sha1_32(buf)==-1883690220){break;} }
+		for(i=-27;i<-10;i++){ buf[558]=(byte)i; if(sha1_32(buf)==1207309981){break;} }
+		for(i=92;i<106;i++){ buf[559]=(byte)i; if(sha1_32(buf)==-1286756140){break;} }
+		for(i=-30;i<-23;i++){ buf[560]=(byte)i; if(sha1_32(buf)==-522853723){break;} }
+		for(i=-82;i<-74;i++){ buf[561]=(byte)i; if(sha1_32(buf)==-860177864){break;} }
+		for(i=-10;i<10;i++){ buf[562]=(byte)i; if(sha1_32(buf)==1314217318){break;} }
+		for(i=14;i<20;i++){ buf[563]=(byte)i; if(sha1_32(buf)==930984528){break;} }
+		for(i=84;i<93;i++){ buf[564]=(byte)i; if(sha1_32(buf)==-1935331710){break;} }
+		for(i=0;i<20;i++){ buf[565]=(byte)i; if(sha1_32(buf)==-173103010){break;} }
+		for(i=-34;i<-31;i++){ buf[566]=(byte)i; if(sha1_32(buf)==931821541){break;} }
+		for(i=-94;i<-82;i++){ buf[567]=(byte)i; if(sha1_32(buf)==2091631634){break;} }
+		for(i=107;i<127;i++){ buf[568]=(byte)i; if(sha1_32(buf)==1058881297){break;} }
+		for(i=-62;i<-37;i++){ buf[569]=(byte)i; if(sha1_32(buf)==-352043825){break;} }
+		for(i=111;i<124;i++){ buf[570]=(byte)i; if(sha1_32(buf)==-959532285){break;} }
+		for(i=83;i<98;i++){ buf[571]=(byte)i; if(sha1_32(buf)==-296184499){break;} }
+		for(i=-15;i<7;i++){ buf[572]=(byte)i; if(sha1_32(buf)==-296184499){break;} }
+		for(i=82;i<110;i++){ buf[573]=(byte)i; if(sha1_32(buf)==1445051783){break;} }
+		for(i=-2;i<10;i++){ buf[574]=(byte)i; if(sha1_32(buf)==712479158){break;} }
+		for(i=-29;i<-24;i++){ buf[575]=(byte)i; if(sha1_32(buf)==-1588442693){break;} }
+		for(i=40;i<60;i++){ buf[576]=(byte)i; if(sha1_32(buf)==963135318){break;} }
+		for(i=88;i<110;i++){ buf[577]=(byte)i; if(sha1_32(buf)==153437859){break;} }
+		for(i=108;i<122;i++){ buf[578]=(byte)i; if(sha1_32(buf)==-69964939){break;} }
+		for(i=78;i<105;i++){ buf[579]=(byte)i; if(sha1_32(buf)==1051152855){break;} }
+		for(i=25;i<33;i++){ buf[580]=(byte)i; if(sha1_32(buf)==1935278331){break;} }
+		for(i=43;i<65;i++){ buf[581]=(byte)i; if(sha1_32(buf)==-1632750518){break;} }
+		for(i=-128;i<-119;i++){ buf[582]=(byte)i; if(sha1_32(buf)==-1166247176){break;} }
+		for(i=105;i<109;i++){ buf[583]=(byte)i; if(sha1_32(buf)==-17857259){break;} }
+		for(i=-51;i<-38;i++){ buf[584]=(byte)i; if(sha1_32(buf)==-882402219){break;} }
+		for(i=62;i<75;i++){ buf[585]=(byte)i; if(sha1_32(buf)==-1468082835){break;} }
+		for(i=-128;i<-120;i++){ buf[586]=(byte)i; if(sha1_32(buf)==-1915443628){break;} }
+		for(i=41;i<61;i++){ buf[587]=(byte)i; if(sha1_32(buf)==-1432188492){break;} }
+		for(i=54;i<74;i++){ buf[588]=(byte)i; if(sha1_32(buf)==-70544770){break;} }
+		for(i=74;i<93;i++){ buf[589]=(byte)i; if(sha1_32(buf)==1602271713){break;} }
+		for(i=84;i<88;i++){ buf[590]=(byte)i; if(sha1_32(buf)==-896021801){break;} }
+		for(i=-6;i<14;i++){ buf[591]=(byte)i; if(sha1_32(buf)==1668321868){break;} }
+		for(i=-12;i<17;i++){ buf[592]=(byte)i; if(sha1_32(buf)==-410945545){break;} }
+		for(i=-4;i<4;i++){ buf[593]=(byte)i; if(sha1_32(buf)==-1415338124){break;} }
+		for(i=-84;i<-68;i++){ buf[594]=(byte)i; if(sha1_32(buf)==-1375407866){break;} }
+		for(i=-30;i<-1;i++){ buf[595]=(byte)i; if(sha1_32(buf)==-926359490){break;} }
+		for(i=-48;i<-28;i++){ buf[596]=(byte)i; if(sha1_32(buf)==-1608597094){break;} }
+		for(i=117;i<126;i++){ buf[597]=(byte)i; if(sha1_32(buf)==730541988){break;} }
+		for(i=-116;i<-94;i++){ buf[598]=(byte)i; if(sha1_32(buf)==1026307809){break;} }
+		for(i=-105;i<-96;i++){ buf[599]=(byte)i; if(sha1_32(buf)==-1359705461){break;} }
+		for(i=-121;i<-101;i++){ buf[600]=(byte)i; if(sha1_32(buf)==-1115044370){break;} }
+		for(i=87;i<105;i++){ buf[601]=(byte)i; if(sha1_32(buf)==-1801973301){break;} }
+		for(i=-12;i<16;i++){ buf[602]=(byte)i; if(sha1_32(buf)==-1344248637){break;} }
+		for(i=-120;i<-94;i++){ buf[603]=(byte)i; if(sha1_32(buf)==-1196050644){break;} }
+		for(i=24;i<34;i++){ buf[604]=(byte)i; if(sha1_32(buf)==978728246){break;} }
+		for(i=-21;i<-3;i++){ buf[605]=(byte)i; if(sha1_32(buf)==-1884125656){break;} }
+		for(i=16;i<18;i++){ buf[606]=(byte)i; if(sha1_32(buf)==-1182703735){break;} }
+		for(i=-56;i<-35;i++){ buf[607]=(byte)i; if(sha1_32(buf)==-1678298556){break;} }
+		for(i=-12;i<7;i++){ buf[608]=(byte)i; if(sha1_32(buf)==-1678298556){break;} }
+		for(i=-83;i<-82;i++){ buf[609]=(byte)i; if(sha1_32(buf)==-772188230){break;} }
+		for(i=-88;i<-77;i++){ buf[610]=(byte)i; if(sha1_32(buf)==515885754){break;} }
+		for(i=-42;i<-21;i++){ buf[611]=(byte)i; if(sha1_32(buf)==1161082053){break;} }
+		for(i=6;i<10;i++){ buf[612]=(byte)i; if(sha1_32(buf)==-1960871434){break;} }
+		for(i=-67;i<-52;i++){ buf[613]=(byte)i; if(sha1_32(buf)==2085918826){break;} }
+		for(i=26;i<40;i++){ buf[614]=(byte)i; if(sha1_32(buf)==212901989){break;} }
+		for(i=-32;i<-7;i++){ buf[615]=(byte)i; if(sha1_32(buf)==-1010754503){break;} }
+		for(i=64;i<89;i++){ buf[616]=(byte)i; if(sha1_32(buf)==450512331){break;} }
+		for(i=123;i<128;i++){ buf[617]=(byte)i; if(sha1_32(buf)==1629705288){break;} }
+		for(i=5;i<24;i++){ buf[618]=(byte)i; if(sha1_32(buf)==-1812514596){break;} }
+		for(i=-98;i<-80;i++){ buf[619]=(byte)i; if(sha1_32(buf)==-1956307323){break;} }
+		for(i=108;i<127;i++){ buf[620]=(byte)i; if(sha1_32(buf)==-328099142){break;} }
+		for(i=-84;i<-54;i++){ buf[621]=(byte)i; if(sha1_32(buf)==-838675483){break;} }
+		for(i=-25;i<-21;i++){ buf[622]=(byte)i; if(sha1_32(buf)==2103515250){break;} }
+		for(i=-123;i<-110;i++){ buf[623]=(byte)i; if(sha1_32(buf)==858029079){break;} }
+		for(i=-119;i<-104;i++){ buf[624]=(byte)i; if(sha1_32(buf)==1311739991){break;} }
+		for(i=-22;i<-3;i++){ buf[625]=(byte)i; if(sha1_32(buf)==-337412661){break;} }
+		for(i=13;i<37;i++){ buf[626]=(byte)i; if(sha1_32(buf)==-420040227){break;} }
+		for(i=-70;i<-55;i++){ buf[627]=(byte)i; if(sha1_32(buf)==1616539448){break;} }
+		for(i=33;i<49;i++){ buf[628]=(byte)i; if(sha1_32(buf)==1411716467){break;} }
+		for(i=-29;i<-26;i++){ buf[629]=(byte)i; if(sha1_32(buf)==1859001008){break;} }
+		for(i=-80;i<-58;i++){ buf[630]=(byte)i; if(sha1_32(buf)==-1533927405){break;} }
+		for(i=8;i<22;i++){ buf[631]=(byte)i; if(sha1_32(buf)==-1519959444){break;} }
+		for(i=53;i<73;i++){ buf[632]=(byte)i; if(sha1_32(buf)==138579346){break;} }
+		for(i=-65;i<-57;i++){ buf[633]=(byte)i; if(sha1_32(buf)==204014696){break;} }
+		for(i=-50;i<-27;i++){ buf[634]=(byte)i; if(sha1_32(buf)==-146980453){break;} }
+		for(i=-69;i<-44;i++){ buf[635]=(byte)i; if(sha1_32(buf)==1853832791){break;} }
+		for(i=-84;i<-64;i++){ buf[636]=(byte)i; if(sha1_32(buf)==1299706769){break;} }
+		for(i=49;i<68;i++){ buf[637]=(byte)i; if(sha1_32(buf)==264074162){break;} }
+		for(i=91;i<107;i++){ buf[638]=(byte)i; if(sha1_32(buf)==-1924612968){break;} }
+		for(i=29;i<50;i++){ buf[639]=(byte)i; if(sha1_32(buf)==1731236477){break;} }
+		for(i=79;i<96;i++){ buf[640]=(byte)i; if(sha1_32(buf)==-355235566){break;} }
+		for(i=-16;i<9;i++){ buf[641]=(byte)i; if(sha1_32(buf)==-1821842257){break;} }
+		for(i=-58;i<-40;i++){ buf[642]=(byte)i; if(sha1_32(buf)==-1040311103){break;} }
+		for(i=81;i<89;i++){ buf[643]=(byte)i; if(sha1_32(buf)==1980991801){break;} }
+		for(i=35;i<61;i++){ buf[644]=(byte)i; if(sha1_32(buf)==1478461732){break;} }
+		for(i=-56;i<-38;i++){ buf[645]=(byte)i; if(sha1_32(buf)==-149715806){break;} }
+		for(i=-100;i<-97;i++){ buf[646]=(byte)i; if(sha1_32(buf)==2001102187){break;} }
+		for(i=-47;i<-29;i++){ buf[647]=(byte)i; if(sha1_32(buf)==1383686598){break;} }
+		for(i=-105;i<-89;i++){ buf[648]=(byte)i; if(sha1_32(buf)==1180044767){break;} }
+		for(i=-28;i<-19;i++){ buf[649]=(byte)i; if(sha1_32(buf)==13323362){break;} }
+		for(i=-88;i<-69;i++){ buf[650]=(byte)i; if(sha1_32(buf)==52941294){break;} }
+		for(i=-22;i<-13;i++){ buf[651]=(byte)i; if(sha1_32(buf)==2142134459){break;} }
+		for(i=-42;i<-28;i++){ buf[652]=(byte)i; if(sha1_32(buf)==892161037){break;} }
+		for(i=-118;i<-91;i++){ buf[653]=(byte)i; if(sha1_32(buf)==258070194){break;} }
+		for(i=-5;i<13;i++){ buf[654]=(byte)i; if(sha1_32(buf)==258070194){break;} }
+		for(i=-9;i<7;i++){ buf[655]=(byte)i; if(sha1_32(buf)==54121196){break;} }
+		for(i=-128;i<-118;i++){ buf[656]=(byte)i; if(sha1_32(buf)==-761820394){break;} }
+		for(i=-86;i<-75;i++){ buf[657]=(byte)i; if(sha1_32(buf)==1982364048){break;} }
+		for(i=76;i<102;i++){ buf[658]=(byte)i; if(sha1_32(buf)==-1488586582){break;} }
+		for(i=-104;i<-94;i++){ buf[659]=(byte)i; if(sha1_32(buf)==-503896126){break;} }
+		for(i=61;i<76;i++){ buf[660]=(byte)i; if(sha1_32(buf)==-1470006073){break;} }
+		for(i=-5;i<8;i++){ buf[661]=(byte)i; if(sha1_32(buf)==-1470006073){break;} }
+		for(i=-17;i<-8;i++){ buf[662]=(byte)i; if(sha1_32(buf)==1267548313){break;} }
+		for(i=95;i<104;i++){ buf[663]=(byte)i; if(sha1_32(buf)==223506910){break;} }
+		for(i=30;i<49;i++){ buf[664]=(byte)i; if(sha1_32(buf)==1652587829){break;} }
+		for(i=6;i<26;i++){ buf[665]=(byte)i; if(sha1_32(buf)==1212420133){break;} }
+		for(i=-85;i<-72;i++){ buf[666]=(byte)i; if(sha1_32(buf)==-584722064){break;} }
+		for(i=77;i<92;i++){ buf[667]=(byte)i; if(sha1_32(buf)==-2002653835){break;} }
+		for(i=-79;i<-60;i++){ buf[668]=(byte)i; if(sha1_32(buf)==1792677280){break;} }
+		for(i=71;i<91;i++){ buf[669]=(byte)i; if(sha1_32(buf)==856452514){break;} }
+		for(i=36;i<49;i++){ buf[670]=(byte)i; if(sha1_32(buf)==-883610971){break;} }
+		for(i=-65;i<-50;i++){ buf[671]=(byte)i; if(sha1_32(buf)==-1169895546){break;} }
+		for(i=-20;i<-6;i++){ buf[672]=(byte)i; if(sha1_32(buf)==1228051989){break;} }
+		for(i=-57;i<-40;i++){ buf[673]=(byte)i; if(sha1_32(buf)==1265489416){break;} }
+		for(i=116;i<124;i++){ buf[674]=(byte)i; if(sha1_32(buf)==870340828){break;} }
+		for(i=-100;i<-83;i++){ buf[675]=(byte)i; if(sha1_32(buf)==1230978336){break;} }
+		for(i=63;i<72;i++){ buf[676]=(byte)i; if(sha1_32(buf)==403782528){break;} }
+		for(i=69;i<74;i++){ buf[677]=(byte)i; if(sha1_32(buf)==1729958280){break;} }
+		for(i=47;i<57;i++){ buf[678]=(byte)i; if(sha1_32(buf)==1872003074){break;} }
+		for(i=-73;i<-49;i++){ buf[679]=(byte)i; if(sha1_32(buf)==-462366926){break;} }
+		for(i=-128;i<-115;i++){ buf[680]=(byte)i; if(sha1_32(buf)==-869056007){break;} }
+		for(i=59;i<77;i++){ buf[681]=(byte)i; if(sha1_32(buf)==-69983135){break;} }
+		for(i=66;i<84;i++){ buf[682]=(byte)i; if(sha1_32(buf)==498374224){break;} }
+		for(i=-6;i<15;i++){ buf[683]=(byte)i; if(sha1_32(buf)==-1360717296){break;} }
+		for(i=-3;i<16;i++){ buf[684]=(byte)i; if(sha1_32(buf)==-2125189020){break;} }
+		for(i=34;i<55;i++){ buf[685]=(byte)i; if(sha1_32(buf)==-1333526855){break;} }
+		for(i=-51;i<-29;i++){ buf[686]=(byte)i; if(sha1_32(buf)==761112905){break;} }
+		for(i=58;i<76;i++){ buf[687]=(byte)i; if(sha1_32(buf)==948145804){break;} }
+		for(i=-88;i<-70;i++){ buf[688]=(byte)i; if(sha1_32(buf)==588496343){break;} }
+		for(i=84;i<93;i++){ buf[689]=(byte)i; if(sha1_32(buf)==-527255776){break;} }
+		for(i=-114;i<-99;i++){ buf[690]=(byte)i; if(sha1_32(buf)==210012073){break;} }
+		for(i=-107;i<-86;i++){ buf[691]=(byte)i; if(sha1_32(buf)==1934422258){break;} }
+		for(i=84;i<91;i++){ buf[692]=(byte)i; if(sha1_32(buf)==2135923057){break;} }
+		for(i=72;i<93;i++){ buf[693]=(byte)i; if(sha1_32(buf)==1975961665){break;} }
+		for(i=72;i<83;i++){ buf[694]=(byte)i; if(sha1_32(buf)==492235140){break;} }
+		for(i=-7;i<6;i++){ buf[695]=(byte)i; if(sha1_32(buf)==1669606133){break;} }
+		for(i=20;i<35;i++){ buf[696]=(byte)i; if(sha1_32(buf)==-2105498868){break;} }
+		for(i=-19;i<0;i++){ buf[697]=(byte)i; if(sha1_32(buf)==892038615){break;} }
+		for(i=-3;i<3;i++){ buf[698]=(byte)i; if(sha1_32(buf)==1282919283){break;} }
+		for(i=122;i<128;i++){ buf[699]=(byte)i; if(sha1_32(buf)==-505488861){break;} }
+		for(i=-77;i<-55;i++){ buf[700]=(byte)i; if(sha1_32(buf)==-438866339){break;} }
+		for(i=-20;i<0;i++){ buf[701]=(byte)i; if(sha1_32(buf)==-1750686589){break;} }
+		for(i=-16;i<-2;i++){ buf[702]=(byte)i; if(sha1_32(buf)==702920804){break;} }
+		for(i=-108;i<-91;i++){ buf[703]=(byte)i; if(sha1_32(buf)==-118426269){break;} }
+		for(i=98;i<104;i++){ buf[704]=(byte)i; if(sha1_32(buf)==1450205623){break;} }
+		for(i=104;i<125;i++){ buf[705]=(byte)i; if(sha1_32(buf)==-1342885908){break;} }
+		for(i=110;i<120;i++){ buf[706]=(byte)i; if(sha1_32(buf)==1234066282){break;} }
+		for(i=-100;i<-90;i++){ buf[707]=(byte)i; if(sha1_32(buf)==1714102189){break;} }
+		for(i=-68;i<-66;i++){ buf[708]=(byte)i; if(sha1_32(buf)==-629130645){break;} }
+		for(i=46;i<57;i++){ buf[709]=(byte)i; if(sha1_32(buf)==-511715230){break;} }
+		for(i=-114;i<-88;i++){ buf[710]=(byte)i; if(sha1_32(buf)==-742446974){break;} }
+		for(i=-78;i<-58;i++){ buf[711]=(byte)i; if(sha1_32(buf)==800129532){break;} }
+		for(i=29;i<57;i++){ buf[712]=(byte)i; if(sha1_32(buf)==1590997659){break;} }
+		for(i=-6;i<1;i++){ buf[713]=(byte)i; if(sha1_32(buf)==2109354751){break;} }
+		for(i=-120;i<-107;i++){ buf[714]=(byte)i; if(sha1_32(buf)==158693497){break;} }
+		for(i=-15;i<-1;i++){ buf[715]=(byte)i; if(sha1_32(buf)==692982217){break;} }
+		for(i=-56;i<-37;i++){ buf[716]=(byte)i; if(sha1_32(buf)==-487223283){break;} }
+		for(i=74;i<90;i++){ buf[717]=(byte)i; if(sha1_32(buf)==-1128685140){break;} }
+		for(i=100;i<127;i++){ buf[718]=(byte)i; if(sha1_32(buf)==1464606109){break;} }
+		for(i=15;i<31;i++){ buf[719]=(byte)i; if(sha1_32(buf)==-135995140){break;} }
+		for(i=-15;i<-8;i++){ buf[720]=(byte)i; if(sha1_32(buf)==-1523639676){break;} }
+		for(i=-107;i<-85;i++){ buf[721]=(byte)i; if(sha1_32(buf)==1805702931){break;} }
+		for(i=48;i<53;i++){ buf[722]=(byte)i; if(sha1_32(buf)==1870489821){break;} }
+		for(i=24;i<42;i++){ buf[723]=(byte)i; if(sha1_32(buf)==-154074162){break;} }
+		for(i=87;i<100;i++){ buf[724]=(byte)i; if(sha1_32(buf)==-430283044){break;} }
+		for(i=4;i<29;i++){ buf[725]=(byte)i; if(sha1_32(buf)==749073255){break;} }
+		for(i=-94;i<-74;i++){ buf[726]=(byte)i; if(sha1_32(buf)==-893331707){break;} }
+		for(i=92;i<118;i++){ buf[727]=(byte)i; if(sha1_32(buf)==239578261){break;} }
+		for(i=-17;i<-8;i++){ buf[728]=(byte)i; if(sha1_32(buf)==1310720243){break;} }
+		for(i=85;i<92;i++){ buf[729]=(byte)i; if(sha1_32(buf)==-273676885){break;} }
+		for(i=105;i<106;i++){ buf[730]=(byte)i; if(sha1_32(buf)==-1471850186){break;} }
+		for(i=-46;i<-19;i++){ buf[731]=(byte)i; if(sha1_32(buf)==-1974983548){break;} }
+		for(i=51;i<64;i++){ buf[732]=(byte)i; if(sha1_32(buf)==1128731344){break;} }
+		for(i=-96;i<-91;i++){ buf[733]=(byte)i; if(sha1_32(buf)==1069345569){break;} }
+		for(i=-38;i<-27;i++){ buf[734]=(byte)i; if(sha1_32(buf)==2086614855){break;} }
+		for(i=-46;i<-19;i++){ buf[735]=(byte)i; if(sha1_32(buf)==-691733375){break;} }
+		for(i=-24;i<-10;i++){ buf[736]=(byte)i; if(sha1_32(buf)==1748033041){break;} }
+		for(i=-21;i<3;i++){ buf[737]=(byte)i; if(sha1_32(buf)==-1944414678){break;} }
+		for(i=-12;i<13;i++){ buf[738]=(byte)i; if(sha1_32(buf)==-1944414678){break;} }
+		for(i=99;i<113;i++){ buf[739]=(byte)i; if(sha1_32(buf)==1922749822){break;} }
+		for(i=59;i<81;i++){ buf[740]=(byte)i; if(sha1_32(buf)==987926581){break;} }
+		for(i=-110;i<-95;i++){ buf[741]=(byte)i; if(sha1_32(buf)==-2052838839){break;} }
+		for(i=64;i<73;i++){ buf[742]=(byte)i; if(sha1_32(buf)==765222216){break;} }
+		for(i=10;i<17;i++){ buf[743]=(byte)i; if(sha1_32(buf)==-392075154){break;} }
+		for(i=-42;i<-34;i++){ buf[744]=(byte)i; if(sha1_32(buf)==-1589285847){break;} }
+		for(i=72;i<78;i++){ buf[745]=(byte)i; if(sha1_32(buf)==1918378702){break;} }
+		for(i=-128;i<-114;i++){ buf[746]=(byte)i; if(sha1_32(buf)==-1214669971){break;} }
+		for(i=-31;i<-25;i++){ buf[747]=(byte)i; if(sha1_32(buf)==-2033079012){break;} }
+		for(i=33;i<52;i++){ buf[748]=(byte)i; if(sha1_32(buf)==-1042118902){break;} }
+		for(i=-26;i<-19;i++){ buf[749]=(byte)i; if(sha1_32(buf)==2130320698){break;} }
+		for(i=-98;i<-84;i++){ buf[750]=(byte)i; if(sha1_32(buf)==1929010039){break;} }
+		for(i=-84;i<-78;i++){ buf[751]=(byte)i; if(sha1_32(buf)==-303164375){break;} }
+		for(i=83;i<106;i++){ buf[752]=(byte)i; if(sha1_32(buf)==1960182723){break;} }
+		for(i=-33;i<-12;i++){ buf[753]=(byte)i; if(sha1_32(buf)==430315389){break;} }
+		for(i=-53;i<-38;i++){ buf[754]=(byte)i; if(sha1_32(buf)==-1027211064){break;} }
+		for(i=83;i<100;i++){ buf[755]=(byte)i; if(sha1_32(buf)==-1795732631){break;} }
+		for(i=64;i<72;i++){ buf[756]=(byte)i; if(sha1_32(buf)==248847890){break;} }
+		for(i=-128;i<-115;i++){ buf[757]=(byte)i; if(sha1_32(buf)==-2075384851){break;} }
+		for(i=96;i<112;i++){ buf[758]=(byte)i; if(sha1_32(buf)==534707759){break;} }
+		for(i=-78;i<-60;i++){ buf[759]=(byte)i; if(sha1_32(buf)==1351183471){break;} }
+		for(i=6;i<36;i++){ buf[760]=(byte)i; if(sha1_32(buf)==2129634463){break;} }
+		for(i=47;i<65;i++){ buf[761]=(byte)i; if(sha1_32(buf)==-646786141){break;} }
+		for(i=-59;i<-53;i++){ buf[762]=(byte)i; if(sha1_32(buf)==1326070987){break;} }
+		for(i=-122;i<-110;i++){ buf[763]=(byte)i; if(sha1_32(buf)==370938658){break;} }
+		for(i=116;i<128;i++){ buf[764]=(byte)i; if(sha1_32(buf)==-1939025270){break;} }
+		for(i=49;i<65;i++){ buf[765]=(byte)i; if(sha1_32(buf)==898455357){break;} }
+		for(i=68;i<83;i++){ buf[766]=(byte)i; if(sha1_32(buf)==-2134538033){break;} }
+		for(i=23;i<41;i++){ buf[767]=(byte)i; if(sha1_32(buf)==-1331066045){break;} }
+		for(i=-126;i<-114;i++){ buf[768]=(byte)i; if(sha1_32(buf)==1702792365){break;} }
+		for(i=127;i<128;i++){ buf[769]=(byte)i; if(sha1_32(buf)==-1456735429){break;} }
+		for(i=96;i<116;i++){ buf[770]=(byte)i; if(sha1_32(buf)==-631162617){break;} }
+		for(i=-128;i<-107;i++){ buf[771]=(byte)i; if(sha1_32(buf)==-5299663){break;} }
+		for(i=-89;i<-60;i++){ buf[772]=(byte)i; if(sha1_32(buf)==-1912267322){break;} }
+		for(i=92;i<106;i++){ buf[773]=(byte)i; if(sha1_32(buf)==-1213021387){break;} }
+		for(i=-58;i<-38;i++){ buf[774]=(byte)i; if(sha1_32(buf)==242207662){break;} }
+		for(i=81;i<94;i++){ buf[775]=(byte)i; if(sha1_32(buf)==1671209014){break;} }
+		for(i=113;i<125;i++){ buf[776]=(byte)i; if(sha1_32(buf)==1943071094){break;} }
+		for(i=116;i<122;i++){ buf[777]=(byte)i; if(sha1_32(buf)==1533115781){break;} }
+		for(i=-128;i<-111;i++){ buf[778]=(byte)i; if(sha1_32(buf)==1587411948){break;} }
+		for(i=-98;i<-93;i++){ buf[779]=(byte)i; if(sha1_32(buf)==1445378747){break;} }
+		for(i=68;i<85;i++){ buf[780]=(byte)i; if(sha1_32(buf)==-987261294){break;} }
+		for(i=-73;i<-67;i++){ buf[781]=(byte)i; if(sha1_32(buf)==1606824991){break;} }
+		for(i=-128;i<-116;i++){ buf[782]=(byte)i; if(sha1_32(buf)==1151376886){break;} }
+		for(i=-34;i<-22;i++){ buf[783]=(byte)i; if(sha1_32(buf)==-1655961055){break;} }
+		for(i=28;i<44;i++){ buf[784]=(byte)i; if(sha1_32(buf)==-1959856564){break;} }
+		for(i=-67;i<-44;i++){ buf[785]=(byte)i; if(sha1_32(buf)==356896598){break;} }
+		for(i=-77;i<-67;i++){ buf[786]=(byte)i; if(sha1_32(buf)==121530167){break;} }
+		for(i=61;i<82;i++){ buf[787]=(byte)i; if(sha1_32(buf)==1965610257){break;} }
+		for(i=-69;i<-51;i++){ buf[788]=(byte)i; if(sha1_32(buf)==233910848){break;} }
+		for(i=-72;i<-55;i++){ buf[789]=(byte)i; if(sha1_32(buf)==-866085563){break;} }
+		for(i=116;i<128;i++){ buf[790]=(byte)i; if(sha1_32(buf)==462045721){break;} }
+		for(i=-76;i<-71;i++){ buf[791]=(byte)i; if(sha1_32(buf)==-999411979){break;} }
+		for(i=111;i<127;i++){ buf[792]=(byte)i; if(sha1_32(buf)==-1343353552){break;} }
+		for(i=18;i<48;i++){ buf[793]=(byte)i; if(sha1_32(buf)==-1418948954){break;} }
+		for(i=-126;i<-115;i++){ buf[794]=(byte)i; if(sha1_32(buf)==16473468){break;} }
+		for(i=19;i<49;i++){ buf[795]=(byte)i; if(sha1_32(buf)==2038958131){break;} }
+		for(i=3;i<15;i++){ buf[796]=(byte)i; if(sha1_32(buf)==1581487851){break;} }
+		for(i=116;i<128;i++){ buf[797]=(byte)i; if(sha1_32(buf)==-625902940){break;} }
+		for(i=2;i<21;i++){ buf[798]=(byte)i; if(sha1_32(buf)==-633149457){break;} }
+		for(i=113;i<121;i++){ buf[799]=(byte)i; if(sha1_32(buf)==-381933212){break;} }
+		for(i=16;i<36;i++){ buf[800]=(byte)i; if(sha1_32(buf)==331084708){break;} }
+		for(i=39;i<44;i++){ buf[801]=(byte)i; if(sha1_32(buf)==1222367225){break;} }
+		for(i=-128;i<-112;i++){ buf[802]=(byte)i; if(sha1_32(buf)==-66844867){break;} }
+		for(i=87;i<104;i++){ buf[803]=(byte)i; if(sha1_32(buf)==-266017047){break;} }
+		for(i=38;i<52;i++){ buf[804]=(byte)i; if(sha1_32(buf)==-1686631214){break;} }
+		for(i=111;i<127;i++){ buf[805]=(byte)i; if(sha1_32(buf)==-75151599){break;} }
+		for(i=60;i<79;i++){ buf[806]=(byte)i; if(sha1_32(buf)==-1794523869){break;} }
+		for(i=-21;i<-11;i++){ buf[807]=(byte)i; if(sha1_32(buf)==815079208){break;} }
+		for(i=58;i<82;i++){ buf[808]=(byte)i; if(sha1_32(buf)==-2129972080){break;} }
+		for(i=12;i<27;i++){ buf[809]=(byte)i; if(sha1_32(buf)==159249459){break;} }
+		for(i=-111;i<-98;i++){ buf[810]=(byte)i; if(sha1_32(buf)==-1969658836){break;} }
+		for(i=-50;i<-33;i++){ buf[811]=(byte)i; if(sha1_32(buf)==131974067){break;} }
+		for(i=-120;i<-94;i++){ buf[812]=(byte)i; if(sha1_32(buf)==-1427002276){break;} }
+		for(i=-44;i<-26;i++){ buf[813]=(byte)i; if(sha1_32(buf)==789910914){break;} }
+		for(i=-3;i<22;i++){ buf[814]=(byte)i; if(sha1_32(buf)==1469868840){break;} }
+		for(i=-109;i<-93;i++){ buf[815]=(byte)i; if(sha1_32(buf)==687981739){break;} }
+		for(i=-14;i<2;i++){ buf[816]=(byte)i; if(sha1_32(buf)==1914334056){break;} }
+		for(i=3;i<16;i++){ buf[817]=(byte)i; if(sha1_32(buf)==2101367090){break;} }
+		for(i=83;i<103;i++){ buf[818]=(byte)i; if(sha1_32(buf)==-131931849){break;} }
+		for(i=80;i<92;i++){ buf[819]=(byte)i; if(sha1_32(buf)==1770004745){break;} }
+		for(i=-42;i<-27;i++){ buf[820]=(byte)i; if(sha1_32(buf)==-2019600014){break;} }
+		for(i=10;i<26;i++){ buf[821]=(byte)i; if(sha1_32(buf)==447308072){break;} }
+		for(i=55;i<66;i++){ buf[822]=(byte)i; if(sha1_32(buf)==1605717800){break;} }
+		for(i=21;i<36;i++){ buf[823]=(byte)i; if(sha1_32(buf)==1954483940){break;} }
+		for(i=-43;i<-25;i++){ buf[824]=(byte)i; if(sha1_32(buf)==1882683817){break;} }
+		for(i=-20;i<-7;i++){ buf[825]=(byte)i; if(sha1_32(buf)==-501873759){break;} }
+		for(i=-81;i<-67;i++){ buf[826]=(byte)i; if(sha1_32(buf)==-2092652724){break;} }
+		for(i=38;i<45;i++){ buf[827]=(byte)i; if(sha1_32(buf)==-487853931){break;} }
+		for(i=-99;i<-86;i++){ buf[828]=(byte)i; if(sha1_32(buf)==1010232233){break;} }
+		for(i=-44;i<-29;i++){ buf[829]=(byte)i; if(sha1_32(buf)==-892246569){break;} }
+		for(i=0;i<21;i++){ buf[830]=(byte)i; if(sha1_32(buf)==1671361002){break;} }
+		for(i=-24;i<-5;i++){ buf[831]=(byte)i; if(sha1_32(buf)==1041678460){break;} }
+		for(i=-45;i<-20;i++){ buf[832]=(byte)i; if(sha1_32(buf)==-1202425119){break;} }
+		for(i=36;i<42;i++){ buf[833]=(byte)i; if(sha1_32(buf)==-1723096900){break;} }
+		for(i=-72;i<-57;i++){ buf[834]=(byte)i; if(sha1_32(buf)==1893766346){break;} }
+		for(i=-43;i<-33;i++){ buf[835]=(byte)i; if(sha1_32(buf)==1648908339){break;} }
+		for(i=-29;i<-23;i++){ buf[836]=(byte)i; if(sha1_32(buf)==230186144){break;} }
+		for(i=-22;i<1;i++){ buf[837]=(byte)i; if(sha1_32(buf)==18422549){break;} }
+		for(i=70;i<82;i++){ buf[838]=(byte)i; if(sha1_32(buf)==289354322){break;} }
+		for(i=65;i<77;i++){ buf[839]=(byte)i; if(sha1_32(buf)==-1496809023){break;} }
+		for(i=-105;i<-82;i++){ buf[840]=(byte)i; if(sha1_32(buf)==1188317191){break;} }
+		for(i=64;i<86;i++){ buf[841]=(byte)i; if(sha1_32(buf)==-1899051403){break;} }
+		for(i=-24;i<-9;i++){ buf[842]=(byte)i; if(sha1_32(buf)==988571209){break;} }
+		for(i=-86;i<-73;i++){ buf[843]=(byte)i; if(sha1_32(buf)==1654503259){break;} }
+		for(i=8;i<24;i++){ buf[844]=(byte)i; if(sha1_32(buf)==383125377){break;} }
+		for(i=15;i<42;i++){ buf[845]=(byte)i; if(sha1_32(buf)==-502076589){break;} }
+		for(i=94;i<104;i++){ buf[846]=(byte)i; if(sha1_32(buf)==-1425871274){break;} }
+		for(i=-12;i<1;i++){ buf[847]=(byte)i; if(sha1_32(buf)==66551172){break;} }
+		for(i=-52;i<-29;i++){ buf[848]=(byte)i; if(sha1_32(buf)==-1203974084){break;} }
+		for(i=13;i<40;i++){ buf[849]=(byte)i; if(sha1_32(buf)==1088560072){break;} }
+		for(i=-45;i<-28;i++){ buf[850]=(byte)i; if(sha1_32(buf)==1943218849){break;} }
+		for(i=-42;i<-28;i++){ buf[851]=(byte)i; if(sha1_32(buf)==1366626618){break;} }
+		for(i=-84;i<-75;i++){ buf[852]=(byte)i; if(sha1_32(buf)==1304938471){break;} }
+		for(i=119;i<124;i++){ buf[853]=(byte)i; if(sha1_32(buf)==-496246921){break;} }
+		for(i=-56;i<-42;i++){ buf[854]=(byte)i; if(sha1_32(buf)==-2048479865){break;} }
+		for(i=-53;i<-28;i++){ buf[855]=(byte)i; if(sha1_32(buf)==-18331428){break;} }
+		for(i=34;i<38;i++){ buf[856]=(byte)i; if(sha1_32(buf)==-1032535760){break;} }
+		for(i=-94;i<-90;i++){ buf[857]=(byte)i; if(sha1_32(buf)==-929059222){break;} }
+		for(i=-17;i<-4;i++){ buf[858]=(byte)i; if(sha1_32(buf)==-781823266){break;} }
+		for(i=46;i<76;i++){ buf[859]=(byte)i; if(sha1_32(buf)==-1192615636){break;} }
+		for(i=-41;i<-28;i++){ buf[860]=(byte)i; if(sha1_32(buf)==1037431934){break;} }
+		for(i=-34;i<-18;i++){ buf[861]=(byte)i; if(sha1_32(buf)==207306352){break;} }
+		for(i=36;i<56;i++){ buf[862]=(byte)i; if(sha1_32(buf)==-1260357279){break;} }
+		for(i=96;i<115;i++){ buf[863]=(byte)i; if(sha1_32(buf)==-28705260){break;} }
+		for(i=-87;i<-62;i++){ buf[864]=(byte)i; if(sha1_32(buf)==1324995329){break;} }
+		for(i=27;i<43;i++){ buf[865]=(byte)i; if(sha1_32(buf)==1348654128){break;} }
+		for(i=88;i<97;i++){ buf[866]=(byte)i; if(sha1_32(buf)==-1669211431){break;} }
+		for(i=23;i<34;i++){ buf[867]=(byte)i; if(sha1_32(buf)==-63198919){break;} }
+		for(i=-90;i<-71;i++){ buf[868]=(byte)i; if(sha1_32(buf)==1398714943){break;} }
+		for(i=-36;i<-19;i++){ buf[869]=(byte)i; if(sha1_32(buf)==-2043034469){break;} }
+		for(i=39;i<57;i++){ buf[870]=(byte)i; if(sha1_32(buf)==-696117633){break;} }
+		for(i=60;i<85;i++){ buf[871]=(byte)i; if(sha1_32(buf)==173401776){break;} }
+		for(i=-119;i<-100;i++){ buf[872]=(byte)i; if(sha1_32(buf)==1140267531){break;} }
+		for(i=-76;i<-62;i++){ buf[873]=(byte)i; if(sha1_32(buf)==-129490587){break;} }
+		for(i=31;i<39;i++){ buf[874]=(byte)i; if(sha1_32(buf)==-1522173855){break;} }
+		for(i=-94;i<-70;i++){ buf[875]=(byte)i; if(sha1_32(buf)==-476351784){break;} }
+		for(i=-70;i<-53;i++){ buf[876]=(byte)i; if(sha1_32(buf)==119018404){break;} }
+		for(i=-84;i<-62;i++){ buf[877]=(byte)i; if(sha1_32(buf)==1342854452){break;} }
+		for(i=62;i<84;i++){ buf[878]=(byte)i; if(sha1_32(buf)==-1488360921){break;} }
+		for(i=-124;i<-115;i++){ buf[879]=(byte)i; if(sha1_32(buf)==-1278358198){break;} }
+		for(i=-128;i<-121;i++){ buf[880]=(byte)i; if(sha1_32(buf)==-43075308){break;} }
+		for(i=38;i<44;i++){ buf[881]=(byte)i; if(sha1_32(buf)==-1027601529){break;} }
+		for(i=63;i<70;i++){ buf[882]=(byte)i; if(sha1_32(buf)==-1922179937){break;} }
+		for(i=25;i<38;i++){ buf[883]=(byte)i; if(sha1_32(buf)==-1360473504){break;} }
+		for(i=39;i<64;i++){ buf[884]=(byte)i; if(sha1_32(buf)==1257453375){break;} }
+		for(i=-75;i<-72;i++){ buf[885]=(byte)i; if(sha1_32(buf)==-1704657485){break;} }
+		for(i=80;i<93;i++){ buf[886]=(byte)i; if(sha1_32(buf)==830667534){break;} }
+		for(i=107;i<116;i++){ buf[887]=(byte)i; if(sha1_32(buf)==1689734031){break;} }
+		for(i=-82;i<-66;i++){ buf[888]=(byte)i; if(sha1_32(buf)==881279016){break;} }
+		for(i=-128;i<-119;i++){ buf[889]=(byte)i; if(sha1_32(buf)==-32725443){break;} }
+		for(i=103;i<115;i++){ buf[890]=(byte)i; if(sha1_32(buf)==1957596231){break;} }
+		for(i=94;i<104;i++){ buf[891]=(byte)i; if(sha1_32(buf)==806222332){break;} }
+		for(i=-89;i<-73;i++){ buf[892]=(byte)i; if(sha1_32(buf)==-727239583){break;} }
+		for(i=97;i<112;i++){ buf[893]=(byte)i; if(sha1_32(buf)==1601426){break;} }
+		for(i=101;i<126;i++){ buf[894]=(byte)i; if(sha1_32(buf)==-1819613462){break;} }
+		for(i=92;i<98;i++){ buf[895]=(byte)i; if(sha1_32(buf)==1361361091){break;} }
+		for(i=-93;i<-70;i++){ buf[896]=(byte)i; if(sha1_32(buf)==496460462){break;} }
+		for(i=93;i<122;i++){ buf[897]=(byte)i; if(sha1_32(buf)==-1096589532){break;} }
+		for(i=-5;i<-1;i++){ buf[898]=(byte)i; if(sha1_32(buf)==793088773){break;} }
+		for(i=-89;i<-82;i++){ buf[899]=(byte)i; if(sha1_32(buf)==404762521){break;} }
+		for(i=30;i<38;i++){ buf[900]=(byte)i; if(sha1_32(buf)==1480801036){break;} }
+		for(i=-18;i<0;i++){ buf[901]=(byte)i; if(sha1_32(buf)==-1723389738){break;} }
+		for(i=3;i<16;i++){ buf[902]=(byte)i; if(sha1_32(buf)==-441872106){break;} }
+		for(i=-37;i<-26;i++){ buf[903]=(byte)i; if(sha1_32(buf)==796701395){break;} }
+		for(i=8;i<12;i++){ buf[904]=(byte)i; if(sha1_32(buf)==2021753876){break;} }
+		for(i=52;i<62;i++){ buf[905]=(byte)i; if(sha1_32(buf)==362504819){break;} }
+		for(i=65;i<91;i++){ buf[906]=(byte)i; if(sha1_32(buf)==278214716){break;} }
+		for(i=98;i<119;i++){ buf[907]=(byte)i; if(sha1_32(buf)==1823821122){break;} }
+		for(i=-12;i<10;i++){ buf[908]=(byte)i; if(sha1_32(buf)==-419507320){break;} }
+		for(i=-15;i<-1;i++){ buf[909]=(byte)i; if(sha1_32(buf)==-804792055){break;} }
+		for(i=-7;i<11;i++){ buf[910]=(byte)i; if(sha1_32(buf)==1327052330){break;} }
+		for(i=-63;i<-49;i++){ buf[911]=(byte)i; if(sha1_32(buf)==1556078811){break;} }
+		for(i=14;i<35;i++){ buf[912]=(byte)i; if(sha1_32(buf)==279682908){break;} }
+		for(i=-115;i<-90;i++){ buf[913]=(byte)i; if(sha1_32(buf)==-531408085){break;} }
+		for(i=79;i<90;i++){ buf[914]=(byte)i; if(sha1_32(buf)==543626076){break;} }
+		for(i=-48;i<-28;i++){ buf[915]=(byte)i; if(sha1_32(buf)==-225997521){break;} }
+		for(i=-24;i<-5;i++){ buf[916]=(byte)i; if(sha1_32(buf)==-880581430){break;} }
+		for(i=91;i<114;i++){ buf[917]=(byte)i; if(sha1_32(buf)==-1798214113){break;} }
+		for(i=78;i<97;i++){ buf[918]=(byte)i; if(sha1_32(buf)==1426426257){break;} }
+		for(i=79;i<87;i++){ buf[919]=(byte)i; if(sha1_32(buf)==1396061178){break;} }
+		for(i=112;i<128;i++){ buf[920]=(byte)i; if(sha1_32(buf)==1250713090){break;} }
+		for(i=29;i<43;i++){ buf[921]=(byte)i; if(sha1_32(buf)==1258750748){break;} }
+		for(i=48;i<69;i++){ buf[922]=(byte)i; if(sha1_32(buf)==1390668709){break;} }
+		for(i=23;i<39;i++){ buf[923]=(byte)i; if(sha1_32(buf)==-2120568673){break;} }
+		for(i=-55;i<-25;i++){ buf[924]=(byte)i; if(sha1_32(buf)==2109762456){break;} }
+		for(i=-84;i<-69;i++){ buf[925]=(byte)i; if(sha1_32(buf)==-1983061907){break;} }
+		for(i=87;i<100;i++){ buf[926]=(byte)i; if(sha1_32(buf)==-1345663285){break;} }
+		for(i=-39;i<-37;i++){ buf[927]=(byte)i; if(sha1_32(buf)==-66833795){break;} }
+		for(i=79;i<102;i++){ buf[928]=(byte)i; if(sha1_32(buf)==-664277695){break;} }
+		for(i=-3;i<11;i++){ buf[929]=(byte)i; if(sha1_32(buf)==-259299383){break;} }
+		for(i=92;i<113;i++){ buf[930]=(byte)i; if(sha1_32(buf)==882802712){break;} }
+		for(i=-35;i<-33;i++){ buf[931]=(byte)i; if(sha1_32(buf)==-344886850){break;} }
+		for(i=24;i<36;i++){ buf[932]=(byte)i; if(sha1_32(buf)==-1714230444){break;} }
+		for(i=-55;i<-27;i++){ buf[933]=(byte)i; if(sha1_32(buf)==1547767417){break;} }
+		for(i=-97;i<-89;i++){ buf[934]=(byte)i; if(sha1_32(buf)==918327857){break;} }
+		for(i=-104;i<-99;i++){ buf[935]=(byte)i; if(sha1_32(buf)==672353669){break;} }
+		for(i=-82;i<-53;i++){ buf[936]=(byte)i; if(sha1_32(buf)==2034966484){break;} }
+		for(i=-42;i<-33;i++){ buf[937]=(byte)i; if(sha1_32(buf)==23856408){break;} }
+		for(i=89;i<105;i++){ buf[938]=(byte)i; if(sha1_32(buf)==-170894864){break;} }
+		for(i=-72;i<-65;i++){ buf[939]=(byte)i; if(sha1_32(buf)==-61890767){break;} }
+		for(i=-77;i<-52;i++){ buf[940]=(byte)i; if(sha1_32(buf)==-54309549){break;} }
+		for(i=-71;i<-50;i++){ buf[941]=(byte)i; if(sha1_32(buf)==1014274001){break;} }
+		for(i=-70;i<-55;i++){ buf[942]=(byte)i; if(sha1_32(buf)==1774385866){break;} }
+		for(i=76;i<89;i++){ buf[943]=(byte)i; if(sha1_32(buf)==2133120199){break;} }
+		for(i=-104;i<-87;i++){ buf[944]=(byte)i; if(sha1_32(buf)==1588942002){break;} }
+		for(i=-121;i<-101;i++){ buf[945]=(byte)i; if(sha1_32(buf)==1045080087){break;} }
+		for(i=-128;i<-114;i++){ buf[946]=(byte)i; if(sha1_32(buf)==1003885631){break;} }
+		for(i=12;i<30;i++){ buf[947]=(byte)i; if(sha1_32(buf)==-1541184919){break;} }
+		for(i=-115;i<-110;i++){ buf[948]=(byte)i; if(sha1_32(buf)==-395774912){break;} }
+		for(i=17;i<25;i++){ buf[949]=(byte)i; if(sha1_32(buf)==-717488773){break;} }
+		for(i=62;i<77;i++){ buf[950]=(byte)i; if(sha1_32(buf)==531492849){break;} }
+		for(i=-19;i<-4;i++){ buf[951]=(byte)i; if(sha1_32(buf)==-1412445284){break;} }
+		for(i=-28;i<-12;i++){ buf[952]=(byte)i; if(sha1_32(buf)==1144401533){break;} }
+		for(i=-121;i<-104;i++){ buf[953]=(byte)i; if(sha1_32(buf)==1283301541){break;} }
+		for(i=88;i<98;i++){ buf[954]=(byte)i; if(sha1_32(buf)==2101747368){break;} }
+		for(i=32;i<46;i++){ buf[955]=(byte)i; if(sha1_32(buf)==-107483516){break;} }
+		for(i=16;i<26;i++){ buf[956]=(byte)i; if(sha1_32(buf)==594694150){break;} }
+		for(i=-80;i<-69;i++){ buf[957]=(byte)i; if(sha1_32(buf)==-1955518481){break;} }
+		for(i=-12;i<6;i++){ buf[958]=(byte)i; if(sha1_32(buf)==-379567650){break;} }
+		for(i=-3;i<15;i++){ buf[959]=(byte)i; if(sha1_32(buf)==1879632736){break;} }
+		for(i=-128;i<-123;i++){ buf[960]=(byte)i; if(sha1_32(buf)==478429614){break;} }
+		for(i=22;i<30;i++){ buf[961]=(byte)i; if(sha1_32(buf)==-646499261){break;} }
+		for(i=67;i<77;i++){ buf[962]=(byte)i; if(sha1_32(buf)==1849827878){break;} }
+		for(i=43;i<70;i++){ buf[963]=(byte)i; if(sha1_32(buf)==-429176142){break;} }
+		for(i=71;i<92;i++){ buf[964]=(byte)i; if(sha1_32(buf)==-1650098633){break;} }
+		for(i=60;i<75;i++){ buf[965]=(byte)i; if(sha1_32(buf)==1757726784){break;} }
+		for(i=-10;i<3;i++){ buf[966]=(byte)i; if(sha1_32(buf)==186429919){break;} }
+		for(i=77;i<92;i++){ buf[967]=(byte)i; if(sha1_32(buf)==-2075846585){break;} }
+		for(i=-53;i<-33;i++){ buf[968]=(byte)i; if(sha1_32(buf)==-1673907297){break;} }
+		for(i=14;i<20;i++){ buf[969]=(byte)i; if(sha1_32(buf)==201890705){break;} }
+		for(i=-44;i<-29;i++){ buf[970]=(byte)i; if(sha1_32(buf)==881954252){break;} }
+		for(i=-1;i<7;i++){ buf[971]=(byte)i; if(sha1_32(buf)==-823016288){break;} }
+		for(i=-3;i<7;i++){ buf[972]=(byte)i; if(sha1_32(buf)==-484880881){break;} }
+		for(i=41;i<54;i++){ buf[973]=(byte)i; if(sha1_32(buf)==-672415559){break;} }
+		for(i=-123;i<-102;i++){ buf[974]=(byte)i; if(sha1_32(buf)==-1788275346){break;} }
+		for(i=76;i<95;i++){ buf[975]=(byte)i; if(sha1_32(buf)==-1125940974){break;} }
+		for(i=-91;i<-82;i++){ buf[976]=(byte)i; if(sha1_32(buf)==-1062630844){break;} }
+		for(i=-65;i<-41;i++){ buf[977]=(byte)i; if(sha1_32(buf)==-1958520704){break;} }
+		for(i=118;i<128;i++){ buf[978]=(byte)i; if(sha1_32(buf)==249798561){break;} }
+		for(i=-37;i<-27;i++){ buf[979]=(byte)i; if(sha1_32(buf)==-1772048687){break;} }
+		for(i=-77;i<-62;i++){ buf[980]=(byte)i; if(sha1_32(buf)==131893556){break;} }
+		for(i=54;i<68;i++){ buf[981]=(byte)i; if(sha1_32(buf)==2021136094){break;} }
+		for(i=-115;i<-96;i++){ buf[982]=(byte)i; if(sha1_32(buf)==-1384447532){break;} }
+		for(i=-64;i<-48;i++){ buf[983]=(byte)i; if(sha1_32(buf)==84452300){break;} }
+		for(i=-63;i<-53;i++){ buf[984]=(byte)i; if(sha1_32(buf)==-1279548977){break;} }
+		for(i=-63;i<-35;i++){ buf[985]=(byte)i; if(sha1_32(buf)==2079667674){break;} }
+		for(i=-111;i<-98;i++){ buf[986]=(byte)i; if(sha1_32(buf)==1744922692){break;} }
+		for(i=-76;i<-52;i++){ buf[987]=(byte)i; if(sha1_32(buf)==352745491){break;} }
+		for(i=-103;i<-76;i++){ buf[988]=(byte)i; if(sha1_32(buf)==1336764566){break;} }
+		for(i=-22;i<-1;i++){ buf[989]=(byte)i; if(sha1_32(buf)==-775448216){break;} }
+		for(i=77;i<89;i++){ buf[990]=(byte)i; if(sha1_32(buf)==-2071541584){break;} }
+		for(i=82;i<111;i++){ buf[991]=(byte)i; if(sha1_32(buf)==1421950313){break;} }
+		for(i=-91;i<-72;i++){ buf[992]=(byte)i; if(sha1_32(buf)==-601567508){break;} }
+		for(i=-122;i<-116;i++){ buf[993]=(byte)i; if(sha1_32(buf)==949553197){break;} }
+		for(i=68;i<96;i++){ buf[994]=(byte)i; if(sha1_32(buf)==-1336992522){break;} }
+		for(i=-69;i<-58;i++){ buf[995]=(byte)i; if(sha1_32(buf)==1522619705){break;} }
+		for(i=-124;i<-108;i++){ buf[996]=(byte)i; if(sha1_32(buf)==-366000726){break;} }
+		for(i=29;i<38;i++){ buf[997]=(byte)i; if(sha1_32(buf)==1425979230){break;} }
+		for(i=-43;i<-29;i++){ buf[998]=(byte)i; if(sha1_32(buf)==550155787){break;} }
+		for(i=16;i<42;i++){ buf[999]=(byte)i; if(sha1_32(buf)==1712529587){break;} }
+		for(i=-117;i<-105;i++){ buf[1000]=(byte)i; if(sha1_32(buf)==-234977341){break;} }
+		for(i=-104;i<-91;i++){ buf[1001]=(byte)i; if(sha1_32(buf)==-1922744004){break;} }
+		for(i=89;i<114;i++){ buf[1002]=(byte)i; if(sha1_32(buf)==-1313078608){break;} }
+		for(i=74;i<102;i++){ buf[1003]=(byte)i; if(sha1_32(buf)==-1546876249){break;} }
+		for(i=103;i<114;i++){ buf[1004]=(byte)i; if(sha1_32(buf)==-595172616){break;} }
+		for(i=39;i<44;i++){ buf[1005]=(byte)i; if(sha1_32(buf)==-678413968){break;} }
+		for(i=4;i<30;i++){ buf[1006]=(byte)i; if(sha1_32(buf)==-1771948705){break;} }
+		for(i=-58;i<-46;i++){ buf[1007]=(byte)i; if(sha1_32(buf)==-610125736){break;} }
+		for(i=84;i<91;i++){ buf[1008]=(byte)i; if(sha1_32(buf)==383926917){break;} }
+		for(i=96;i<112;i++){ buf[1009]=(byte)i; if(sha1_32(buf)==740564989){break;} }
+		for(i=-32;i<-28;i++){ buf[1010]=(byte)i; if(sha1_32(buf)==-1949063763){break;} }
+		for(i=-94;i<-85;i++){ buf[1011]=(byte)i; if(sha1_32(buf)==837023966){break;} }
+		for(i=-64;i<-42;i++){ buf[1012]=(byte)i; if(sha1_32(buf)==1892766880){break;} }
+		for(i=82;i<101;i++){ buf[1013]=(byte)i; if(sha1_32(buf)==88668333){break;} }
+		for(i=-76;i<-61;i++){ buf[1014]=(byte)i; if(sha1_32(buf)==434936898){break;} }
+		for(i=9;i<14;i++){ buf[1015]=(byte)i; if(sha1_32(buf)==-2108315285){break;} }
+		for(i=97;i<101;i++){ buf[1016]=(byte)i; if(sha1_32(buf)==96671325){break;} }
+		for(i=48;i<64;i++){ buf[1017]=(byte)i; if(sha1_32(buf)==1084334841){break;} }
+		for(i=-49;i<-22;i++){ buf[1018]=(byte)i; if(sha1_32(buf)==752074228){break;} }
+		for(i=-105;i<-86;i++){ buf[1019]=(byte)i; if(sha1_32(buf)==247908079){break;} }
+		for(i=96;i<113;i++){ buf[1020]=(byte)i; if(sha1_32(buf)==747149672){break;} }
+		for(i=-60;i<-46;i++){ buf[1021]=(byte)i; if(sha1_32(buf)==-1563032944){break;} }
+		for(i=123;i<128;i++){ buf[1022]=(byte)i; if(sha1_32(buf)==1659722411){break;} }
+		for(i=-96;i<-70;i++){ buf[1023]=(byte)i; if(sha1_32(buf)==1683768787){break;} }
+		for(i=29;i<47;i++){ buf[1024]=(byte)i; if(sha1_32(buf)==1798464544){break;} }
+		for(i=61;i<65;i++){ buf[1025]=(byte)i; if(sha1_32(buf)==-293049362){break;} }
+		for(i=84;i<99;i++){ buf[1026]=(byte)i; if(sha1_32(buf)==291762525){break;} }
+		for(i=79;i<97;i++){ buf[1027]=(byte)i; if(sha1_32(buf)==-494566288){break;} }
+		for(i=-21;i<-4;i++){ buf[1028]=(byte)i; if(sha1_32(buf)==1817542496){break;} }
+		for(i=-76;i<-53;i++){ buf[1029]=(byte)i; if(sha1_32(buf)==1884326715){break;} }
+		for(i=32;i<40;i++){ buf[1030]=(byte)i; if(sha1_32(buf)==1709377117){break;} }
+		for(i=-102;i<-88;i++){ buf[1031]=(byte)i; if(sha1_32(buf)==1385371901){break;} }
+		for(i=66;i<96;i++){ buf[1032]=(byte)i; if(sha1_32(buf)==-1371102152){break;} }
+		for(i=-116;i<-99;i++){ buf[1033]=(byte)i; if(sha1_32(buf)==579756753){break;} }
+		for(i=-81;i<-60;i++){ buf[1034]=(byte)i; if(sha1_32(buf)==1705346581){break;} }
+		for(i=-42;i<-28;i++){ buf[1035]=(byte)i; if(sha1_32(buf)==1020140385){break;} }
+		for(i=-124;i<-114;i++){ buf[1036]=(byte)i; if(sha1_32(buf)==-2079394818){break;} }
+		for(i=123;i<128;i++){ buf[1037]=(byte)i; if(sha1_32(buf)==-405994160){break;} }
+		for(i=-8;i<-2;i++){ buf[1038]=(byte)i; if(sha1_32(buf)==2091331318){break;} }
+		for(i=-75;i<-57;i++){ buf[1039]=(byte)i; if(sha1_32(buf)==742020924){break;} }
+		for(i=69;i<98;i++){ buf[1040]=(byte)i; if(sha1_32(buf)==-655748860){break;} }
+		for(i=123;i<124;i++){ buf[1041]=(byte)i; if(sha1_32(buf)==-1364949167){break;} }
+		for(i=15;i<33;i++){ buf[1042]=(byte)i; if(sha1_32(buf)==-473174118){break;} }
+		for(i=-90;i<-73;i++){ buf[1043]=(byte)i; if(sha1_32(buf)==343454347){break;} }
+		for(i=-27;i<-12;i++){ buf[1044]=(byte)i; if(sha1_32(buf)==-1124528934){break;} }
+		for(i=117;i<128;i++){ buf[1045]=(byte)i; if(sha1_32(buf)==-1326878312){break;} }
+		for(i=-2;i<12;i++){ buf[1046]=(byte)i; if(sha1_32(buf)==-1574402074){break;} }
+		for(i=-69;i<-47;i++){ buf[1047]=(byte)i; if(sha1_32(buf)==-1144301541){break;} }
+		for(i=-25;i<-15;i++){ buf[1048]=(byte)i; if(sha1_32(buf)==1906253170){break;} }
+		for(i=41;i<67;i++){ buf[1049]=(byte)i; if(sha1_32(buf)==-585838944){break;} }
+		for(i=-119;i<-108;i++){ buf[1050]=(byte)i; if(sha1_32(buf)==1657478111){break;} }
+		for(i=24;i<36;i++){ buf[1051]=(byte)i; if(sha1_32(buf)==1238375588){break;} }
+		for(i=-73;i<-44;i++){ buf[1052]=(byte)i; if(sha1_32(buf)==-1102960361){break;} }
+		for(i=-32;i<-28;i++){ buf[1053]=(byte)i; if(sha1_32(buf)==-1465302337){break;} }
+		for(i=61;i<70;i++){ buf[1054]=(byte)i; if(sha1_32(buf)==-1614952796){break;} }
+		for(i=-128;i<-115;i++){ buf[1055]=(byte)i; if(sha1_32(buf)==647822667){break;} }
+		for(i=47;i<65;i++){ buf[1056]=(byte)i; if(sha1_32(buf)==-1871799856){break;} }
+		for(i=-128;i<-109;i++){ buf[1057]=(byte)i; if(sha1_32(buf)==-128820795){break;} }
+		for(i=40;i<61;i++){ buf[1058]=(byte)i; if(sha1_32(buf)==-602040947){break;} }
+		for(i=-100;i<-87;i++){ buf[1059]=(byte)i; if(sha1_32(buf)==857975258){break;} }
+		for(i=84;i<95;i++){ buf[1060]=(byte)i; if(sha1_32(buf)==251250716){break;} }
+		for(i=-107;i<-93;i++){ buf[1061]=(byte)i; if(sha1_32(buf)==-1758663823){break;} }
+		for(i=27;i<53;i++){ buf[1062]=(byte)i; if(sha1_32(buf)==-833606280){break;} }
+		for(i=106;i<115;i++){ buf[1063]=(byte)i; if(sha1_32(buf)==-174102205){break;} }
+		for(i=20;i<33;i++){ buf[1064]=(byte)i; if(sha1_32(buf)==-1895928270){break;} }
+		for(i=40;i<58;i++){ buf[1065]=(byte)i; if(sha1_32(buf)==1395023679){break;} }
+		for(i=-44;i<-28;i++){ buf[1066]=(byte)i; if(sha1_32(buf)==-1175143335){break;} }
+		for(i=66;i<80;i++){ buf[1067]=(byte)i; if(sha1_32(buf)==711083813){break;} }
+		for(i=-74;i<-51;i++){ buf[1068]=(byte)i; if(sha1_32(buf)==258083142){break;} }
+		for(i=-57;i<-43;i++){ buf[1069]=(byte)i; if(sha1_32(buf)==-1587188711){break;} }
+		for(i=52;i<77;i++){ buf[1070]=(byte)i; if(sha1_32(buf)==-1805190944){break;} }
+		for(i=-62;i<-42;i++){ buf[1071]=(byte)i; if(sha1_32(buf)==672815389){break;} }
+		for(i=-119;i<-100;i++){ buf[1072]=(byte)i; if(sha1_32(buf)==-538085577){break;} }
+		for(i=-74;i<-51;i++){ buf[1073]=(byte)i; if(sha1_32(buf)==1441812122){break;} }
+		for(i=-11;i<4;i++){ buf[1074]=(byte)i; if(sha1_32(buf)==3914154){break;} }
+		for(i=-128;i<-116;i++){ buf[1075]=(byte)i; if(sha1_32(buf)==-224137028){break;} }
+		for(i=117;i<127;i++){ buf[1076]=(byte)i; if(sha1_32(buf)==-1360700324){break;} }
+		for(i=-126;i<-103;i++){ buf[1077]=(byte)i; if(sha1_32(buf)==-120228224){break;} }
+		for(i=-98;i<-84;i++){ buf[1078]=(byte)i; if(sha1_32(buf)==696848821){break;} }
+		for(i=-4;i<23;i++){ buf[1079]=(byte)i; if(sha1_32(buf)==1761542551){break;} }
+		for(i=44;i<62;i++){ buf[1080]=(byte)i; if(sha1_32(buf)==721886448){break;} }
+		for(i=-14;i<6;i++){ buf[1081]=(byte)i; if(sha1_32(buf)==-374865825){break;} }
+		for(i=54;i<79;i++){ buf[1082]=(byte)i; if(sha1_32(buf)==-63727326){break;} }
+		for(i=-128;i<-109;i++){ buf[1083]=(byte)i; if(sha1_32(buf)==348198816){break;} }
+		for(i=59;i<69;i++){ buf[1084]=(byte)i; if(sha1_32(buf)==-3125799){break;} }
+		for(i=-128;i<-107;i++){ buf[1085]=(byte)i; if(sha1_32(buf)==-1185969711){break;} }
+		for(i=9;i<16;i++){ buf[1086]=(byte)i; if(sha1_32(buf)==1496151253){break;} }
+		for(i=-31;i<-10;i++){ buf[1087]=(byte)i; if(sha1_32(buf)==-19161550){break;} }
+		for(i=-101;i<-100;i++){ buf[1088]=(byte)i; if(sha1_32(buf)==1312332136){break;} }
+		for(i=-119;i<-95;i++){ buf[1089]=(byte)i; if(sha1_32(buf)==-10301382){break;} }
+		for(i=-126;i<-107;i++){ buf[1090]=(byte)i; if(sha1_32(buf)==216910895){break;} }
+		for(i=17;i<24;i++){ buf[1091]=(byte)i; if(sha1_32(buf)==119210779){break;} }
+		for(i=-20;i<-3;i++){ buf[1092]=(byte)i; if(sha1_32(buf)==653793405){break;} }
+		for(i=43;i<62;i++){ buf[1093]=(byte)i; if(sha1_32(buf)==729696447){break;} }
+		for(i=4;i<12;i++){ buf[1094]=(byte)i; if(sha1_32(buf)==-1803763721){break;} }
+		for(i=-82;i<-77;i++){ buf[1095]=(byte)i; if(sha1_32(buf)==-1075770850){break;} }
+		for(i=-33;i<-12;i++){ buf[1096]=(byte)i; if(sha1_32(buf)==-921129027){break;} }
+		for(i=79;i<100;i++){ buf[1097]=(byte)i; if(sha1_32(buf)==-595890912){break;} }
+		for(i=-97;i<-70;i++){ buf[1098]=(byte)i; if(sha1_32(buf)==1843152387){break;} }
+		for(i=104;i<118;i++){ buf[1099]=(byte)i; if(sha1_32(buf)==-2108441131){break;} }
+		for(i=7;i<30;i++){ buf[1100]=(byte)i; if(sha1_32(buf)==-142074362){break;} }
+		for(i=89;i<101;i++){ buf[1101]=(byte)i; if(sha1_32(buf)==1770849757){break;} }
+		for(i=-39;i<-21;i++){ buf[1102]=(byte)i; if(sha1_32(buf)==1600166401){break;} }
+		for(i=10;i<27;i++){ buf[1103]=(byte)i; if(sha1_32(buf)==-1024317710){break;} }
+		for(i=11;i<34;i++){ buf[1104]=(byte)i; if(sha1_32(buf)==129466837){break;} }
+		for(i=-14;i<3;i++){ buf[1105]=(byte)i; if(sha1_32(buf)==1546333030){break;} }
+		for(i=109;i<122;i++){ buf[1106]=(byte)i; if(sha1_32(buf)==700815652){break;} }
+		for(i=-103;i<-98;i++){ buf[1107]=(byte)i; if(sha1_32(buf)==-148769334){break;} }
+		for(i=5;i<20;i++){ buf[1108]=(byte)i; if(sha1_32(buf)==1366573126){break;} }
+		for(i=-66;i<-53;i++){ buf[1109]=(byte)i; if(sha1_32(buf)==1335516298){break;} }
+		for(i=-92;i<-75;i++){ buf[1110]=(byte)i; if(sha1_32(buf)==-1698712607){break;} }
+		for(i=-103;i<-101;i++){ buf[1111]=(byte)i; if(sha1_32(buf)==-1205767322){break;} }
+		for(i=43;i<69;i++){ buf[1112]=(byte)i; if(sha1_32(buf)==1904796605){break;} }
+		for(i=106;i<128;i++){ buf[1113]=(byte)i; if(sha1_32(buf)==918073525){break;} }
+		for(i=36;i<43;i++){ buf[1114]=(byte)i; if(sha1_32(buf)==1044952566){break;} }
+		for(i=75;i<93;i++){ buf[1115]=(byte)i; if(sha1_32(buf)==1456097271){break;} }
+		for(i=-95;i<-89;i++){ buf[1116]=(byte)i; if(sha1_32(buf)==1359612799){break;} }
+		for(i=98;i<115;i++){ buf[1117]=(byte)i; if(sha1_32(buf)==766783438){break;} }
+		for(i=42;i<57;i++){ buf[1118]=(byte)i; if(sha1_32(buf)==1275426661){break;} }
+		for(i=22;i<38;i++){ buf[1119]=(byte)i; if(sha1_32(buf)==399737089){break;} }
+		for(i=-46;i<-34;i++){ buf[1120]=(byte)i; if(sha1_32(buf)==95638034){break;} }
+		for(i=-124;i<-109;i++){ buf[1121]=(byte)i; if(sha1_32(buf)==-1548212644){break;} }
+		for(i=-18;i<10;i++){ buf[1122]=(byte)i; if(sha1_32(buf)==-1489544592){break;} }
+		for(i=91;i<104;i++){ buf[1123]=(byte)i; if(sha1_32(buf)==677640079){break;} }
+		for(i=-128;i<-126;i++){ buf[1124]=(byte)i; if(sha1_32(buf)==-1449841137){break;} }
+		for(i=51;i<62;i++){ buf[1125]=(byte)i; if(sha1_32(buf)==260204053){break;} }
+		for(i=6;i<11;i++){ buf[1126]=(byte)i; if(sha1_32(buf)==344842257){break;} }
+		for(i=-81;i<-70;i++){ buf[1127]=(byte)i; if(sha1_32(buf)==1519385406){break;} }
+		for(i=85;i<103;i++){ buf[1128]=(byte)i; if(sha1_32(buf)==1318737027){break;} }
+		for(i=-37;i<-9;i++){ buf[1129]=(byte)i; if(sha1_32(buf)==1437378761){break;} }
+		for(i=114;i<128;i++){ buf[1130]=(byte)i; if(sha1_32(buf)==1500015202){break;} }
+		for(i=-83;i<-79;i++){ buf[1131]=(byte)i; if(sha1_32(buf)==714344845){break;} }
+		for(i=36;i<53;i++){ buf[1132]=(byte)i; if(sha1_32(buf)==935100494){break;} }
+		for(i=-55;i<-48;i++){ buf[1133]=(byte)i; if(sha1_32(buf)==-1941768513){break;} }
+		for(i=-42;i<-26;i++){ buf[1134]=(byte)i; if(sha1_32(buf)==-463393149){break;} }
+		for(i=62;i<77;i++){ buf[1135]=(byte)i; if(sha1_32(buf)==355774655){break;} }
+		for(i=93;i<100;i++){ buf[1136]=(byte)i; if(sha1_32(buf)==-466391901){break;} }
+		for(i=-51;i<-36;i++){ buf[1137]=(byte)i; if(sha1_32(buf)==-1445978729){break;} }
+		for(i=28;i<50;i++){ buf[1138]=(byte)i; if(sha1_32(buf)==-597203633){break;} }
+		for(i=87;i<94;i++){ buf[1139]=(byte)i; if(sha1_32(buf)==482771487){break;} }
+		for(i=18;i<41;i++){ buf[1140]=(byte)i; if(sha1_32(buf)==-1235611465){break;} }
+		for(i=-112;i<-96;i++){ buf[1141]=(byte)i; if(sha1_32(buf)==-1809971386){break;} }
+		for(i=-104;i<-87;i++){ buf[1142]=(byte)i; if(sha1_32(buf)==1683585427){break;} }
+		for(i=-16;i<4;i++){ buf[1143]=(byte)i; if(sha1_32(buf)==596981912){break;} }
+		for(i=-90;i<-69;i++){ buf[1144]=(byte)i; if(sha1_32(buf)==1462212031){break;} }
+		for(i=-16;i<3;i++){ buf[1145]=(byte)i; if(sha1_32(buf)==82219180){break;} }
+		for(i=59;i<88;i++){ buf[1146]=(byte)i; if(sha1_32(buf)==-1281297534){break;} }
+		for(i=-33;i<-21;i++){ buf[1147]=(byte)i; if(sha1_32(buf)==-26341397){break;} }
+		for(i=-128;i<-114;i++){ buf[1148]=(byte)i; if(sha1_32(buf)==703067751){break;} }
+		for(i=-111;i<-107;i++){ buf[1149]=(byte)i; if(sha1_32(buf)==-1872563000){break;} }
+		for(i=-97;i<-90;i++){ buf[1150]=(byte)i; if(sha1_32(buf)==1794314294){break;} }
+		for(i=-25;i<-9;i++){ buf[1151]=(byte)i; if(sha1_32(buf)==1176037423){break;} }
+		for(i=-101;i<-90;i++){ buf[1152]=(byte)i; if(sha1_32(buf)==-2131709699){break;} }
+		for(i=-128;i<-117;i++){ buf[1153]=(byte)i; if(sha1_32(buf)==1320730350){break;} }
+		for(i=-113;i<-94;i++){ buf[1154]=(byte)i; if(sha1_32(buf)==1333296737){break;} }
+		for(i=-50;i<-43;i++){ buf[1155]=(byte)i; if(sha1_32(buf)==-394104671){break;} }
+		for(i=-89;i<-79;i++){ buf[1156]=(byte)i; if(sha1_32(buf)==1891499980){break;} }
+		for(i=24;i<37;i++){ buf[1157]=(byte)i; if(sha1_32(buf)==327888793){break;} }
+		for(i=-127;i<-105;i++){ buf[1158]=(byte)i; if(sha1_32(buf)==-473582175){break;} }
+		for(i=59;i<67;i++){ buf[1159]=(byte)i; if(sha1_32(buf)==1353996716){break;} }
+		for(i=-58;i<-41;i++){ buf[1160]=(byte)i; if(sha1_32(buf)==1267182327){break;} }
+		for(i=-20;i<-2;i++){ buf[1161]=(byte)i; if(sha1_32(buf)==1524731002){break;} }
+		for(i=-89;i<-64;i++){ buf[1162]=(byte)i; if(sha1_32(buf)==-1196979822){break;} }
+		for(i=43;i<48;i++){ buf[1163]=(byte)i; if(sha1_32(buf)==1188103599){break;} }
+		for(i=-89;i<-75;i++){ buf[1164]=(byte)i; if(sha1_32(buf)==1470719800){break;} }
+		for(i=-53;i<-40;i++){ buf[1165]=(byte)i; if(sha1_32(buf)==1686699877){break;} }
+		for(i=41;i<61;i++){ buf[1166]=(byte)i; if(sha1_32(buf)==-1958175405){break;} }
+		for(i=-128;i<-120;i++){ buf[1167]=(byte)i; if(sha1_32(buf)==1593888399){break;} }
+		for(i=118;i<128;i++){ buf[1168]=(byte)i; if(sha1_32(buf)==-438378214){break;} }
+		for(i=-95;i<-82;i++){ buf[1169]=(byte)i; if(sha1_32(buf)==1561487725){break;} }
+		for(i=43;i<50;i++){ buf[1170]=(byte)i; if(sha1_32(buf)==-348878222){break;} }
+		for(i=59;i<67;i++){ buf[1171]=(byte)i; if(sha1_32(buf)==-515129156){break;} }
+		for(i=-61;i<-41;i++){ buf[1172]=(byte)i; if(sha1_32(buf)==-381274599){break;} }
+		for(i=-50;i<-39;i++){ buf[1173]=(byte)i; if(sha1_32(buf)==-1037124919){break;} }
+		for(i=94;i<116;i++){ buf[1174]=(byte)i; if(sha1_32(buf)==579727533){break;} }
+		for(i=-115;i<-103;i++){ buf[1175]=(byte)i; if(sha1_32(buf)==-1012708849){break;} }
+		for(i=-33;i<-16;i++){ buf[1176]=(byte)i; if(sha1_32(buf)==-1703417853){break;} }
+		for(i=-80;i<-68;i++){ buf[1177]=(byte)i; if(sha1_32(buf)==-1299795487){break;} }
+		for(i=-21;i<3;i++){ buf[1178]=(byte)i; if(sha1_32(buf)==-1132577407){break;} }
+		for(i=-56;i<-34;i++){ buf[1179]=(byte)i; if(sha1_32(buf)==-330134093){break;} }
+		for(i=-25;i<-6;i++){ buf[1180]=(byte)i; if(sha1_32(buf)==1241484281){break;} }
+		for(i=-121;i<-97;i++){ buf[1181]=(byte)i; if(sha1_32(buf)==-1562829688){break;} }
+		for(i=-21;i<-5;i++){ buf[1182]=(byte)i; if(sha1_32(buf)==862076995){break;} }
+		for(i=-120;i<-103;i++){ buf[1183]=(byte)i; if(sha1_32(buf)==1154106728){break;} }
+		for(i=-18;i<1;i++){ buf[1184]=(byte)i; if(sha1_32(buf)==271863021){break;} }
+		for(i=38;i<65;i++){ buf[1185]=(byte)i; if(sha1_32(buf)==-1697635737){break;} }
+		for(i=62;i<83;i++){ buf[1186]=(byte)i; if(sha1_32(buf)==-616993169){break;} }
+		for(i=92;i<114;i++){ buf[1187]=(byte)i; if(sha1_32(buf)==-683129664){break;} }
+		for(i=-88;i<-71;i++){ buf[1188]=(byte)i; if(sha1_32(buf)==-1532179578){break;} }
+		for(i=-33;i<-16;i++){ buf[1189]=(byte)i; if(sha1_32(buf)==-1296102687){break;} }
+		for(i=-69;i<-44;i++){ buf[1190]=(byte)i; if(sha1_32(buf)==-1168890655){break;} }
+		for(i=-115;i<-97;i++){ buf[1191]=(byte)i; if(sha1_32(buf)==1123987513){break;} }
+		for(i=-24;i<-10;i++){ buf[1192]=(byte)i; if(sha1_32(buf)==1561845733){break;} }
+		for(i=-108;i<-87;i++){ buf[1193]=(byte)i; if(sha1_32(buf)==203712367){break;} }
+		for(i=-92;i<-89;i++){ buf[1194]=(byte)i; if(sha1_32(buf)==915639218){break;} }
+		for(i=-128;i<-116;i++){ buf[1195]=(byte)i; if(sha1_32(buf)==268470048){break;} }
+		for(i=-51;i<-29;i++){ buf[1196]=(byte)i; if(sha1_32(buf)==-199792582){break;} }
+		for(i=-94;i<-67;i++){ buf[1197]=(byte)i; if(sha1_32(buf)==-1788431710){break;} }
+		for(i=-128;i<-111;i++){ buf[1198]=(byte)i; if(sha1_32(buf)==-238731486){break;} }
+		for(i=56;i<64;i++){ buf[1199]=(byte)i; if(sha1_32(buf)==-968389868){break;} }
+		for(i=99;i<120;i++){ buf[1200]=(byte)i; if(sha1_32(buf)==-1879477168){break;} }
+		for(i=-53;i<-40;i++){ buf[1201]=(byte)i; if(sha1_32(buf)==-1756751977){break;} }
+		for(i=78;i<92;i++){ buf[1202]=(byte)i; if(sha1_32(buf)==-438593142){break;} }
+		for(i=-119;i<-106;i++){ buf[1203]=(byte)i; if(sha1_32(buf)==288387072){break;} }
+		for(i=-109;i<-82;i++){ buf[1204]=(byte)i; if(sha1_32(buf)==-1377812839){break;} }
+		for(i=46;i<61;i++){ buf[1205]=(byte)i; if(sha1_32(buf)==401513627){break;} }
+		for(i=-19;i<-6;i++){ buf[1206]=(byte)i; if(sha1_32(buf)==847730891){break;} }
+		for(i=-118;i<-92;i++){ buf[1207]=(byte)i; if(sha1_32(buf)==-357412418){break;} }
+		for(i=-2;i<15;i++){ buf[1208]=(byte)i; if(sha1_32(buf)==-1439383150){break;} }
+		for(i=104;i<116;i++){ buf[1209]=(byte)i; if(sha1_32(buf)==-1214212103){break;} }
+		for(i=-56;i<-29;i++){ buf[1210]=(byte)i; if(sha1_32(buf)==1981060417){break;} }
+		for(i=74;i<90;i++){ buf[1211]=(byte)i; if(sha1_32(buf)==1597191846){break;} }
+		for(i=32;i<39;i++){ buf[1212]=(byte)i; if(sha1_32(buf)==936142735){break;} }
+		for(i=58;i<78;i++){ buf[1213]=(byte)i; if(sha1_32(buf)==1454796569){break;} }
+		for(i=-24;i<-1;i++){ buf[1214]=(byte)i; if(sha1_32(buf)==-1741250409){break;} }
+		for(i=-11;i<10;i++){ buf[1215]=(byte)i; if(sha1_32(buf)==-585345335){break;} }
+		for(i=64;i<77;i++){ buf[1216]=(byte)i; if(sha1_32(buf)==-430635639){break;} }
+		for(i=-115;i<-98;i++){ buf[1217]=(byte)i; if(sha1_32(buf)==-1571435406){break;} }
+		for(i=-9;i<4;i++){ buf[1218]=(byte)i; if(sha1_32(buf)==-1607779826){break;} }
+		for(i=-111;i<-102;i++){ buf[1219]=(byte)i; if(sha1_32(buf)==1367063537){break;} }
+		for(i=-128;i<-113;i++){ buf[1220]=(byte)i; if(sha1_32(buf)==-1715762873){break;} }
+		for(i=82;i<92;i++){ buf[1221]=(byte)i; if(sha1_32(buf)==2084713972){break;} }
+		for(i=-101;i<-83;i++){ buf[1222]=(byte)i; if(sha1_32(buf)==1509483573){break;} }
+		for(i=63;i<90;i++){ buf[1223]=(byte)i; if(sha1_32(buf)==1185187208){break;} }
+		for(i=-82;i<-61;i++){ buf[1224]=(byte)i; if(sha1_32(buf)==-700292734){break;} }
+		for(i=-62;i<-43;i++){ buf[1225]=(byte)i; if(sha1_32(buf)==1635645150){break;} }
+		for(i=43;i<59;i++){ buf[1226]=(byte)i; if(sha1_32(buf)==-119329108){break;} }
+		for(i=41;i<63;i++){ buf[1227]=(byte)i; if(sha1_32(buf)==1947620574){break;} }
+		for(i=3;i<15;i++){ buf[1228]=(byte)i; if(sha1_32(buf)==547278477){break;} }
+		for(i=-8;i<14;i++){ buf[1229]=(byte)i; if(sha1_32(buf)==-227185319){break;} }
+		for(i=-56;i<-42;i++){ buf[1230]=(byte)i; if(sha1_32(buf)==-1603623141){break;} }
+		for(i=15;i<31;i++){ buf[1231]=(byte)i; if(sha1_32(buf)==956641483){break;} }
+		for(i=-20;i<-19;i++){ buf[1232]=(byte)i; if(sha1_32(buf)==1317483867){break;} }
+		for(i=12;i<42;i++){ buf[1233]=(byte)i; if(sha1_32(buf)==1817593475){break;} }
+		for(i=-17;i<-16;i++){ buf[1234]=(byte)i; if(sha1_32(buf)==-1459400168){break;} }
+		for(i=-56;i<-43;i++){ buf[1235]=(byte)i; if(sha1_32(buf)==921617314){break;} }
+		for(i=75;i<92;i++){ buf[1236]=(byte)i; if(sha1_32(buf)==-1518743403){break;} }
+		return buf;
+	}
+}

+ 2 - 0
baseswago/build.gradle

@@ -117,6 +117,8 @@ dependencies {
     api 'com.github.hackware1993:MagicIndicator:1.7.0'
     //svgplayer
     api 'com.github.yyued:SVGAPlayer-Android:2.6.1'
+    //美颜
+    api project(path: ':lib_beautyui')
     //#firebase
     //firebase
     api platform('com.google.firebase:firebase-bom:29.0.1')

+ 22 - 6
baseswago/src/main/java/com/swago/baseswago/agora/AgoraManager.kt

@@ -107,12 +107,21 @@ object AgoraManager {
     /**
      * 主播设置预览画面
      */
-    fun setupLocalVideo(context: Context, mLocalContainer: FrameLayout) {
-        mRtcEngine?.startPreview()
-        val mLocalView = RtcEngine.CreateRendererView(context)
-        mLocalView.setZOrderMediaOverlay(true)
-        mLocalContainer.addView(mLocalView)
-        mRtcEngine?.setupLocalVideo(VideoCanvas(mLocalView, VideoCanvas.RENDER_MODE_HIDDEN, 0))
+    fun setupLocalVideo(context: Context,localContainerView:FrameLayout,uid:Int,isUseBeauty:Boolean=false,beautyLocalVideoFun:(()->Unit)?){
+        if (isUseBeauty){
+            beautyLocalVideoFun?.invoke()
+        }else{
+            mRtcEngine?.startPreview()
+            val localSurfaceView = RtcEngine.CreateRendererView(context)
+            localSurfaceView.setZOrderMediaOverlay(true)
+            localContainerView.removeAllViews()
+            localContainerView.addView(localSurfaceView)
+            //设置本地视图
+            val localVideoCanvas = VideoCanvas(localSurfaceView,VideoCanvas.RENDER_MODE_HIDDEN, uid)
+            val resultCode = mRtcEngine?.setupLocalVideo(localVideoCanvas)
+            Log.d("agroaAV","$resultCode")
+        }
+
     }
 
 
@@ -188,6 +197,13 @@ object AgoraManager {
         )
     }
 
+    /**
+     * 获取rtcEngine
+     */
+    fun getRtcEngine():RtcEngine?{
+        return mRtcEngine
+    }
+
     /**
      * 切换摄像头
      */

+ 3 - 0
build.gradle

@@ -21,6 +21,9 @@ buildscript {
 
 allprojects {
     repositories {
+        flatDir {
+            dirs project(':room').file('libs')
+        }
         google()
         maven { url 'https://jitpack.io' }
         mavenCentral()

+ 1 - 1
lib_beauty/build.gradle

@@ -31,7 +31,7 @@ android {
 
 dependencies {
     api 'com.faceunity:core:7.4.1.0'
-    implementation 'androidx.core:core-ktx:1.7.0'
+    implementation 'androidx.core:core-ktx:1.5.0'
     implementation 'androidx.appcompat:appcompat:1.3.0'
     implementation 'com.google.android.material:material:1.4.0'
     testImplementation 'junit:junit:4.13.2'

+ 1 - 1
lib_beauty/src/main/java/com/swago/lib_beauty/FURenderer.java

@@ -3,7 +3,7 @@ package com.swago.lib_beauty;
 import com.faceunity.core.entity.FURenderInputData;
 import com.faceunity.core.entity.FURenderOutputData;
 import com.faceunity.core.enumeration.CameraFacingEnum;
-import com.faceunity.core.enumeration.FUTransformMatrixEnum;import com.lin.libfubeauty.FuBeautyManager;import com.lin.libfubeauty.IFURenderer;
+import com.faceunity.core.enumeration.FUTransformMatrixEnum;
 
 import java.util.HashMap;
 

+ 1 - 0
lib_beautyui/.gitignore

@@ -0,0 +1 @@
+/build

+ 45 - 0
lib_beautyui/build.gradle

@@ -0,0 +1,45 @@
+plugins {
+    id 'com.android.library'
+    id 'org.jetbrains.kotlin.android'
+}
+
+android {
+    compileSdkVersion 30
+
+    defaultConfig {
+        minSdkVersion 21
+        targetSdkVersion 30
+
+        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+        consumerProguardFiles "consumer-rules.pro"
+    }
+
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+        }
+    }
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+    kotlinOptions {
+        jvmTarget = '1.8'
+    }
+
+    buildFeatures{
+        viewBinding = true
+    }
+}
+
+dependencies {
+    implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.44'
+    api project(path: ':lib_beauty')
+    implementation 'androidx.core:core-ktx:1.5.0'
+    implementation 'androidx.appcompat:appcompat:1.3.0'
+    implementation 'com.google.android.material:material:1.4.0'
+    testImplementation 'junit:junit:4.13.2'
+    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+}

+ 0 - 0
lib_beautyui/consumer-rules.pro


+ 21 - 0
lib_beautyui/proguard-rules.pro

@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 24 - 0
lib_beautyui/src/androidTest/java/com/swago/lib_beautyui/ExampleInstrumentedTest.kt

@@ -0,0 +1,24 @@
+package com.swago.lib_beautyui
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+    @Test
+    fun useAppContext() {
+        // Context of the app under test.
+        val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+        assertEquals("com.lin.lib_beautyui.test", appContext.packageName)
+    }
+}

+ 5 - 0
lib_beautyui/src/main/AndroidManifest.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.swago.lib_beautyui">
+
+</manifest>

+ 143 - 0
lib_beautyui/src/main/java/com/swago/lib_beautyui/BaseDialogFragment.kt

@@ -0,0 +1,143 @@
+package com.swago.lib_beautyui
+
+import android.os.Bundle
+import android.view.*
+import androidx.annotation.StyleRes
+import androidx.fragment.app.DialogFragment
+import androidx.fragment.app.FragmentManager
+import androidx.viewbinding.ViewBinding
+import java.lang.reflect.ParameterizedType
+
+/**
+ *@date 2021/5/31 11:09
+ *description:
+ */
+abstract class BaseDialogFragment<VB:ViewBinding> :DialogFragment()  {
+
+    private var _binding: VB? = null
+    val binding get() = _binding!!
+
+    var rootView: View? = null
+    private var canCancel = true
+    private var gravity = Gravity.BOTTOM
+    private var mHeight = ViewGroup.LayoutParams.WRAP_CONTENT
+    private var mWidth = ViewGroup.LayoutParams.MATCH_PARENT
+    @StyleRes
+    private var animationId: Int? = null
+
+    //弹窗背景透明度
+    private var mAmount = 0f
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        _binding = getViewBindingForFragment(inflater, container)
+        return binding.root
+    }
+
+
+    override fun onStart() {
+        super.onStart()
+        //设置宽度
+        val attrs = dialog?.window?.attributes
+        attrs?.width = mWidth
+        attrs?.height = mHeight
+        dialog?.window?.attributes = attrs
+        dialog?.window?.setGravity(gravity)
+        dialog?.window?.setDimAmount(mAmount)
+        animationId?.let {
+            dialog?.window?.setWindowAnimations(it)
+        }
+
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setStyle(STYLE_NORMAL, R.style.dialogFullScreen)
+    }
+
+
+    override fun onActivityCreated(savedInstanceState: Bundle?) {
+        super.onActivityCreated(savedInstanceState)
+        init()
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        initViewData()
+    }
+
+    override fun onResume() {
+        super.onResume()
+        dialog?.setCanceledOnTouchOutside(canCancel)
+
+    }
+
+    /**
+     * 设置是否可以点击其他区域取消
+     */
+    fun setCancel(canCanCel:Boolean){
+        this.canCancel = canCanCel
+    }
+
+    fun setGravity(gravity: Int){
+        this.gravity = gravity
+    }
+
+    fun setDimAmount(amount: Float) {
+        mAmount = amount
+    }
+
+    /**
+     * 设置全屏
+     */
+    fun setFullHeight(){
+        mHeight = ViewGroup.LayoutParams.MATCH_PARENT
+    }
+
+
+    fun setWidth(width:Int){
+        mWidth = width
+    }
+
+
+    /**
+     * 设置动画
+     */
+    fun setAnimation(@StyleRes resId:Int){
+        this.animationId = resId
+    }
+
+    abstract fun init()
+    abstract fun initViewData()
+
+
+
+    override fun onDestroyView() {
+        super.onDestroyView()
+        _binding = null
+    }
+
+
+    @Suppress("UNCHECKED_CAST")
+    fun getViewBindingForFragment(layoutInflater: LayoutInflater, container: ViewGroup?): VB {
+        val type = javaClass.genericSuperclass as ParameterizedType
+        val aClass = type.actualTypeArguments[0] as Class<*>
+        val method = aClass.getDeclaredMethod("inflate", LayoutInflater::class.java)
+        return method.invoke(null, layoutInflater) as VB
+    }
+
+
+    override fun show(manager: FragmentManager, tag: String?) {
+        try {
+            //在每个add事务前增加一个remove事务,防止连续的add
+            manager.beginTransaction().remove(this).commit()
+            super.show(manager,tag)
+        } catch (e: Exception) {
+            //同一实例使用不同的tag会异常,这里捕获一下
+            e.printStackTrace()
+        }
+    }
+}

+ 175 - 0
lib_beautyui/src/main/java/com/swago/lib_beautyui/BeautyDialogFragment.kt

@@ -0,0 +1,175 @@
+package com.swago.lib_beautyui
+
+import android.view.View
+import android.widget.SeekBar
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.swago.lib_beauty.FuBeautyManager
+import com.swago.lib_beautyui.databinding.FragmentDialogBeautyBinding
+
+/**
+ *@date 2021/8/13 10:34
+ *description:
+ */
+class BeautyDialogFragment : BaseDialogFragment<FragmentDialogBeautyBinding>() {
+
+    private val  skinAdapter by lazy {
+        FaceBeautyAdapter()
+    }
+
+    private val  faceAdapter by lazy {
+        FaceBeautyAdapter()
+    }
+
+    private val  filterAdapter by lazy {
+        FaceFilterAdapter()
+    }
+
+    /**
+     * 当前选中哪个菜单栏
+     * 美肤0 美形1 滤镜2
+     */
+    var type = 0
+
+
+    /**
+     * 美肤 美形 滤镜 分辨选中哪一个
+     */
+    var skinIndex = 0
+    var faceIndex = 0
+    var filterIndex = 0
+
+
+    override fun init() {
+        setAnimation(R.style.beautyBottomAnimator)
+    }
+
+    override fun initViewData() {
+
+        binding.rvSkin.layoutManager = LinearLayoutManager(context,RecyclerView.HORIZONTAL,false)
+        binding.rvFace.layoutManager = LinearLayoutManager(context,RecyclerView.HORIZONTAL,false)
+        binding.rvFilter.layoutManager = LinearLayoutManager(context,RecyclerView.HORIZONTAL,false)
+        binding.rvSkin.adapter = skinAdapter
+        binding.rvFace.adapter = faceAdapter
+        binding.rvFilter.adapter = filterAdapter
+
+
+        val skinList = FaceBeautySource.buildSkinParams()
+        val faceList = FaceBeautySource.buildShapeParams()
+        val filterList = FaceBeautySource.buildFilters()
+
+        skinAdapter.setNewData(skinList)
+        faceAdapter.setNewData(faceList)
+        filterAdapter.setNewData(filterList)
+
+        binding.mIndicatorSeekBar.updateTextview((FuBeautyManager.params[0]*100).toInt())
+        binding.mIndicatorSeekBar.seekBar.progress = (FuBeautyManager.params[0]*100).toInt()
+
+        skinAdapter.setOnItemClickListener { _, _, position ->
+            skinList[skinIndex].isSelected = false
+            skinIndex = position
+            skinList[skinIndex].isSelected = true
+            skinAdapter.notifyDataSetChanged()
+            binding.mIndicatorSeekBar.seekBar.progress = (FuBeautyManager.params[position]*100).toInt()
+        }
+
+        faceAdapter.setOnItemClickListener { _, _, position ->
+            faceList[faceIndex].isSelected = false
+            faceIndex = position
+            faceList[faceIndex].isSelected = true
+            faceAdapter.notifyDataSetChanged()
+            binding.mIndicatorSeekBar.seekBar.progress = (FuBeautyManager.params[position+skinList.size]*100).toInt()
+
+        }
+
+        filterAdapter.setOnItemClickListener { _, _, position ->
+            if(position==0){
+                binding.mIndicatorSeekBar.visibility = View.GONE
+            }else{
+                binding.mIndicatorSeekBar.visibility = View.VISIBLE
+            }
+            filterList[filterIndex].isSelected = false
+            filterIndex = position
+            filterList[filterIndex].isSelected = true
+            filterAdapter.notifyDataSetChanged()
+            FuBeautyManager.setFilterName(filterList[filterIndex].key)
+            binding.mIndicatorSeekBar.seekBar.progress = (filterList[filterIndex].intensity*100).toInt()
+        }
+
+        binding.mIndicatorSeekBar.setOnSeekBarChangeListener(object:SeekBar.OnSeekBarChangeListener{
+            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
+                binding.mIndicatorSeekBar.updateTextview(progress)
+                when(type){
+                    0 -> {
+                        FuBeautyManager.setBeauty(skinIndex,progress/100.0)
+                        FuBeautyManager.params[skinIndex] = progress/100.0
+                    }
+
+                    1 -> {
+                        FuBeautyManager.setBeauty(skinList.size+faceIndex,progress/100.0)
+                        FuBeautyManager.params[skinList.size+faceIndex] = progress/100.0
+                    }
+
+                    2 -> {
+                        FuBeautyManager.setFilterIntensity(progress/100.0)
+                        filterList[filterIndex].intensity = progress/100.0
+                    }
+                }
+
+            }
+
+            override fun onStartTrackingTouch(seekBar: SeekBar?) {
+            }
+
+            override fun onStopTrackingTouch(seekBar: SeekBar?) {
+            }
+
+        })
+
+        binding.rb.setOnCheckedChangeListener { group, checkedId ->
+
+            when(checkedId){
+                R.id.rbSkin -> {
+                    type = 0
+                    binding.rvSkin.visibility = View.VISIBLE
+                    binding.rvFace.visibility = View.GONE
+                    binding.rvFilter.visibility = View.GONE
+                    binding.mIndicatorSeekBar.visibility = View.VISIBLE
+                    binding.mIndicatorSeekBar.seekBar.progress = (FuBeautyManager.params[0]*100).toInt()
+                }
+
+                R.id.rbFace -> {
+                    type = 1
+                    binding.rvSkin.visibility = View.GONE
+                    binding.rvFace.visibility = View.VISIBLE
+                    binding.rvFilter.visibility = View.GONE
+                    binding.mIndicatorSeekBar.visibility = View.VISIBLE
+                    binding.mIndicatorSeekBar.seekBar.progress = (FuBeautyManager.params[skinList.size]*100).toInt()
+                }
+
+                R.id.rbFilter -> {
+                    type = 2
+                    binding.rvSkin.visibility = View.GONE
+                    binding.rvFace.visibility = View.GONE
+                    binding.rvFilter.visibility = View.VISIBLE
+                    binding.mIndicatorSeekBar.seekBar.progress = (filterList[filterIndex].intensity*100).toInt()
+                    if (filterIndex==0){
+                        binding.mIndicatorSeekBar.visibility = View.GONE
+                    }else{
+                        binding.mIndicatorSeekBar.visibility = View.VISIBLE
+                    }
+                }
+            }
+        }
+
+    }
+
+
+    override fun onDestroyView() {
+        super.onDestroyView()
+        context?.let {
+            FuBeautyManager.saveBeautyParams(it)
+        }
+
+    }
+}

+ 27 - 0
lib_beautyui/src/main/java/com/swago/lib_beautyui/FaceBeautyAdapter.kt

@@ -0,0 +1,27 @@
+package com.swago.lib_beautyui
+
+import androidx.core.content.ContextCompat
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.BaseViewHolder
+import com.swago.lib_beautyui.bean.FaceBeautyBean
+
+/**
+ *@date 2021/8/13 13:53
+ *description:
+ */
+class FaceBeautyAdapter  : BaseQuickAdapter<FaceBeautyBean,BaseViewHolder>(R.layout.item_beauty, arrayListOf()) {
+
+    override fun convert(helper: BaseViewHolder, item: FaceBeautyBean) {
+        helper.apply {
+            if (item.isSelected){
+                setTextColor(R.id.tv,ContextCompat.getColor(itemView.context,R.color.main_color))
+                setImageResource(R.id.iv,item.openRes)
+            }else{
+                setTextColor(R.id.tv,ContextCompat.getColor(itemView.context,R.color.white))
+                setImageResource(R.id.iv,item.closeRes)
+            }
+            setText(R.id.tv,item.desRes)
+
+        }
+    }
+}

+ 277 - 0
lib_beautyui/src/main/java/com/swago/lib_beautyui/FaceBeautySource.java

@@ -0,0 +1,277 @@
+package com.swago.lib_beautyui;
+
+import com.faceunity.core.controller.facebeauty.FaceBeautyParam;
+import com.faceunity.core.model.facebeauty.FaceBeautyFilterEnum;
+import com.swago.lib_beautyui.bean.FaceBeautyBean;
+import com.swago.lib_beautyui.bean.FaceBeautyFilterBean;
+
+import java.util.ArrayList;
+
+/**
+ * DESC:美颜数据构造
+ * Created on 2021/3/27
+ */
+public class FaceBeautySource {
+
+    /**
+     * 初始化美肤参数
+     *
+     * @return ArrayList<FaceBeautyBean>
+     */
+    public static ArrayList<FaceBeautyBean> buildSkinParams() {
+        ArrayList<FaceBeautyBean> params = new ArrayList<>();
+        params.add(new FaceBeautyBean(
+                        FaceBeautyParam.BLUR_INTENSITY, R.string.beauty_box_heavy_blur_fine,
+                        R.drawable.icon_beauty_skin_buffing_close_selector, R.drawable.icon_beauty_skin_buffing_open_selector,true
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.COLOR_INTENSITY, R.string.beauty_box_color_level,
+                        R.drawable.icon_beauty_skin_color_close_selector, R.drawable.icon_beauty_skin_color_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.RED_INTENSITY, R.string.beauty_box_red_level,
+                        R.drawable.icon_beauty_skin_red_close_selector, R.drawable.icon_beauty_skin_red_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.SHARPEN_INTENSITY, R.string.beauty_box_sharpen,
+                        R.drawable.icon_beauty_skin_sharpen_close_selector, R.drawable.icon_beauty_skin_sharpen_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.EYE_BRIGHT_INTENSITY, R.string.beauty_box_eye_bright,
+                        R.drawable.icon_beauty_skin_eyes_bright_close_selector, R.drawable.icon_beauty_skin_eyes_bright_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.TOOTH_WHITEN_INTENSITY, R.string.beauty_box_tooth_whiten,
+                        R.drawable.icon_beauty_skin_teeth_close_selector, R.drawable.icon_beauty_skin_teeth_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.REMOVE_POUCH_INTENSITY, R.string.beauty_micro_pouch,
+                        R.drawable.icon_beauty_skin_dark_circles_close_selector, R.drawable.icon_beauty_skin_dark_circles_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.REMOVE_NASOLABIAL_FOLDS_INTENSITY, R.string.beauty_micro_nasolabial,
+                        R.drawable.icon_beauty_skin_wrinkle_close_selector, R.drawable.icon_beauty_skin_wrinkle_open_selector,false
+                )
+        );
+        return params;
+    }
+
+    /**
+     * 初始化美型参数
+     *
+     * @return ArrayList<FaceBeautyBean>
+     */
+    public static ArrayList<FaceBeautyBean> buildShapeParams() {
+        ArrayList<FaceBeautyBean> params = new ArrayList<>();
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.CHEEK_THINNING_INTENSITY, R.string.beauty_box_cheek_thinning,
+                        R.drawable.icon_beauty_shape_face_cheekthin_close_selector, R.drawable.icon_beauty_shape_face_cheekthin_open_selector,true
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.CHEEK_V_INTENSITY, R.string.beauty_box_cheek_v,
+                        R.drawable.icon_beauty_shape_face_v_close_selector, R.drawable.icon_beauty_shape_face_v_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.CHEEK_NARROW_INTENSITY, R.string.beauty_box_cheek_narrow,
+                        R.drawable.icon_beauty_shape_face_narrow_close_selector, R.drawable.icon_beauty_shape_face_narrow_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.CHEEK_SMALL_INTENSITY, R.string.beauty_box_cheek_small,
+                        R.drawable.icon_beauty_shape_face_little_close_selector, R.drawable.icon_beauty_shape_face_little_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.INTENSITY_CHEEKBONES_INTENSITY, R.string.beauty_box_cheekbones,
+                        R.drawable.icon_beauty_shape_cheek_bones_close_selector, R.drawable.icon_beauty_shape_cheek_bones_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.INTENSITY_LOW_JAW_INTENSITY, R.string.beauty_box_lower_jaw,
+                        R.drawable.icon_beauty_shape_lower_jaw_close_selector, R.drawable.icon_beauty_shape_lower_jaw_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.EYE_ENLARGING_INTENSITY, R.string.beauty_box_eye_enlarge,
+                        R.drawable.icon_beauty_shape_enlarge_eye_close_selector, R.drawable.icon_beauty_shape_enlarge_eye_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.EYE_CIRCLE_INTENSITY, R.string.beauty_box_eye_circle,
+                        R.drawable.icon_beauty_shape_round_eye_close_selector, R.drawable.icon_beauty_shape_round_eye_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.CHIN_INTENSITY, R.string.beauty_box_intensity_chin,
+                        R.drawable.icon_beauty_shape_chin_close_selector, R.drawable.icon_beauty_shape_chin_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.FOREHEAD_INTENSITY, R.string.beauty_box_intensity_forehead,
+                        R.drawable.icon_beauty_shape_forehead_close_selector, R.drawable.icon_beauty_shape_forehead_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.NOSE_INTENSITY, R.string.beauty_box_intensity_nose,
+                        R.drawable.icon_beauty_shape_thin_nose_close_selector, R.drawable.icon_beauty_shape_thin_nose_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.MOUTH_INTENSITY, R.string.beauty_box_intensity_mouth,
+                        R.drawable.icon_beauty_shape_mouth_close_selector, R.drawable.icon_beauty_shape_mouth_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.CANTHUS_INTENSITY, R.string.beauty_micro_canthus,
+                        R.drawable.icon_beauty_shape_open_eyes_close_selector, R.drawable.icon_beauty_shape_open_eyes_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.EYE_SPACE_INTENSITY, R.string.beauty_micro_eye_space,
+                        R.drawable.icon_beauty_shape_distance_close_selector, R.drawable.icon_beauty_shape_distance_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.EYE_ROTATE_INTENSITY, R.string.beauty_micro_eye_rotate,
+                        R.drawable.icon_beauty_shape_angle_close_selector, R.drawable.icon_beauty_shape_angle_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.LONG_NOSE_INTENSITY, R.string.beauty_micro_long_nose,
+                        R.drawable.icon_beauty_shape_proboscis_close_selector, R.drawable.icon_beauty_shape_proboscis_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.PHILTRUM_INTENSITY, R.string.beauty_micro_philtrum,
+                        R.drawable.icon_beauty_shape_shrinking_close_selector, R.drawable.icon_beauty_shape_shrinking_open_selector,false
+                )
+        );
+        params.add(
+                new FaceBeautyBean(
+                        FaceBeautyParam.SMILE_INTENSITY, R.string.beauty_micro_smile,
+                        R.drawable.icon_beauty_shape_smile_close_selector, R.drawable.icon_beauty_shape_smile_open_selector,false
+                )
+        );
+        return params;
+    }
+
+
+    /**
+     * 初始化滤镜参数
+     *
+     * @return ArrayList<FaceBeautyFilterBean>
+     */
+    public static ArrayList<FaceBeautyFilterBean> buildFilters() {
+        ArrayList<FaceBeautyFilterBean> filters = new ArrayList<>();
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ORIGIN, R.mipmap.icon_beauty_filter_cancel, R.string.origin,0.0,true));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZIRAN_1, R.mipmap.icon_beauty_filter_natural_1, R.string.ziran_1,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZIRAN_2, R.mipmap.icon_beauty_filter_natural_2, R.string.ziran_2,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZIRAN_3, R.mipmap.icon_beauty_filter_natural_3, R.string.ziran_3,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZIRAN_4, R.mipmap.icon_beauty_filter_natural_4, R.string.ziran_4,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZIRAN_5, R.mipmap.icon_beauty_filter_natural_5, R.string.ziran_5,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZIRAN_6, R.mipmap.icon_beauty_filter_natural_6, R.string.ziran_6,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZIRAN_7, R.mipmap.icon_beauty_filter_natural_7, R.string.ziran_7,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZIRAN_8, R.mipmap.icon_beauty_filter_natural_8, R.string.ziran_8,false));
+
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZHIGANHUI_1, R.mipmap.icon_beauty_filter_texture_gray_1, R.string.zhiganhui_1,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZHIGANHUI_2, R.mipmap.icon_beauty_filter_texture_gray_2, R.string.zhiganhui_2,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZHIGANHUI_3, R.mipmap.icon_beauty_filter_texture_gray_3, R.string.zhiganhui_3,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZHIGANHUI_4, R.mipmap.icon_beauty_filter_texture_gray_4, R.string.zhiganhui_4,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZHIGANHUI_5, R.mipmap.icon_beauty_filter_texture_gray_5, R.string.zhiganhui_5,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZHIGANHUI_6, R.mipmap.icon_beauty_filter_texture_gray_6, R.string.zhiganhui_6,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZHIGANHUI_7, R.mipmap.icon_beauty_filter_texture_gray_7, R.string.zhiganhui_7,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.ZHIGANHUI_8, R.mipmap.icon_beauty_filter_texture_gray_8, R.string.zhiganhui_8,false));
+
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.MITAO_1, R.mipmap.icon_beauty_filter_peach_1, R.string.mitao_1,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.MITAO_2, R.mipmap.icon_beauty_filter_peach_2, R.string.mitao_2,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.MITAO_3, R.mipmap.icon_beauty_filter_peach_3, R.string.mitao_3,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.MITAO_4, R.mipmap.icon_beauty_filter_peach_4, R.string.mitao_4,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.MITAO_5, R.mipmap.icon_beauty_filter_peach_5, R.string.mitao_5,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.MITAO_6, R.mipmap.icon_beauty_filter_peach_6, R.string.mitao_6,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.MITAO_7, R.mipmap.icon_beauty_filter_peach_7, R.string.mitao_7,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.MITAO_8, R.mipmap.icon_beauty_filter_peach_8, R.string.mitao_8,false));
+
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.BAILIANG_1, R.mipmap.icon_beauty_filter_bailiang_1, R.string.bailiang_1,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.BAILIANG_2, R.mipmap.icon_beauty_filter_bailiang_2, R.string.bailiang_2,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.BAILIANG_3, R.mipmap.icon_beauty_filter_bailiang_3, R.string.bailiang_3,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.BAILIANG_4, R.mipmap.icon_beauty_filter_bailiang_4, R.string.bailiang_4,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.BAILIANG_5, R.mipmap.icon_beauty_filter_bailiang_5, R.string.bailiang_5,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.BAILIANG_6, R.mipmap.icon_beauty_filter_bailiang_6, R.string.bailiang_6,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.BAILIANG_7, R.mipmap.icon_beauty_filter_bailiang_7, R.string.bailiang_7,false));
+
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.FENNEN_1, R.mipmap.icon_beauty_filter_fennen_1, R.string.fennen_1,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.FENNEN_2, R.mipmap.icon_beauty_filter_fennen_2, R.string.fennen_2,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.FENNEN_3, R.mipmap.icon_beauty_filter_fennen_3, R.string.fennen_3,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.FENNEN_5, R.mipmap.icon_beauty_filter_fennen_5, R.string.fennen_5,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.FENNEN_6, R.mipmap.icon_beauty_filter_fennen_6, R.string.fennen_6,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.FENNEN_7, R.mipmap.icon_beauty_filter_fennen_7, R.string.fennen_7,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.FENNEN_8, R.mipmap.icon_beauty_filter_fennen_8, R.string.fennen_8,false));
+
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.LENGSEDIAO_1, R.mipmap.icon_beauty_filter_lengsediao_1, R.string.lengsediao_1,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.LENGSEDIAO_2, R.mipmap.icon_beauty_filter_lengsediao_2, R.string.lengsediao_2,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.LENGSEDIAO_3, R.mipmap.icon_beauty_filter_lengsediao_3, R.string.lengsediao_3,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.LENGSEDIAO_4, R.mipmap.icon_beauty_filter_lengsediao_4, R.string.lengsediao_4,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.LENGSEDIAO_7, R.mipmap.icon_beauty_filter_lengsediao_7, R.string.lengsediao_7,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.LENGSEDIAO_8, R.mipmap.icon_beauty_filter_lengsediao_8, R.string.lengsediao_8,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.LENGSEDIAO_11, R.mipmap.icon_beauty_filter_lengsediao_11, R.string.lengsediao_11,false));
+
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.NUANSEDIAO_1, R.mipmap.icon_beauty_filter_nuansediao_1, R.string.nuansediao_1,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.NUANSEDIAO_2, R.mipmap.icon_beauty_filter_nuansediao_2, R.string.nuansediao_2,false));
+
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.GEXING_1, R.mipmap.icon_beauty_filter_gexing_1, R.string.gexing_1,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.GEXING_2, R.mipmap.icon_beauty_filter_gexing_2, R.string.gexing_2,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.GEXING_3, R.mipmap.icon_beauty_filter_gexing_3, R.string.gexing_3,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.GEXING_4, R.mipmap.icon_beauty_filter_gexing_4, R.string.gexing_4,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.GEXING_5, R.mipmap.icon_beauty_filter_gexing_5, R.string.gexing_5,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.GEXING_7, R.mipmap.icon_beauty_filter_gexing_7, R.string.gexing_7,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.GEXING_10, R.mipmap.icon_beauty_filter_gexing_10, R.string.gexing_10,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.GEXING_11, R.mipmap.icon_beauty_filter_gexing_11, R.string.gexing_11,false));
+
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.XIAOQINGXIN_1, R.mipmap.icon_beauty_filter_xiaoqingxin_1, R.string.xiaoqingxin_1,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.XIAOQINGXIN_3, R.mipmap.icon_beauty_filter_xiaoqingxin_3, R.string.xiaoqingxin_3,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.XIAOQINGXIN_4, R.mipmap.icon_beauty_filter_xiaoqingxin_4, R.string.xiaoqingxin_4,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.XIAOQINGXIN_6, R.mipmap.icon_beauty_filter_xiaoqingxin_6, R.string.xiaoqingxin_6,false));
+
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.HEIBAI_1, R.mipmap.icon_beauty_filter_heibai_1, R.string.heibai_1,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.HEIBAI_2, R.mipmap.icon_beauty_filter_heibai_2, R.string.heibai_2,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.HEIBAI_3, R.mipmap.icon_beauty_filter_heibai_3, R.string.heibai_3,false));
+        filters.add(new FaceBeautyFilterBean(FaceBeautyFilterEnum.HEIBAI_4, R.mipmap.icon_beauty_filter_heibai_4, R.string.heibai_4,false));
+
+        return filters;
+    }
+
+
+}

+ 28 - 0
lib_beautyui/src/main/java/com/swago/lib_beautyui/FaceFilterAdapter.kt

@@ -0,0 +1,28 @@
+package com.swago.lib_beautyui
+
+import androidx.core.content.ContextCompat
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.BaseViewHolder
+import com.swago.lib_beautyui.bean.FaceBeautyFilterBean
+
+/**
+ *@date 2021/8/13 14:14
+ *description:
+ */
+class FaceFilterAdapter  : BaseQuickAdapter<FaceBeautyFilterBean, BaseViewHolder>(R.layout.item_beauty, arrayListOf()) {
+
+    override fun convert(helper: BaseViewHolder, item: FaceBeautyFilterBean) {
+        helper.apply {
+            setText(R.id.tv,item.desRes)
+            setImageResource(R.id.iv,item.imageRes)
+
+            if (item.isSelected){
+                setVisible(R.id.ivBg,true)
+                setTextColor(R.id.tv, ContextCompat.getColor(itemView.context,R.color.main_color))
+            }else{
+                setVisible(R.id.ivBg,false)
+                setTextColor(R.id.tv, ContextCompat.getColor(itemView.context,R.color.white))
+            }
+        }
+    }
+}

+ 63 - 0
lib_beautyui/src/main/java/com/swago/lib_beautyui/IndicatorSeekBar.java

@@ -0,0 +1,63 @@
+package com.swago.lib_beautyui;
+
+import android.content.Context;
+import android.graphics.Rect;
+import android.text.TextPaint;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.widget.LinearLayout;
+import android.widget.SeekBar;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+
+public class IndicatorSeekBar extends LinearLayout {
+
+    TextView textView;
+    SeekBar seekBar;
+    TextPaint paint;
+    int mTextWidth;
+    int seekBarLeftMargin;
+    Rect textBounds = new Rect();
+
+    public IndicatorSeekBar(Context context) {
+        this(context, null);
+    }
+
+    public IndicatorSeekBar(Context context, @Nullable AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public IndicatorSeekBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        initView(context);
+    }
+
+    private void initView(Context context){
+        final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        inflater.inflate(R.layout.view_indicator_seekbar, this);
+        textView = (TextView)findViewById(R.id.isb_progress);
+        seekBar = (SeekBar) findViewById(R.id.isb_seekbar);
+        LayoutParams lp = (LayoutParams) textView.getLayoutParams();
+        seekBarLeftMargin = lp.leftMargin;
+        paint = textView.getPaint();
+    }
+
+    public void updateTextview(int progress){
+        Rect bounds = seekBar.getProgressDrawable().getBounds();
+        LayoutParams lp = (LayoutParams) textView.getLayoutParams();
+        textView.setText(progress + "");
+        paint.getTextBounds("0", 0, 1, textBounds);
+        mTextWidth = textBounds.width();
+        lp.leftMargin = (bounds.width() * seekBar.getProgress() / seekBar.getMax()) + seekBarLeftMargin + mTextWidth;
+        textView.setLayoutParams(lp);
+    }
+
+    public void setOnSeekBarChangeListener(SeekBar.OnSeekBarChangeListener listener){
+        seekBar.setOnSeekBarChangeListener(listener);
+    }
+
+    public SeekBar getSeekBar() {
+        return seekBar;
+    }
+}

+ 18 - 0
lib_beautyui/src/main/java/com/swago/lib_beautyui/bean/FaceBeautyBean.kt

@@ -0,0 +1,18 @@
+package com.swago.lib_beautyui.bean
+
+
+/**
+ *
+ * @property key String 名称标识
+ * @property desRes Int  描述
+ * @property closeRes Int 图片
+ * @property openRes Int  图片
+ * @constructor
+ */
+data class FaceBeautyBean(
+    val key: String,
+    val desRes: Int,
+    val closeRes: Int,
+    val openRes: Int,
+    var isSelected:Boolean=false
+)

+ 10 - 0
lib_beautyui/src/main/java/com/swago/lib_beautyui/bean/FaceBeautyFilterBean.kt

@@ -0,0 +1,10 @@
+package com.swago.lib_beautyui.bean
+/**
+ * 滤镜
+ * @property key String 名称标识
+ * @property imageRes Int 图片
+ * @property desRes Int 描述
+ * @property intensity Double 强度
+ * @constructor
+ */
+data class FaceBeautyFilterBean @JvmOverloads constructor(val key: String, val imageRes: Int, val desRes: Int, var intensity: Double = 0.5,var isSelected:Boolean)

+ 18 - 0
lib_beautyui/src/main/res/anim/dialog_from_bottom_enter.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="250">
+    <translate
+        android:interpolator="@android:anim/decelerate_interpolator"
+        android:duration="250"
+        android:fromYDelta="100%"
+        android:toYDelta="0">
+    </translate>
+
+    <alpha
+        android:fromAlpha="0.5"
+        android:toAlpha="1.0"
+        android:duration="250"
+        >
+    </alpha>
+
+</set>

+ 20 - 0
lib_beautyui/src/main/res/anim/dialog_to_bottom_out.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:duration="250">
+
+
+    <translate
+        android:interpolator="@android:anim/decelerate_interpolator"
+        android:duration="200"
+        android:fromYDelta="0"
+        android:toYDelta="100%">
+    </translate>
+
+    <alpha
+        android:fromAlpha="1.0"
+        android:toAlpha="0.5"
+        android:duration="200"
+        >
+    </alpha>
+
+</set>

+ 28 - 0
lib_beautyui/src/main/res/drawable/bg_seekbar_progressbar.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:id="@android:id/background">
+        <shape >
+            <corners android:radius="2dp" />
+            <gradient
+                android:angle="270"
+                android:centerColor="@color/white"
+                android:centerY="0.45"
+                android:endColor="@color/white"
+                android:startColor="@color/white" />
+        </shape>
+    </item>
+
+    <item android:id="@android:id/progress">
+        <clip >
+            <shape >
+                <corners android:radius="2dp" />
+                <gradient
+                    android:angle="270"
+                    android:centerColor="#ff56b7"
+                    android:centerY="0.45"
+                    android:endColor="#ff56b7"
+                    android:startColor="#ff56b7" />
+            </shape>
+        </clip>
+    </item>
+</layer-list>

+ 6 - 0
lib_beautyui/src/main/res/drawable/bottom_radio_color.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@color/main_color" android:state_checked="true" />
+    <item android:color="@color/main_color" android:state_selected="true" />
+    <item android:color="@android:color/white" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_angle_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_angle_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_angle_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_angle_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_angle_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_angle_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_cheek_bones_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_cheek_bones_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_cheek_bones_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_cheek_bones_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_cheek_bones_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_cheek_bones_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_chin_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_chin_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_chin_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_chin_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_chin_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_chin_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_distance_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_distance_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_distance_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_distance_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_distance_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_distance_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_enlarge_eye_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_enlarge_eye_level_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_enlarge_eye_level_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_enlarge_eye_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_enlarge_eye_level_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_enlarge_eye_level_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_cheekthin_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_face_cheekthin_level_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_face_cheekthin_level_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_cheekthin_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_face_cheekthin_level_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_face_cheekthin_level_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_little_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_face_little_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_face_little_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_little_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_face_little_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_face_little_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_narrow_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_face_narrow_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_face_narrow_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_narrow_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_face_narrow_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_face_narrow_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_v_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_face_v_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_face_v_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_face_v_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_face_v_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_face_v_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_forehead_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_forehead_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_forehead_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_forehead_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_forehead_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_forehead_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_lower_jaw_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_lower_jaw_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_lower_jaw_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_lower_jaw_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_lower_jaw_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_lower_jaw_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_mouth_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_mouth_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_mouth_bones_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_mouth_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_mouth_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_mouth_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_open_eyes_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_open_eyes_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_open_eyes_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_open_eyes_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_open_eyes_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_open_eyes_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_proboscis_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_proboscis_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_proboscis_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_proboscis_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_proboscis_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_proboscis_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_round_eye_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_round_eye_level_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_round_eye_level_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_round_eye_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_round_eye_level_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_round_eye_level_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_shrinking_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_shrinking_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_shrinking_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_shrinking_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_shrinking_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_shrinking_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_smile_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_smile_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_smile_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_smile_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_smile_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_smile_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_thin_nose_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_thin_nose_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_thin_nose_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_shape_thin_nose_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_thin_nose_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_thin_nose_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_buffing_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_buffing_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_buffing_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_buffing_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_buffing_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_buffing_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_color_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_color_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_color_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_color_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_color_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_color_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_dark_circles_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_dark_circles_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_dark_circles_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_dark_circles_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_dark_circles_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_dark_circles_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_eyes_bright_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_eyes_bright_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_eyes_bright_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_eyes_bright_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_eyes_bright_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_eyes_bright_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_red_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_red_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_red_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_red_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_red_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_red_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_sharpen_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_sharpen_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_sharpen_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_sharpen_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_sharpen_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_sharpen_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_teeth_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_teeth_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_teeth_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_teeth_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_teeth_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_teeth_open_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_wrinkle_close_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_wrinkle_close_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_wrinkle_close_normal" />
+</selector>

+ 5 - 0
lib_beautyui/src/main/res/drawable/icon_beauty_skin_wrinkle_open_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/icon_beauty_box_wrinkle_open_checked" android:state_selected="true" />
+    <item android:drawable="@mipmap/icon_beauty_box_wrinkle_open_normal" />
+</selector>

+ 9 - 0
lib_beautyui/src/main/res/drawable/seekbar_thumb.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
+
+    <size
+        android:width="16dp"
+        android:height="16dp"
+        />
+    <solid android:color="#ff56b7"/>
+</shape>

+ 5 - 0
lib_beautyui/src/main/res/drawable/shape_border.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="1dp"/>
+    <stroke android:color="@color/main_color" android:width="1dp"/>
+</shape>

+ 81 - 0
lib_beautyui/src/main/res/layout/fragment_dialog_beauty.xml

@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="180dp"
+    android:background="#1C1B1B"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+
+
+    <com.swago.lib_beautyui.IndicatorSeekBar
+        android:id="@+id/mIndicatorSeekBar"
+        app:layout_constraintTop_toTopOf="parent"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"/>
+
+
+    <RadioGroup
+        android:id="@+id/rb"
+        app:layout_constraintTop_toBottomOf="@+id/mIndicatorSeekBar"
+        android:layout_width="match_parent"
+        android:layout_height="40dp"
+        android:orientation="horizontal">
+
+        <RadioButton
+            android:id="@+id/rbSkin"
+            android:layout_width="0dp"
+            android:layout_height="40dp"
+            android:layout_weight="1"
+            android:button="@null"
+            android:gravity="center"
+            android:checked="true"
+            android:textSize="14dp"
+            android:textColor="@drawable/bottom_radio_color"
+            android:text="@string/beauty_radio_skin_beauty" />
+
+        <RadioButton
+            android:id="@+id/rbFace"
+            android:layout_width="0dp"
+            android:layout_height="40dp"
+            android:layout_weight="1"
+            android:button="@null"
+            android:textSize="14dp"
+            android:gravity="center"
+            android:textColor="@drawable/bottom_radio_color"
+            android:text="@string/beauty_radio_face_shape" />
+
+        <RadioButton
+            android:id="@+id/rbFilter"
+            android:layout_width="0dp"
+            android:layout_height="40dp"
+            android:layout_weight="1"
+            android:button="@null"
+            android:textSize="14dp"
+            android:gravity="center"
+            android:textColor="@drawable/bottom_radio_color"
+            android:text="@string/beauty_radio_filter" />
+
+    </RadioGroup>
+
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/rvSkin"
+        app:layout_constraintTop_toBottomOf="@+id/rb"
+        android:layout_width="match_parent"
+        android:layout_height="100dp"/>
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/rvFace"
+        android:visibility="gone"
+        app:layout_constraintTop_toBottomOf="@+id/rb"
+        android:layout_width="match_parent"
+        android:layout_height="100dp"/>
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/rvFilter"
+        android:visibility="gone"
+        app:layout_constraintTop_toBottomOf="@+id/rb"
+        android:layout_width="match_parent"
+        android:layout_height="100dp"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 47 - 0
lib_beautyui/src/main/res/layout/item_beauty.xml

@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:orientation="vertical"
+    android:layout_width="60dp"
+    android:layout_height="100dp">
+
+    <RelativeLayout
+        android:layout_marginTop="18dp"
+        android:gravity="center_horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <ImageView
+            android:id="@+id/iv"
+            android:layout_width="40dp"
+            android:layout_height="40dp"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginStart="1dp"
+            android:layout_marginTop="1dp" />
+
+        <ImageView
+            android:id="@+id/ivBg"
+            android:visibility="gone"
+            android:background="@drawable/shape_border"
+            android:layout_gravity="center_horizontal"
+            android:layout_width="42dp"
+            android:layout_height="42dp"/>
+
+    </RelativeLayout>
+
+
+
+    <TextView
+        android:id="@+id/tv"
+        android:textSize="12dp"
+        android:layout_marginBottom="20dp"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:textColor="@drawable/bottom_radio_color"
+        android:gravity="center"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 32 - 0
lib_beautyui/src/main/res/layout/view_indicator_seekbar.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/isb_progress"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="40dp"
+        android:ellipsize="end"
+        android:maxLines="1"
+        android:text="0"
+        android:textColor="@android:color/white"
+        android:textSize="11dp" />
+
+    <SeekBar
+        android:id="@+id/isb_seekbar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="40dp"
+        android:layout_marginEnd="40dp"
+        android:maxHeight="2dp"
+        android:minHeight="2dp"
+        android:paddingLeft="10dp"
+        android:paddingRight="10dp"
+        android:paddingBottom="10dp"
+        android:progressDrawable="@drawable/bg_seekbar_progressbar"
+        android:thumb="@drawable/seekbar_thumb" />
+
+</LinearLayout>

BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_angle_close_checked.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_angle_close_normal.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_angle_open_checked.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_angle_open_normal.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_buffing_close_checked.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_buffing_close_normal.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_buffing_open_checked.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_buffing_open_normal.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_cheek_bones_close_checked.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_cheek_bones_close_normal.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_cheek_bones_open_checked.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_cheek_bones_open_normal.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_chin_close_checked.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_chin_close_normal.png


BIN
lib_beautyui/src/main/res/mipmap-xxhdpi/icon_beauty_box_chin_open_checked.png


Some files were not shown because too many files changed in this diff