diff --git a/CommonSdk.framework/CommonSdk b/CommonSdk.framework/CommonSdk
new file mode 100644
index 0000000000000000000000000000000000000000..4a1d6a653b7f82b3c4e8cc97b71030207ac7337e
Binary files /dev/null and b/CommonSdk.framework/CommonSdk differ
diff --git a/CommonSdk.framework/Headers/CommonSdk-Swift.h b/CommonSdk.framework/Headers/CommonSdk-Swift.h
new file mode 100644
index 0000000000000000000000000000000000000000..213404dc3ad14fc52c818d6b902366214f0afc8a
--- /dev/null
+++ b/CommonSdk.framework/Headers/CommonSdk-Swift.h
@@ -0,0 +1,308 @@
+// Generated by Apple Swift version 5.5.1 (swiftlang-1300.0.31.4 clang-1300.0.29.6)
+#ifndef COMMONSDK_SWIFT_H
+#define COMMONSDK_SWIFT_H
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wgcc-compat"
+
+#if !defined(__has_include)
+# define __has_include(x) 0
+#endif
+#if !defined(__has_attribute)
+# define __has_attribute(x) 0
+#endif
+#if !defined(__has_feature)
+# define __has_feature(x) 0
+#endif
+#if !defined(__has_warning)
+# define __has_warning(x) 0
+#endif
+
+#if __has_include(<swift/objc-prologue.h>)
+# include <swift/objc-prologue.h>
+#endif
+
+#pragma clang diagnostic ignored "-Wauto-import"
+#include <Foundation/Foundation.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <stdbool.h>
+
+#if !defined(SWIFT_TYPEDEFS)
+# define SWIFT_TYPEDEFS 1
+# if __has_include(<uchar.h>)
+#  include <uchar.h>
+# elif !defined(__cplusplus)
+typedef uint_least16_t char16_t;
+typedef uint_least32_t char32_t;
+# endif
+typedef float swift_float2  __attribute__((__ext_vector_type__(2)));
+typedef float swift_float3  __attribute__((__ext_vector_type__(3)));
+typedef float swift_float4  __attribute__((__ext_vector_type__(4)));
+typedef double swift_double2  __attribute__((__ext_vector_type__(2)));
+typedef double swift_double3  __attribute__((__ext_vector_type__(3)));
+typedef double swift_double4  __attribute__((__ext_vector_type__(4)));
+typedef int swift_int2  __attribute__((__ext_vector_type__(2)));
+typedef int swift_int3  __attribute__((__ext_vector_type__(3)));
+typedef int swift_int4  __attribute__((__ext_vector_type__(4)));
+typedef unsigned int swift_uint2  __attribute__((__ext_vector_type__(2)));
+typedef unsigned int swift_uint3  __attribute__((__ext_vector_type__(3)));
+typedef unsigned int swift_uint4  __attribute__((__ext_vector_type__(4)));
+#endif
+
+#if !defined(SWIFT_PASTE)
+# define SWIFT_PASTE_HELPER(x, y) x##y
+# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
+#endif
+#if !defined(SWIFT_METATYPE)
+# define SWIFT_METATYPE(X) Class
+#endif
+#if !defined(SWIFT_CLASS_PROPERTY)
+# if __has_feature(objc_class_property)
+#  define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
+# else
+#  define SWIFT_CLASS_PROPERTY(...)
+# endif
+#endif
+
+#if __has_attribute(objc_runtime_name)
+# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
+#else
+# define SWIFT_RUNTIME_NAME(X)
+#endif
+#if __has_attribute(swift_name)
+# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
+#else
+# define SWIFT_COMPILE_NAME(X)
+#endif
+#if __has_attribute(objc_method_family)
+# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
+#else
+# define SWIFT_METHOD_FAMILY(X)
+#endif
+#if __has_attribute(noescape)
+# define SWIFT_NOESCAPE __attribute__((noescape))
+#else
+# define SWIFT_NOESCAPE
+#endif
+#if __has_attribute(ns_consumed)
+# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
+#else
+# define SWIFT_RELEASES_ARGUMENT
+#endif
+#if __has_attribute(warn_unused_result)
+# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
+#else
+# define SWIFT_WARN_UNUSED_RESULT
+#endif
+#if __has_attribute(noreturn)
+# define SWIFT_NORETURN __attribute__((noreturn))
+#else
+# define SWIFT_NORETURN
+#endif
+#if !defined(SWIFT_CLASS_EXTRA)
+# define SWIFT_CLASS_EXTRA
+#endif
+#if !defined(SWIFT_PROTOCOL_EXTRA)
+# define SWIFT_PROTOCOL_EXTRA
+#endif
+#if !defined(SWIFT_ENUM_EXTRA)
+# define SWIFT_ENUM_EXTRA
+#endif
+#if !defined(SWIFT_CLASS)
+# if __has_attribute(objc_subclassing_restricted)
+#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
+#  define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
+# else
+#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
+#  define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
+# endif
+#endif
+#if !defined(SWIFT_RESILIENT_CLASS)
+# if __has_attribute(objc_class_stub)
+#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
+#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
+# else
+#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
+#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
+# endif
+#endif
+
+#if !defined(SWIFT_PROTOCOL)
+# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
+# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
+#endif
+
+#if !defined(SWIFT_EXTENSION)
+# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
+#endif
+
+#if !defined(OBJC_DESIGNATED_INITIALIZER)
+# if __has_attribute(objc_designated_initializer)
+#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
+# else
+#  define OBJC_DESIGNATED_INITIALIZER
+# endif
+#endif
+#if !defined(SWIFT_ENUM_ATTR)
+# if defined(__has_attribute) && __has_attribute(enum_extensibility)
+#  define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
+# else
+#  define SWIFT_ENUM_ATTR(_extensibility)
+# endif
+#endif
+#if !defined(SWIFT_ENUM)
+# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
+# if __has_feature(generalized_swift_name)
+#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
+# else
+#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
+# endif
+#endif
+#if !defined(SWIFT_UNAVAILABLE)
+# define SWIFT_UNAVAILABLE __attribute__((unavailable))
+#endif
+#if !defined(SWIFT_UNAVAILABLE_MSG)
+# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
+#endif
+#if !defined(SWIFT_AVAILABILITY)
+# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
+#endif
+#if !defined(SWIFT_WEAK_IMPORT)
+# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
+#endif
+#if !defined(SWIFT_DEPRECATED)
+# define SWIFT_DEPRECATED __attribute__((deprecated))
+#endif
+#if !defined(SWIFT_DEPRECATED_MSG)
+# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
+#endif
+#if __has_feature(attribute_diagnose_if_objc)
+# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
+#else
+# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
+#endif
+#if !defined(IBSegueAction)
+# define IBSegueAction
+#endif
+#if __has_feature(modules)
+#if __has_warning("-Watimport-in-framework-header")
+#pragma clang diagnostic ignored "-Watimport-in-framework-header"
+#endif
+@import CoreGraphics;
+@import Foundation;
+@import ObjectiveC;
+@import UIKit;
+#endif
+
+#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
+#pragma clang diagnostic ignored "-Wduplicate-method-arg"
+#if __has_warning("-Wpragma-clang-attribute")
+# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
+#endif
+#pragma clang diagnostic ignored "-Wunknown-pragmas"
+#pragma clang diagnostic ignored "-Wnullability"
+
+#if __has_attribute(external_source_symbol)
+# pragma push_macro("any")
+# undef any
+# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="CommonSdk",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
+# pragma pop_macro("any")
+#endif
+
+
+SWIFT_PROTOCOL("_TtP9CommonSdk20BYScrollViewDelegate_")
+@protocol BYScrollViewDelegate <NSObject>
+@optional
+- (void)didIndexChangedWithIndex:(NSInteger)index;
+@end
+
+@class UIImage;
+@class NSString;
+@class NSCoder;
+@class NSNumber;
+@class UITouch;
+@class UIEvent;
+
+SWIFT_CLASS("_TtC9CommonSdk17BYCycleScrollView")
+@interface BYCycleScrollView : UIView <BYScrollViewDelegate>
+@property (nonatomic, copy) NSArray<UIImage *> * _Nullable imagesArray;
+@property (nonatomic, copy) NSArray<NSString *> * _Nullable titleArr;
+- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER;
+- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
+- (void)didIndexChangedWithIndex:(NSInteger)index;
+- (void)setUpPageControlWithNormalImage:(UIImage * _Nonnull)normalImage currentImage:(UIImage * _Nonnull)currentImage itemSpace:(CGFloat)itemSpace;
+- (void)touchesBegan:(NSSet<UITouch *> * _Nonnull)touches withEvent:(UIEvent * _Nullable)event;
+@end
+
+
+SWIFT_PROTOCOL("_TtP9CommonSdk25BYCycleScrollViewDelegate_")
+@protocol BYCycleScrollViewDelegate <NSObject>
+@optional
+- (void)didTappedWithIndex:(NSInteger)index;
+@end
+
+
+SWIFT_CLASS("_TtC9CommonSdk12BYScrollView")
+@interface BYScrollView : UIScrollView <UIScrollViewDelegate>
+- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER;
+- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
+- (void)removeFromSuperview;
+- (void)touchesBegan:(NSSet<UITouch *> * _Nonnull)touches withEvent:(UIEvent * _Nullable)event;
+- (void)scrollViewWillBeginDragging:(UIScrollView * _Nonnull)scrollView;
+- (void)scrollViewDidEndDecelerating:(UIScrollView * _Nonnull)scrollView;
+- (void)scrollViewDidEndScrollingAnimation:(UIScrollView * _Nonnull)scrollView;
+@end
+
+
+
+SWIFT_CLASS("_TtC9CommonSdk12MyFileWriter")
+@interface MyFileWriter : NSObject
++ (NSNumber * _Nonnull)getRealTime:(NSTimeInterval)timestamp SWIFT_WARN_UNUSED_RESULT;
++ (NSString * _Nonnull)anyToJsonWithObj:(id _Nonnull)obj SWIFT_WARN_UNUSED_RESULT;
++ (NSString * _Nullable)fileLogPath SWIFT_WARN_UNUSED_RESULT;
++ (void)delete:(NSString * _Nonnull)fileName;
++ (void)writeLog:(NSString * _Nonnull)log :(NSString * _Nonnull)fileName;
+- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
+@end
+
+@class UIButton;
+@class UILabel;
+
+SWIFT_CLASS("_TtC9CommonSdk15MyInfoAlertView")
+@interface MyInfoAlertView : UIView
+@property (nonatomic, weak) IBOutlet UIView * _Null_unspecified bgView;
+@property (nonatomic, weak) IBOutlet UIButton * _Null_unspecified button;
+@property (nonatomic, weak) IBOutlet UILabel * _Null_unspecified label;
++ (void)show:(NSString * _Nonnull)info :(UIView * _Nonnull)superView;
+- (IBAction)buttonAction:(UIButton * _Nonnull)sender;
+- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER;
+- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder OBJC_DESIGNATED_INITIALIZER;
+@end
+
+
+SWIFT_CLASS("_TtC9CommonSdk10MyJsonUtil")
+@interface MyJsonUtil : NSObject
++ (NSDictionary<NSString *, id> * _Nonnull)jsonToDic:(NSString * _Nonnull)jsonString SWIFT_WARN_UNUSED_RESULT;
++ (NSArray * _Nonnull)jsonToArr:(NSString * _Nonnull)jsonString SWIFT_WARN_UNUSED_RESULT;
++ (NSString * _Nonnull)dictionaryToJsonWithDict:(NSDictionary<NSString *, id> * _Nullable)dict SWIFT_WARN_UNUSED_RESULT;
+- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
+@end
+
+@class UIColor;
+@class UIFont;
+
+SWIFT_CLASS("_TtC9CommonSdk7MyToast")
+@interface MyToast : NSObject
++ (void)dismiss:(UIView * _Nonnull)inView;
++ (void)showWithMsg:(NSString * _Nonnull)msg;
++ (void)showWithMsg:(NSString * _Nonnull)msg superView:(UIView * _Nonnull)superView customPositionY:(CGFloat)customPositionY;
++ (void)showWithMsg:(NSString * _Nonnull)msg superView:(UIView * _Nonnull)superView bgColor:(UIColor * _Nonnull)bgColor font:(UIFont * _Nonnull)font customPositionY:(CGFloat)customPositionY autoDismiss:(BOOL)autoDismiss clickAction:(void (^ _Nullable)(void))clickAction;
+- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
+@end
+
+
+#if __has_attribute(external_source_symbol)
+# pragma clang attribute pop
+#endif
+#pragma clang diagnostic pop
+#endif
diff --git a/CommonSdk.framework/Headers/CommonSdkHeader.h b/CommonSdk.framework/Headers/CommonSdkHeader.h
new file mode 100644
index 0000000000000000000000000000000000000000..edbf4502c69382a9579fafb634365930b614cf89
--- /dev/null
+++ b/CommonSdk.framework/Headers/CommonSdkHeader.h
@@ -0,0 +1,22 @@
+//
+//  CommonSdkHeader.h
+//  CommonSdk
+//
+//  Created by Howard on 2021/11/11.
+//
+
+#ifndef CommonSdkHeader_h
+#define CommonSdkHeader_h
+#import <CommonSdk/MyAppUtil.h>
+#import <CommonSdk/MyButton1.h>
+#import <CommonSdk/MyNavBar.h>
+#import <CommonSdk/MyAppConstant.h>
+#import <CommonSdk/MyGCDTimer.h>
+#import <CommonSdk/CommonSdk-Swift.h>
+#import <CommonSdk/MyTaskTimeDownView.h>
+#import <CommonSdk/UIView+Frame.h>
+#import <CommonSdk/MyBaseTaskViewController.h>
+#import <CommonSdk/MyTaskEndView.h>
+#import <CommonSdk/MyRequestUtil.h>
+#import <CommonSdk/MyAppConstant.h>
+#endif /* CommonSdkHeader_h */
diff --git a/CommonSdk.framework/Headers/MyAppConstant.h b/CommonSdk.framework/Headers/MyAppConstant.h
new file mode 100644
index 0000000000000000000000000000000000000000..a85391929418c4cecb421fa3f2da265952f023f9
--- /dev/null
+++ b/CommonSdk.framework/Headers/MyAppConstant.h
@@ -0,0 +1,21 @@
+//
+//  MyAppConstant.h
+//  CommonSdk
+//
+//  Created by Howard on 2021/11/11.
+//
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+#ifndef MyAppConstant_h
+#define MyAppConstant_h
+
+#define kIphoneX (([[UIScreen mainScreen] bounds].size.height<812)?NO:YES)
+#define kScreenWidth  [UIScreen mainScreen].bounds.size.width
+#define kScreenHeight  [UIScreen mainScreen].bounds.size.height
+#define kNavHeight kIphoneX?88:64
+#define MyStrongTypeOf(x) __strong __typeof(x)
+#define MyWeakTypeOf(x) __weak __typeof(x)
+
+typedef void (^MyCommonBlock)(void);
+#endif /* MyAppConstant_h */
+
diff --git a/CommonSdk.framework/Headers/MyAppUtil.h b/CommonSdk.framework/Headers/MyAppUtil.h
new file mode 100644
index 0000000000000000000000000000000000000000..402ac3755d8fffaf8490a13731ec86e85ffad9eb
--- /dev/null
+++ b/CommonSdk.framework/Headers/MyAppUtil.h
@@ -0,0 +1,20 @@
+//
+//  MyAppUtil.h
+//  CommonSdk
+//
+//  Created by Howard on 2021/11/10.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MyAppUtil : NSObject
++ (UIColor *)colorWithHexString:(NSString *)hexStr;
++ (NSBundle *)getBundle;
++ (UIView *)viewFromXIB:(NSString *)name;
++ (void)downImage:(NSString *)imageUrl finish:(void (^)(UIImage *))block;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/CommonSdk.framework/Headers/MyBaseTaskViewController.h b/CommonSdk.framework/Headers/MyBaseTaskViewController.h
new file mode 100644
index 0000000000000000000000000000000000000000..361827d4aac31935419c4cf9823ae3c1c4fd75a8
--- /dev/null
+++ b/CommonSdk.framework/Headers/MyBaseTaskViewController.h
@@ -0,0 +1,30 @@
+//
+//  MyBaseTaskViewController.h
+//  CommonSdk
+//
+//  Created by Howard on 2021/11/11.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MyBaseTaskViewController : UIViewController
+@property(copy,nonatomic) NSString *logFileName;
+@property(assign,nonatomic) BOOL isShowNav;
+@property (nonatomic, strong) UIActivityIndicatorView * activityIndicator;
+/**
+ 瀹氭椂浠诲姟
+ */
+- (void)startTimer:(NSTimeInterval)duration handler:(void(^)(NSTimeInterval time,BOOL finished))hander;
+- (NSString *)formatTime:(NSTimeInterval)time;
+- (void)speak:(NSString *)text;
+- (void)playSound;
+- (void)closePage;
+- (void)uploadDataToServer:(NSString *)url param:(NSDictionary *)param finish:(void(^)(NSString *result,NSString *imageUrl,NSInteger code))success;
+
+- (void)showLoading;
+- (void)hideLoading;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/CommonSdk.framework/Headers/MyButton1.h b/CommonSdk.framework/Headers/MyButton1.h
new file mode 100644
index 0000000000000000000000000000000000000000..e69e134b839dd1cc40a70602d99daab76140c2ab
--- /dev/null
+++ b/CommonSdk.framework/Headers/MyButton1.h
@@ -0,0 +1,18 @@
+//
+//  MyButton1.h
+//  CommonSdk
+//
+//  Created by Howard on 2021/11/11.
+//
+
+#import <UIKit/UIKit.h>
+
+@class MyButton1;
+NS_ASSUME_NONNULL_BEGIN
+typedef void(^ButtonClickBlock)(MyButton1 *sender);
+
+@interface MyButton1 : UIView
++ (void)show:(UIView *)superView text:(NSString *)text block:(ButtonClickBlock) block;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/CommonSdk.framework/Headers/MyGCDTimer.h b/CommonSdk.framework/Headers/MyGCDTimer.h
new file mode 100644
index 0000000000000000000000000000000000000000..8871b63476a2b0c4791865c329dce6d0a11eb1ac
--- /dev/null
+++ b/CommonSdk.framework/Headers/MyGCDTimer.h
@@ -0,0 +1,42 @@
+//
+//  MyGCDTimer.h
+//  ORKApp
+//
+//  Created by Howard on 2021/9/2.
+//
+#import <Foundation/Foundation.h>
+#import <CommonSdk/MyAppConstant.h>
+/**
+ GCD瀹氭椂鍣ㄥ伐鍏�
+ */
+@class MyGCDTimer;
+typedef void (^MyGCDTimerHandler)(MyGCDTimer *timer, BOOL finished);
+@interface MyGCDTimer : NSObject
+@property (nonatomic, assign) NSTimeInterval duration;//鎸佺画鏃堕暱
+@property (nonatomic, assign) NSTimeInterval interval;//姣忛殧澶氬皯鏃堕棿鎵ц涓€娆★紝鍗曚綅s
+
+- (NSTimeInterval)queue_runtime;//杩愯鏃堕暱
+/**
+ 寮€濮嬪畾鏃讹紝鏃犻檺寰幆
+ time:姣忛殧澶氬皯鏃堕棿鎵ц涓€娆★紝鍗曚綅s
+ duration:瀹氭椂鍣ㄦ寔缁椂闂�
+ handler:浜嬩欢鍥炶皟
+ */
+- (void)start:(NSTimeInterval)time duration:(NSTimeInterval)duration handler:(MyGCDTimerHandler)handler;
+/**
+ 寮€濮嬪畾鏃讹紝鏃犻檺寰幆
+ time:姣忛殧澶氬皯鏃堕棿鎵ц涓€娆★紝鍗曚綅s
+ handler:浜嬩欢鍥炶皟
+ */
+- (void)start:(NSTimeInterval)time handler:(MyGCDTimerHandler)handler;
+/**
+ 涓瀹氭椂鍣�
+ */
+- (void)stop;
+/**
+ 寤惰繜鎵ц
+ time:寤惰繜鏃堕棿锛屽崟浣峴
+ handler:浜嬩欢鍥炶皟
+ */
++ (void)delay:(NSTimeInterval)time handler:(MyCommonBlock)handler;
+@end
diff --git a/CommonSdk.framework/Headers/MyNavBar.h b/CommonSdk.framework/Headers/MyNavBar.h
new file mode 100644
index 0000000000000000000000000000000000000000..ccdca09c50302435fd26818e71642efb7ac10edb
--- /dev/null
+++ b/CommonSdk.framework/Headers/MyNavBar.h
@@ -0,0 +1,20 @@
+//
+//  MyNavBar.h
+//  CommonSdk
+//
+//  Created by Howard on 2021/11/11.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+typedef void(^NavBarBlock)(NSInteger index);
+
+@interface MyNavBar : UIView
+@property (weak, nonatomic) IBOutlet UIButton *leftButton;
+@property (weak, nonatomic) IBOutlet UIButton *rightButton;
+@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
++ (MyNavBar *)show:(UIView *)superView block:(NavBarBlock) block;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/CommonSdk.framework/Headers/MyRequestUtil.h b/CommonSdk.framework/Headers/MyRequestUtil.h
new file mode 100644
index 0000000000000000000000000000000000000000..b06003352142762aa5850db4a0fb9b2176e2fe5c
--- /dev/null
+++ b/CommonSdk.framework/Headers/MyRequestUtil.h
@@ -0,0 +1,23 @@
+//
+//  MyRequestUtil.h
+//  CommonSdk
+//
+//  Created by Howard on 2021/11/15.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MyRequestUtil : NSObject
+/**
+ 涓婁紶鏂囦欢
+ */
++ (void)upload:(NSString *)url fileName:(NSString *)fileName fileData:(NSData *)fileData mimeType:(NSString *)mimeType params:(NSDictionary *)params finished:(void (^)(NSInteger code,NSString * result)) finished;
+
++ (void)request:(NSString *)urlString methodType:(NSString *)methodType param:(NSDictionary *)param  finished:(void (^)(NSInteger code,NSString * result)) finished;
+
++ (void)request:(NSString *)urlString methodType:(NSString *)methodType header:(NSDictionary *)header param:(NSDictionary *)param  finished:(void (^)(NSInteger code,NSString * result)) finished;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/CommonSdk.framework/Headers/MyTaskEndView.h b/CommonSdk.framework/Headers/MyTaskEndView.h
new file mode 100644
index 0000000000000000000000000000000000000000..ba72f24aba4a0dae8c19c2c5d50f3a3508dcc995
--- /dev/null
+++ b/CommonSdk.framework/Headers/MyTaskEndView.h
@@ -0,0 +1,16 @@
+//
+//  MyTaskEndView.h
+//  CommonSdk
+//
+//  Created by Howard on 2021/11/11.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+typedef void(^TaskEndBlock)(void);
+@interface MyTaskEndView : UIView
++ (MyTaskEndView *)show:(UIView *)superView block:(TaskEndBlock) block;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/CommonSdk.framework/Headers/MyTaskTimeDownView.h b/CommonSdk.framework/Headers/MyTaskTimeDownView.h
new file mode 100644
index 0000000000000000000000000000000000000000..1fc5a09c49ddbf87e85a4230a8c6795e0b60c033
--- /dev/null
+++ b/CommonSdk.framework/Headers/MyTaskTimeDownView.h
@@ -0,0 +1,19 @@
+//
+//  MyTaskTimeDownView.h
+//  ORKApp
+//
+//  Created by Howard on 2021/9/17.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface MyTaskTimeDownView : UIView
++ (MyTaskTimeDownView *)instance;
+- (void)show:(NSString *)tip;
+- (void)updateLabel:(NSString *)time;
+- (void)stop;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/CommonSdk.framework/Headers/MyVoiceEngine.h b/CommonSdk.framework/Headers/MyVoiceEngine.h
new file mode 100644
index 0000000000000000000000000000000000000000..a1c1f35a8f4f8479e6c1d3e756dd414566a4d8f1
--- /dev/null
+++ b/CommonSdk.framework/Headers/MyVoiceEngine.h
@@ -0,0 +1,51 @@
+/*
+ Copyright (c) 2015, Apple Inc. All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+ 
+ 1.  Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+ 
+ 2.  Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+ 
+ 3.  Neither the name of the copyright holder(s) nor the names of any contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission. No license is granted to the trademarks of
+ the copyright holders even if such marks are included in this software.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#import "MyAppConstant.h"
+@import Foundation;
+@import AVFoundation;
+#import <Foundation/Foundation.h>
+
+@interface MyVoiceEngine : NSObject <AVSpeechSynthesizerDelegate>
+@property (nonatomic, strong, readonly) AVSpeechSynthesizer *speechSynthesizer;
+@property (nonatomic, copy) MyCommonBlock finishBlock;
++ (MyVoiceEngine *)sharedVoiceEngine;
+
+- (void)speakText:(NSString *)text;
+- (void)speakText:(NSString *)text finish:(MyCommonBlock)finish;
+
+- (void)speakInt:(NSInteger)number;
+
+- (void)stopTalking;
+
+- (BOOL)isSpeaking;
+
+- (void)stop;
+
+@end
diff --git a/CommonSdk.framework/Headers/UIView+Frame.h b/CommonSdk.framework/Headers/UIView+Frame.h
new file mode 100644
index 0000000000000000000000000000000000000000..d78f562144f73187917340473d3f521f0b5e9cff
--- /dev/null
+++ b/CommonSdk.framework/Headers/UIView+Frame.h
@@ -0,0 +1,31 @@
+//
+//  UIView+Frame.h
+//  productFrame
+//
+//  Created by admin on 2017/12/26.
+//  Copyright 漏 2017骞� 闄堝▉鍒�. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface UIView (Frame)
+
+// shortcuts for frame properties
+@property (nonatomic, assign) CGPoint origin;
+@property (nonatomic, assign) CGSize size;
+
+// shortcuts for positions
+@property (nonatomic) CGFloat centerX;
+@property (nonatomic) CGFloat centerY;
+
+
+@property (nonatomic) CGFloat top;
+@property (nonatomic) CGFloat bottom;
+@property (nonatomic) CGFloat right;
+@property (nonatomic) CGFloat left;
+
+@property (nonatomic) CGFloat width;
+@property (nonatomic) CGFloat height;
+-(void)setY:(CGFloat)y;
+- (void)addShadow;
+@end
diff --git a/CommonSdk.framework/Info.plist b/CommonSdk.framework/Info.plist
new file mode 100644
index 0000000000000000000000000000000000000000..8219c806022d75ae1bce3275707ad802007348f5
Binary files /dev/null and b/CommonSdk.framework/Info.plist differ
diff --git a/CommonSdk.framework/Modules/CommonSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/CommonSdk.framework/Modules/CommonSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo
new file mode 100644
index 0000000000000000000000000000000000000000..622b45c1d6b139036af7cde79f8274c099feb5f2
Binary files /dev/null and b/CommonSdk.framework/Modules/CommonSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo differ
diff --git a/CommonSdk.framework/Modules/CommonSdk.swiftmodule/Project/arm64.swiftsourceinfo b/CommonSdk.framework/Modules/CommonSdk.swiftmodule/Project/arm64.swiftsourceinfo
new file mode 100644
index 0000000000000000000000000000000000000000..622b45c1d6b139036af7cde79f8274c099feb5f2
Binary files /dev/null and b/CommonSdk.framework/Modules/CommonSdk.swiftmodule/Project/arm64.swiftsourceinfo differ
diff --git a/CommonSdk.framework/Modules/CommonSdk.swiftmodule/arm64-apple-ios.swiftdoc b/CommonSdk.framework/Modules/CommonSdk.swiftmodule/arm64-apple-ios.swiftdoc
new file mode 100644
index 0000000000000000000000000000000000000000..3e5580b5cc48011069fe89878b88bbb4390e60b5
Binary files /dev/null and b/CommonSdk.framework/Modules/CommonSdk.swiftmodule/arm64-apple-ios.swiftdoc differ
diff --git a/CommonSdk.framework/Modules/CommonSdk.swiftmodule/arm64-apple-ios.swiftmodule b/CommonSdk.framework/Modules/CommonSdk.swiftmodule/arm64-apple-ios.swiftmodule
new file mode 100644
index 0000000000000000000000000000000000000000..094e45dee8773c39b1b05faa92829e9ac7dbe8d6
Binary files /dev/null and b/CommonSdk.framework/Modules/CommonSdk.swiftmodule/arm64-apple-ios.swiftmodule differ
diff --git a/CommonSdk.framework/Modules/CommonSdk.swiftmodule/arm64.swiftdoc b/CommonSdk.framework/Modules/CommonSdk.swiftmodule/arm64.swiftdoc
new file mode 100644
index 0000000000000000000000000000000000000000..3e5580b5cc48011069fe89878b88bbb4390e60b5
Binary files /dev/null and b/CommonSdk.framework/Modules/CommonSdk.swiftmodule/arm64.swiftdoc differ
diff --git a/CommonSdk.framework/Modules/CommonSdk.swiftmodule/arm64.swiftmodule b/CommonSdk.framework/Modules/CommonSdk.swiftmodule/arm64.swiftmodule
new file mode 100644
index 0000000000000000000000000000000000000000..094e45dee8773c39b1b05faa92829e9ac7dbe8d6
Binary files /dev/null and b/CommonSdk.framework/Modules/CommonSdk.swiftmodule/arm64.swiftmodule differ
diff --git a/CommonSdk.framework/Modules/module.modulemap b/CommonSdk.framework/Modules/module.modulemap
new file mode 100644
index 0000000000000000000000000000000000000000..e01b825bd805ad411c52d0dbf23ac59278149183
--- /dev/null
+++ b/CommonSdk.framework/Modules/module.modulemap
@@ -0,0 +1,4 @@
+framework module CommonSdk {
+  header "CommonSdk-Swift.h"
+  requires objc
+}
diff --git a/CommonSdk.framework/MyButton1.nib/objects-11.0+.nib b/CommonSdk.framework/MyButton1.nib/objects-11.0+.nib
new file mode 100644
index 0000000000000000000000000000000000000000..fb16b205af7c4bac1c7d7fd29d8845e0033cd987
Binary files /dev/null and b/CommonSdk.framework/MyButton1.nib/objects-11.0+.nib differ
diff --git a/CommonSdk.framework/MyButton1.nib/runtime.nib b/CommonSdk.framework/MyButton1.nib/runtime.nib
new file mode 100644
index 0000000000000000000000000000000000000000..f0b4f339d03f3666c4557ca59ccfc6efa6cf87ff
Binary files /dev/null and b/CommonSdk.framework/MyButton1.nib/runtime.nib differ
diff --git a/CommonSdk.framework/MyInfoAlertView.nib/objects-11.0+.nib b/CommonSdk.framework/MyInfoAlertView.nib/objects-11.0+.nib
new file mode 100644
index 0000000000000000000000000000000000000000..a247cf5a6d3be303ac1a8ab81cc821453e730d79
Binary files /dev/null and b/CommonSdk.framework/MyInfoAlertView.nib/objects-11.0+.nib differ
diff --git a/CommonSdk.framework/MyInfoAlertView.nib/runtime.nib b/CommonSdk.framework/MyInfoAlertView.nib/runtime.nib
new file mode 100644
index 0000000000000000000000000000000000000000..ef1cf4ce0d6577bbb26e133e7f11408052980661
Binary files /dev/null and b/CommonSdk.framework/MyInfoAlertView.nib/runtime.nib differ
diff --git a/CommonSdk.framework/MyNavBar.nib b/CommonSdk.framework/MyNavBar.nib
new file mode 100644
index 0000000000000000000000000000000000000000..9671d36d3544954c752ab83b9d591185474bd27a
Binary files /dev/null and b/CommonSdk.framework/MyNavBar.nib differ
diff --git a/CommonSdk.framework/MyTaskEndView.nib/objects-11.0+.nib b/CommonSdk.framework/MyTaskEndView.nib/objects-11.0+.nib
new file mode 100644
index 0000000000000000000000000000000000000000..0c816da6f3ff57f61737e6b6cc3c21328b7eed1b
Binary files /dev/null and b/CommonSdk.framework/MyTaskEndView.nib/objects-11.0+.nib differ
diff --git a/CommonSdk.framework/MyTaskEndView.nib/runtime.nib b/CommonSdk.framework/MyTaskEndView.nib/runtime.nib
new file mode 100644
index 0000000000000000000000000000000000000000..1163304354ad114e395996399afc8c75b70cd061
Binary files /dev/null and b/CommonSdk.framework/MyTaskEndView.nib/runtime.nib differ
diff --git a/CommonSdk.framework/MyTaskTimeDownView.nib b/CommonSdk.framework/MyTaskTimeDownView.nib
new file mode 100644
index 0000000000000000000000000000000000000000..4bee5ee1353150b45e9361728c1158859733a85e
Binary files /dev/null and b/CommonSdk.framework/MyTaskTimeDownView.nib differ
diff --git a/CommonSdk.framework/_CodeSignature/CodeDirectory b/CommonSdk.framework/_CodeSignature/CodeDirectory
new file mode 100644
index 0000000000000000000000000000000000000000..7fc54958fd182d9cad57abe315585a0f9a579b90
Binary files /dev/null and b/CommonSdk.framework/_CodeSignature/CodeDirectory differ
diff --git a/CommonSdk.framework/_CodeSignature/CodeRequirements b/CommonSdk.framework/_CodeSignature/CodeRequirements
new file mode 100644
index 0000000000000000000000000000000000000000..b8beea3a3c2a7ce8018fccc947c29f5aa7300622
Binary files /dev/null and b/CommonSdk.framework/_CodeSignature/CodeRequirements differ
diff --git a/CommonSdk.framework/_CodeSignature/CodeRequirements-1 b/CommonSdk.framework/_CodeSignature/CodeRequirements-1
new file mode 100644
index 0000000000000000000000000000000000000000..8e8afdf9fa03c2a58ef1e6217c27336fbd6a6d2e
Binary files /dev/null and b/CommonSdk.framework/_CodeSignature/CodeRequirements-1 differ
diff --git a/CommonSdk.framework/_CodeSignature/CodeResources b/CommonSdk.framework/_CodeSignature/CodeResources
new file mode 100644
index 0000000000000000000000000000000000000000..92b944a045c9b484193ec782054dc304b401037e
--- /dev/null
+++ b/CommonSdk.framework/_CodeSignature/CodeResources
@@ -0,0 +1,571 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>files</key>
+	<dict>
+		<key>.DS_Store</key>
+		<data>
+		+/pSlzmIV0TU1eDLCOaZ05Jnb1E=
+		</data>
+		<key>Headers/CommonSdk-Swift.h</key>
+		<data>
+		EiYR5sV7t73CanweZ95ApDGH0xw=
+		</data>
+		<key>Headers/CommonSdkHeader.h</key>
+		<data>
+		bhffssAwCKgzgB4q888rMHIz3uU=
+		</data>
+		<key>Headers/MyAppConstant.h</key>
+		<data>
+		YdJ2YieFRzudH1XLiUXKEhke74g=
+		</data>
+		<key>Headers/MyAppUtil.h</key>
+		<data>
+		Qjc8X+maoSZmTWiNYBpMGl22hEs=
+		</data>
+		<key>Headers/MyBaseTaskViewController.h</key>
+		<data>
+		dXlcisnRX/oCFfsK4t59jsQAp2I=
+		</data>
+		<key>Headers/MyButton1.h</key>
+		<data>
+		KNpbVgSNd7rg92BEmN55/BuwybA=
+		</data>
+		<key>Headers/MyGCDTimer.h</key>
+		<data>
+		sUeBc7mgMFotyUte+q1Iqvz7v24=
+		</data>
+		<key>Headers/MyNavBar.h</key>
+		<data>
+		zrVZtbsetQ76HHWAjxD/FeaVF20=
+		</data>
+		<key>Headers/MyRequestUtil.h</key>
+		<data>
+		RkcA0oWBsZbIya2FP5LXnO4JBlU=
+		</data>
+		<key>Headers/MyTaskEndView.h</key>
+		<data>
+		bVtEh+NLPj14IKHyv0zAWusqLjs=
+		</data>
+		<key>Headers/MyTaskTimeDownView.h</key>
+		<data>
+		yTecC0Yy8CWOuYe0/oHYxLjK7xw=
+		</data>
+		<key>Headers/MyVoiceEngine.h</key>
+		<data>
+		MNkEAhxxiYKRrMkNTZJhYyFeSY8=
+		</data>
+		<key>Headers/UIView+Frame.h</key>
+		<data>
+		FrxU+ZaW8QdNlKWokTON53PHzsI=
+		</data>
+		<key>Info.plist</key>
+		<data>
+		jwkwrfAXq65HrLy7wCPbFo6ViXE=
+		</data>
+		<key>Modules/CommonSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo</key>
+		<data>
+		lbeGz8+ow2MhwJ5xVItz3/917TA=
+		</data>
+		<key>Modules/CommonSdk.swiftmodule/Project/arm64.swiftsourceinfo</key>
+		<data>
+		lbeGz8+ow2MhwJ5xVItz3/917TA=
+		</data>
+		<key>Modules/CommonSdk.swiftmodule/arm64-apple-ios.swiftdoc</key>
+		<data>
+		oQWOxrBnqLccagFlGC0C+54eQTk=
+		</data>
+		<key>Modules/CommonSdk.swiftmodule/arm64-apple-ios.swiftmodule</key>
+		<data>
+		DIhX6tYDiGGFQX+RiqXgEhF7h5E=
+		</data>
+		<key>Modules/CommonSdk.swiftmodule/arm64.swiftdoc</key>
+		<data>
+		oQWOxrBnqLccagFlGC0C+54eQTk=
+		</data>
+		<key>Modules/CommonSdk.swiftmodule/arm64.swiftmodule</key>
+		<data>
+		DIhX6tYDiGGFQX+RiqXgEhF7h5E=
+		</data>
+		<key>Modules/module.modulemap</key>
+		<data>
+		VNy4vjer+4G6lEl2kXeqeGEa6Pc=
+		</data>
+		<key>MyButton1.nib/objects-11.0+.nib</key>
+		<data>
+		MYByvbxbWVYyh9kCCno6Hb65TPs=
+		</data>
+		<key>MyButton1.nib/runtime.nib</key>
+		<data>
+		woPQZn4PdLKrzmGl8dukmAhbOzk=
+		</data>
+		<key>MyInfoAlertView.nib/objects-11.0+.nib</key>
+		<data>
+		5B8QCHqKA8+GaE9J+k/ZsACsm7k=
+		</data>
+		<key>MyInfoAlertView.nib/runtime.nib</key>
+		<data>
+		9gVFPORqv7Wsb8OdQUcdCulqA2A=
+		</data>
+		<key>MyNavBar.nib</key>
+		<data>
+		+3Z/Ym+EI57i7Or3BrW9+aLEF9k=
+		</data>
+		<key>MyTaskEndView.nib/objects-11.0+.nib</key>
+		<data>
+		qqekjU1AvMYLBtMFw6XYltXROU8=
+		</data>
+		<key>MyTaskEndView.nib/runtime.nib</key>
+		<data>
+		bnTL04VMHh2WXdXrCt+jdFF4DCg=
+		</data>
+		<key>MyTaskTimeDownView.nib</key>
+		<data>
+		nKRzDJCEnbqo8nfQEX/PstYTkdc=
+		</data>
+		<key>navBack@3x.png</key>
+		<data>
+		AHO2d1RXNKfmN/75VzZculd0H8c=
+		</data>
+		<key>task_result_icon@3x.png</key>
+		<data>
+		vaLNBUCdaJD684hn89BgBvpbxlc=
+		</data>
+		<key>time_loading@3x.png</key>
+		<data>
+		VocWlvNUnLcV3JJcS22FD9oTRn0=
+		</data>
+	</dict>
+	<key>files2</key>
+	<dict>
+		<key>Headers/CommonSdk-Swift.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			EiYR5sV7t73CanweZ95ApDGH0xw=
+			</data>
+			<key>hash2</key>
+			<data>
+			3EX5ExYSR770U0hHhxa2dMRqEgsJkZXb0u+CkyHWx70=
+			</data>
+		</dict>
+		<key>Headers/CommonSdkHeader.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			bhffssAwCKgzgB4q888rMHIz3uU=
+			</data>
+			<key>hash2</key>
+			<data>
+			sqvxyGFJ+ZhHrnt4ZfXaVf5R8+XU/L8HrOIGrEL07WA=
+			</data>
+		</dict>
+		<key>Headers/MyAppConstant.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			YdJ2YieFRzudH1XLiUXKEhke74g=
+			</data>
+			<key>hash2</key>
+			<data>
+			TO0WSUNJXEREJ8z1E1wzgEkxhfv0Bzliq4s0Fng5pdE=
+			</data>
+		</dict>
+		<key>Headers/MyAppUtil.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			Qjc8X+maoSZmTWiNYBpMGl22hEs=
+			</data>
+			<key>hash2</key>
+			<data>
+			Q92tjgZMPpbEANYD/f966bczJwtYjdpfcb55ZGhW44Y=
+			</data>
+		</dict>
+		<key>Headers/MyBaseTaskViewController.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			dXlcisnRX/oCFfsK4t59jsQAp2I=
+			</data>
+			<key>hash2</key>
+			<data>
+			ICJb+locGTvl3yPP/BMnH81EmtPBpRgi4P+DTgUpCEQ=
+			</data>
+		</dict>
+		<key>Headers/MyButton1.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			KNpbVgSNd7rg92BEmN55/BuwybA=
+			</data>
+			<key>hash2</key>
+			<data>
+			NhalIpKL666zxQMmrzzepTij8N3R+0hhb236MEuNEiQ=
+			</data>
+		</dict>
+		<key>Headers/MyGCDTimer.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			sUeBc7mgMFotyUte+q1Iqvz7v24=
+			</data>
+			<key>hash2</key>
+			<data>
+			FD/sPRwghwhuiaLKwe2IyqRkZnKfvlN/TZOksRKe8VE=
+			</data>
+		</dict>
+		<key>Headers/MyNavBar.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			zrVZtbsetQ76HHWAjxD/FeaVF20=
+			</data>
+			<key>hash2</key>
+			<data>
+			/eMs42zaEvtKs5/85Xfxj89Jvr71BPyBXTnLlIWl32A=
+			</data>
+		</dict>
+		<key>Headers/MyRequestUtil.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			RkcA0oWBsZbIya2FP5LXnO4JBlU=
+			</data>
+			<key>hash2</key>
+			<data>
+			9yr5mYW6HOIFq9b3oXikSJ7bN5do/PgygWpIQDoAY2c=
+			</data>
+		</dict>
+		<key>Headers/MyTaskEndView.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			bVtEh+NLPj14IKHyv0zAWusqLjs=
+			</data>
+			<key>hash2</key>
+			<data>
+			r37CcxzUAbQ17539q2dbJZf/CRS06g5kSdPrfg+DY9A=
+			</data>
+		</dict>
+		<key>Headers/MyTaskTimeDownView.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			yTecC0Yy8CWOuYe0/oHYxLjK7xw=
+			</data>
+			<key>hash2</key>
+			<data>
+			fBzYfIWHXsFZt4IXcBS86/3AiU+vQjeqUzk1ICMlOmw=
+			</data>
+		</dict>
+		<key>Headers/MyVoiceEngine.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			MNkEAhxxiYKRrMkNTZJhYyFeSY8=
+			</data>
+			<key>hash2</key>
+			<data>
+			h4QC7+OIpRq4HGdpghLkV1vPUADA1pS8PVjelhn7mx0=
+			</data>
+		</dict>
+		<key>Headers/UIView+Frame.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			FrxU+ZaW8QdNlKWokTON53PHzsI=
+			</data>
+			<key>hash2</key>
+			<data>
+			g8dZEJZ+Mha5NEtLX/AceznCMmmpiH0oaP8b2g/vygI=
+			</data>
+		</dict>
+		<key>Modules/CommonSdk.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			lbeGz8+ow2MhwJ5xVItz3/917TA=
+			</data>
+			<key>hash2</key>
+			<data>
+			VQ3LqKkmj/oWqaolWTS/QvYeRmLOVRVtcUbnJYAP9nY=
+			</data>
+		</dict>
+		<key>Modules/CommonSdk.swiftmodule/Project/arm64.swiftsourceinfo</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			lbeGz8+ow2MhwJ5xVItz3/917TA=
+			</data>
+			<key>hash2</key>
+			<data>
+			VQ3LqKkmj/oWqaolWTS/QvYeRmLOVRVtcUbnJYAP9nY=
+			</data>
+		</dict>
+		<key>Modules/CommonSdk.swiftmodule/arm64-apple-ios.swiftdoc</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			oQWOxrBnqLccagFlGC0C+54eQTk=
+			</data>
+			<key>hash2</key>
+			<data>
+			TsJG4GOOK12kCiP1bKcPJXCRFVszdNyiVtuCHhOG4io=
+			</data>
+		</dict>
+		<key>Modules/CommonSdk.swiftmodule/arm64-apple-ios.swiftmodule</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			DIhX6tYDiGGFQX+RiqXgEhF7h5E=
+			</data>
+			<key>hash2</key>
+			<data>
+			xSPhhRL2JRxVriQWyWhzz3TnEEpEX3MSRbzXvghR2nY=
+			</data>
+		</dict>
+		<key>Modules/CommonSdk.swiftmodule/arm64.swiftdoc</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			oQWOxrBnqLccagFlGC0C+54eQTk=
+			</data>
+			<key>hash2</key>
+			<data>
+			TsJG4GOOK12kCiP1bKcPJXCRFVszdNyiVtuCHhOG4io=
+			</data>
+		</dict>
+		<key>Modules/CommonSdk.swiftmodule/arm64.swiftmodule</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			DIhX6tYDiGGFQX+RiqXgEhF7h5E=
+			</data>
+			<key>hash2</key>
+			<data>
+			xSPhhRL2JRxVriQWyWhzz3TnEEpEX3MSRbzXvghR2nY=
+			</data>
+		</dict>
+		<key>Modules/module.modulemap</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			VNy4vjer+4G6lEl2kXeqeGEa6Pc=
+			</data>
+			<key>hash2</key>
+			<data>
+			hd9GJTZ8jNnWBN4NeB3ecylcqsa66GLQz3wm+fL+iwM=
+			</data>
+		</dict>
+		<key>MyButton1.nib/objects-11.0+.nib</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			MYByvbxbWVYyh9kCCno6Hb65TPs=
+			</data>
+			<key>hash2</key>
+			<data>
+			xU5zx3qLVDl6huDgC+Gkb4jvLBb1PO3pB7DzUqH5ue4=
+			</data>
+		</dict>
+		<key>MyButton1.nib/runtime.nib</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			woPQZn4PdLKrzmGl8dukmAhbOzk=
+			</data>
+			<key>hash2</key>
+			<data>
+			n/gJ/WCdtiW6tGiCCcFXG6fVHVIl1Zld9OWPzU5B5Q4=
+			</data>
+		</dict>
+		<key>MyInfoAlertView.nib/objects-11.0+.nib</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			5B8QCHqKA8+GaE9J+k/ZsACsm7k=
+			</data>
+			<key>hash2</key>
+			<data>
+			2s0R5bV+A8Rj+jWZIMKoQAPb2rTDZ6hsJrzdj1Ur7hI=
+			</data>
+		</dict>
+		<key>MyInfoAlertView.nib/runtime.nib</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			9gVFPORqv7Wsb8OdQUcdCulqA2A=
+			</data>
+			<key>hash2</key>
+			<data>
+			KzLWVkgyEaCsZgz92hvTM0YRMXGoSrvksGIFUkmpr/Q=
+			</data>
+		</dict>
+		<key>MyNavBar.nib</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			+3Z/Ym+EI57i7Or3BrW9+aLEF9k=
+			</data>
+			<key>hash2</key>
+			<data>
+			/luU5K+aamLwn8BD7j7hlx2WmXDvYDTg9pySd6aXTuM=
+			</data>
+		</dict>
+		<key>MyTaskEndView.nib/objects-11.0+.nib</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			qqekjU1AvMYLBtMFw6XYltXROU8=
+			</data>
+			<key>hash2</key>
+			<data>
+			qJ5czW2QYrGm6+yDw6MBslXrXOOM72qyBg+FkgibU/Q=
+			</data>
+		</dict>
+		<key>MyTaskEndView.nib/runtime.nib</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			bnTL04VMHh2WXdXrCt+jdFF4DCg=
+			</data>
+			<key>hash2</key>
+			<data>
+			W7DUF2dOWkG2Gth02yCL+yGVzFeqvxrFn2eXIPaafuU=
+			</data>
+		</dict>
+		<key>MyTaskTimeDownView.nib</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			nKRzDJCEnbqo8nfQEX/PstYTkdc=
+			</data>
+			<key>hash2</key>
+			<data>
+			VPu7kD4on/AoNKR4tvKQcFfqTN3S43XJr6thEwHlrl0=
+			</data>
+		</dict>
+		<key>navBack@3x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			AHO2d1RXNKfmN/75VzZculd0H8c=
+			</data>
+			<key>hash2</key>
+			<data>
+			j38qDtxWNqZ6Qy9gPc5oxGuEJukn0JFhaDbBjH2HltA=
+			</data>
+		</dict>
+		<key>task_result_icon@3x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			vaLNBUCdaJD684hn89BgBvpbxlc=
+			</data>
+			<key>hash2</key>
+			<data>
+			MrqP8kNLKhjqeU8dffKb1t7L9HVy5HpPpt3yPTXSeIw=
+			</data>
+		</dict>
+		<key>time_loading@3x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			VocWlvNUnLcV3JJcS22FD9oTRn0=
+			</data>
+			<key>hash2</key>
+			<data>
+			MUlE+KED8ujtdrMFAY6QYDnzZkycLhS82QJUkzx5T0o=
+			</data>
+		</dict>
+	</dict>
+	<key>rules</key>
+	<dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^version.plist$</key>
+		<true/>
+	</dict>
+	<key>rules2</key>
+	<dict>
+		<key>.*\.dSYM($|/)</key>
+		<dict>
+			<key>weight</key>
+			<real>11</real>
+		</dict>
+		<key>^(.*/)?\.DS_Store$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>2000</real>
+		</dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^Info\.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^PkgInfo$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^embedded\.provisionprofile$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^version\.plist$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+	</dict>
+</dict>
+</plist>
diff --git a/CommonSdk.framework/_CodeSignature/CodeSignature b/CommonSdk.framework/_CodeSignature/CodeSignature
new file mode 100644
index 0000000000000000000000000000000000000000..db358ea9dc53cca305f1f086501e721167d6cecf
Binary files /dev/null and b/CommonSdk.framework/_CodeSignature/CodeSignature differ
diff --git a/CommonSdk.framework/navBack@3x.png b/CommonSdk.framework/navBack@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..45c5bec5341ba2457a8f73f9302e676d152febe0
Binary files /dev/null and b/CommonSdk.framework/navBack@3x.png differ
diff --git a/CommonSdk.framework/task_result_icon@3x.png b/CommonSdk.framework/task_result_icon@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..0dab5ae712d3b7c047eb725a8df602bd2a2d0cda
Binary files /dev/null and b/CommonSdk.framework/task_result_icon@3x.png differ
diff --git a/CommonSdk.framework/time_loading@3x.png b/CommonSdk.framework/time_loading@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..aea608481e1f4ae542ae3e62280d063e9362fc2c
Binary files /dev/null and b/CommonSdk.framework/time_loading@3x.png differ
diff --git a/Example/LucaSdk.xcodeproj/project.pbxproj b/Example/LucaSdk.xcodeproj/project.pbxproj
index 8182e1d4b6c279a40031dcc59455a63fba08bec2..d5e6c7c3453132b01dc9278dcb079939ed4c3830 100644
--- a/Example/LucaSdk.xcodeproj/project.pbxproj
+++ b/Example/LucaSdk.xcodeproj/project.pbxproj
@@ -7,42 +7,23 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		0F0649409D8124215180B431 /* Pods_LucaSdk_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CA250188530992F01C205FC /* Pods_LucaSdk_Example.framework */; };
 		6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; };
-		6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; };
 		6003F592195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; };
 		6003F598195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F596195388D20070C39A /* InfoPlist.strings */; };
 		6003F59A195388D20070C39A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F599195388D20070C39A /* main.m */; };
 		6003F59E195388D20070C39A /* LUCAAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F59D195388D20070C39A /* LUCAAppDelegate.m */; };
 		6003F5A7195388D20070C39A /* LUCAViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5A6195388D20070C39A /* LUCAViewController.m */; };
 		6003F5A9195388D20070C39A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5A8195388D20070C39A /* Images.xcassets */; };
-		6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F5AF195388D20070C39A /* XCTest.framework */; };
-		6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; };
-		6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; };
-		6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5B8195388D20070C39A /* InfoPlist.strings */; };
-		6003F5BC195388D20070C39A /* Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5BB195388D20070C39A /* Tests.m */; };
 		71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */; };
 		873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; };
-		C7E0F8546F72854C63D2955E /* Pods_LucaSdk_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8659C3272E87C39DDC459912 /* Pods_LucaSdk_Tests.framework */; };
+		893521002744DD2400370DCD /* LUCASwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 893520FF2744DD2400370DCD /* LUCASwift.swift */; };
+		F7034E0C15E59DF146A44959 /* Pods_LucaSdk_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC92581B7E3317EDC6E269FC /* Pods_LucaSdk_Example.framework */; };
 /* End PBXBuildFile section */
 
-/* Begin PBXContainerItemProxy section */
-		6003F5B3195388D20070C39A /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 6003F582195388D10070C39A /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 6003F589195388D20070C39A;
-			remoteInfo = LucaSdk;
-		};
-/* End PBXContainerItemProxy section */
-
 /* Begin PBXFileReference section */
-		05AC442A5E93CAC3E4587FE8 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; name = README.md; path = ../README.md; sourceTree = "<group>"; };
-		21EB4BB75E1B42D652DC1F94 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; };
-		410EFF15C86050E38AE33B07 /* Pods-LucaSdk_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LucaSdk_Tests.release.xcconfig"; path = "Target Support Files/Pods-LucaSdk_Tests/Pods-LucaSdk_Tests.release.xcconfig"; sourceTree = "<group>"; };
-		423809350A4726F2F4ADA9C1 /* Pods-LucaSdk_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LucaSdk_Tests.debug.xcconfig"; path = "Target Support Files/Pods-LucaSdk_Tests/Pods-LucaSdk_Tests.debug.xcconfig"; sourceTree = "<group>"; };
-		4CA250188530992F01C205FC /* Pods_LucaSdk_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LucaSdk_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		4E6A661DD3134A2D590AADB8 /* LucaSdk.podspec */ = {isa = PBXFileReference; includeInIndex = 1; name = LucaSdk.podspec; path = ../LucaSdk.podspec; sourceTree = "<group>"; };
+		05AC442A5E93CAC3E4587FE8 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
+		21EB4BB75E1B42D652DC1F94 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; };
+		4E6A661DD3134A2D590AADB8 /* LucaSdk.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LucaSdk.podspec; path = ../LucaSdk.podspec; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
 		6003F58A195388D20070C39A /* LucaSdk_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LucaSdk_Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
 		6003F58F195388D20070C39A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
@@ -56,16 +37,12 @@
 		6003F5A5195388D20070C39A /* LUCAViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LUCAViewController.h; sourceTree = "<group>"; };
 		6003F5A6195388D20070C39A /* LUCAViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LUCAViewController.m; sourceTree = "<group>"; };
 		6003F5A8195388D20070C39A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
-		6003F5AE195388D20070C39A /* LucaSdk_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LucaSdk_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
-		6003F5AF195388D20070C39A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
-		6003F5B7195388D20070C39A /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; sourceTree = "<group>"; };
-		6003F5B9195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		6003F5BB195388D20070C39A /* Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Tests.m; sourceTree = "<group>"; };
-		606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = "<group>"; };
 		71719F9E1E33DC2100824A3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
 		75ECAE516EB0A239C5CA8507 /* Pods-LucaSdk_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LucaSdk_Example.release.xcconfig"; path = "Target Support Files/Pods-LucaSdk_Example/Pods-LucaSdk_Example.release.xcconfig"; sourceTree = "<group>"; };
-		8659C3272E87C39DDC459912 /* Pods_LucaSdk_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LucaSdk_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
+		893520FE2744DD2400370DCD /* LucaSdk_Example-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LucaSdk_Example-Bridging-Header.h"; sourceTree = "<group>"; };
+		893520FF2744DD2400370DCD /* LUCASwift.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LUCASwift.swift; sourceTree = "<group>"; };
+		CC92581B7E3317EDC6E269FC /* Pods_LucaSdk_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_LucaSdk_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		EDDA26487127DD90FF80F52F /* Pods-LucaSdk_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-LucaSdk_Example.debug.xcconfig"; path = "Target Support Files/Pods-LucaSdk_Example/Pods-LucaSdk_Example.debug.xcconfig"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
@@ -74,21 +51,9 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */,
 				6003F592195388D20070C39A /* UIKit.framework in Frameworks */,
 				6003F58E195388D20070C39A /* Foundation.framework in Frameworks */,
-				0F0649409D8124215180B431 /* Pods_LucaSdk_Example.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		6003F5AB195388D20070C39A /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */,
-				6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */,
-				6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */,
-				C7E0F8546F72854C63D2955E /* Pods_LucaSdk_Tests.framework in Frameworks */,
+				F7034E0C15E59DF146A44959 /* Pods_LucaSdk_Example.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -100,7 +65,6 @@
 			children = (
 				60FF7A9C1954A5C5007DD14C /* Podspec Metadata */,
 				6003F593195388D20070C39A /* Example for LucaSdk */,
-				6003F5B5195388D20070C39A /* Tests */,
 				6003F58C195388D20070C39A /* Frameworks */,
 				6003F58B195388D20070C39A /* Products */,
 				C54B8B89BCBDBE97179D4330 /* Pods */,
@@ -111,7 +75,6 @@
 			isa = PBXGroup;
 			children = (
 				6003F58A195388D20070C39A /* LucaSdk_Example.app */,
-				6003F5AE195388D20070C39A /* LucaSdk_Tests.xctest */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -122,9 +85,7 @@
 				6003F58D195388D20070C39A /* Foundation.framework */,
 				6003F58F195388D20070C39A /* CoreGraphics.framework */,
 				6003F591195388D20070C39A /* UIKit.framework */,
-				6003F5AF195388D20070C39A /* XCTest.framework */,
-				4CA250188530992F01C205FC /* Pods_LucaSdk_Example.framework */,
-				8659C3272E87C39DDC459912 /* Pods_LucaSdk_Tests.framework */,
+				CC92581B7E3317EDC6E269FC /* Pods_LucaSdk_Example.framework */,
 			);
 			name = Frameworks;
 			sourceTree = "<group>";
@@ -140,6 +101,8 @@
 				71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */,
 				6003F5A8195388D20070C39A /* Images.xcassets */,
 				6003F594195388D20070C39A /* Supporting Files */,
+				893520FF2744DD2400370DCD /* LUCASwift.swift */,
+				893520FE2744DD2400370DCD /* LucaSdk_Example-Bridging-Header.h */,
 			);
 			name = "Example for LucaSdk";
 			path = LucaSdk;
@@ -156,25 +119,6 @@
 			name = "Supporting Files";
 			sourceTree = "<group>";
 		};
-		6003F5B5195388D20070C39A /* Tests */ = {
-			isa = PBXGroup;
-			children = (
-				6003F5BB195388D20070C39A /* Tests.m */,
-				6003F5B6195388D20070C39A /* Supporting Files */,
-			);
-			path = Tests;
-			sourceTree = "<group>";
-		};
-		6003F5B6195388D20070C39A /* Supporting Files */ = {
-			isa = PBXGroup;
-			children = (
-				6003F5B7195388D20070C39A /* Tests-Info.plist */,
-				6003F5B8195388D20070C39A /* InfoPlist.strings */,
-				606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */,
-			);
-			name = "Supporting Files";
-			sourceTree = "<group>";
-		};
 		60FF7A9C1954A5C5007DD14C /* Podspec Metadata */ = {
 			isa = PBXGroup;
 			children = (
@@ -190,10 +134,7 @@
 			children = (
 				EDDA26487127DD90FF80F52F /* Pods-LucaSdk_Example.debug.xcconfig */,
 				75ECAE516EB0A239C5CA8507 /* Pods-LucaSdk_Example.release.xcconfig */,
-				423809350A4726F2F4ADA9C1 /* Pods-LucaSdk_Tests.debug.xcconfig */,
-				410EFF15C86050E38AE33B07 /* Pods-LucaSdk_Tests.release.xcconfig */,
 			);
-			name = Pods;
 			path = Pods;
 			sourceTree = "<group>";
 		};
@@ -208,7 +149,7 @@
 				6003F586195388D20070C39A /* Sources */,
 				6003F587195388D20070C39A /* Frameworks */,
 				6003F588195388D20070C39A /* Resources */,
-				73B3BE6CCFFFDDD730090001 /* [CP] Embed Pods Frameworks */,
+				EE560F9792C1475BF99E0042 /* [CP] Copy Pods Resources */,
 			);
 			buildRules = (
 			);
@@ -219,26 +160,6 @@
 			productReference = 6003F58A195388D20070C39A /* LucaSdk_Example.app */;
 			productType = "com.apple.product-type.application";
 		};
-		6003F5AD195388D20070C39A /* LucaSdk_Tests */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "LucaSdk_Tests" */;
-			buildPhases = (
-				27286BAF11BD5B264B23FFC3 /* [CP] Check Pods Manifest.lock */,
-				6003F5AA195388D20070C39A /* Sources */,
-				6003F5AB195388D20070C39A /* Frameworks */,
-				6003F5AC195388D20070C39A /* Resources */,
-				CFD429BCEA2E0D60FF988CD6 /* [CP] Embed Pods Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				6003F5B4195388D20070C39A /* PBXTargetDependency */,
-			);
-			name = LucaSdk_Tests;
-			productName = LucaSdkTests;
-			productReference = 6003F5AE195388D20070C39A /* LucaSdk_Tests.xctest */;
-			productType = "com.apple.product-type.bundle.unit-test";
-		};
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
@@ -249,8 +170,9 @@
 				LastUpgradeCheck = 0720;
 				ORGANIZATIONNAME = "344185723@qq.com";
 				TargetAttributes = {
-					6003F5AD195388D20070C39A = {
-						TestTargetID = 6003F589195388D20070C39A;
+					6003F589195388D20070C39A = {
+						DevelopmentTeam = P973P9962M;
+						LastSwiftMigration = 1310;
 					};
 				};
 			};
@@ -259,6 +181,7 @@
 			developmentRegion = English;
 			hasScannedForEncodings = 0;
 			knownRegions = (
+				English,
 				en,
 				Base,
 			);
@@ -268,7 +191,6 @@
 			projectRoot = "";
 			targets = (
 				6003F589195388D20070C39A /* LucaSdk_Example */,
-				6003F5AD195388D20070C39A /* LucaSdk_Tests */,
 			);
 		};
 /* End PBXProject section */
@@ -285,39 +207,9 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		6003F5AC195388D20070C39A /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXShellScriptBuildPhase section */
-		27286BAF11BD5B264B23FFC3 /* [CP] Check Pods Manifest.lock */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputFileListPaths = (
-			);
-			inputPaths = (
-				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
-				"${PODS_ROOT}/Manifest.lock",
-			);
-			name = "[CP] Check Pods Manifest.lock";
-			outputFileListPaths = (
-			);
-			outputPaths = (
-				"$(DERIVED_FILE_DIR)/Pods-LucaSdk_Tests-checkManifestLockResult.txt",
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
-			showEnvVarsInLog = 0;
-		};
 		2E53124BD16A7FF8445D08E5 /* [CP] Check Pods Manifest.lock */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -340,40 +232,38 @@
 			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
 			showEnvVarsInLog = 0;
 		};
-		73B3BE6CCFFFDDD730090001 /* [CP] Embed Pods Frameworks */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-LucaSdk_Example/Pods-LucaSdk_Example-frameworks.sh",
-				"${BUILT_PRODUCTS_DIR}/LucaSdk/LucaSdk.framework",
-			);
-			name = "[CP] Embed Pods Frameworks";
-			outputPaths = (
-				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LucaSdk.framework",
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LucaSdk_Example/Pods-LucaSdk_Example-frameworks.sh\"\n";
-			showEnvVarsInLog = 0;
-		};
-		CFD429BCEA2E0D60FF988CD6 /* [CP] Embed Pods Frameworks */ = {
+		EE560F9792C1475BF99E0042 /* [CP] Copy Pods Resources */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 			);
 			inputPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-LucaSdk_Tests/Pods-LucaSdk_Tests-frameworks.sh",
-				"${BUILT_PRODUCTS_DIR}/FBSnapshotTestCase/FBSnapshotTestCase.framework",
-			);
-			name = "[CP] Embed Pods Frameworks";
+				"${PODS_ROOT}/Target Support Files/Pods-LucaSdk_Example/Pods-LucaSdk_Example-resources.sh",
+				"${PODS_ROOT}/../../TremorSdk.framework/question@3x.png",
+				"${PODS_ROOT}/../../TremorSdk.framework/snake_banner0@3x.png",
+				"${PODS_ROOT}/../../TremorSdk.framework/snake_banner1@3x.png",
+				"${PODS_ROOT}/../../TremorSdk.framework/snake_banner2@3x.png",
+				"${PODS_ROOT}/../../TremorSdk.framework/snake_banner3@3x.png",
+				"${PODS_ROOT}/../../TremorSdk.framework/task_result_circle@3x.png",
+				"${PODS_ROOT}/../../TremorSdk.framework/time_icon2@3x.png",
+				"${PODS_ROOT}/../../TremorSdk.framework/time_icon@3x.png",
+				"${PODS_ROOT}/../../TremorSdk.framework/TremorViewController.nib",
+			);
+			name = "[CP] Copy Pods Resources";
 			outputPaths = (
-				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBSnapshotTestCase.framework",
+				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/question@3x.png",
+				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/snake_banner0@3x.png",
+				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/snake_banner1@3x.png",
+				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/snake_banner2@3x.png",
+				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/snake_banner3@3x.png",
+				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/task_result_circle@3x.png",
+				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/time_icon2@3x.png",
+				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/time_icon@3x.png",
+				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TremorViewController.nib",
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LucaSdk_Tests/Pods-LucaSdk_Tests-frameworks.sh\"\n";
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-LucaSdk_Example/Pods-LucaSdk_Example-resources.sh\"\n";
 			showEnvVarsInLog = 0;
 		};
 /* End PBXShellScriptBuildPhase section */
@@ -384,29 +274,14 @@
 			buildActionMask = 2147483647;
 			files = (
 				6003F59E195388D20070C39A /* LUCAAppDelegate.m in Sources */,
+				893521002744DD2400370DCD /* LUCASwift.swift in Sources */,
 				6003F5A7195388D20070C39A /* LUCAViewController.m in Sources */,
 				6003F59A195388D20070C39A /* main.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		6003F5AA195388D20070C39A /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				6003F5BC195388D20070C39A /* Tests.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXSourcesBuildPhase section */
 
-/* Begin PBXTargetDependency section */
-		6003F5B4195388D20070C39A /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 6003F589195388D20070C39A /* LucaSdk_Example */;
-			targetProxy = 6003F5B3195388D20070C39A /* PBXContainerItemProxy */;
-		};
-/* End PBXTargetDependency section */
-
 /* Begin PBXVariantGroup section */
 		6003F596195388D20070C39A /* InfoPlist.strings */ = {
 			isa = PBXVariantGroup;
@@ -416,14 +291,6 @@
 			name = InfoPlist.strings;
 			sourceTree = "<group>";
 		};
-		6003F5B8195388D20070C39A /* InfoPlist.strings */ = {
-			isa = PBXVariantGroup;
-			children = (
-				6003F5B9195388D20070C39A /* en */,
-			);
-			name = InfoPlist.strings;
-			sourceTree = "<group>";
-		};
 		71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */ = {
 			isa = PBXVariantGroup;
 			children = (
@@ -513,13 +380,26 @@
 			baseConfigurationReference = EDDA26487127DD90FF80F52F /* Pods-LucaSdk_Example.debug.xcconfig */;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				DEVELOPMENT_TEAM = P973P9962M;
+				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/LucaSdk",
+				);
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = "LucaSdk/LucaSdk-Prefix.pch";
 				INFOPLIST_FILE = "LucaSdk/LucaSdk-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				MODULE_NAME = ExampleApp;
+				OTHER_LDFLAGS = "$(inherited)";
 				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "LucaSdk/LucaSdk_Example-Bridging-Header.h";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 				SWIFT_VERSION = 4.0;
+				TARGETED_DEVICE_FAMILY = 1;
 				WRAPPER_EXTENSION = app;
 			};
 			name = Debug;
@@ -529,63 +409,29 @@
 			baseConfigurationReference = 75ECAE516EB0A239C5CA8507 /* Pods-LucaSdk_Example.release.xcconfig */;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
+				DEVELOPMENT_TEAM = P973P9962M;
+				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/LucaSdk",
+				);
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = "LucaSdk/LucaSdk-Prefix.pch";
 				INFOPLIST_FILE = "LucaSdk/LucaSdk-Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
 				MODULE_NAME = ExampleApp;
+				OTHER_LDFLAGS = "$(inherited)";
 				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "LucaSdk/LucaSdk_Example-Bridging-Header.h";
 				SWIFT_VERSION = 4.0;
+				TARGETED_DEVICE_FAMILY = 1;
 				WRAPPER_EXTENSION = app;
 			};
 			name = Release;
 		};
-		6003F5C3195388D20070C39A /* Debug */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 423809350A4726F2F4ADA9C1 /* Pods-LucaSdk_Tests.debug.xcconfig */;
-			buildSettings = {
-				BUNDLE_LOADER = "$(TEST_HOST)";
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(PLATFORM_DIR)/Developer/Library/Frameworks",
-					"$(inherited)",
-					"$(DEVELOPER_FRAMEWORKS_DIR)",
-				);
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch";
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					"DEBUG=1",
-					"$(inherited)",
-				);
-				INFOPLIST_FILE = "Tests/Tests-Info.plist";
-				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_VERSION = 4.0;
-				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LucaSdk_Example.app/LucaSdk_Example";
-				WRAPPER_EXTENSION = xctest;
-			};
-			name = Debug;
-		};
-		6003F5C4195388D20070C39A /* Release */ = {
-			isa = XCBuildConfiguration;
-			baseConfigurationReference = 410EFF15C86050E38AE33B07 /* Pods-LucaSdk_Tests.release.xcconfig */;
-			buildSettings = {
-				BUNDLE_LOADER = "$(TEST_HOST)";
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(PLATFORM_DIR)/Developer/Library/Frameworks",
-					"$(inherited)",
-					"$(DEVELOPER_FRAMEWORKS_DIR)",
-				);
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch";
-				INFOPLIST_FILE = "Tests/Tests-Info.plist";
-				PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_VERSION = 4.0;
-				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/LucaSdk_Example.app/LucaSdk_Example";
-				WRAPPER_EXTENSION = xctest;
-			};
-			name = Release;
-		};
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
@@ -607,15 +453,6 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
-		6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "LucaSdk_Tests" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				6003F5C3195388D20070C39A /* Debug */,
-				6003F5C4195388D20070C39A /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
 /* End XCConfigurationList section */
 	};
 	rootObject = 6003F582195388D10070C39A /* Project object */;
diff --git a/Example/LucaSdk.xcodeproj/xcshareddata/xcschemes/LucaSdk-Example.xcscheme b/Example/LucaSdk.xcodeproj/xcshareddata/xcschemes/LucaSdk-Example.xcscheme
index 27dd2181467b76fb2ae6bc438dab273c7815cd08..3b50037f35cb055c228f58a3011b0079dd8fa54d 100644
--- a/Example/LucaSdk.xcodeproj/xcshareddata/xcschemes/LucaSdk-Example.xcscheme
+++ b/Example/LucaSdk.xcodeproj/xcshareddata/xcschemes/LucaSdk-Example.xcscheme
@@ -6,6 +6,20 @@
       parallelizeBuildables = "YES"
       buildImplicitDependencies = "YES">
       <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "135D06F8CB3690696B1BBF5398C40FB7"
+               BuildableName = "LucaSdk"
+               BlueprintName = "LucaSdk"
+               ReferencedContainer = "container:Pods/Pods.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
          <BuildActionEntry
             buildForTesting = "YES"
             buildForRunning = "YES"
@@ -27,18 +41,6 @@
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       shouldUseLaunchSchemeArgsEnv = "YES">
-      <Testables>
-         <TestableReference
-            skipped = "NO">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "6003F5AD195388D20070C39A"
-               BuildableName = "LucaSdk_Tests.xctest"
-               BlueprintName = "LucaSdk_Tests"
-               ReferencedContainer = "container:LucaSdk.xcodeproj">
-            </BuildableReference>
-         </TestableReference>
-      </Testables>
       <MacroExpansion>
          <BuildableReference
             BuildableIdentifier = "primary"
@@ -48,8 +50,8 @@
             ReferencedContainer = "container:LucaSdk.xcodeproj">
          </BuildableReference>
       </MacroExpansion>
-      <AdditionalOptions>
-      </AdditionalOptions>
+      <Testables>
+      </Testables>
    </TestAction>
    <LaunchAction
       buildConfiguration = "Debug"
@@ -71,8 +73,6 @@
             ReferencedContainer = "container:LucaSdk.xcodeproj">
          </BuildableReference>
       </BuildableProductRunnable>
-      <AdditionalOptions>
-      </AdditionalOptions>
    </LaunchAction>
    <ProfileAction
       buildConfiguration = "Release"
diff --git a/Example/LucaSdk.xcworkspace/contents.xcworkspacedata b/Example/LucaSdk.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000000000000000000000000000000000000..06b3fc1c5a62e1133248da6b685a00f03a9dd0fc
--- /dev/null
+++ b/Example/LucaSdk.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "group:LucaSdk.xcodeproj">
+   </FileRef>
+   <FileRef
+      location = "group:Pods/Pods.xcodeproj">
+   </FileRef>
+</Workspace>
diff --git a/Example/LucaSdk.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/LucaSdk.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000000000000000000000000000000000000..18d981003d68d0546c4804ac2ff47dd97c6e7921
--- /dev/null
+++ b/Example/LucaSdk.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IDEDidComputeMac32BitWarning</key>
+	<true/>
+</dict>
+</plist>
diff --git a/Example/LucaSdk/Base.lproj/Main.storyboard b/Example/LucaSdk/Base.lproj/Main.storyboard
index c0801887d01c3a5b9e34bef35860fe5404c126ff..4bf19141f7b9ccde62f4a775335a01fdd76b17dc 100644
--- a/Example/LucaSdk/Base.lproj/Main.storyboard
+++ b/Example/LucaSdk/Base.lproj/Main.storyboard
@@ -1,31 +1,68 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="whP-gf-Uak">
-    <device id="retina4_7" orientation="portrait">
-        <adaptation id="fullscreen"/>
-    </device>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19455" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="5kS-hC-cQS">
+    <device id="retina4_7" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19454"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <scenes>
         <!--View Controller-->
-        <scene sceneID="wQg-tq-qST">
+        <scene sceneID="hPB-CV-C91">
             <objects>
-                <viewController id="whP-gf-Uak" customClass="LUCAViewController" sceneMemberID="viewController">
+                <viewController id="D0G-z2-aLA" customClass="LUCAViewController" sceneMemberID="viewController">
                     <layoutGuides>
-                        <viewControllerLayoutGuide type="top" id="uEw-UM-LJ8"/>
-                        <viewControllerLayoutGuide type="bottom" id="Mvr-aV-6Um"/>
+                        <viewControllerLayoutGuide type="top" id="W91-lK-mPr"/>
+                        <viewControllerLayoutGuide type="bottom" id="TKZ-Tf-Kce"/>
                     </layoutGuides>
-                    <view key="view" contentMode="scaleToFill" id="TpU-gO-2f1">
+                    <view key="view" contentMode="scaleToFill" id="Ist-Am-qhf">
                         <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="LucaSdkDemo" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ujN-C4-okt">
+                                <rect key="frame" x="132" y="323" width="111.5" height="21"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="jGj-vh-FJm">
+                                <rect key="frame" x="154" y="318" width="67" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Button"/>
+                                <connections>
+                                    <action selector="gotoVC:" destination="D0G-z2-aLA" eventType="touchUpInside" id="puu-Xl-96k"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                        <constraints>
+                            <constraint firstItem="ujN-C4-okt" firstAttribute="centerY" secondItem="Ist-Am-qhf" secondAttribute="centerY" id="GyF-Nu-LW7"/>
+                            <constraint firstItem="ujN-C4-okt" firstAttribute="centerX" secondItem="Ist-Am-qhf" secondAttribute="centerX" id="QSi-EE-GtV"/>
+                            <constraint firstItem="jGj-vh-FJm" firstAttribute="centerX" secondItem="ujN-C4-okt" secondAttribute="centerX" id="WPL-Ft-M0G"/>
+                            <constraint firstItem="jGj-vh-FJm" firstAttribute="centerY" secondItem="ujN-C4-okt" secondAttribute="centerY" id="YVO-PP-eJT"/>
+                        </constraints>
                     </view>
+                    <navigationItem key="navigationItem" id="F33-Rn-NTe"/>
                 </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="tc2-Qw-aMS" userLabel="First Responder" sceneMemberID="firstResponder"/>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="CwM-N5-Ovl" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
             </objects>
-            <point key="canvasLocation" x="305" y="433"/>
+            <point key="canvasLocation" x="208.80000000000001" y="444.82758620689657"/>
+        </scene>
+        <!--Navigation Controller-->
+        <scene sceneID="PM0-Wc-Mgd">
+            <objects>
+                <navigationController id="5kS-hC-cQS" sceneMemberID="viewController">
+                    <navigationBar key="navigationBar" contentMode="scaleToFill" id="IVv-Kn-VBd">
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </navigationBar>
+                    <connections>
+                        <segue destination="D0G-z2-aLA" kind="relationship" relationship="rootViewController" id="IPp-P6-e0b"/>
+                    </connections>
+                </navigationController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="3Ti-X4-A01" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-618" y="895"/>
         </scene>
     </scenes>
 </document>
diff --git a/Example/LucaSdk/LUCASwift.swift b/Example/LucaSdk/LUCASwift.swift
new file mode 100644
index 0000000000000000000000000000000000000000..3d9b5ad555453431d09ad27ad9f47471f5335462
--- /dev/null
+++ b/Example/LucaSdk/LUCASwift.swift
@@ -0,0 +1,13 @@
+//
+//  LUCASwift.swift
+//  LucaSdk_Example
+//
+//  Created by Howard on 2021/11/17.
+//  Copyright 漏 2021 344185723@qq.com. All rights reserved.
+//
+
+import UIKit
+
+class LUCASwift: NSObject {
+
+}
diff --git a/Example/LucaSdk/LUCAViewController.m b/Example/LucaSdk/LUCAViewController.m
index 6dd577e2a9120a2ff73a8c07563a5c32d6b3fbe1..c50a97b61a7f08f3792d5af77fcfa31a4f2abfce 100644
--- a/Example/LucaSdk/LUCAViewController.m
+++ b/Example/LucaSdk/LUCAViewController.m
@@ -7,6 +7,7 @@
 //
 
 #import "LUCAViewController.h"
+#import <TremorSdk/TremorSdkHeader.h>
 
 @interface LUCAViewController ()
 
@@ -17,11 +18,25 @@
 - (void)viewDidLoad
 {
     [super viewDidLoad];
+    
 	// Do any additional setup after loading the view, typically from a nib.
 }
+- (IBAction)gotoVC:(id)sender {
+//    [[TremorManager shareManager] startTremor:10 progress:^(float value) {
+//
+//    } wait:^{
+//
+//    } result:^(NSInteger code, NSString * _Nullable errorMsg, NSDictionary * _Nullable resultDic) {
+//
+//    }];
+    
+
+    [[TremorManager shareManager] pushViewController:self.navigationController];
+}
 
 - (void)didReceiveMemoryWarning
 {
+    
     [super didReceiveMemoryWarning];
     // Dispose of any resources that can be recreated.
 }
diff --git a/Example/LucaSdk/LucaSdk-Info.plist b/Example/LucaSdk/LucaSdk-Info.plist
index 7576a0dc45feb50f154feabccae6f4985b4085d4..1afbdc81c33f7d8fac208f8f0ccc8b4e0d7220cc 100644
--- a/Example/LucaSdk/LucaSdk-Info.plist
+++ b/Example/LucaSdk/LucaSdk-Info.plist
@@ -24,6 +24,8 @@
 	<string>1.0</string>
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
+	<key>NSMicrophoneUsageDescription</key>
+	<string>This app uses microphone to record sound</string>
 	<key>UILaunchStoryboardName</key>
 	<string>LaunchScreen</string>
 	<key>UIMainStoryboardFile</key>
@@ -35,8 +37,6 @@
 	<key>UISupportedInterfaceOrientations</key>
 	<array>
 		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
 	</array>
 	<key>UISupportedInterfaceOrientations~ipad</key>
 	<array>
@@ -45,5 +45,7 @@
 		<string>UIInterfaceOrientationLandscapeLeft</string>
 		<string>UIInterfaceOrientationLandscapeRight</string>
 	</array>
+	<key>UIUserInterfaceStyle</key>
+	<string>Light</string>
 </dict>
 </plist>
diff --git a/Example/LucaSdk/LucaSdk_Example-Bridging-Header.h b/Example/LucaSdk/LucaSdk_Example-Bridging-Header.h
new file mode 100644
index 0000000000000000000000000000000000000000..1b2cb5d6d09fe5019d2f930632eaa15b4e51aedc
--- /dev/null
+++ b/Example/LucaSdk/LucaSdk_Example-Bridging-Header.h
@@ -0,0 +1,4 @@
+//
+//  Use this file to import your target's public headers that you would like to expose to Swift.
+//
+
diff --git a/Example/Podfile b/Example/Podfile
index 510ba0bcdfe77695eb7105acba81cb75b674c741..80e8a064d1e4832c25ebd4a3a6e68cf63c3a671b 100644
--- a/Example/Podfile
+++ b/Example/Podfile
@@ -1,13 +1,5 @@
 use_frameworks!
-
 platform :ios, '9.0'
-
 target 'LucaSdk_Example' do
-  pod 'LucaSdk', :path => '../'
-
-  target 'LucaSdk_Tests' do
-    inherit! :search_paths
-
-    pod 'FBSnapshotTestCase'
-  end
+  pod 'LucaSdk/Tremor', :path => '../'
 end
diff --git a/Example/Tests/Tests-Info.plist b/Example/Tests/Tests-Info.plist
deleted file mode 100644
index 169b6f710ecce82db27b55556e05cfbd34dc23ab..0000000000000000000000000000000000000000
--- a/Example/Tests/Tests-Info.plist
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>en</string>
-	<key>CFBundleExecutable</key>
-	<string>${EXECUTABLE_NAME}</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundlePackageType</key>
-	<string>BNDL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>1.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-</dict>
-</plist>
diff --git a/Example/Tests/Tests-Prefix.pch b/Example/Tests/Tests-Prefix.pch
deleted file mode 100644
index 3cbb9026f85ca964c2090c7c44df99ba771e7a96..0000000000000000000000000000000000000000
--- a/Example/Tests/Tests-Prefix.pch
+++ /dev/null
@@ -1,7 +0,0 @@
-//  The contents of this file are implicitly included at the beginning of every test case source file.
-
-#ifdef __OBJC__
-
-  @import FBSnapshotTestCase;
-
-#endif
diff --git a/Example/Tests/Tests.m b/Example/Tests/Tests.m
deleted file mode 100644
index ff74c57f6bd588a6bb25065e0236594be892e7e6..0000000000000000000000000000000000000000
--- a/Example/Tests/Tests.m
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-//  LucaSdkTests.m
-//  LucaSdkTests
-//
-//  Created by 344185723@qq.com on 11/17/2021.
-//  Copyright (c) 2021 344185723@qq.com. All rights reserved.
-//
-
-@import XCTest;
-
-@interface Tests : XCTestCase
-
-@end
-
-@implementation Tests
-
-- (void)setUp
-{
-    [super setUp];
-    // Put setup code here. This method is called before the invocation of each test method in the class.
-}
-
-- (void)tearDown
-{
-    // Put teardown code here. This method is called after the invocation of each test method in the class.
-    [super tearDown];
-}
-
-- (void)testExample
-{
-    XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
-}
-
-@end
-
diff --git a/Example/Tests/en.lproj/InfoPlist.strings b/Example/Tests/en.lproj/InfoPlist.strings
deleted file mode 100644
index 477b28ff8f86a3158a71c4934fbd3a2456717d7a..0000000000000000000000000000000000000000
--- a/Example/Tests/en.lproj/InfoPlist.strings
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Localized versions of Info.plist keys */
-
diff --git a/LucaSdk.podspec b/LucaSdk.podspec
index cd1d07c6f8d2b58e496441abff8f825f4a5aeac7..662f328c96b804fd25feca7461f820d7589b07f1 100644
--- a/LucaSdk.podspec
+++ b/LucaSdk.podspec
@@ -1,42 +1,30 @@
-#
-# Be sure to run `pod lib lint LucaSdk.podspec' to ensure this is a
-# valid spec before submitting.
-#
-# Any lines starting with a # are optional, but their use is encouraged
-# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
-#
-
 Pod::Spec.new do |s|
   s.name             = 'LucaSdk'
   s.version          = '0.1.0'
-  s.summary          = 'A short description of LucaSdk.'
-
-# This description is used to generate tags and improve search results.
-#   * Think: What does it do? Why did you write it? What is the focus?
-#   * Try to keep it short, snappy and to the point.
-#   * Write the description between the DESC delimiters below.
-#   * Finally, don't worry about the indent, CocoaPods strips it!
-
+  s.summary          = 'LucaSdk'
   s.description      = <<-DESC
-TODO: Add long description of the pod here.
+                        It's an SDK for Luca.
                        DESC
-
   s.homepage         = 'https://github.com/344185723@qq.com/LucaSdk'
-  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
   s.license          = { :type => 'MIT', :file => 'LICENSE' }
   s.author           = { '344185723@qq.com' => '344185723@qq.com' }
   s.source           = { :git => 'https://github.com/344185723@qq.com/LucaSdk.git', :tag => s.version.to_s }
-  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
-
+  s.pod_target_xcconfig = {
+    'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64'
+  }
+  s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
   s.ios.deployment_target = '9.0'
-
-  s.source_files = 'LucaSdk/Classes/**/*'
-  
-  # s.resource_bundles = {
-  #   'LucaSdk' => ['LucaSdk/Assets/*.png']
-  # }
-
-  # s.public_header_files = 'Pod/Classes/**/*.h'
-  # s.frameworks = 'UIKit', 'MapKit'
-  # s.dependency 'AFNetworking', '~> 2.3'
+  s.subspec 'Tremor' do |cs|
+    cs.resources = "TremorSdk.framework/*.png",'TremorSdk.framework/*.nib'
+    cs.vendored_frameworks = 'CommonSdk.framework','TremorSdk.framework'
+    cs.frameworks = 'Accelerate'
+    cs.libraries = 'c++'
+    cs.xcconfig = {
+        'OTHER_LDFLAGS' => [
+            '$(inherited)',
+            '-framework CommonSdk',
+            '-framework TremorSdk'
+        ]
+    }
+  end
 end
diff --git a/TremorSdk.framework/Headers/TremorManager.h b/TremorSdk.framework/Headers/TremorManager.h
new file mode 100644
index 0000000000000000000000000000000000000000..fdace9ec435e9e18d8661646054e98e83711efb4
--- /dev/null
+++ b/TremorSdk.framework/Headers/TremorManager.h
@@ -0,0 +1,52 @@
+//
+//  TremorManager.h
+//  TremorSdk
+//
+//  Created by Howard on 2021/11/12.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+/**
+ 娴嬭瘯涓洖璋冿紝杩斿洖娉㈠姩鍊�
+ */
+typedef void (^TremorTestingCallback)(float value);
+
+/**
+ 绛夊緟缁撴灉鍥炶皟锛屽彲浠ュ湪杩欓噷缁樺埗loading妗�
+ */
+typedef void (^TremorWaitCallback)(void);
+/**
+  缁撴灉鍥炶皟 code:0鎴愬姛鑾峰彇缁撴灉 errorMsg:閿欒淇℃伅 resultDic:缁撴灉鏁版嵁
+ */
+typedef void (^TremorResultCallback)(NSInteger code,NSString * _Nullable errorMsg,NSDictionary * _Nullable resultDic);
+NS_ASSUME_NONNULL_BEGIN
+/**
+  闇囬ⅳ绠$悊绫�
+ */
+@interface TremorManager : NSObject
+/**
+  瀹炰緥鍖栧璞�
+ */
++ (instancetype)shareManager;
+/**
+  浣跨敤鍐呯疆鐣岄潰鐨勬柟寮�444444
+ */
+- (void)pushViewController:(UINavigationController *)nav;
+
+/**
+  鏃犵晫闈㈢殑鏂瑰紡锛屽紑濮嬮渿棰�
+  duration锛氭寔缁椂闂达紝鍗曚綅S
+  callback:娴嬭瘯涓洖璋�
+  waitCallback:绛夊緟缁撴灉鍥炶皟
+  resultCallback:缁撴灉鍥炶皟
+ */
+- (void)startTremor:(NSInteger)duration progress:(TremorTestingCallback)callback wait:(TremorWaitCallback)waitCallback result:(TremorResultCallback)resultCallback;
+/**
+ 鍋滄娴嬭瘯
+ */
+- (void)stopTremor;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/TremorSdk.framework/Headers/TremorSdkHeader.h b/TremorSdk.framework/Headers/TremorSdkHeader.h
new file mode 100644
index 0000000000000000000000000000000000000000..cfcef8cec209726ad7453fef9357c77b6e1d7415
--- /dev/null
+++ b/TremorSdk.framework/Headers/TremorSdkHeader.h
@@ -0,0 +1,11 @@
+//
+//  TremorSdkHeader.h
+//  TremorSdk
+//
+//  Created by Howard on 2021/11/11.
+//
+
+#ifndef TremorSdkHeader_h
+#define TremorSdkHeader_h
+#import <TremorSdk/TremorManager.h>
+#endif /* TremorSdkHeader_h */
diff --git a/TremorSdk.framework/Info.plist b/TremorSdk.framework/Info.plist
new file mode 100644
index 0000000000000000000000000000000000000000..9ab098cee60caecc574ed684324a40f6582fa7c3
Binary files /dev/null and b/TremorSdk.framework/Info.plist differ
diff --git a/TremorSdk.framework/TremorSdk b/TremorSdk.framework/TremorSdk
new file mode 100644
index 0000000000000000000000000000000000000000..0965bb7cdf1efbd9bac58dc5379921af4e01858f
Binary files /dev/null and b/TremorSdk.framework/TremorSdk differ
diff --git a/TremorSdk.framework/TremorViewController.nib/objects-11.0+.nib b/TremorSdk.framework/TremorViewController.nib/objects-11.0+.nib
new file mode 100644
index 0000000000000000000000000000000000000000..8631a1e253cb2072fa3f2daffda77a11bc30deb3
Binary files /dev/null and b/TremorSdk.framework/TremorViewController.nib/objects-11.0+.nib differ
diff --git a/TremorSdk.framework/TremorViewController.nib/runtime.nib b/TremorSdk.framework/TremorViewController.nib/runtime.nib
new file mode 100644
index 0000000000000000000000000000000000000000..fd3b3d77d90a2c3f120235ee81925106e1e43143
Binary files /dev/null and b/TremorSdk.framework/TremorViewController.nib/runtime.nib differ
diff --git a/TremorSdk.framework/_CodeSignature/CodeDirectory b/TremorSdk.framework/_CodeSignature/CodeDirectory
new file mode 100644
index 0000000000000000000000000000000000000000..d6d024259048317865c537413ab55278eab533a0
Binary files /dev/null and b/TremorSdk.framework/_CodeSignature/CodeDirectory differ
diff --git a/TremorSdk.framework/_CodeSignature/CodeRequirements b/TremorSdk.framework/_CodeSignature/CodeRequirements
new file mode 100644
index 0000000000000000000000000000000000000000..13bb5d5c9bd6ba9a62ec0ee7eb3a8b51b7a552ae
Binary files /dev/null and b/TremorSdk.framework/_CodeSignature/CodeRequirements differ
diff --git a/TremorSdk.framework/_CodeSignature/CodeRequirements-1 b/TremorSdk.framework/_CodeSignature/CodeRequirements-1
new file mode 100644
index 0000000000000000000000000000000000000000..a91c6d9d5ecbbf9f610bff8a3772efae97e67ae4
Binary files /dev/null and b/TremorSdk.framework/_CodeSignature/CodeRequirements-1 differ
diff --git a/TremorSdk.framework/_CodeSignature/CodeResources b/TremorSdk.framework/_CodeSignature/CodeResources
new file mode 100644
index 0000000000000000000000000000000000000000..6be2e29db01e937619f4500a56675043c83c2e46
--- /dev/null
+++ b/TremorSdk.framework/_CodeSignature/CodeResources
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>files</key>
+	<dict>
+		<key>.DS_Store</key>
+		<data>
+		x3iCdVFdMHPrv+d74Vtwk8o2oyU=
+		</data>
+		<key>Headers/TremorManager.h</key>
+		<data>
+		MTiOnsU+F9Lj5TSfIeg3rJNrADU=
+		</data>
+		<key>Headers/TremorSdkHeader.h</key>
+		<data>
+		vIdRjQ6UlPsiEFBFsIEBzoHz4vY=
+		</data>
+		<key>Info.plist</key>
+		<data>
+		1opjSxTDUvDkTgUDUDIXj2YUJ6Y=
+		</data>
+		<key>TremorViewController.nib/objects-11.0+.nib</key>
+		<data>
+		fJmEu5tvPw3fBMNWi7pLUIEbSc0=
+		</data>
+		<key>TremorViewController.nib/runtime.nib</key>
+		<data>
+		HmERoETPP6J8jHBKcJOGhCxenMc=
+		</data>
+		<key>question@3x.png</key>
+		<data>
+		eMv6BEeQ/vEMrZaoAmkRCLRVdxE=
+		</data>
+		<key>snake_banner0@3x.png</key>
+		<data>
+		L2ysf+bGXu15LK+vBxsQwbUdK3k=
+		</data>
+		<key>snake_banner1@3x.png</key>
+		<data>
+		jShWjssONt3syUgcsar/ZliigRs=
+		</data>
+		<key>snake_banner2@3x.png</key>
+		<data>
+		OXVhJihgounOK8D3O5piSjazOAI=
+		</data>
+		<key>snake_banner3@3x.png</key>
+		<data>
+		nh+C1hMbRa5b20yq4rpCvAzSJdg=
+		</data>
+		<key>task_result_circle@3x.png</key>
+		<data>
+		rGI/GvCuvSJdxdBHk6XuN3Qakkw=
+		</data>
+		<key>time_icon2@3x.png</key>
+		<data>
+		WxcuLD6r3cpfjX4D0Ep1MaykexQ=
+		</data>
+		<key>time_icon@3x.png</key>
+		<data>
+		gTNrwQ+hT0xgkhHj7pN252JMDgQ=
+		</data>
+	</dict>
+	<key>files2</key>
+	<dict>
+		<key>Headers/TremorManager.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			MTiOnsU+F9Lj5TSfIeg3rJNrADU=
+			</data>
+			<key>hash2</key>
+			<data>
+			tfRgdFRT5bDoss+4TuDiP43ogT35AH/5qj3iao54sB8=
+			</data>
+		</dict>
+		<key>Headers/TremorSdkHeader.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			vIdRjQ6UlPsiEFBFsIEBzoHz4vY=
+			</data>
+			<key>hash2</key>
+			<data>
+			nnfEmE/h8BWNPG+6/zLLyKcnt/LuQCuoIo8IBvDyJ9s=
+			</data>
+		</dict>
+		<key>TremorViewController.nib/objects-11.0+.nib</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			fJmEu5tvPw3fBMNWi7pLUIEbSc0=
+			</data>
+			<key>hash2</key>
+			<data>
+			3qC6NjZ2rWMz08DC1KnBuJIh4G7RE5zSnbrvB73z6iI=
+			</data>
+		</dict>
+		<key>TremorViewController.nib/runtime.nib</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			HmERoETPP6J8jHBKcJOGhCxenMc=
+			</data>
+			<key>hash2</key>
+			<data>
+			qL1ez/EY1Rwp02d7zwb0aJrwz62ycqR/ijoM8DAHso4=
+			</data>
+		</dict>
+		<key>question@3x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			eMv6BEeQ/vEMrZaoAmkRCLRVdxE=
+			</data>
+			<key>hash2</key>
+			<data>
+			rn5FQ3dzEzd4FRTQKDwj/mWZyI/MN6IOHgz1r/Mx3Ys=
+			</data>
+		</dict>
+		<key>snake_banner0@3x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			L2ysf+bGXu15LK+vBxsQwbUdK3k=
+			</data>
+			<key>hash2</key>
+			<data>
+			/9JiYcVgjZhGkMmuafhVL3x2lNsUX6vuLPX9m1SNne0=
+			</data>
+		</dict>
+		<key>snake_banner1@3x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			jShWjssONt3syUgcsar/ZliigRs=
+			</data>
+			<key>hash2</key>
+			<data>
+			xcAhcGhGsMaerMTs5ZPg1/bAyrgmgUf8NMRZSHSB3qM=
+			</data>
+		</dict>
+		<key>snake_banner2@3x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			OXVhJihgounOK8D3O5piSjazOAI=
+			</data>
+			<key>hash2</key>
+			<data>
+			li75JxeBDlXwX5mASMZWj6aETbF7PpqhiXObjIeEqWo=
+			</data>
+		</dict>
+		<key>snake_banner3@3x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			nh+C1hMbRa5b20yq4rpCvAzSJdg=
+			</data>
+			<key>hash2</key>
+			<data>
+			SFhgmUezBGbvHklmmkD5hPJpxA1nr2dAupQLN5jT+L4=
+			</data>
+		</dict>
+		<key>task_result_circle@3x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			rGI/GvCuvSJdxdBHk6XuN3Qakkw=
+			</data>
+			<key>hash2</key>
+			<data>
+			fLX4xPZCj7n8jXx40yA0xcEb8XB0YDytLuqYwY29cHk=
+			</data>
+		</dict>
+		<key>time_icon2@3x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			WxcuLD6r3cpfjX4D0Ep1MaykexQ=
+			</data>
+			<key>hash2</key>
+			<data>
+			7VqQ7LBAZBrnIFyuxNpFFbzIWp2TMoAB/VhmosnUBAM=
+			</data>
+		</dict>
+		<key>time_icon@3x.png</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			gTNrwQ+hT0xgkhHj7pN252JMDgQ=
+			</data>
+			<key>hash2</key>
+			<data>
+			SCZ0nnrK3tx17cL9Pf65AjEAOQ84epvy0KIrsheqJso=
+			</data>
+		</dict>
+	</dict>
+	<key>rules</key>
+	<dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^version.plist$</key>
+		<true/>
+	</dict>
+	<key>rules2</key>
+	<dict>
+		<key>.*\.dSYM($|/)</key>
+		<dict>
+			<key>weight</key>
+			<real>11</real>
+		</dict>
+		<key>^(.*/)?\.DS_Store$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>2000</real>
+		</dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^Info\.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^PkgInfo$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^embedded\.provisionprofile$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^version\.plist$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+	</dict>
+</dict>
+</plist>
diff --git a/TremorSdk.framework/_CodeSignature/CodeSignature b/TremorSdk.framework/_CodeSignature/CodeSignature
new file mode 100644
index 0000000000000000000000000000000000000000..ead56d3086572c8ae353addc697b94717b8aca27
Binary files /dev/null and b/TremorSdk.framework/_CodeSignature/CodeSignature differ
diff --git a/TremorSdk.framework/question@3x.png b/TremorSdk.framework/question@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..b0b00b4f95a1e8f6783acfb0f310a305f49f7add
Binary files /dev/null and b/TremorSdk.framework/question@3x.png differ
diff --git a/TremorSdk.framework/snake_banner0@3x.png b/TremorSdk.framework/snake_banner0@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..abfec91db720eaab7ea6ec8984361515005e47f2
Binary files /dev/null and b/TremorSdk.framework/snake_banner0@3x.png differ
diff --git a/TremorSdk.framework/snake_banner1@3x.png b/TremorSdk.framework/snake_banner1@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..8152b25d3a05070f759806de3989de6a0ba3673c
Binary files /dev/null and b/TremorSdk.framework/snake_banner1@3x.png differ
diff --git a/TremorSdk.framework/snake_banner2@3x.png b/TremorSdk.framework/snake_banner2@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..d250650316078beaf19748ca345afc7b6c71132a
Binary files /dev/null and b/TremorSdk.framework/snake_banner2@3x.png differ
diff --git a/TremorSdk.framework/snake_banner3@3x.png b/TremorSdk.framework/snake_banner3@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..6fb112e531159bbbcc7542229fcb0bfe006e4410
Binary files /dev/null and b/TremorSdk.framework/snake_banner3@3x.png differ
diff --git a/TremorSdk.framework/task_result_circle@3x.png b/TremorSdk.framework/task_result_circle@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..26e1d475f5793d45014e3192c58c3cc8ff75e578
Binary files /dev/null and b/TremorSdk.framework/task_result_circle@3x.png differ
diff --git a/TremorSdk.framework/time_icon2@3x.png b/TremorSdk.framework/time_icon2@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..9cddb2f5d731ba4a084e9db8b85da021205576d7
Binary files /dev/null and b/TremorSdk.framework/time_icon2@3x.png differ
diff --git a/TremorSdk.framework/time_icon@3x.png b/TremorSdk.framework/time_icon@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..b28956eebec3905cefe79a93936fe82ea182d32d
Binary files /dev/null and b/TremorSdk.framework/time_icon@3x.png differ
diff --git a/TremorSdkBundle.bundle/Assets.car b/TremorSdkBundle.bundle/Assets.car
new file mode 100644
index 0000000000000000000000000000000000000000..e6e8c52dd000d8bf2eb370501cdc6dd9c4fc9951
Binary files /dev/null and b/TremorSdkBundle.bundle/Assets.car differ
diff --git a/TremorSdkBundle.bundle/Info.plist b/TremorSdkBundle.bundle/Info.plist
new file mode 100644
index 0000000000000000000000000000000000000000..98219c49defb233a8b8eeb77b1da00f7e2cab4f6
Binary files /dev/null and b/TremorSdkBundle.bundle/Info.plist differ
diff --git a/TremorSdkBundle.bundle/TremorResultViewController.nib b/TremorSdkBundle.bundle/TremorResultViewController.nib
new file mode 100644
index 0000000000000000000000000000000000000000..85196a2ebee69fdc5005a8365a0cd674e8d74d21
Binary files /dev/null and b/TremorSdkBundle.bundle/TremorResultViewController.nib differ
diff --git a/TremorSdkBundle.bundle/TremorSdkBundle b/TremorSdkBundle.bundle/TremorSdkBundle
new file mode 100755
index 0000000000000000000000000000000000000000..c123da47fd21b5bb003e447cc8c6d889c554e238
Binary files /dev/null and b/TremorSdkBundle.bundle/TremorSdkBundle differ
diff --git a/TremorSdkBundle.bundle/TremorViewController.nib b/TremorSdkBundle.bundle/TremorViewController.nib
new file mode 100644
index 0000000000000000000000000000000000000000..8631a1e253cb2072fa3f2daffda77a11bc30deb3
Binary files /dev/null and b/TremorSdkBundle.bundle/TremorViewController.nib differ