diff --git a/app/config/breadcrumbs.php b/app/config/breadcrumbs.php new file mode 100644 index 0000000..d274ad5 --- /dev/null +++ b/app/config/breadcrumbs.php @@ -0,0 +1,21 @@ + array( + array( + 'title' => 'Home', + 'link' => URL::to('/'), + 'icon' => 'glyphicon-home' + ), + array( + 'title' => 'Category', + 'link' => URL::to('/'), + 'icon' => 'glyphicon-align-justify' + ), + array( + 'title' => 'bookname', + 'link' => URL::current(), + 'icon' => 'glyphicon-plus-sign' + ) + ), +); \ No newline at end of file diff --git a/app/config/categories.php b/app/config/categories.php new file mode 100644 index 0000000..2651883 --- /dev/null +++ b/app/config/categories.php @@ -0,0 +1,21 @@ + array( + 'Software', + 'Cook', + 'Horror', + 'Humor', + 'Musics', + 'Healthy', + 'Romance', + 'History', + 'Thriller', + 'Travel', + 'Mystery', + 'Poetry', + 'Religion', + ), +) + +?> \ No newline at end of file diff --git a/app/config/languages.php b/app/config/languages.php new file mode 100644 index 0000000..06f154b --- /dev/null +++ b/app/config/languages.php @@ -0,0 +1,8 @@ + 'English', + 'mm' => 'Myanmar', + 'ygn' => 'Yangon', +); + diff --git a/app/config/packages/cartalyst/sentry/config.php b/app/config/packages/cartalyst/sentry/config.php new file mode 100644 index 0000000..3cd7151 --- /dev/null +++ b/app/config/packages/cartalyst/sentry/config.php @@ -0,0 +1,221 @@ + 'eloquent', + + /* + |-------------------------------------------------------------------------- + | Default Hasher + |-------------------------------------------------------------------------- + | + | This option allows you to specify the default hasher used by Sentry + | + | Supported: "native", "bcrypt", "sha256", "whirlpool" + | + */ + + 'hasher' => 'native', + + /* + |-------------------------------------------------------------------------- + | Cookie + |-------------------------------------------------------------------------- + | + | Configuration specific to the cookie component of Sentry. + | + */ + + 'cookie' => array( + + /* + |-------------------------------------------------------------------------- + | Default Cookie Key + |-------------------------------------------------------------------------- + | + | This option allows you to specify the default cookie key used by Sentry. + | + | Supported: string + | + */ + + 'key' => 'cartalyst_sentry', + + ), + + /* + |-------------------------------------------------------------------------- + | Groups + |-------------------------------------------------------------------------- + | + | Configuration specific to the group management component of Sentry. + | + */ + + 'groups' => array( + + /* + |-------------------------------------------------------------------------- + | Model + |-------------------------------------------------------------------------- + | + | When using the "eloquent" driver, we need to know which + | Eloquent models should be used throughout Sentry. + | + */ + + 'model' => 'Cartalyst\Sentry\Groups\Eloquent\Group', + + ), + + /* + |-------------------------------------------------------------------------- + | Users + |-------------------------------------------------------------------------- + | + | Configuration specific to the user management component of Sentry. + | + */ + + 'users' => array( + + /* + |-------------------------------------------------------------------------- + | Model + |-------------------------------------------------------------------------- + | + | When using the "eloquent" driver, we need to know which + | Eloquent models should be used throughout Sentry. + | + */ + + 'model' => 'Cartalyst\Sentry\Users\Eloquent\User', + + /* + |-------------------------------------------------------------------------- + | Login Attribute + |-------------------------------------------------------------------------- + | + | If you're using the "eloquent" driver and extending the base Eloquent + | model, we allow you to globally override the login attribute without + | even subclassing the model, simply by specifying the attribute below. + | + */ + + 'login_attribute' => 'email', + + ), + + /* + |-------------------------------------------------------------------------- + | User Groups Pivot Table + |-------------------------------------------------------------------------- + | + | When using the "eloquent" driver, you can specify the table name + | for the user groups pivot table. + | + | Default: users_groups + | + */ + + 'user_groups_pivot_table' => 'users_groups', + + /* + |-------------------------------------------------------------------------- + | Throttling + |-------------------------------------------------------------------------- + | + | Throttling is an optional security feature for authentication, which + | enables limiting of login attempts and the suspension & banning of users. + | + */ + + 'throttling' => array( + + /* + |-------------------------------------------------------------------------- + | Throttling + |-------------------------------------------------------------------------- + | + | Enable throttling or not. Throttling is where users are only allowed a + | certain number of login attempts before they are suspended. Suspension + | must be removed before a new login attempt is allowed. + | + */ + + 'enabled' => true, + + /* + |-------------------------------------------------------------------------- + | Model + |-------------------------------------------------------------------------- + | + | When using the "eloquent" driver, we need to know which + | Eloquent models should be used throughout Sentry. + | + */ + + 'model' => 'Cartalyst\Sentry\Throttling\Eloquent\Throttle', + + /* + |-------------------------------------------------------------------------- + | Attempts Limit + |-------------------------------------------------------------------------- + | + | When using the "eloquent" driver and extending the base Eloquent model, + | you have the option to globally set the login attempts. + | + | Supported: int + | + */ + + 'attempt_limit' => 5, + + /* + |-------------------------------------------------------------------------- + | Suspension Time + |-------------------------------------------------------------------------- + | + | When using the "eloquent" driver and extending the base Eloquent model, + | you have the option to globally set the suspension time, in minutes. + | + | Supported: int + | + */ + + 'suspension_time' => 15, + + ), + +); diff --git a/app/config/packages/mrjuliuss/syntara/breadcrumbs.php b/app/config/packages/mrjuliuss/syntara/breadcrumbs.php new file mode 100644 index 0000000..93ef064 --- /dev/null +++ b/app/config/packages/mrjuliuss/syntara/breadcrumbs.php @@ -0,0 +1,118 @@ + array( + array( + 'title' => trans('syntara::breadcrumbs.dashboard'), + 'link' => URL::current(), + 'icon' => 'glyphicon-home' + ) + ), + 'login' => array( + array( + 'title' => trans('syntara::breadcrumbs.login'), + 'link' => URL::route('getLogin'), + 'icon' => 'glyphicon-user' + ) + ), + 'users' => array( + array( + 'title' => trans('syntara::breadcrumbs.users'), + 'link' => URL::route('listUsers'), + 'icon' => 'glyphicon-user' + ) + ), + 'create_user' => array( + array( + 'title' => trans('syntara::breadcrumbs.users'), + 'link' => URL::route('listUsers'), + 'icon' => 'glyphicon-user' + ), + array( + 'title' => trans('syntara::breadcrumbs.new-user'), + 'link' => URL::current(), + 'icon' => 'glyphicon-plus-sign' + ) + ), + 'groups' => array( + array( + 'title' => trans('syntara::breadcrumbs.groups'), + 'link' => URL::route('listGroups'), + 'icon' => 'glyphicon-list-alt' + ) + ), + 'create_group' => array( + array( + 'title' => trans('syntara::breadcrumbs.groups'), + 'link' => URL::route('listGroups'), + 'icon' => 'glyphicon-list-alt' + ), + array( + 'title' => trans('syntara::breadcrumbs.new-group'), + 'link' => URL::current(), + 'icon' => 'glyphicon-plus-sign' + ) + ), + 'permissions' => array( + array( + 'title' => trans('syntara::breadcrumbs.permissions'), + 'link' => URL::route('listPermissions'), + 'icon' => 'glyphicon-ban-circle' + ) + ), + 'create_permission' => array( + array( + 'title' => trans('syntara::breadcrumbs.permissions'), + 'link' => URL::route('listPermissions'), + 'icon' => 'glyphicon-ban-circle' + ), + array( + 'title' => trans('syntara::breadcrumbs.new-permission'), + 'link' => URL::current(), + 'icon' => 'glyphicon-plus-sign' + ) + ), + 'allbooks' => array( + array( + 'title' => 'All Books', + 'link' => URL::route('book.all'), + 'icon' => 'glyphicon-align-justify' + ) + ), + 'editbook' => array( + array( + 'title' => 'All Books', + 'link' => URL::route('book.all'), + 'icon' => 'glyphicon-align-justify' + ), + array( + 'title' => 'Edit Book', + 'link' => URL::current(), + 'icon' => 'glyphicon-edit' + ) + ), + 'addbook' => array( + array( + 'title' => 'All Books', + 'link' => URL::route('book.all'), + 'icon' => 'glyphicon-align-justify' + ), + array( + 'title' => 'Add Book', + 'link' => URL::current(), + 'icon' => 'glyphicon-plus-sign' + ) + ), + 'add_category' => array( + array( + 'title' => 'All Books', + 'link' => URL::route('book.all'), + 'icon' => 'glyphicon-align-justify' + ), + array( + 'title' => 'Add Category', + 'link' => URL::current(), + 'icon' => 'glyphicon-plus-sign' + ) + ), +); \ No newline at end of file diff --git a/app/config/packages/mrjuliuss/syntara/config.php b/app/config/packages/mrjuliuss/syntara/config.php new file mode 100644 index 0000000..a9d4dc4 --- /dev/null +++ b/app/config/packages/mrjuliuss/syntara/config.php @@ -0,0 +1,26 @@ + 'dashboard', + + /** + * Language direction + * Values : ltr (default), rtl + */ + 'direction' => 'ltr', + + /** + * User activation : + * Values : auto (default), email + */ + 'user-activation' => 'auto', + + /** + * Number of item to show + * in /users /groups /permissions + */ + 'item-perge-page' => 20, +); \ No newline at end of file diff --git a/app/config/packages/mrjuliuss/syntara/mails.php b/app/config/packages/mrjuliuss/syntara/mails.php new file mode 100644 index 0000000..ca37749 --- /dev/null +++ b/app/config/packages/mrjuliuss/syntara/mails.php @@ -0,0 +1,22 @@ + 'Syntara', + + /** + * Admin mail + * use for mails + */ + 'email' => 'mail@localhost', + + /** + * View for user activation email + */ + 'user-activation-view' => 'syntara::mail.user-activation', + + 'user-activation-object' => 'Account activation' +); \ No newline at end of file diff --git a/app/config/packages/mrjuliuss/syntara/permissions.php b/app/config/packages/mrjuliuss/syntara/permissions.php new file mode 100644 index 0000000..7ae3214 --- /dev/null +++ b/app/config/packages/mrjuliuss/syntara/permissions.php @@ -0,0 +1,25 @@ + 'groups-management', + 'newGroupPost' => 'groups-management', + 'newGroup' => 'groups-management', + 'deleteGroup' => 'groups-management', + 'showGroup' => 'groups-management', + 'putGroup' => 'groups-management', + 'listUsers' => 'view-users-list', + 'deleteUsers' => 'delete-user', + 'newUser' => 'create-user', + 'newUserPost' => 'create-user', + 'showUser' => 'update-user-info', + 'putUser' => 'update-user-info', + 'putActivateUser' => 'update-user-info', + 'deleteUserGroup' => 'user-group-management', + 'addUserGroup' => 'user-group-management', + 'listPermissions' => 'permissions-management', + 'deletePermission' => 'permissions-management', + 'newPermission' => 'permissions-management', + 'newPermissionPost' => 'permissions-management', + 'showPermission' => 'permissions-management', + 'putPermission' => 'permissions-management' +); \ No newline at end of file diff --git a/app/config/packages/mrjuliuss/syntara/validator.php b/app/config/packages/mrjuliuss/syntara/validator.php new file mode 100644 index 0000000..f94201d --- /dev/null +++ b/app/config/packages/mrjuliuss/syntara/validator.php @@ -0,0 +1,32 @@ + array( + 'create' => array( + 'email' => array('required', 'email'), + 'pass' => array('required', 'min:6', 'max:255'), + 'username' => array('required', 'min:3', 'max:255', 'alpha'), + 'last_name' => array('min:3', 'max:255', 'alpha_dash'), + 'first_name' => array('min:3', 'max:255', 'alpha_dash'), + ), + 'update' => array( + 'email' => array('required', 'email'), + 'pass' => array('min:6', 'max:255'), + 'username' => array('required', 'min:3', 'max:255', 'alpha'), + 'last_name' => array('min:3', 'max:255', 'alpha_dash'), + 'first_name' => array('min:3', 'max:255', 'alpha_dash'), + ), + 'login' => array( + 'email' => array('required', 'email'), + 'pass' => array('required', 'min:6', 'max:255'), + ), + ), + 'group' => array( + 'groupname' => array('required', 'min:3', 'max:16', 'alpha'), + ), + 'permission' => array( + 'name' => array('required', 'min:3', 'max:100'), + 'value' => array('required', 'alpha_dash', 'min:3', 'max:100'), + 'description' => array('required', 'min:3', 'max:255') + ), +); \ No newline at end of file diff --git a/app/config/packages/mrjuliuss/syntara/views.php b/app/config/packages/mrjuliuss/syntara/views.php new file mode 100644 index 0000000..2f6daa3 --- /dev/null +++ b/app/config/packages/mrjuliuss/syntara/views.php @@ -0,0 +1,33 @@ + 'syntara::layouts.dashboard.master', + 'header' => 'syntara::layouts.dashboard.header', + + // dashboard + 'dashboard-index' => 'syntara::dashboard.index', + 'login' => 'user.login', + 'error' => 'syntara::dashboard.error', + + // users + 'users-index' => 'syntara::user.index-user', + 'users-list' => 'syntara::user.list-users', + 'user-create' => 'syntara::user.new-user', + 'user-informations' => 'syntara::user.user-informations', + 'user-profile' => 'syntara::user.show-user', + 'user-activation' => 'syntara::user.activation', + + // groups + 'groups-index' => 'syntara::group.index-group', + 'groups-list' => 'syntara::group.list-groups', + 'group-create' => 'syntara::group.new-group', + 'users-in-group' => 'syntara::group.list-users-group', + 'group-edit' => 'syntara::group.show-group', + + // permissions + 'permissions-index' => 'syntara::permission.index-permission', + 'permissions-list' => 'syntara::permission.list-permissions', + 'permission-create' => 'syntara::permission.new-permission', + 'permission-edit' => 'syntara::permission.show-permission', +); \ No newline at end of file diff --git a/app/controllers/CategoryController.php b/app/controllers/CategoryController.php new file mode 100644 index 0000000..fba1019 --- /dev/null +++ b/app/controllers/CategoryController.php @@ -0,0 +1,39 @@ + 'required', + ); + + $category_data = Input::all(); + + $validation = Validator::make($category_data, $rules); + + if($validation->fails()) { + return Redirect::back() + ->withErrors($validation) + ->withInput($category_data); + }else { + + $category = New Category; + $category->name = Input::get('category-name'); + $success = $category->save(); + + if($success){ + return Redirect::route('category.show') + ->with('message' , 'successfully Add New Book!'); + } + + } + } + + $this->layout = View::make('dashboard.category'); + $this->layout->breadcrumb = Config::get('syntara::breadcrumbs.add_category'); + } + + +} \ No newline at end of file diff --git a/app/database/migrations/2014_05_19_115839_create_categories_table.php b/app/database/migrations/2014_05_19_115839_create_categories_table.php new file mode 100644 index 0000000..0799cf4 --- /dev/null +++ b/app/database/migrations/2014_05_19_115839_create_categories_table.php @@ -0,0 +1,33 @@ +increments('id'); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('categories'); + } + +} diff --git a/app/helper/AppHelper.php b/app/helper/AppHelper.php new file mode 100644 index 0000000..45bbb39 --- /dev/null +++ b/app/helper/AppHelper.php @@ -0,0 +1,14 @@ + 'ခ်စ္မ', + 'buy-now' => 'ဂ်ပန္ဝယ္မယ္ ', + + ); \ No newline at end of file diff --git a/app/lang/en/all.php b/app/lang/en/all.php new file mode 100644 index 0000000..a406737 --- /dev/null +++ b/app/lang/en/all.php @@ -0,0 +1,23 @@ + 'LarBookShop', + 'buy-now' => 'Buy it Now', + + //Syntara + 'remember' => 'Remember me', + 'signin' => 'Sign in', + 'email' => 'Email', + 'password' => 'Password', + 'error' => 'Error !', + 'search' => 'Search', + 'confirm-delete-title' => 'Confirm delete', + 'confirm-delete-message' => 'Are you sure you want to delete these items ?', + 'delete' => 'Delete', + 'new' => 'New', + 'name' => 'Name', + 'show' => 'Show', + 'create' => 'Create', + 'update' => 'Update', + 'yes' => 'Yes', + 'no' => 'No', +); \ No newline at end of file diff --git a/app/lang/jp/all.php b/app/lang/jp/all.php new file mode 100644 index 0000000..14b5a8f --- /dev/null +++ b/app/lang/jp/all.php @@ -0,0 +1,6 @@ + 'ဂ်ပန္', + 'buy-now' => 'ဂ်ပန္ဝယ္မယ္ ', + + ); \ No newline at end of file diff --git a/app/lang/mm/all.php b/app/lang/mm/all.php new file mode 100644 index 0000000..22c056d --- /dev/null +++ b/app/lang/mm/all.php @@ -0,0 +1,25 @@ + 'လာဘုတ္ေရွာ့', + 'buy-now' => 'ဝယ္ရန္', + + //Syntara + 'remember' => 'Remember me', + 'signin' => 'Sign in', + 'email' => 'Email', + 'password' => 'Password', + 'error' => 'Error !', + 'search' => 'Search', + 'confirm-delete-title' => 'Confirm delete', + 'confirm-delete-message' => 'Are you sure you want to delete these items ?', + 'delete' => 'Delete', + 'new' => 'New', + 'name' => 'Name', + 'show' => 'Show', + 'create' => 'Create', + 'update' => 'Update', + 'yes' => 'Yes', + 'no' => 'No', + + +); \ No newline at end of file diff --git a/app/lang/mm/validation.php b/app/lang/mm/validation.php new file mode 100644 index 0000000..7c67d92 --- /dev/null +++ b/app/lang/mm/validation.php @@ -0,0 +1,99 @@ + "The :attribute must be accepted.", + "active_url" => "The :attribute is not a valid URL.", + "after" => "The :attribute must be a date after :date.", + "alpha" => "The :attribute may only contain letters.", + "alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.", + "alpha_num" => "The :attribute may only contain letters and numbers.", + "array" => "The :attribute must be an array.", + "before" => "The :attribute must be a date before :date.", + "between" => array( + "numeric" => "The :attribute must be between :min and :max.", + "file" => "The :attribute must be between :min and :max kilobytes.", + "string" => "The :attribute must be between :min and :max characters.", + "array" => "The :attribute must have between :min and :max items.", + ), + "confirmed" => "The :attribute confirmation does not match.", + "date" => "The :attribute is not a valid date.", + "date_format" => "The :attribute does not match the format :format.", + "different" => "The :attribute and :other must be different.", + "digits" => "The :attribute must be :digits digits.", + "digits_between" => "The :attribute must be between :min and :max digits.", + "email" => "The :attribute must be a valid email address.", + "exists" => "The selected :attribute is invalid.", + "image" => "The :attribute must be an image.", + "in" => "The selected :attribute is invalid.", + "integer" => "The :attribute must be an integer.", + "ip" => "The :attribute must be a valid IP address.", + "max" => array( + "numeric" => "The :attribute may not be greater than :max.", + "file" => "The :attribute may not be greater than :max kilobytes.", + "string" => "The :attribute may not be greater than :max characters.", + "array" => "The :attribute may not have more than :max items.", + ), + "mimes" => "The :attribute must be a file of type: :values.", + "min" => array( + "numeric" => "The :attribute must be at least :min.", + "file" => "The :attribute must be at least :min kilobytes.", + "string" => "The :attribute must be at least :min characters.", + "array" => "The :attribute must have at least :min items.", + ), + "not_in" => "The selected :attribute is invalid.", + "numeric" => "The :attribute must be a number.", + "regex" => "The :attribute format is invalid.", + "required" => "The :attribute field is required.", + "required_if" => "The :attribute field is required when :other is :value.", + "required_with" => "The :attribute field is required when :values is present.", + "required_without" => "The :attribute field is required when :values is not present.", + "required_without_all" => "The :attribute field is required when none of :values are present.", + "same" => "The :attribute and :other must match.", + "size" => array( + "numeric" => "The :attribute must be :size.", + "file" => "The :attribute must be :size kilobytes.", + "string" => "The :attribute must be :size characters.", + "array" => "The :attribute must contain :size items.", + ), + "unique" => "The :attribute has already been taken.", + "url" => "The :attribute format is invalid.", + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => array(), + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => array(), + +); diff --git a/app/lang/ygn/all.php b/app/lang/ygn/all.php new file mode 100644 index 0000000..7694811 --- /dev/null +++ b/app/lang/ygn/all.php @@ -0,0 +1,6 @@ + 'ရန္ကုန္', + 'buy-now' => 'ရန္ကုန္ဝယ္မယ္', + + ); \ No newline at end of file diff --git a/app/models/Category.php b/app/models/Category.php new file mode 100644 index 0000000..e38a31a --- /dev/null +++ b/app/models/Category.php @@ -0,0 +1,11 @@ +hasMany('Book'); + } + +} diff --git a/app/views/503.blade.php b/app/views/503.blade.php new file mode 100644 index 0000000..ab6d21c --- /dev/null +++ b/app/views/503.blade.php @@ -0,0 +1,20 @@ + + +
+ +Product | +Qty | +Item Price | +Subtotal | +
---|---|---|---|
+ name;?> +options->has('size') ? $row->options->size : '');?> + |
+ + | $price;?> | +$subtotal;?> | +
We are in full Chinese Cultural Revolution, an upside down world where the rich are to be condemned by the humblest and also the most illustrious.
\r\n\r\nJing Qiu is the daughter of a conservative family and, to prove his loyalty to the regime, have', 'AI MI', 'LOVE UNDER THE HAWTHORN.jpg', '222', 'SUM', '2014-05-02 23:53:50', '2014-05-15 05:01:06'), +(15, '2', 'BERKELEY SCHOOL OF LITERATURE 1980', '
Berkeley, California, Fall 1980.
\r\n\r\nAt the peak of his career and after years of negative, Julio Cortázar accepted to a college course of two months in the United States.
\r\n\r\nAs expected, this will be no lectures but a series of lec', 'Julio Cortazar', 'BERKELEY SCHOOL OF LITERATURE 1980.jpg', '12', 'RUSTIC', '2014-05-03 00:26:12', '2014-05-15 05:00:23'), +(16, '3', 'Liberaij', '
On November 5, 1965, after facing more than 350 police officers for 16 hours, Argentine Marcelo Brignone assailants, and Roberto Carlos Alberto Mereles Dorda fell Liberaij killed in the building, in the heart of Montevideo, in the street Julio Herrera ', 'HABERKORN, LEONARDO', 'Liberaij.jpg', '440.00', 'RUSTIC', '2014-05-03 00:27:33', '2014-05-03 00:27:33'), +(17, '4', 'LAS BATALLAS DE ARTIGAS 1811-1820', '
Why Artigas lost the war against the Portuguese? Was it a bad strategist or succumbed to larger or better equipped forces? Unravel this mystery is the aim of this book, call to awaken the interest of history buffs and those interested in the<', 'JUAN CARLOS LUZURIAGA', 'LAS BATALLAS DE ARTIGAS 1811-1820.jpg', '232', 'RUSTIC', '2014-05-03 00:28:37', '2014-05-15 05:00:28'), +(18, '2', 'CAUDILLOS', '
In his preface, Lincoln R.
\r\n\r\nMaiztegui Homes and presents the argument that led him to select twenty names make up the first installment of this work.
\r\n\r\nThe selection includes characters that are recognized as naturally Caudillos our hi', 'MAIZTEGUI HOUSES', 'CAUDILLOS.png', '560.00', 'RUSTIC', '2014-05-03 00:29:28', '2014-05-03 00:29:28'), +(19, '1', 'CHRONICLE OF A BAD FRIEND', '
"And wondered what cancer is.
\r\n\r\nThe first definition that came to mind was: "A bad friend."
\r\n\r\nComes without being called and remains without an invitation.
\r\n\r\nCorrected: sometimes inadvertently, not only call him b', 'Dr. Vazquez', 'CHRONICLE OF A BAD FRIEND.jpg', '360.00', 'Rustica', '2014-05-03 00:32:39', '2014-05-03 00:32:39'), +(20, '2', 'Unsaid about addiction', '
Several years ago changed the orange ball through the letters.
\r\n\r\n"I did not say" is the title of the book that will surely mean a milestone in the life of its author, who is encouraged to investigate, gathering experiences and opinion', 'TATO LOPEZ', 'Unsaid about addiction.jpg', '390', 'TATO LOPEZ', '2014-05-03 00:34:01', '2014-05-03 00:34:01'), +(21, '1', 'THE BIPOLAR ARGENTINA', '
The title of this book suggests a diagnosis.
\r\n\r\nThe basic symptoms of bipolar disorder are dramatic changes in a short period.
\r\n\r\nThis is the "disease" of society and Argentina hypothesis that Manuel Mora y Araujo uses to addres', 'MANUEL MORA Y ARAUJO ', 'THE BIPOLAR ARGENTINA.jpg', '390', 'RUSTIC', '2014-05-03 00:36:08', '2014-05-03 00:36:08'), +(22, '1', 'IN SEARCH OF MODERN CHINA', '
Become not only a demographic giant, but an operator of the first order, for years China plays a decisive role in the world order.
\r\n\r\nThis book offers a comprehensive summary of all that the Western reader is interested in knowing about the hist', 'JONATHAN D. SPENCE ', 'IN SEARCH OF MODERN CHINA.jpg', '1072.00', 'RUSTIC', '2014-05-03 00:37:29', '2014-05-03 00:37:29'), +(23, '2', 'THINGS HAPPEN', '
The analyst Jorge Bafico nude in a book that crosses the barriers of gender and installed between literature and psychoanalysis.
\r\n\r\nThe protagonists are he and his patients, those montevideanos we met every day in the streets without even notici', 'JORGE BAFICO ', 'COSAS QUE PASAN.jpg', '380', 'RUSTIC', '2014-05-03 05:05:15', '2014-05-03 05:05:15'), +(24, '3', 'Construir al enemigo', '
In his preface, Umberto Eco speaks of these pieces as "texts used" functionality, ie born of a written request or pure entertainment.
\r\n\r\nTrue, perocuando who works in this way is a great teacher, every sentence lee.El little lesson for', 'UMBERTO ECO ', 'Build the enemy.jpg', '490', 'Paperback', '2014-05-03 05:07:07', '2014-05-18 08:42:05'),
+(28, '4', 'MeMe Hlaine Zan', 'Hlaine Zan is my love , She is not for sale.', 'hlainezin', 'Screenshot from 2014-05-18 12:25:15.png', '404', 'yethusoe', '2014-05-18 12:08:08', '2014-05-18 12:08:08'),
+(30, '6', 'test', 'asfasfasf', 'asfasdfasdf', '10365930_1416829571923520_7320714253025547059_n.jpg', '232323', '232323sdfasfdasf', '2014-05-20 06:26:55', '2014-05-20 06:30:22');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `categories`
+--
+
+CREATE TABLE IF NOT EXISTS `categories` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=8 ;
+
+--
+-- Dumping data for table `categories`
+--
+
+INSERT INTO `categories` (`id`, `name`, `created_at`, `updated_at`) VALUES
+(1, 'Root', '2014-05-20 05:59:14', '2014-05-20 05:59:14'),
+(2, 'Cook', '2014-05-20 05:29:03', '2014-05-20 05:29:03'),
+(3, 'Horror', '2014-05-20 05:29:07', '2014-05-20 05:29:07'),
+(4, 'Humor', '2014-05-20 05:29:10', '2014-05-20 05:29:10'),
+(5, 'Musics', '2014-05-20 05:29:14', '2014-05-20 05:29:14'),
+(6, 'Healthy', '2014-05-20 05:29:19', '2014-05-20 05:29:19'),
+(7, 'Software', '2014-05-20 05:28:58', '2014-05-20 05:28:58');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `groups`
+--
+
+CREATE TABLE IF NOT EXISTS `groups` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `permissions` text COLLATE utf8_unicode_ci,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `groups_name_unique` (`name`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `groups`
+--
+
+INSERT INTO `groups` (`id`, `name`, `permissions`, `created_at`, `updated_at`) VALUES
+(1, 'Admin', '{"superuser":1}', '2014-05-20 05:26:52', '2014-05-20 05:26:52');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `migrations`
+--
+
+CREATE TABLE IF NOT EXISTS `migrations` (
+ `migration` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `batch` int(11) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+
+--
+-- Dumping data for table `migrations`
+--
+
+INSERT INTO `migrations` (`migration`, `batch`) VALUES
+('2012_12_06_225921_migration_cartalyst_sentry_install_users', 1),
+('2012_12_06_225929_migration_cartalyst_sentry_install_groups', 1),
+('2012_12_06_225945_migration_cartalyst_sentry_install_users_groups_pivot', 1),
+('2012_12_06_225988_migration_cartalyst_sentry_install_throttle', 1),
+('2013_07_16_172358_alter_user_table', 2),
+('2013_09_02_072804_create_permission_table', 2),
+('2013_09_08_191339_update_admin_group_permission', 2),
+('2014_03_18_104453_create_books_table', 3),
+('2014_05_19_115839_create_categories_table', 3);
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `permissions`
+--
+
+CREATE TABLE IF NOT EXISTS `permissions` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
+ `value` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
+ `description` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `permissions_value_unique` (`value`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;
+
+--
+-- Dumping data for table `permissions`
+--
+
+INSERT INTO `permissions` (`id`, `name`, `value`, `description`, `created_at`, `updated_at`) VALUES
+(1, 'Super User', 'superuser', 'All permissions', '2014-05-20 05:26:52', '2014-05-20 05:26:52'),
+(2, 'List Users', 'view-users-list', 'View the list of users', '2014-05-20 05:26:52', '2014-05-20 05:26:52'),
+(3, 'Create user', 'create-user', 'Create new user', '2014-05-20 05:26:52', '2014-05-20 05:26:52'),
+(4, 'Delete user', 'delete-user', 'Delete a user', '2014-05-20 05:26:52', '2014-05-20 05:26:52'),
+(5, 'Update user', 'update-user-info', 'Update a user profile', '2014-05-20 05:26:52', '2014-05-20 05:26:52'),
+(6, 'Update user group', 'user-group-management', 'Add/Remove a user in a group', '2014-05-20 05:26:52', '2014-05-20 05:26:52'),
+(7, 'Groups management', 'groups-management', 'Manage group (CRUD)', '2014-05-20 05:26:52', '2014-05-20 05:26:52'),
+(8, 'Permissions management', 'permissions-management', 'Manage permissions (CRUD)', '2014-05-20 05:26:52', '2014-05-20 05:26:52');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `throttle`
+--
+
+CREATE TABLE IF NOT EXISTS `throttle` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `user_id` int(10) unsigned DEFAULT NULL,
+ `ip_address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `attempts` int(11) NOT NULL DEFAULT '0',
+ `suspended` tinyint(1) NOT NULL DEFAULT '0',
+ `banned` tinyint(1) NOT NULL DEFAULT '0',
+ `last_attempt_at` timestamp NULL DEFAULT NULL,
+ `suspended_at` timestamp NULL DEFAULT NULL,
+ `banned_at` timestamp NULL DEFAULT NULL,
+ PRIMARY KEY (`id`),
+ KEY `throttle_user_id_index` (`user_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `throttle`
+--
+
+INSERT INTO `throttle` (`id`, `user_id`, `ip_address`, `attempts`, `suspended`, `banned`, `last_attempt_at`, `suspended_at`, `banned_at`) VALUES
+(1, 1, '127.0.0.1', 0, 0, 0, NULL, NULL, NULL);
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `users`
+--
+
+CREATE TABLE IF NOT EXISTS `users` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
+ `permissions` text COLLATE utf8_unicode_ci,
+ `activated` tinyint(1) NOT NULL DEFAULT '0',
+ `activation_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `activated_at` timestamp NULL DEFAULT NULL,
+ `last_login` timestamp NULL DEFAULT NULL,
+ `persist_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `reset_password_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `first_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `last_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
+ `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `users_email_unique` (`email`),
+ UNIQUE KEY `users_username_unique` (`username`),
+ KEY `users_activation_code_index` (`activation_code`),
+ KEY `users_reset_password_code_index` (`reset_password_code`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
+
+--
+-- Dumping data for table `users`
+--
+
+INSERT INTO `users` (`id`, `email`, `username`, `password`, `permissions`, `activated`, `activation_code`, `activated_at`, `last_login`, `persist_code`, `reset_password_code`, `first_name`, `last_name`, `created_at`, `updated_at`) VALUES
+(1, 'mr.yethusoe@gmail.com', 'yethusoe', '$2y$10$/pY3wilxxqvZSGya8wdkm.4VsgiEtCawkuQDYFciMP8reB7ZwchEm', NULL, 1, NULL, '2014-05-20 05:26:59', '2014-05-20 05:28:20', '$2y$10$nuxdkg/Z/gKDc4XXlo8SruOkSWU8N23HDrWSEUrNh.5tz94Ec/6uG', NULL, NULL, NULL, '2014-05-20 05:26:59', '2014-05-20 05:28:20');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `users_groups`
+--
+
+CREATE TABLE IF NOT EXISTS `users_groups` (
+ `user_id` int(10) unsigned NOT NULL,
+ `group_id` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`user_id`,`group_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+
+--
+-- Dumping data for table `users_groups`
+--
+
+INSERT INTO `users_groups` (`user_id`, `group_id`) VALUES
+(1, 1);
+
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
diff --git a/public/css/animate.css b/public/css/animate.css
new file mode 100644
index 0000000..60f0c96
--- /dev/null
+++ b/public/css/animate.css
@@ -0,0 +1,2744 @@
+@charset "UTF-8";
+
+
+/*!
+Animate.css - http://daneden.me/animate
+Licensed under the MIT license
+
+Copyright (c) 2013 Daniel Eden
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+.animated {
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+}
+
+.animated.hinge {
+ -webkit-animation-duration: 2s;
+ animation-duration: 2s;
+}
+
+@-webkit-keyframes bounce {
+ 0%, 20%, 50%, 80%, 100% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 40% {
+ -webkit-transform: translateY(-30px);
+ transform: translateY(-30px);
+ }
+
+ 60% {
+ -webkit-transform: translateY(-15px);
+ transform: translateY(-15px);
+ }
+}
+
+@keyframes bounce {
+ 0%, 20%, 50%, 80%, 100% {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 40% {
+ -webkit-transform: translateY(-30px);
+ -ms-transform: translateY(-30px);
+ transform: translateY(-30px);
+ }
+
+ 60% {
+ -webkit-transform: translateY(-15px);
+ -ms-transform: translateY(-15px);
+ transform: translateY(-15px);
+ }
+}
+
+.bounce {
+ -webkit-animation-name: bounce;
+ animation-name: bounce;
+}
+
+@-webkit-keyframes flash {
+ 0%, 50%, 100% {
+ opacity: 1;
+ }
+
+ 25%, 75% {
+ opacity: 0;
+ }
+}
+
+@keyframes flash {
+ 0%, 50%, 100% {
+ opacity: 1;
+ }
+
+ 25%, 75% {
+ opacity: 0;
+ }
+}
+
+.flash {
+ -webkit-animation-name: flash;
+ animation-name: flash;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes pulse {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+
+ 50% {
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+ }
+
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+@keyframes pulse {
+ 0% {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ }
+
+ 50% {
+ -webkit-transform: scale(1.1);
+ -ms-transform: scale(1.1);
+ transform: scale(1.1);
+ }
+
+ 100% {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+.pulse {
+ -webkit-animation-name: pulse;
+ animation-name: pulse;
+}
+
+@-webkit-keyframes shake {
+ 0%, 100% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 10%, 30%, 50%, 70%, 90% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px);
+ }
+
+ 20%, 40%, 60%, 80% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px);
+ }
+}
+
+@keyframes shake {
+ 0%, 100% {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 10%, 30%, 50%, 70%, 90% {
+ -webkit-transform: translateX(-10px);
+ -ms-transform: translateX(-10px);
+ transform: translateX(-10px);
+ }
+
+ 20%, 40%, 60%, 80% {
+ -webkit-transform: translateX(10px);
+ -ms-transform: translateX(10px);
+ transform: translateX(10px);
+ }
+}
+
+.shake {
+ -webkit-animation-name: shake;
+ animation-name: shake;
+}
+
+@-webkit-keyframes swing {
+ 20% {
+ -webkit-transform: rotate(15deg);
+ transform: rotate(15deg);
+ }
+
+ 40% {
+ -webkit-transform: rotate(-10deg);
+ transform: rotate(-10deg);
+ }
+
+ 60% {
+ -webkit-transform: rotate(5deg);
+ transform: rotate(5deg);
+ }
+
+ 80% {
+ -webkit-transform: rotate(-5deg);
+ transform: rotate(-5deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+}
+
+@keyframes swing {
+ 20% {
+ -webkit-transform: rotate(15deg);
+ -ms-transform: rotate(15deg);
+ transform: rotate(15deg);
+ }
+
+ 40% {
+ -webkit-transform: rotate(-10deg);
+ -ms-transform: rotate(-10deg);
+ transform: rotate(-10deg);
+ }
+
+ 60% {
+ -webkit-transform: rotate(5deg);
+ -ms-transform: rotate(5deg);
+ transform: rotate(5deg);
+ }
+
+ 80% {
+ -webkit-transform: rotate(-5deg);
+ -ms-transform: rotate(-5deg);
+ transform: rotate(-5deg);
+ }
+
+ 100% {
+ -webkit-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+}
+
+.swing {
+ -webkit-transform-origin: top center;
+ -ms-transform-origin: top center;
+ transform-origin: top center;
+ -webkit-animation-name: swing;
+ animation-name: swing;
+}
+
+@-webkit-keyframes tada {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+
+ 10%, 20% {
+ -webkit-transform: scale(0.9) rotate(-3deg);
+ transform: scale(0.9) rotate(-3deg);
+ }
+
+ 30%, 50%, 70%, 90% {
+ -webkit-transform: scale(1.1) rotate(3deg);
+ transform: scale(1.1) rotate(3deg);
+ }
+
+ 40%, 60%, 80% {
+ -webkit-transform: scale(1.1) rotate(-3deg);
+ transform: scale(1.1) rotate(-3deg);
+ }
+
+ 100% {
+ -webkit-transform: scale(1) rotate(0);
+ transform: scale(1) rotate(0);
+ }
+}
+
+@keyframes tada {
+ 0% {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ }
+
+ 10%, 20% {
+ -webkit-transform: scale(0.9) rotate(-3deg);
+ -ms-transform: scale(0.9) rotate(-3deg);
+ transform: scale(0.9) rotate(-3deg);
+ }
+
+ 30%, 50%, 70%, 90% {
+ -webkit-transform: scale(1.1) rotate(3deg);
+ -ms-transform: scale(1.1) rotate(3deg);
+ transform: scale(1.1) rotate(3deg);
+ }
+
+ 40%, 60%, 80% {
+ -webkit-transform: scale(1.1) rotate(-3deg);
+ -ms-transform: scale(1.1) rotate(-3deg);
+ transform: scale(1.1) rotate(-3deg);
+ }
+
+ 100% {
+ -webkit-transform: scale(1) rotate(0);
+ -ms-transform: scale(1) rotate(0);
+ transform: scale(1) rotate(0);
+ }
+}
+
+.tada {
+ -webkit-animation-name: tada;
+ animation-name: tada;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes wobble {
+ 0% {
+ -webkit-transform: translateX(0%);
+ transform: translateX(0%);
+ }
+
+ 15% {
+ -webkit-transform: translateX(-25%) rotate(-5deg);
+ transform: translateX(-25%) rotate(-5deg);
+ }
+
+ 30% {
+ -webkit-transform: translateX(20%) rotate(3deg);
+ transform: translateX(20%) rotate(3deg);
+ }
+
+ 45% {
+ -webkit-transform: translateX(-15%) rotate(-3deg);
+ transform: translateX(-15%) rotate(-3deg);
+ }
+
+ 60% {
+ -webkit-transform: translateX(10%) rotate(2deg);
+ transform: translateX(10%) rotate(2deg);
+ }
+
+ 75% {
+ -webkit-transform: translateX(-5%) rotate(-1deg);
+ transform: translateX(-5%) rotate(-1deg);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0%);
+ transform: translateX(0%);
+ }
+}
+
+@keyframes wobble {
+ 0% {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ }
+
+ 15% {
+ -webkit-transform: translateX(-25%) rotate(-5deg);
+ -ms-transform: translateX(-25%) rotate(-5deg);
+ transform: translateX(-25%) rotate(-5deg);
+ }
+
+ 30% {
+ -webkit-transform: translateX(20%) rotate(3deg);
+ -ms-transform: translateX(20%) rotate(3deg);
+ transform: translateX(20%) rotate(3deg);
+ }
+
+ 45% {
+ -webkit-transform: translateX(-15%) rotate(-3deg);
+ -ms-transform: translateX(-15%) rotate(-3deg);
+ transform: translateX(-15%) rotate(-3deg);
+ }
+
+ 60% {
+ -webkit-transform: translateX(10%) rotate(2deg);
+ -ms-transform: translateX(10%) rotate(2deg);
+ transform: translateX(10%) rotate(2deg);
+ }
+
+ 75% {
+ -webkit-transform: translateX(-5%) rotate(-1deg);
+ -ms-transform: translateX(-5%) rotate(-1deg);
+ transform: translateX(-5%) rotate(-1deg);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ }
+}
+
+.wobble {
+ -webkit-animation-name: wobble;
+ animation-name: wobble;
+}
+
+@-webkit-keyframes bounceIn {
+ 0% {
+ opacity: 0;
+ -webkit-transform: scale(.3);
+ transform: scale(.3);
+ }
+
+ 50% {
+ opacity: 1;
+ -webkit-transform: scale(1.05);
+ transform: scale(1.05);
+ }
+
+ 70% {
+ -webkit-transform: scale(.9);
+ transform: scale(.9);
+ }
+
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+@keyframes bounceIn {
+ 0% {
+ opacity: 0;
+ -webkit-transform: scale(.3);
+ -ms-transform: scale(.3);
+ transform: scale(.3);
+ }
+
+ 50% {
+ opacity: 1;
+ -webkit-transform: scale(1.05);
+ -ms-transform: scale(1.05);
+ transform: scale(1.05);
+ }
+
+ 70% {
+ -webkit-transform: scale(.9);
+ -ms-transform: scale(.9);
+ transform: scale(.9);
+ }
+
+ 100% {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+.bounceIn {
+ -webkit-animation-name: bounceIn;
+ animation-name: bounceIn;
+}
+
+@-webkit-keyframes bounceInDown {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(-2000px);
+ transform: translateY(-2000px);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translateY(30px);
+ transform: translateY(30px);
+ }
+
+ 80% {
+ -webkit-transform: translateY(-10px);
+ transform: translateY(-10px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+@keyframes bounceInDown {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(-2000px);
+ -ms-transform: translateY(-2000px);
+ transform: translateY(-2000px);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translateY(30px);
+ -ms-transform: translateY(30px);
+ transform: translateY(30px);
+ }
+
+ 80% {
+ -webkit-transform: translateY(-10px);
+ -ms-transform: translateY(-10px);
+ transform: translateY(-10px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+.bounceInDown {
+ -webkit-animation-name: bounceInDown;
+ animation-name: bounceInDown;
+}
+
+@-webkit-keyframes bounceInLeft {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(-2000px);
+ transform: translateX(-2000px);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translateX(30px);
+ transform: translateX(30px);
+ }
+
+ 80% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+@keyframes bounceInLeft {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(-2000px);
+ -ms-transform: translateX(-2000px);
+ transform: translateX(-2000px);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translateX(30px);
+ -ms-transform: translateX(30px);
+ transform: translateX(30px);
+ }
+
+ 80% {
+ -webkit-transform: translateX(-10px);
+ -ms-transform: translateX(-10px);
+ transform: translateX(-10px);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+.bounceInLeft {
+ -webkit-animation-name: bounceInLeft;
+ animation-name: bounceInLeft;
+}
+
+@-webkit-keyframes bounceInRight {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(2000px);
+ transform: translateX(2000px);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translateX(-30px);
+ transform: translateX(-30px);
+ }
+
+ 80% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+@keyframes bounceInRight {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(2000px);
+ -ms-transform: translateX(2000px);
+ transform: translateX(2000px);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translateX(-30px);
+ -ms-transform: translateX(-30px);
+ transform: translateX(-30px);
+ }
+
+ 80% {
+ -webkit-transform: translateX(10px);
+ -ms-transform: translateX(10px);
+ transform: translateX(10px);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+.bounceInRight {
+ -webkit-animation-name: bounceInRight;
+ animation-name: bounceInRight;
+}
+
+@-webkit-keyframes bounceInUp {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(2000px);
+ transform: translateY(2000px);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translateY(-30px);
+ transform: translateY(-30px);
+ }
+
+ 80% {
+ -webkit-transform: translateY(10px);
+ transform: translateY(10px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+@keyframes bounceInUp {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(2000px);
+ -ms-transform: translateY(2000px);
+ transform: translateY(2000px);
+ }
+
+ 60% {
+ opacity: 1;
+ -webkit-transform: translateY(-30px);
+ -ms-transform: translateY(-30px);
+ transform: translateY(-30px);
+ }
+
+ 80% {
+ -webkit-transform: translateY(10px);
+ -ms-transform: translateY(10px);
+ transform: translateY(10px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+.bounceInUp {
+ -webkit-animation-name: bounceInUp;
+ animation-name: bounceInUp;
+}
+
+@-webkit-keyframes bounceOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+
+ 25% {
+ -webkit-transform: scale(.95);
+ transform: scale(.95);
+ }
+
+ 50% {
+ opacity: 1;
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: scale(.3);
+ transform: scale(.3);
+ }
+}
+
+@keyframes bounceOut {
+ 0% {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ }
+
+ 25% {
+ -webkit-transform: scale(.95);
+ -ms-transform: scale(.95);
+ transform: scale(.95);
+ }
+
+ 50% {
+ opacity: 1;
+ -webkit-transform: scale(1.1);
+ -ms-transform: scale(1.1);
+ transform: scale(1.1);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: scale(.3);
+ -ms-transform: scale(.3);
+ transform: scale(.3);
+ }
+}
+
+.bounceOut {
+ -webkit-animation-name: bounceOut;
+ animation-name: bounceOut;
+}
+
+@-webkit-keyframes bounceOutDown {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 20% {
+ opacity: 1;
+ -webkit-transform: translateY(-20px);
+ transform: translateY(-20px);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(2000px);
+ transform: translateY(2000px);
+ }
+}
+
+@keyframes bounceOutDown {
+ 0% {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 20% {
+ opacity: 1;
+ -webkit-transform: translateY(-20px);
+ -ms-transform: translateY(-20px);
+ transform: translateY(-20px);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(2000px);
+ -ms-transform: translateY(2000px);
+ transform: translateY(2000px);
+ }
+}
+
+.bounceOutDown {
+ -webkit-animation-name: bounceOutDown;
+ animation-name: bounceOutDown;
+}
+
+@-webkit-keyframes bounceOutLeft {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 20% {
+ opacity: 1;
+ -webkit-transform: translateX(20px);
+ transform: translateX(20px);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(-2000px);
+ transform: translateX(-2000px);
+ }
+}
+
+@keyframes bounceOutLeft {
+ 0% {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 20% {
+ opacity: 1;
+ -webkit-transform: translateX(20px);
+ -ms-transform: translateX(20px);
+ transform: translateX(20px);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(-2000px);
+ -ms-transform: translateX(-2000px);
+ transform: translateX(-2000px);
+ }
+}
+
+.bounceOutLeft {
+ -webkit-animation-name: bounceOutLeft;
+ animation-name: bounceOutLeft;
+}
+
+@-webkit-keyframes bounceOutRight {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 20% {
+ opacity: 1;
+ -webkit-transform: translateX(-20px);
+ transform: translateX(-20px);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(2000px);
+ transform: translateX(2000px);
+ }
+}
+
+@keyframes bounceOutRight {
+ 0% {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 20% {
+ opacity: 1;
+ -webkit-transform: translateX(-20px);
+ -ms-transform: translateX(-20px);
+ transform: translateX(-20px);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(2000px);
+ -ms-transform: translateX(2000px);
+ transform: translateX(2000px);
+ }
+}
+
+.bounceOutRight {
+ -webkit-animation-name: bounceOutRight;
+ animation-name: bounceOutRight;
+}
+
+@-webkit-keyframes bounceOutUp {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 20% {
+ opacity: 1;
+ -webkit-transform: translateY(20px);
+ transform: translateY(20px);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(-2000px);
+ transform: translateY(-2000px);
+ }
+}
+
+@keyframes bounceOutUp {
+ 0% {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 20% {
+ opacity: 1;
+ -webkit-transform: translateY(20px);
+ -ms-transform: translateY(20px);
+ transform: translateY(20px);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(-2000px);
+ -ms-transform: translateY(-2000px);
+ transform: translateY(-2000px);
+ }
+}
+
+.bounceOutUp {
+ -webkit-animation-name: bounceOutUp;
+ animation-name: bounceOutUp;
+}
+
+@-webkit-keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+}
+
+@keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+}
+
+.fadeIn {
+ -webkit-animation-name: fadeIn;
+ animation-name: fadeIn;
+}
+
+@-webkit-keyframes fadeInDown {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(-20px);
+ transform: translateY(-20px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+@keyframes fadeInDown {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(-20px);
+ -ms-transform: translateY(-20px);
+ transform: translateY(-20px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+.fadeInDown {
+ -webkit-animation-name: fadeInDown;
+ animation-name: fadeInDown;
+}
+
+@-webkit-keyframes fadeInDownBig {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(-2000px);
+ transform: translateY(-2000px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+@keyframes fadeInDownBig {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(-2000px);
+ -ms-transform: translateY(-2000px);
+ transform: translateY(-2000px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+.fadeInDownBig {
+ -webkit-animation-name: fadeInDownBig;
+ animation-name: fadeInDownBig;
+}
+
+@-webkit-keyframes fadeInLeft {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(-20px);
+ transform: translateX(-20px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+@keyframes fadeInLeft {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(-20px);
+ -ms-transform: translateX(-20px);
+ transform: translateX(-20px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+.fadeInLeft {
+ -webkit-animation-name: fadeInLeft;
+ animation-name: fadeInLeft;
+}
+
+@-webkit-keyframes fadeInLeftBig {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(-2000px);
+ transform: translateX(-2000px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+@keyframes fadeInLeftBig {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(-2000px);
+ -ms-transform: translateX(-2000px);
+ transform: translateX(-2000px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+.fadeInLeftBig {
+ -webkit-animation-name: fadeInLeftBig;
+ animation-name: fadeInLeftBig;
+}
+
+@-webkit-keyframes fadeInRight {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(20px);
+ transform: translateX(20px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+@keyframes fadeInRight {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(20px);
+ -ms-transform: translateX(20px);
+ transform: translateX(20px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+.fadeInRight {
+ -webkit-animation-name: fadeInRight;
+ animation-name: fadeInRight;
+}
+
+@-webkit-keyframes fadeInRightBig {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(2000px);
+ transform: translateX(2000px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+@keyframes fadeInRightBig {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(2000px);
+ -ms-transform: translateX(2000px);
+ transform: translateX(2000px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+.fadeInRightBig {
+ -webkit-animation-name: fadeInRightBig;
+ animation-name: fadeInRightBig;
+}
+
+@-webkit-keyframes fadeInUp {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(20px);
+ transform: translateY(20px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+@keyframes fadeInUp {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(20px);
+ -ms-transform: translateY(20px);
+ transform: translateY(20px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+.fadeInUp {
+ -webkit-animation-name: fadeInUp;
+ animation-name: fadeInUp;
+}
+
+@-webkit-keyframes fadeInUpBig {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(2000px);
+ transform: translateY(2000px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+@keyframes fadeInUpBig {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(2000px);
+ -ms-transform: translateY(2000px);
+ transform: translateY(2000px);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+.fadeInUpBig {
+ -webkit-animation-name: fadeInUpBig;
+ animation-name: fadeInUpBig;
+}
+
+@-webkit-keyframes fadeOut {
+ 0% {
+ opacity: 1;
+ }
+
+ 100% {
+ opacity: 0;
+ }
+}
+
+@keyframes fadeOut {
+ 0% {
+ opacity: 1;
+ }
+
+ 100% {
+ opacity: 0;
+ }
+}
+
+.fadeOut {
+ -webkit-animation-name: fadeOut;
+ animation-name: fadeOut;
+}
+
+@-webkit-keyframes fadeOutDown {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(20px);
+ transform: translateY(20px);
+ }
+}
+
+@keyframes fadeOutDown {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(20px);
+ -ms-transform: translateY(20px);
+ transform: translateY(20px);
+ }
+}
+
+.fadeOutDown {
+ -webkit-animation-name: fadeOutDown;
+ animation-name: fadeOutDown;
+}
+
+@-webkit-keyframes fadeOutDownBig {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(2000px);
+ transform: translateY(2000px);
+ }
+}
+
+@keyframes fadeOutDownBig {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(2000px);
+ -ms-transform: translateY(2000px);
+ transform: translateY(2000px);
+ }
+}
+
+.fadeOutDownBig {
+ -webkit-animation-name: fadeOutDownBig;
+ animation-name: fadeOutDownBig;
+}
+
+@-webkit-keyframes fadeOutLeft {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(-20px);
+ transform: translateX(-20px);
+ }
+}
+
+@keyframes fadeOutLeft {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(-20px);
+ -ms-transform: translateX(-20px);
+ transform: translateX(-20px);
+ }
+}
+
+.fadeOutLeft {
+ -webkit-animation-name: fadeOutLeft;
+ animation-name: fadeOutLeft;
+}
+
+@-webkit-keyframes fadeOutLeftBig {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(-2000px);
+ transform: translateX(-2000px);
+ }
+}
+
+@keyframes fadeOutLeftBig {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(-2000px);
+ -ms-transform: translateX(-2000px);
+ transform: translateX(-2000px);
+ }
+}
+
+.fadeOutLeftBig {
+ -webkit-animation-name: fadeOutLeftBig;
+ animation-name: fadeOutLeftBig;
+}
+
+@-webkit-keyframes fadeOutRight {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(20px);
+ transform: translateX(20px);
+ }
+}
+
+@keyframes fadeOutRight {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(20px);
+ -ms-transform: translateX(20px);
+ transform: translateX(20px);
+ }
+}
+
+.fadeOutRight {
+ -webkit-animation-name: fadeOutRight;
+ animation-name: fadeOutRight;
+}
+
+@-webkit-keyframes fadeOutRightBig {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(2000px);
+ transform: translateX(2000px);
+ }
+}
+
+@keyframes fadeOutRightBig {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(2000px);
+ -ms-transform: translateX(2000px);
+ transform: translateX(2000px);
+ }
+}
+
+.fadeOutRightBig {
+ -webkit-animation-name: fadeOutRightBig;
+ animation-name: fadeOutRightBig;
+}
+
+@-webkit-keyframes fadeOutUp {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(-20px);
+ transform: translateY(-20px);
+ }
+}
+
+@keyframes fadeOutUp {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(-20px);
+ -ms-transform: translateY(-20px);
+ transform: translateY(-20px);
+ }
+}
+
+.fadeOutUp {
+ -webkit-animation-name: fadeOutUp;
+ animation-name: fadeOutUp;
+}
+
+@-webkit-keyframes fadeOutUpBig {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(-2000px);
+ transform: translateY(-2000px);
+ }
+}
+
+@keyframes fadeOutUpBig {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(-2000px);
+ -ms-transform: translateY(-2000px);
+ transform: translateY(-2000px);
+ }
+}
+
+.fadeOutUpBig {
+ -webkit-animation-name: fadeOutUpBig;
+ animation-name: fadeOutUpBig;
+}
+
+@-webkit-keyframes flip {
+ 0% {
+ -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+ transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+ }
+
+ 40% {
+ -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+ transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+ }
+
+ 50% {
+ -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+ transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+
+ 80% {
+ -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
+ transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+
+ 100% {
+ -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+ transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+}
+
+@keyframes flip {
+ 0% {
+ -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+ -ms-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+ transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+ }
+
+ 40% {
+ -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+ -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+ transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+ }
+
+ 50% {
+ -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+ -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+ transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+
+ 80% {
+ -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
+ -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
+ transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+
+ 100% {
+ -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+ -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+ transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+ }
+}
+
+.animated.flip {
+ -webkit-backface-visibility: visible;
+ -ms-backface-visibility: visible;
+ backface-visibility: visible;
+ -webkit-animation-name: flip;
+ animation-name: flip;
+}
+
+@-webkit-keyframes flipInX {
+ 0% {
+ -webkit-transform: perspective(400px) rotateX(90deg);
+ transform: perspective(400px) rotateX(90deg);
+ opacity: 0;
+ }
+
+ 40% {
+ -webkit-transform: perspective(400px) rotateX(-10deg);
+ transform: perspective(400px) rotateX(-10deg);
+ }
+
+ 70% {
+ -webkit-transform: perspective(400px) rotateX(10deg);
+ transform: perspective(400px) rotateX(10deg);
+ }
+
+ 100% {
+ -webkit-transform: perspective(400px) rotateX(0deg);
+ transform: perspective(400px) rotateX(0deg);
+ opacity: 1;
+ }
+}
+
+@keyframes flipInX {
+ 0% {
+ -webkit-transform: perspective(400px) rotateX(90deg);
+ -ms-transform: perspective(400px) rotateX(90deg);
+ transform: perspective(400px) rotateX(90deg);
+ opacity: 0;
+ }
+
+ 40% {
+ -webkit-transform: perspective(400px) rotateX(-10deg);
+ -ms-transform: perspective(400px) rotateX(-10deg);
+ transform: perspective(400px) rotateX(-10deg);
+ }
+
+ 70% {
+ -webkit-transform: perspective(400px) rotateX(10deg);
+ -ms-transform: perspective(400px) rotateX(10deg);
+ transform: perspective(400px) rotateX(10deg);
+ }
+
+ 100% {
+ -webkit-transform: perspective(400px) rotateX(0deg);
+ -ms-transform: perspective(400px) rotateX(0deg);
+ transform: perspective(400px) rotateX(0deg);
+ opacity: 1;
+ }
+}
+
+.flipInX {
+ -webkit-backface-visibility: visible !important;
+ -ms-backface-visibility: visible !important;
+ backface-visibility: visible !important;
+ -webkit-animation-name: flipInX;
+ animation-name: flipInX;
+}
+
+@-webkit-keyframes flipInY {
+ 0% {
+ -webkit-transform: perspective(400px) rotateY(90deg);
+ transform: perspective(400px) rotateY(90deg);
+ opacity: 0;
+ }
+
+ 40% {
+ -webkit-transform: perspective(400px) rotateY(-10deg);
+ transform: perspective(400px) rotateY(-10deg);
+ }
+
+ 70% {
+ -webkit-transform: perspective(400px) rotateY(10deg);
+ transform: perspective(400px) rotateY(10deg);
+ }
+
+ 100% {
+ -webkit-transform: perspective(400px) rotateY(0deg);
+ transform: perspective(400px) rotateY(0deg);
+ opacity: 1;
+ }
+}
+
+@keyframes flipInY {
+ 0% {
+ -webkit-transform: perspective(400px) rotateY(90deg);
+ -ms-transform: perspective(400px) rotateY(90deg);
+ transform: perspective(400px) rotateY(90deg);
+ opacity: 0;
+ }
+
+ 40% {
+ -webkit-transform: perspective(400px) rotateY(-10deg);
+ -ms-transform: perspective(400px) rotateY(-10deg);
+ transform: perspective(400px) rotateY(-10deg);
+ }
+
+ 70% {
+ -webkit-transform: perspective(400px) rotateY(10deg);
+ -ms-transform: perspective(400px) rotateY(10deg);
+ transform: perspective(400px) rotateY(10deg);
+ }
+
+ 100% {
+ -webkit-transform: perspective(400px) rotateY(0deg);
+ -ms-transform: perspective(400px) rotateY(0deg);
+ transform: perspective(400px) rotateY(0deg);
+ opacity: 1;
+ }
+}
+
+.flipInY {
+ -webkit-backface-visibility: visible !important;
+ -ms-backface-visibility: visible !important;
+ backface-visibility: visible !important;
+ -webkit-animation-name: flipInY;
+ animation-name: flipInY;
+}
+
+@-webkit-keyframes flipOutX {
+ 0% {
+ -webkit-transform: perspective(400px) rotateX(0deg);
+ transform: perspective(400px) rotateX(0deg);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform: perspective(400px) rotateX(90deg);
+ transform: perspective(400px) rotateX(90deg);
+ opacity: 0;
+ }
+}
+
+@keyframes flipOutX {
+ 0% {
+ -webkit-transform: perspective(400px) rotateX(0deg);
+ -ms-transform: perspective(400px) rotateX(0deg);
+ transform: perspective(400px) rotateX(0deg);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform: perspective(400px) rotateX(90deg);
+ -ms-transform: perspective(400px) rotateX(90deg);
+ transform: perspective(400px) rotateX(90deg);
+ opacity: 0;
+ }
+}
+
+.flipOutX {
+ -webkit-animation-name: flipOutX;
+ animation-name: flipOutX;
+ -webkit-backface-visibility: visible !important;
+ -ms-backface-visibility: visible !important;
+ backface-visibility: visible !important;
+}
+
+@-webkit-keyframes flipOutY {
+ 0% {
+ -webkit-transform: perspective(400px) rotateY(0deg);
+ transform: perspective(400px) rotateY(0deg);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform: perspective(400px) rotateY(90deg);
+ transform: perspective(400px) rotateY(90deg);
+ opacity: 0;
+ }
+}
+
+@keyframes flipOutY {
+ 0% {
+ -webkit-transform: perspective(400px) rotateY(0deg);
+ -ms-transform: perspective(400px) rotateY(0deg);
+ transform: perspective(400px) rotateY(0deg);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform: perspective(400px) rotateY(90deg);
+ -ms-transform: perspective(400px) rotateY(90deg);
+ transform: perspective(400px) rotateY(90deg);
+ opacity: 0;
+ }
+}
+
+.flipOutY {
+ -webkit-backface-visibility: visible !important;
+ -ms-backface-visibility: visible !important;
+ backface-visibility: visible !important;
+ -webkit-animation-name: flipOutY;
+ animation-name: flipOutY;
+}
+
+@-webkit-keyframes lightSpeedIn {
+ 0% {
+ -webkit-transform: translateX(100%) skewX(-30deg);
+ transform: translateX(100%) skewX(-30deg);
+ opacity: 0;
+ }
+
+ 60% {
+ -webkit-transform: translateX(-20%) skewX(30deg);
+ transform: translateX(-20%) skewX(30deg);
+ opacity: 1;
+ }
+
+ 80% {
+ -webkit-transform: translateX(0%) skewX(-15deg);
+ transform: translateX(0%) skewX(-15deg);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform: translateX(0%) skewX(0deg);
+ transform: translateX(0%) skewX(0deg);
+ opacity: 1;
+ }
+}
+
+@keyframes lightSpeedIn {
+ 0% {
+ -webkit-transform: translateX(100%) skewX(-30deg);
+ -ms-transform: translateX(100%) skewX(-30deg);
+ transform: translateX(100%) skewX(-30deg);
+ opacity: 0;
+ }
+
+ 60% {
+ -webkit-transform: translateX(-20%) skewX(30deg);
+ -ms-transform: translateX(-20%) skewX(30deg);
+ transform: translateX(-20%) skewX(30deg);
+ opacity: 1;
+ }
+
+ 80% {
+ -webkit-transform: translateX(0%) skewX(-15deg);
+ -ms-transform: translateX(0%) skewX(-15deg);
+ transform: translateX(0%) skewX(-15deg);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform: translateX(0%) skewX(0deg);
+ -ms-transform: translateX(0%) skewX(0deg);
+ transform: translateX(0%) skewX(0deg);
+ opacity: 1;
+ }
+}
+
+.lightSpeedIn {
+ -webkit-animation-name: lightSpeedIn;
+ animation-name: lightSpeedIn;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+}
+
+@-webkit-keyframes lightSpeedOut {
+ 0% {
+ -webkit-transform: translateX(0%) skewX(0deg);
+ transform: translateX(0%) skewX(0deg);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform: translateX(100%) skewX(-30deg);
+ transform: translateX(100%) skewX(-30deg);
+ opacity: 0;
+ }
+}
+
+@keyframes lightSpeedOut {
+ 0% {
+ -webkit-transform: translateX(0%) skewX(0deg);
+ -ms-transform: translateX(0%) skewX(0deg);
+ transform: translateX(0%) skewX(0deg);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform: translateX(100%) skewX(-30deg);
+ -ms-transform: translateX(100%) skewX(-30deg);
+ transform: translateX(100%) skewX(-30deg);
+ opacity: 0;
+ }
+}
+
+.lightSpeedOut {
+ -webkit-animation-name: lightSpeedOut;
+ animation-name: lightSpeedOut;
+ -webkit-animation-timing-function: ease-in;
+ animation-timing-function: ease-in;
+}
+
+@-webkit-keyframes rotateIn {
+ 0% {
+ -webkit-transform-origin: center center;
+ transform-origin: center center;
+ -webkit-transform: rotate(-200deg);
+ transform: rotate(-200deg);
+ opacity: 0;
+ }
+
+ 100% {
+ -webkit-transform-origin: center center;
+ transform-origin: center center;
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+}
+
+@keyframes rotateIn {
+ 0% {
+ -webkit-transform-origin: center center;
+ -ms-transform-origin: center center;
+ transform-origin: center center;
+ -webkit-transform: rotate(-200deg);
+ -ms-transform: rotate(-200deg);
+ transform: rotate(-200deg);
+ opacity: 0;
+ }
+
+ 100% {
+ -webkit-transform-origin: center center;
+ -ms-transform-origin: center center;
+ transform-origin: center center;
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+}
+
+.rotateIn {
+ -webkit-animation-name: rotateIn;
+ animation-name: rotateIn;
+}
+
+@-webkit-keyframes rotateInDownLeft {
+ 0% {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+ opacity: 0;
+ }
+
+ 100% {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+}
+
+@keyframes rotateInDownLeft {
+ 0% {
+ -webkit-transform-origin: left bottom;
+ -ms-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+ opacity: 0;
+ }
+
+ 100% {
+ -webkit-transform-origin: left bottom;
+ -ms-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+}
+
+.rotateInDownLeft {
+ -webkit-animation-name: rotateInDownLeft;
+ animation-name: rotateInDownLeft;
+}
+
+@-webkit-keyframes rotateInDownRight {
+ 0% {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(90deg);
+ transform: rotate(90deg);
+ opacity: 0;
+ }
+
+ 100% {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+}
+
+@keyframes rotateInDownRight {
+ 0% {
+ -webkit-transform-origin: right bottom;
+ -ms-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+ opacity: 0;
+ }
+
+ 100% {
+ -webkit-transform-origin: right bottom;
+ -ms-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+}
+
+.rotateInDownRight {
+ -webkit-animation-name: rotateInDownRight;
+ animation-name: rotateInDownRight;
+}
+
+@-webkit-keyframes rotateInUpLeft {
+ 0% {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(90deg);
+ transform: rotate(90deg);
+ opacity: 0;
+ }
+
+ 100% {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+}
+
+@keyframes rotateInUpLeft {
+ 0% {
+ -webkit-transform-origin: left bottom;
+ -ms-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+ opacity: 0;
+ }
+
+ 100% {
+ -webkit-transform-origin: left bottom;
+ -ms-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+}
+
+.rotateInUpLeft {
+ -webkit-animation-name: rotateInUpLeft;
+ animation-name: rotateInUpLeft;
+}
+
+@-webkit-keyframes rotateInUpRight {
+ 0% {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+ opacity: 0;
+ }
+
+ 100% {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+}
+
+@keyframes rotateInUpRight {
+ 0% {
+ -webkit-transform-origin: right bottom;
+ -ms-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+ opacity: 0;
+ }
+
+ 100% {
+ -webkit-transform-origin: right bottom;
+ -ms-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+}
+
+.rotateInUpRight {
+ -webkit-animation-name: rotateInUpRight;
+ animation-name: rotateInUpRight;
+}
+
+@-webkit-keyframes rotateOut {
+ 0% {
+ -webkit-transform-origin: center center;
+ transform-origin: center center;
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform-origin: center center;
+ transform-origin: center center;
+ -webkit-transform: rotate(200deg);
+ transform: rotate(200deg);
+ opacity: 0;
+ }
+}
+
+@keyframes rotateOut {
+ 0% {
+ -webkit-transform-origin: center center;
+ -ms-transform-origin: center center;
+ transform-origin: center center;
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform-origin: center center;
+ -ms-transform-origin: center center;
+ transform-origin: center center;
+ -webkit-transform: rotate(200deg);
+ -ms-transform: rotate(200deg);
+ transform: rotate(200deg);
+ opacity: 0;
+ }
+}
+
+.rotateOut {
+ -webkit-animation-name: rotateOut;
+ animation-name: rotateOut;
+}
+
+@-webkit-keyframes rotateOutDownLeft {
+ 0% {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(90deg);
+ transform: rotate(90deg);
+ opacity: 0;
+ }
+}
+
+@keyframes rotateOutDownLeft {
+ 0% {
+ -webkit-transform-origin: left bottom;
+ -ms-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform-origin: left bottom;
+ -ms-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+ opacity: 0;
+ }
+}
+
+.rotateOutDownLeft {
+ -webkit-animation-name: rotateOutDownLeft;
+ animation-name: rotateOutDownLeft;
+}
+
+@-webkit-keyframes rotateOutDownRight {
+ 0% {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+ opacity: 0;
+ }
+}
+
+@keyframes rotateOutDownRight {
+ 0% {
+ -webkit-transform-origin: right bottom;
+ -ms-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform-origin: right bottom;
+ -ms-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+ opacity: 0;
+ }
+}
+
+.rotateOutDownRight {
+ -webkit-animation-name: rotateOutDownRight;
+ animation-name: rotateOutDownRight;
+}
+
+@-webkit-keyframes rotateOutUpLeft {
+ 0% {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+ opacity: 0;
+ }
+}
+
+@keyframes rotateOutUpLeft {
+ 0% {
+ -webkit-transform-origin: left bottom;
+ -ms-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform-origin: left bottom;
+ -ms-transform-origin: left bottom;
+ transform-origin: left bottom;
+ -webkit-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+ opacity: 0;
+ }
+}
+
+.rotateOutUpLeft {
+ -webkit-animation-name: rotateOutUpLeft;
+ animation-name: rotateOutUpLeft;
+}
+
+@-webkit-keyframes rotateOutUpRight {
+ 0% {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(90deg);
+ transform: rotate(90deg);
+ opacity: 0;
+ }
+}
+
+@keyframes rotateOutUpRight {
+ 0% {
+ -webkit-transform-origin: right bottom;
+ -ms-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1;
+ }
+
+ 100% {
+ -webkit-transform-origin: right bottom;
+ -ms-transform-origin: right bottom;
+ transform-origin: right bottom;
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+ opacity: 0;
+ }
+}
+
+.rotateOutUpRight {
+ -webkit-animation-name: rotateOutUpRight;
+ animation-name: rotateOutUpRight;
+}
+
+@-webkit-keyframes slideInDown {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(-2000px);
+ transform: translateY(-2000px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+@keyframes slideInDown {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateY(-2000px);
+ -ms-transform: translateY(-2000px);
+ transform: translateY(-2000px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+.slideInDown {
+ -webkit-animation-name: slideInDown;
+ animation-name: slideInDown;
+}
+
+@-webkit-keyframes slideInLeft {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(-2000px);
+ transform: translateX(-2000px);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+@keyframes slideInLeft {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(-2000px);
+ -ms-transform: translateX(-2000px);
+ transform: translateX(-2000px);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+.slideInLeft {
+ -webkit-animation-name: slideInLeft;
+ animation-name: slideInLeft;
+}
+
+@-webkit-keyframes slideInRight {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(2000px);
+ transform: translateX(2000px);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+@keyframes slideInRight {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(2000px);
+ -ms-transform: translateX(2000px);
+ transform: translateX(2000px);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+.slideInRight {
+ -webkit-animation-name: slideInRight;
+ animation-name: slideInRight;
+}
+
+@-webkit-keyframes slideOutLeft {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(-2000px);
+ transform: translateX(-2000px);
+ }
+}
+
+@keyframes slideOutLeft {
+ 0% {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(-2000px);
+ -ms-transform: translateX(-2000px);
+ transform: translateX(-2000px);
+ }
+}
+
+.slideOutLeft {
+ -webkit-animation-name: slideOutLeft;
+ animation-name: slideOutLeft;
+}
+
+@-webkit-keyframes slideOutRight {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(2000px);
+ transform: translateX(2000px);
+ }
+}
+
+@keyframes slideOutRight {
+ 0% {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(2000px);
+ -ms-transform: translateX(2000px);
+ transform: translateX(2000px);
+ }
+}
+
+.slideOutRight {
+ -webkit-animation-name: slideOutRight;
+ animation-name: slideOutRight;
+}
+
+@-webkit-keyframes slideOutUp {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(-2000px);
+ transform: translateY(-2000px);
+ }
+}
+
+@keyframes slideOutUp {
+ 0% {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(-2000px);
+ -ms-transform: translateY(-2000px);
+ transform: translateY(-2000px);
+ }
+}
+
+.slideOutUp {
+ -webkit-animation-name: slideOutUp;
+ animation-name: slideOutUp;
+}
+
+@-webkit-keyframes hinge {
+ 0% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 20%, 60% {
+ -webkit-transform: rotate(80deg);
+ transform: rotate(80deg);
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 40% {
+ -webkit-transform: rotate(60deg);
+ transform: rotate(60deg);
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 80% {
+ -webkit-transform: rotate(60deg) translateY(0);
+ transform: rotate(60deg) translateY(0);
+ opacity: 1;
+ -webkit-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 100% {
+ -webkit-transform: translateY(700px);
+ transform: translateY(700px);
+ opacity: 0;
+ }
+}
+
+@keyframes hinge {
+ 0% {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ -webkit-transform-origin: top left;
+ -ms-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 20%, 60% {
+ -webkit-transform: rotate(80deg);
+ -ms-transform: rotate(80deg);
+ transform: rotate(80deg);
+ -webkit-transform-origin: top left;
+ -ms-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 40% {
+ -webkit-transform: rotate(60deg);
+ -ms-transform: rotate(60deg);
+ transform: rotate(60deg);
+ -webkit-transform-origin: top left;
+ -ms-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 80% {
+ -webkit-transform: rotate(60deg) translateY(0);
+ -ms-transform: rotate(60deg) translateY(0);
+ transform: rotate(60deg) translateY(0);
+ opacity: 1;
+ -webkit-transform-origin: top left;
+ -ms-transform-origin: top left;
+ transform-origin: top left;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+
+ 100% {
+ -webkit-transform: translateY(700px);
+ -ms-transform: translateY(700px);
+ transform: translateY(700px);
+ opacity: 0;
+ }
+}
+
+.hinge {
+ -webkit-animation-name: hinge;
+ animation-name: hinge;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes rollIn {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(-100%) rotate(-120deg);
+ transform: translateX(-100%) rotate(-120deg);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0px) rotate(0deg);
+ transform: translateX(0px) rotate(0deg);
+ }
+}
+
+@keyframes rollIn {
+ 0% {
+ opacity: 0;
+ -webkit-transform: translateX(-100%) rotate(-120deg);
+ -ms-transform: translateX(-100%) rotate(-120deg);
+ transform: translateX(-100%) rotate(-120deg);
+ }
+
+ 100% {
+ opacity: 1;
+ -webkit-transform: translateX(0px) rotate(0deg);
+ -ms-transform: translateX(0px) rotate(0deg);
+ transform: translateX(0px) rotate(0deg);
+ }
+}
+
+.rollIn {
+ -webkit-animation-name: rollIn;
+ animation-name: rollIn;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes rollOut {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateX(0px) rotate(0deg);
+ transform: translateX(0px) rotate(0deg);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(100%) rotate(120deg);
+ transform: translateX(100%) rotate(120deg);
+ }
+}
+
+@keyframes rollOut {
+ 0% {
+ opacity: 1;
+ -webkit-transform: translateX(0px) rotate(0deg);
+ -ms-transform: translateX(0px) rotate(0deg);
+ transform: translateX(0px) rotate(0deg);
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateX(100%) rotate(120deg);
+ -ms-transform: translateX(100%) rotate(120deg);
+ transform: translateX(100%) rotate(120deg);
+ }
+}
+
+.rollOut {
+ -webkit-animation-name: rollOut;
+ animation-name: rollOut;
+}
diff --git a/public/css/toggle-switch.css b/public/css/toggle-switch.css
new file mode 100755
index 0000000..ab82c04
--- /dev/null
+++ b/public/css/toggle-switch.css
@@ -0,0 +1,384 @@
+/*
+* CSS TOGGLE SWITCHES
+* Unlicense
+*
+* Ionuț Colceriu - ghinda.net
+* https://github.com/ghinda/css-toggle-switch
+*
+*/
+/* Toggle Switches
+*/
+/* Shared
+*/
+/* Checkbox
+*/
+/* Radio Switch
+*/
+/* Hide by default
+*/
+
+.switch-toggle a, .switch-light span span {
+ display: none;
+}
+
+/* We can't test for a specific feature,
+* so we only target browsers with support for media queries.
+*/
+@media only screen {
+ /* Checkbox switch
+ */
+ /* Radio switch
+ */
+ /* Standalone Themes */
+ /* Candy Theme
+ * Based on the "Sort Switches / Toggles (PSD)" by Ormal Clarck
+ * http://www.premiumpixels.com/freebies/sort-switches-toggles-psd/
+ */
+ /* Android Theme
+ */
+ /* iOS Theme
+ */
+ .switch-light {
+ display: block;
+ height: 30px;
+ /* Outline the toggles when the inputs are focused
+ */
+ position: relative;
+ overflow: visible;
+ padding: 0;
+ margin-left: 100px;
+ /* Position the label over all the elements, except the slide-button ()
+ * Clicking anywhere on the label will change the switch-state
+ */
+ /* Don't hide the input from screen-readers and keyboard access
+ */
+ }
+ .switch-light * {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .switch-light a {
+ display: block;
+ -webkit-transition: all 0.3s ease-out;
+ -moz-transition: all 0.3s ease-out;
+ transition: all 0.3s ease-out;
+ }
+ .switch-light label, .switch-light > span {
+ line-height: 30px;
+ vertical-align: middle;
+ }
+ .switch-light input:focus ~ a, .switch-light input:focus + label {
+ outline: 1px dotted #888888;
+
+ }
+ .switch-light label {
+ position: relative;
+ z-index: 3;
+ display: block;
+ width: 100%;
+ }
+ .switch-light input {
+ position: absolute;
+ opacity: 0;
+ z-index: 5;
+ }
+ .switch-light input:checked ~ a {
+ right: 0%;
+ background: red; /* For Later Color */
+ }
+ .switch-light > span {
+ position: absolute;
+ left: -100px;
+ width: 100%;
+ margin: 0;
+ padding-right: 100px;
+ text-align: left;
+ }
+ .switch-light > span span {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 5;
+ display: block;
+ width: 50%;
+ margin-left: 100px;
+ text-align: center;
+ }
+ .switch-light > span span:last-child {
+ left: 50%;
+ }
+ .switch-light a {
+ position: absolute;
+ right: 50%;
+ top: 0;
+ z-index: 4;
+ display: block;
+ width: 50%;
+ height: 100%;
+ padding: 0;
+ }
+ .switch-toggle {
+ display: block;
+ height: 30px;
+ /* Outline the toggles when the inputs are focused
+ */
+ position: relative;
+ /* For callout panels in foundation
+ */
+ padding: 0 !important;
+ /* Generate styles for the multiple states */
+ }
+ /*.switch-toggle * {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .switch-toggle a {
+ display: block;
+ -webkit-transition: all 0.3s ease-out;
+ -moz-transition: all 0.3s ease-out;
+ transition: all 0.3s ease-out;
+ }
+ .switch-toggle label, .switch-toggle > span {
+ line-height: 30px;
+ vertical-align: middle;
+ }
+ .switch-toggle input:focus ~ a, .switch-toggle input:focus + label {
+ outline: 1px dotted #888888;
+ }
+ .switch-toggle input {
+ position: absolute;
+ opacity: 0;
+ }
+ .switch-toggle input + label {
+ position: relative;
+ z-index: 2;
+ float: left;
+ width: 50%;
+ height: 100%;
+ margin: 0;
+ text-align: center;
+ }
+ .switch-toggle a {
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding: 0;
+ z-index: 1;
+ width: 50%;
+ height: 100%;
+ }
+ .switch-toggle input:last-of-type:checked ~ a {
+ left: 50%;
+ }
+ .switch-toggle.switch-3 label, .switch-toggle.switch-3 a {
+ width: 33.33333%;
+ }
+ .switch-toggle.switch-3 input:checked:nth-of-type(2) ~ a {
+ left: 33.33333%;
+ }
+ .switch-toggle.switch-3 input:checked:last-of-type ~ a {
+ left: 66.66667%;
+ }
+ .switch-toggle.switch-4 label, .switch-toggle.switch-4 a {
+ width: 25%;
+ }
+ .switch-toggle.switch-4 input:checked:nth-of-type(2) ~ a {
+ left: 25%;
+ }
+ .switch-toggle.switch-4 input:checked:nth-of-type(3) ~ a {
+ left: 50%;
+ }
+ .switch-toggle.switch-4 input:checked:last-of-type ~ a {
+ left: 75%;
+ }
+ .switch-toggle.switch-5 label, .switch-toggle.switch-5 a {
+ width: 20%;
+ }
+ .switch-toggle.switch-5 input:checked:nth-of-type(2) ~ a {
+ left: 20%;
+ }
+ .switch-toggle.switch-5 input:checked:nth-of-type(3) ~ a {
+ left: 40%;
+ }
+ .switch-toggle.switch-5 input:checked:nth-of-type(4) ~ a {
+ left: 60%;
+ }
+ .switch-toggle.switch-5 input:checked:last-of-type ~ a {
+ left: 80%;
+ }*/
+ .switch-candy {
+ background-color: #2d3035;
+ border-radius: 3px;
+ color: white;
+ font-weight: bold;
+ text-align: center;
+ text-shadow: 1px 1px 1px #191b1e;
+ box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.3), 0 1px 0px rgba(255, 255, 255, 0.2);
+ }
+ .switch-candy label {
+ color: white;
+ -webkit-transition: color 0.2s ease-out;
+ -moz-transition: color 0.2s ease-out;
+ transition: color 0.2s ease-out;
+ }
+ .switch-candy input:checked + label {
+ color: #333333;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ }
+ .switch-candy a {
+ border: 1px solid #333333;
+ background-color: #70c66b;
+ border-radius: 3px;
+ background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0.2), rgba(0, 0, 0, 0));
+ background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(0, 0, 0, 0));
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), inset 0 1px 1px rgba(255, 255, 255, 0.45);
+ }
+ .switch-candy > span {
+ color: #333333;
+ text-shadow: none;
+ }
+ .switch-candy span {
+ color: white;
+ }
+ .switch-candy.switch-candy-blue a {
+ background-color: #38a3d4;
+ }
+ .switch-candy.switch-candy-yellow a {
+ background-color: #f5e560;
+ }
+
+ /* .switch-android {
+ background-color: #464747;
+ border-radius: 1px;
+ color: white;
+ box-shadow: inset rgba(0, 0, 0, 0.1) 0 1px 0;
+ Selected ON switch-light
+ }
+ .switch-android label {
+ color: white;
+ }
+ .switch-android > span span {
+ opacity: 0;
+ -webkit-transition: all 0.1s;
+ -moz-transition: all 0.1s;
+ transition: all 0.1s;
+ }
+
+ .switch-android > span span:first-of-type {
+ opacity: 1;
+ }
+ .switch-android a {
+ background-color: #666666;
+ border-radius: 1px;
+ box-shadow: inset rgba(255, 255, 255, 0.2) 0 1px 0, inset rgba(0, 0, 0, 0.3) 0 -1px 0;
+ }
+ .switch-android.switch-light input:checked ~ a {
+ background-color: #0e88b1;
+ }
+ .switch-android.switch-light input:checked ~ span span:first-of-type {
+ opacity: 0;
+ }
+ .switch-android.switch-light input:checked ~ span span:last-of-type {
+ opacity: 1;
+ }
+ .switch-android.switch-toggle, .switch-android > span span {
+ font-size: 85%;
+ text-transform: uppercase;
+ }
+ .switch-ios.switch-light {
+ color: #868686;
+ }
+ .switch-ios.switch-light a {
+ left: 0;
+ width: 30px;
+ background-color: white;
+ border: 1px solid lightgrey;
+ border-radius: 100%;
+ -webkit-transition: all 0.3s ease-out;
+ -moz-transition: all 0.3s ease-out;
+ transition: all 0.3s ease-out;
+ box-shadow: inset 0 -3px 3px rgba(0, 0, 0, 0.025), 0 1px 4px rgba(0, 0, 0, 0.15), 0 4px 4px rgba(0, 0, 0, 0.1);
+ }
+ .switch-ios.switch-light > span span {
+ width: 100%;
+ left: 0;
+ opacity: 0;
+ }
+ .switch-ios.switch-light > span span:first-of-type {
+ opacity: 1;
+ padding-left: 30px;
+ }
+ .switch-ios.switch-light > span span:last-of-type {
+ padding-right: 30px;
+ }
+ .switch-ios.switch-light > span:before {
+ content: '';
+ display: block;
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 100px;
+ top: 0;
+ background-color: #fafafa;
+ border: 1px solid lightgrey;
+ border-radius: 30px;
+ -webkit-transition: all 0.5s ease-out;
+ -moz-transition: all 0.5s ease-out;
+ transition: all 0.5s ease-out;
+ box-shadow: inset rgba(0, 0, 0, 0.1) 0 1px 0;
+ }
+ .switch-ios.switch-light input:checked ~ a {
+ left: 100%;
+ margin-left: -30px;
+ }
+ .switch-ios.switch-light input:checked ~ span:before {
+ border-color: #53d76a;
+ box-shadow: inset 0 0 0 30px #53d76a;
+ }
+ .switch-ios.switch-light input:checked ~ span span:first-of-type {
+ opacity: 0;
+ }
+ .switch-ios.switch-light input:checked ~ span span:last-of-type {
+ opacity: 1;
+ color: white;
+ }
+ .switch-ios.switch-toggle {
+ background-color: #fafafa;
+ border: 1px solid lightgrey;
+ border-radius: 30px;
+ box-shadow: inset rgba(0, 0, 0, 0.1) 0 1px 0;
+ }
+ .switch-ios.switch-toggle a {
+ background-color: #53d76a;
+ border-radius: 25px;
+ -webkit-transition: all 0.3s ease-out;
+ -moz-transition: all 0.3s ease-out;
+ transition: all 0.3s ease-out;
+ }
+ .switch-ios.switch-toggle label {
+ color: #868686;
+ }
+ .switch-ios input:checked + label {
+ color: #3a3a3a;
+ } */
+}
+
+/* Bugfix for older Webkit, including mobile Webkit. Adapted from
+* http://css-tricks.com/webkit-sibling-bug/
+*/
+@media only screen and (-webkit-max-device-pixel-ratio: 2) and (max-device-width: 1280px) {
+ .switch-light, .switch-toggle {
+ -webkit-animation: webkitSiblingBugfix infinite 1s;
+ }
+ }
+
+@-webkit-keyframes webkitSiblingBugfix {
+ from {
+ -webkit-transform: translate3d(0, 0, 0);
+ }
+ to {
+ -webkit-transform: translate3d(0, 0, 0);
+ }
+}
diff --git a/public/images/congruent_pentagon.png b/public/images/congruent_pentagon.png
new file mode 100644
index 0000000..c712660
Binary files /dev/null and b/public/images/congruent_pentagon.png differ
diff --git a/public/images/stardust.png b/public/images/stardust.png
new file mode 100644
index 0000000..288a7d2
Binary files /dev/null and b/public/images/stardust.png differ
diff --git a/public/js/carousel.js b/public/js/carousel.js
new file mode 100755
index 0000000..d8c4c24
--- /dev/null
+++ b/public/js/carousel.js
@@ -0,0 +1,217 @@
+/* ========================================================================
+ * Bootstrap: carousel.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#carousel
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+ // CAROUSEL CLASS DEFINITION
+ // =========================
+
+ var Carousel = function (element, options) {
+ this.$element = $(element)
+ this.$indicators = this.$element.find('.carousel-indicators')
+ this.options = options
+ this.paused =
+ this.sliding =
+ this.interval =
+ this.$active =
+ this.$items = null
+
+ this.options.pause == 'hover' && this.$element
+ .on('mouseenter', $.proxy(this.pause, this))
+ .on('mouseleave', $.proxy(this.cycle, this))
+ }
+
+ Carousel.DEFAULTS = {
+ interval: 5000
+ , pause: 'hover'
+ , wrap: true
+ }
+
+ Carousel.prototype.cycle = function (e) {
+ e || (this.paused = false)
+
+ this.interval && clearInterval(this.interval)
+
+ this.options.interval
+ && !this.paused
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+
+ return this
+ }
+
+ Carousel.prototype.getActiveIndex = function () {
+ this.$active = this.$element.find('.item.active')
+ this.$items = this.$active.parent().children()
+
+ return this.$items.index(this.$active)
+ }
+
+ Carousel.prototype.to = function (pos) {
+ var that = this
+ var activeIndex = this.getActiveIndex()
+
+ if (pos > (this.$items.length - 1) || pos < 0) return
+
+ if (this.sliding) return this.$element.one('slid', function () { that.to(pos) })
+ if (activeIndex == pos) return this.pause().cycle()
+
+ return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
+ }
+
+ Carousel.prototype.pause = function (e) {
+ e || (this.paused = true)
+
+ if (this.$element.find('.next, .prev').length && $.support.transition.end) {
+ this.$element.trigger($.support.transition.end)
+ this.cycle(true)
+ }
+
+ this.interval = clearInterval(this.interval)
+
+ return this
+ }
+
+ Carousel.prototype.next = function () {
+ if (this.sliding) return
+ return this.slide('next')
+ }
+
+ Carousel.prototype.prev = function () {
+ if (this.sliding) return
+ return this.slide('prev')
+ }
+
+ Carousel.prototype.slide = function (type, next) {
+ var $active = this.$element.find('.item.active')
+ var $next = next || $active[type]()
+ var isCycling = this.interval
+ var direction = type == 'next' ? 'left' : 'right'
+ var fallback = type == 'next' ? 'first' : 'last'
+ var that = this
+
+ if (!$next.length) {
+ if (!this.options.wrap) return
+ $next = this.$element.find('.item')[fallback]()
+ }
+
+ this.sliding = true
+
+ isCycling && this.pause()
+
+ var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
+
+ if ($next.hasClass('active')) return
+
+ if (this.$indicators.length) {
+ this.$indicators.find('.active').removeClass('active')
+ this.$element.one('slid', function () {
+ var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
+ $nextIndicator && $nextIndicator.addClass('active')
+ })
+ }
+
+ if ($.support.transition && this.$element.hasClass('slide')) {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $next.addClass(type)
+ $next[0].offsetWidth // force reflow
+ $active.addClass(direction)
+ $next.addClass(direction)
+ $active
+ .one($.support.transition.end, function () {
+ $next.removeClass([type, direction].join(' ')).addClass('active')
+ $active.removeClass(['active', direction].join(' '))
+ that.sliding = false
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
+ })
+ .emulateTransitionEnd(600)
+ } else {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $active.removeClass('active')
+ $next.addClass('active')
+ this.sliding = false
+ this.$element.trigger('slid')
+ }
+
+ isCycling && this.cycle()
+
+ return this
+ }
+
+
+ // CAROUSEL PLUGIN DEFINITION
+ // ==========================
+
+ var old = $.fn.carousel
+
+ $.fn.carousel = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ var data = $this.data('bs.carousel')
+ var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
+ var action = typeof option == 'string' ? option : options.slide
+
+ if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
+ if (typeof option == 'number') data.to(option)
+ else if (action) data[action]()
+ else if (options.interval) data.pause().cycle()
+ })
+ }
+
+ $.fn.carousel.Constructor = Carousel
+
+
+ // CAROUSEL NO CONFLICT
+ // ====================
+
+ $.fn.carousel.noConflict = function () {
+ $.fn.carousel = old
+ return this
+ }
+
+
+ // CAROUSEL DATA-API
+ // =================
+
+ $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
+ var $this = $(this), href
+ var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ var options = $.extend({}, $target.data(), $this.data())
+ var slideIndex = $this.attr('data-slide-to')
+ if (slideIndex) options.interval = false
+
+ $target.carousel(options)
+
+ if (slideIndex = $this.attr('data-slide-to')) {
+ $target.data('bs.carousel').to(slideIndex)
+ }
+
+ e.preventDefault()
+ })
+
+ $(window).on('load', function () {
+ $('[data-ride="carousel"]').each(function () {
+ var $carousel = $(this)
+ $carousel.carousel($carousel.data())
+ })
+ })
+
+}(window.jQuery);
diff --git a/public/js/wow.min.js b/public/js/wow.min.js
new file mode 100644
index 0000000..cbfde62
--- /dev/null
+++ b/public/js/wow.min.js
@@ -0,0 +1,2 @@
+/*! WOW - v0.1.9 - 2014-05-10
+* Copyright (c) 2014 Matthieu Aussaguel; Licensed MIT */(function(){var a,b,c=function(a,b){return function(){return a.apply(b,arguments)}};a=function(){function a(){}return a.prototype.extend=function(a,b){var c,d;for(c in a)d=a[c],null!=d&&(b[c]=d);return b},a.prototype.isMobile=function(a){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)},a}(),b=this.WeakMap||(b=function(){function a(){this.keys=[],this.values=[]}return a.prototype.get=function(a){var b,c,d,e,f;for(f=this.keys,b=d=0,e=f.length;e>d;b=++d)if(c=f[b],c===a)return this.values[b]},a.prototype.set=function(a,b){var c,d,e,f,g;for(g=this.keys,c=e=0,f=g.length;f>e;c=++e)if(d=g[c],d===a)return void(this.values[c]=b);return this.keys.push(a),this.values.push(b)},a}()),this.WOW=function(){function d(a){null==a&&(a={}),this.scrollCallback=c(this.scrollCallback,this),this.scrollHandler=c(this.scrollHandler,this),this.start=c(this.start,this),this.scrolled=!0,this.config=this.util().extend(a,this.defaults),this.animationNameCache=new b}return d.prototype.defaults={boxClass:"wow",animateClass:"animated",offset:0,mobile:!0},d.prototype.init=function(){var a;return this.element=window.document.documentElement,"interactive"===(a=document.readyState)||"complete"===a?this.start():document.addEventListener("DOMContentLoaded",this.start)},d.prototype.start=function(){var a,b,c,d;if(this.boxes=this.element.getElementsByClassName(this.config.boxClass),this.boxes.length){if(this.disabled())return this.resetStyle();for(d=this.boxes,b=0,c=d.length;c>b;b++)a=d[b],this.applyStyle(a,!0);return window.addEventListener("scroll",this.scrollHandler,!1),window.addEventListener("resize",this.scrollHandler,!1),this.interval=setInterval(this.scrollCallback,50)}},d.prototype.stop=function(){return window.removeEventListener("scroll",this.scrollHandler,!1),window.removeEventListener("resize",this.scrollHandler,!1),null!=this.interval?clearInterval(this.interval):void 0},d.prototype.show=function(a){return this.applyStyle(a),a.className=""+a.className+" "+this.config.animateClass},d.prototype.applyStyle=function(a,b){var c,d,e;return d=a.getAttribute("data-wow-duration"),c=a.getAttribute("data-wow-delay"),e=a.getAttribute("data-wow-iteration"),this.animate(function(f){return function(){return f.customStyle(a,b,d,c,e)}}(this))},d.prototype.animate=function(){return"requestAnimationFrame"in window?function(a){return window.requestAnimationFrame(a)}:function(a){return a()}}(),d.prototype.resetStyle=function(){var a,b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],e.push(a.setAttribute("style","visibility: visible;"));return e},d.prototype.customStyle=function(a,b,c,d,e){return b&&this.cacheAnimationName(a),a.style.visibility=b?"hidden":"visible",c&&this.vendorSet(a.style,{animationDuration:c}),d&&this.vendorSet(a.style,{animationDelay:d}),e&&this.vendorSet(a.style,{animationIterationCount:e}),this.vendorSet(a.style,{animationName:b?"none":this.cachedAnimationName(a)}),a},d.prototype.vendors=["moz","webkit"],d.prototype.vendorSet=function(a,b){var c,d,e,f;f=[];for(c in b)d=b[c],a[""+c]=d,f.push(function(){var b,f,g,h;for(g=this.vendors,h=[],b=0,f=g.length;f>b;b++)e=g[b],h.push(a[""+e+c.charAt(0).toUpperCase()+c.substr(1)]=d);return h}.call(this));return f},d.prototype.vendorCSS=function(a,b){var c,d,e,f,g,h;for(d=window.getComputedStyle(a),c=d.getPropertyCSSValue(b),h=this.vendors,f=0,g=h.length;g>f;f++)e=h[f],c=c||d.getPropertyCSSValue("-"+e+"-"+b);return c},d.prototype.animationName=function(a){var b;try{b=this.vendorCSS(a,"animation-name").cssText}catch(c){b=window.getComputedStyle(a).getPropertyValue("animation-name")}return"none"===b?"":b},d.prototype.cacheAnimationName=function(a){return this.animationNameCache.set(a,this.animationName(a))},d.prototype.cachedAnimationName=function(a){return this.animationNameCache.get(a)},d.prototype.scrollHandler=function(){return this.scrolled=!0},d.prototype.scrollCallback=function(){var a;return this.scrolled&&(this.scrolled=!1,this.boxes=function(){var b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],a&&(this.isVisible(a)?this.show(a):e.push(a));return e}.call(this),!this.boxes.length)?this.stop():void 0},d.prototype.offsetTop=function(a){for(var b;void 0===a.offsetTop;)a=a.parentNode;for(b=a.offsetTop;a=a.offsetParent;)b+=a.offsetTop;return b},d.prototype.isVisible=function(a){var b,c,d,e,f;return c=a.getAttribute("data-wow-offset")||this.config.offset,f=window.pageYOffset,e=f+this.element.clientHeight-c,d=this.offsetTop(a),b=d+a.clientHeight,e>=d&&b>=f},d.prototype.util=function(){return this._util||(this._util=new a)},d.prototype.disabled=function(){return!this.config.mobile&&this.util().isMobile(navigator.userAgent)},d}()}).call(this);
\ No newline at end of file
diff --git a/public/packages/mrjuliuss/syntara/assets/css/base-rtl.css b/public/packages/mrjuliuss/syntara/assets/css/base-rtl.css
new file mode 100755
index 0000000..9eaef87
--- /dev/null
+++ b/public/packages/mrjuliuss/syntara/assets/css/base-rtl.css
@@ -0,0 +1,10 @@
+#breadcrumb a i {
+ margin-left: 10px;
+ margin-right: 0px;
+}
+
+#breadcrumb a {
+ background-position: left center;
+ background-image: url('../img/breadcrumb-left.png');
+ padding: 8px 10px 8px 15px;
+}
\ No newline at end of file
diff --git a/public/packages/mrjuliuss/syntara/assets/css/base.css b/public/packages/mrjuliuss/syntara/assets/css/base.css
new file mode 100755
index 0000000..8c5d06b
--- /dev/null
+++ b/public/packages/mrjuliuss/syntara/assets/css/base.css
@@ -0,0 +1,331 @@
+/* Main */
+* {
+ margin:0;
+ padding:0;
+}
+
+body {
+ font-size: 13px;
+ overflow-x: hidden;
+ background-color: #fff;
+ color: #747678;
+ font-weight: 300;
+ text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.0004);
+}
+
+[class^="glyphicon-"],
+[class*=" glyphicon-"] {
+ display: inline-block;
+ height: 14px;
+ margin-top: 1px;
+ line-height: 14px;
+}
+
+a:hover{
+ text-decoration: none;
+}
+
+.form-group p {
+ margin: 0;
+}
+
+#main-container{
+ padding: 20px 50px 0 50px;
+}
+
+@media (max-width: 767px) {
+ #main-container{
+ padding: 20px 20px 0 20px;
+ }
+}
+
+.container {
+ width: 100%;
+ max-width: 100%;
+}
+
+.pagination {
+ margin-top: 10px;
+ margin-bottom: 0;
+}
+
+/* Loggued user Navigation */
+.navbar {
+ margin-bottom: 0px;
+ border-radius: 0px;
+}
+
+.navbar.main-bar{
+ background-color: #b94a48;
+}
+
+.navbar-default {
+ border: none;
+}
+
+.navbar-default .navbar-nav > li >a {
+ color: #fff;
+}
+
+.navbar-default .navbar-brand {
+ color: #fff;
+}
+
+.navbar-default .navbar-brand:hover{
+ color: #fff;
+}
+
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+ background-color: #b94a48;
+}
+
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+ border-color: #b94a48;
+}
+
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+ color: #fff;
+ background-color: #b94a48;
+}
+
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+ background-color: #b94a48;
+ border-color: #fff;
+}
+
+.navbar-default .navbar-toggle:hover .icon-bar,
+.navbar-default .navbar-toggle:focus .icon-bar {
+ background-color: #fff;
+}
+
+.navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: #fff;
+}
+
+.main-bar .dropdown-menu{
+ background-color: #b94a48;
+}
+
+.main-bar .dropdown-menu > li > a:hover,
+.main-bar .dropdown-menu > li > a:focus {
+ background-color: #b93a48;
+ background-image: none;
+}
+
+.navbar-nav > .open > a,
+.navbar-nav > .open > a:hover,
+.navbar-nav > .open > a:focus {
+ background-color: #b94a48;
+}
+
+.ajax-loader {
+ display: none;
+}
+
+.ajax-loader-lg {
+ width: 26px;
+ height: 26px;
+ margin: 12px;
+}
+.ajax-loader-sm {
+ width: 26px;
+ height: 26px;
+ margin-top: -20px;
+}
+
+/** Breadcrumb part **/
+#breadcrumb {
+ background-color: #2b2b2b;
+ border-bottom: 1px solid #d6d6d6;
+ padding-left: 10px;
+}
+
+#breadcrumb a {
+ padding: 8px 20px 8px 10px;
+ display: inline-block;
+ background-image: url('../img/breadcrumb-right.png');
+ background-position: center right;
+ background-repeat: no-repeat;
+ font-size: 11px;
+ color: #fff;
+}
+
+#breadcrumb a:hover {
+ color: #ccc;
+}
+
+#breadcrumb a:last-child {
+ background-image:none;
+}
+
+#breadcrumb a.current {
+ font-weight: bold;
+ color: #fff;
+}
+
+#breadcrumb a i {
+ margin-right: 5px;
+ opacity: .6;
+}
+
+#breadcrumb a:hover i {
+ margin-right: 5px;
+ opacity: .8;
+}
+
+/** TABLE **/
+.table th {
+ font-size: 13px;
+}
+
+.table td {
+ font-size: 12px;
+ padding: 5px 10px 2px;
+ border-bottom: 0;
+ color: #666;
+}
+
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 0px;
+}
+
+/* Forms part */
+.form-horizontal .form-group {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+.form-control,
+.uneditable-input {
+ font-size: 13px;
+ margin-bottom: 0;
+ border-radius: 2px;
+ height: 38px;
+}
+
+.input-group-addon {
+ padding: 5px 12px;
+}
+
+.add-input,
+.remove-input {
+ cursor: pointer;
+}
+
+/** Modal **/
+#delete-modal {
+ overflow-y: hidden;
+}
+
+body.modal-open,
+.modal-open .navbar-fixed-top,
+.modal-open .navbar-fixed-bottom {
+ margin-right: 0px;
+}
+
+/** LABEL **/
+.label {
+ float: left;
+ margin-top: 5px;
+ font-size: 90%;
+ border-radius: 2px;
+}
+
+.label-important {
+ display: table;
+}
+
+/** Module part **/
+.module {
+ border: 1px solid #d2d4d8;
+ border-radius: 3px;
+ margin-bottom: 15px;
+}
+
+.module .module-head {
+ background: #f7f8f9;
+ border-bottom: 1px solid #d9d9dd;
+ border-radius: 2px 2px 0 0;
+ height: 40px;
+}
+
+.module .module-head > a,
+.module .module-head > b {
+ color: #727476;
+ display: inline-block;
+ font-weight: 500;
+ padding: 10px 15px;
+}
+
+.module .module-head a {
+ color: inherit;
+ text-decoration: none;
+}
+
+.module .module-head i {
+ font-size: 14px;
+ color: #666;
+ display: inline-block;
+ line-height: 20px;
+}
+
+.module .module-body {
+ background: #fff;
+ padding: 15px;
+ border-radius: 0 0 2px 2px;
+}
+
+.module .module-body .upper-menu {
+ margin: 0 0 10px 0;
+}
+
+.module .module-body [class*="span"] {
+ margin-left: 0px;
+}
+
+.alert {
+ border-radius: 2px;
+ margin-bottom: 0px;
+}
+
+#delete-item {
+ display: none;
+}
+
+.btn-new {
+ margin-left: 10px;
+}
+
+.status-message {
+ margin-bottom: 15px;
+}
+
+/* switch button */
+.switch-toggle label {
+ color: #424242;
+}
+
+
+@media (max-width: 480px) {
+ .navbar > .nav {
+ float: none;
+ }
+ #content {
+ margin-left: 0 !important;
+ border-top-left-radius: 0;
+ margin-top:0px;
+ }
+}
+
+@media (max-width: 767px) {
+ body {
+ padding: 0 !important;
+ }
+}
diff --git a/public/packages/mrjuliuss/syntara/assets/css/bootstrap-rtl.min.css b/public/packages/mrjuliuss/syntara/assets/css/bootstrap-rtl.min.css
new file mode 100755
index 0000000..9570d0a
--- /dev/null
+++ b/public/packages/mrjuliuss/syntara/assets/css/bootstrap-rtl.min.css
@@ -0,0 +1,9 @@
+/*******************************************************************************
+* File: bootstrap-rtl.css
+* Author: Morteza Ansarinia
+
+
+ Hello, {{ $username }} We confirm your account creation, but it must be activated before being used. Click the link below to activate your account. Admin {{ $message }} {{ $user->created_at }} {{ $user->updated_at }} {{ $user->last_login }} {{ $throttle->ip_address }} {{ isset($throttle->banned_at) ? $throttle->banned_at : 'none' }}","
"],col:[2,"
"],tr:[2,"","
"],td:[3,"
"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return o.nodeName(a,"table")&&o.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)o.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=o.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&o.nodeName(a,b)?o.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}o.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=o.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||o.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,n=a.length;n>m;m++)if(e=a[m],e||0===e)if("object"===o.type(e))o.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>$2>")+h[2],j=h[0];while(j--)f=f.lastChild;o.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===o.inArray(e,d))&&(i=o.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f,g,h=o.event.special,i=0;void 0!==(c=a[i]);i++){if(o.acceptData(c)&&(f=c[L.expando],f&&(b=L.cache[f]))){if(d=Object.keys(b.events||{}),d.length)for(g=0;void 0!==(e=d[g]);g++)h[e]?o.event.remove(c,e):o.removeEvent(c,e,b.handle);L.cache[f]&&delete L.cache[f]}delete M.cache[c[M.expando]]}}}),o.fn.extend({text:function(a){return J(this,function(a){return void 0===a?o.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?o.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||o.cleanData(ob(c)),c.parentNode&&(b&&o.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(o.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return o.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(o.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,o.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,n=k-1,p=a[0],q=o.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(c=o.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=o.map(ob(c,"script"),kb),g=f.length;k>j;j++)h=c,j!==n&&(h=o.clone(h,!0,!0),g&&o.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,o.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&o.contains(i,h)&&(h.src?o._evalUrl&&o._evalUrl(h.src):o.globalEval(h.textContent.replace(hb,"")))}return this}}),o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){o.fn[a]=function(a){for(var c,d=[],e=o(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),o(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d=o(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:o.css(d[0],"display");return d.detach(),e}function tb(a){var b=m,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||o("")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||o.contains(a.ownerDocument,a)||(g=o.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",e=m.documentElement,f=m.createElement("div"),g=m.createElement("div");g.style.backgroundClip="content-box",g.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===g.style.backgroundClip,f.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",f.appendChild(g);function h(){g.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",e.appendChild(f);var d=a.getComputedStyle(g,null);b="1%"!==d.top,c="4px"===d.width,e.removeChild(f)}a.getComputedStyle&&o.extend(l,{pixelPosition:function(){return h(),b},boxSizingReliable:function(){return null==c&&h(),c},reliableMarginRight:function(){var b,c=g.appendChild(m.createElement("div"));return c.style.cssText=g.style.cssText=d,c.style.marginRight=c.style.width="0",g.style.width="1px",e.appendChild(f),b=!parseFloat(a.getComputedStyle(c,null).marginRight),e.removeChild(f),g.innerHTML="",b}})}(),o.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:0,fontWeight:400},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=o.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=o.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=o.css(a,"border"+R[f]+"Width",!0,e))):(g+=o.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=o.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===o.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):f[g]||(e=S(d),(c&&"none"!==c||!e)&&L.set(d,"olddisplay",e?c:o.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}o.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=o.camelCase(b),i=a.style;return b=o.cssProps[h]||(o.cssProps[h]=Fb(i,h)),g=o.cssHooks[b]||o.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(o.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||o.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]="",i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=o.camelCase(b);return b=o.cssProps[h]||(o.cssProps[h]=Fb(a.style,h)),g=o.cssHooks[b]||o.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||o.isNumeric(f)?f||0:e):e}}),o.each(["height","width"],function(a,b){o.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&zb.test(o.css(a,"display"))?o.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===o.css(a,"boxSizing",!1,e),e):0)}}}),o.cssHooks.marginRight=yb(l.reliableMarginRight,function(a,b){return b?o.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),o.each({margin:"",padding:"",border:"Width"},function(a,b){o.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(o.cssHooks[a+b].set=Gb)}),o.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(o.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=o.css(a,b[g],!1,d);return f}return void 0!==c?o.style(a,b,c):o.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?o(this).show():o(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}o.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(o.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?o.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=o.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){o.fx.step[a.prop]?o.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[o.cssProps[a.prop]]||o.cssHooks[a.prop])?o.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},o.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},o.fx=Kb.prototype.init,o.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(o.cssNumber[a]?"":"px"),g=(o.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(o.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,o.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=o.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k=this,l={},m=a.style,n=a.nodeType&&S(a),p=L.get(a,"fxshow");c.queue||(h=o._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,k.always(function(){k.always(function(){h.unqueued--,o.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],j=o.css(a,"display"),"none"===j&&(j=tb(a.nodeName)),"inline"===j&&"none"===o.css(a,"float")&&(m.display="inline-block")),c.overflow&&(m.overflow="hidden",k.always(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(n?"hide":"show")){if("show"!==e||!p||void 0===p[d])continue;n=!0}l[d]=p&&p[d]||o.style(a,d)}if(!o.isEmptyObject(l)){p?"hidden"in p&&(n=p.hidden):p=L.access(a,"fxshow",{}),f&&(p.hidden=!n),n?o(a).show():k.done(function(){o(a).hide()}),k.done(function(){var b;L.remove(a,"fxshow");for(b in l)o.style(a,b,l[b])});for(d in l)g=Ub(n?p[d]:0,d,k),d in p||(p[d]=g.start,n&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=o.camelCase(c),e=b[d],f=a[c],o.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=o.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=o.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:o.extend({},b),opts:o.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=o.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return o.map(k,Ub,j),o.isFunction(j.opts.start)&&j.opts.start.call(a,j),o.fx.timer(o.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}o.Animation=o.extend(Xb,{tweener:function(a,b){o.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),o.speed=function(a,b,c){var d=a&&"object"==typeof a?o.extend({},a):{complete:c||!c&&b||o.isFunction(a)&&a,duration:a,easing:c&&b||b&&!o.isFunction(b)&&b};return d.duration=o.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in o.fx.speeds?o.fx.speeds[d.duration]:o.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){o.isFunction(d.old)&&d.old.call(this),d.queue&&o.dequeue(this,d.queue)},d},o.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=o.isEmptyObject(a),f=o.speed(b,c,d),g=function(){var b=Xb(this,o.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=o.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&o.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=o.timers,g=d?d.length:0;for(c.finish=!0,o.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),o.each(["toggle","show","hide"],function(a,b){var c=o.fn[b];o.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),o.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){o.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),o.timers=[],o.fx.tick=function(){var a,b=0,c=o.timers;for(Lb=o.now();b","
+ * $application = new Monolog\Logger('application');
+ * $api = new Monolog\Logger('api');
+ *
+ * Monolog\Registry::addLogger($application);
+ * Monolog\Registry::addLogger($api);
+ *
+ * function testLogger()
+ * {
+ * Monolog\Registry::api()->addError('Sent to $api Logger instance');
+ * Monolog\Registry::application()->addError('Sent to $application Logger instance');
+ * }
+ *
+ *
+ * @author Tomas Tatarko
+
+## Features
+
+* Authentication
+* Users management
+* Groups & permissions management
+* Responsive design
+* i18n support :
+ - English (en)
+ - French (fr)
+ - Italian (it)
+ - Romanian (ro)
+ - Russian (ru)
+ - Slovenian (sl)
+ - Vietnamese (vi)
+ - Spanish (es)
+ - Swedish (se)
+ - Greek (el)
+ - Turkish (tr)
+ - Dutch (nl)
+ - Uyghur (ug)
+* RTL languages support
+
+## Requirements
+
+* PHP 5.3+ (Syntara 1.1)
+* PHP 5.4+ (Syntara 1.2)
+
+## Dependencies
+
+* [Cartalyst Sentry 2 package](https://github.com/cartalyst/sentry)
+* jQuery 2.x
+* Twitter Bootstrap 3.x
+
+## Screenshots
+
+## Installation
+
+## Custom Development
+
+## Changelogs
+
+## License
diff --git a/vendor/mrjuliuss/syntara/composer.json b/vendor/mrjuliuss/syntara/composer.json
new file mode 100644
index 0000000..0f2bdb6
--- /dev/null
+++ b/vendor/mrjuliuss/syntara/composer.json
@@ -0,0 +1,38 @@
+{
+ "name": "mrjuliuss/syntara",
+ "description": "Admin package for laravel 4",
+ "keywords": ["laravel","admin","sentry", "authentication", "user", "group", "permission"],
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "MrJuliuss",
+ "email": "julien.richarte@gmail.com"
+ }
+ ],
+ "require":
+ {
+ "php": ">=5.3.0",
+ "illuminate/support": "4.1.*",
+ "cartalyst/sentry": "~2"
+ },
+ "require-dev": {
+ "illuminate/database": "4.1.*",
+ "mockery/mockery": "0.9.0",
+ "phpunit/phpunit": "4.0.*"
+ },
+ "autoload": {
+ "classmap": [
+ "src/commands",
+ "src/controllers",
+ "src/helpers",
+ "src/migrations",
+ "src/models",
+ "src/services"
+ ],
+ "psr-0": {
+ "Mrjuliuss\\Syntara": "src/"
+ }
+ },
+
+ "minimum-stability": "dev"
+}
diff --git a/vendor/mrjuliuss/syntara/docs/changelogs.md b/vendor/mrjuliuss/syntara/docs/changelogs.md
new file mode 100644
index 0000000..7812491
--- /dev/null
+++ b/vendor/mrjuliuss/syntara/docs/changelogs.md
@@ -0,0 +1,186 @@
+#Versions
+
+##1.2.5
+
+Same as 1.1.21
+
+##1.1.21
+
+* German support
+* Bootstrap 3.1.1 upgrade
+* User activation by email
+* Number of items per page in option
+* Unit tests now run with mockery 0.9.0
+
+##1.2.4
+
+Same as 1.1.20
+
+##1.1.20
+
+* Fix redirection after login
+* Unit tests refactoring (now use mockery)
+
+##1.2.3
+
+Same as 1.1.19
+
+##1.1.19
+
+* Refactoring codes
+* RTL languages support
+* Uyghur support
+* Bootstrap 3.1.x support
+* jQuery 2.1.x support
+
+##1.2.2
+
+Same as 1.1.18
+
+##1.1.18
+
+* Refactoring code (deleting src/start.php, routes & filters are now loaded in SyntaraServiceProvider)
+* Dutch support
+* Turkish support
+* Swedish support
+* Greek support
+
+##1.2.1
+
+Same as 1.1.17
+
+##1.1.17
+
+08/01/2014
+
+* New documentation
+* Bootstrap 3.0.2 to 3.0.3
+* Return of validation rules in a config file
+* Update user validation rules (expend string to 255 chars)
+* External assets now uses cdnjs by cloudfare
+* Self ban are now disabled
+
+##1.2
+
+15/12/2013
+
+* Laravel 4.1 support
+* Fix permissions unit tests
+* Fix "create" user button
+
+##1.1.16
+
+08/12/2013
+
+* Add spanish support
+* Fix typos
+
+##1.1.15
+
+* i18 support : vietnamese
+* Possibility to add favicon
+* Upgrade to Bootstrap 3.0.2
+* Add Syntara Update command
+* Possibility to change master layout
+* Possibility to change dashboard uri
+
+##1.1.14
+
+* Fix Php 5.3 compatibility
+
+##1.1.13
+
+* Fix error on create user command
+
+##1.1.12
+
+* Fix error on create permission
+
+##1.1.11
+
+* i18n support : Slovenian
+
+##1.1.10
+
+* i18n support : Russian
+
+##1.1.9
+
+* i18n support : EN/FR/IT/RO
+
+##1.1.8
+
+* Prepare Syntara for Syntara Logviewer (https://github.com/MrJuliuss/syntara-logviewer)
+
+##1.1.7
+
+* Activate user on users list
+* Change validators rules for last_name/first_name
+* Fix errors on create/update permissions
+
+##1.1.6
+
+* Fixing errors (appeared with Syntara 1.1.5) on install
+
+##1.1.5
+
+* Refactoring config files
+* Fix search user by user ID
+* Possibility to override views
+
+##1.1.4
+
+* Uban/unban user from the user profile
+* Search banned user in users list
+
+##1.1.3
+
+* Can add new permission to custom routes
+* Refresh user informations in ajax on user update
+* PushState support for ajax redirects (Thanks to Kofel)
+
+
+##1.1.2
+
+* Update "Custom development" doc
+* Redirect attempted url after login
+* create an empty Permission model from Permission provider : PermissionProvider::createModel()
+
+##1.1.1
+
+* Add superuser permission to "Admin" group on install.
+* New migration : update "Admin" group with superuser permission
+
+##1.1
+
+* Permissions stored in a specific table
+* User may have permissions
+
+##1.0.4
+
+* Fix delete item link
+* Add confirm modal on deleting item
+* Fix font-weight
+
+##1.0.3
+
+* Changes site name
+* Add custom navigation
+* Fix breadcrumbs on error page
+* Fix css
+* Fix minor text fixes
+
+##1.0.2
+
+* Fix redirections errors when create user/group
+* Fix error message for duplicate email.
+
+##1.0.1
+
+* Update bootstrap 3RC1 to Release
+* Fix username existing on create user
+* Fix placeholder in login form ("Username" in Email input...)
+
+##1.0
+
+* First release
\ No newline at end of file
diff --git a/vendor/mrjuliuss/syntara/docs/custom.md b/vendor/mrjuliuss/syntara/docs/custom.md
new file mode 100644
index 0000000..556a6c0
--- /dev/null
+++ b/vendor/mrjuliuss/syntara/docs/custom.md
@@ -0,0 +1,224 @@
+# Custom Development
+
+## New features
+
+You must extend your new controller with the Syntara BaseController, like this :
+
+ /*
+ app/controller/FeatureControler.php
+ */
+
+ use MrJuliuss\Syntara\Controllers\BaseController;
+
+ class HomeController extends BaseController
+ {
+ public function getIndex()
+ {
+ $this->layout = View::make('index');
+ $this->layout->title = 'My new feature';
+
+ // add breadcrumb to current page
+ $this->layout->breadcrumb = array(
+ array(
+ 'title' => 'My new feature',
+ 'link' => 'dashboard',
+ 'icon' => 'glyphicon-home'
+ ),
+ array(
+ 'title' => 'Current Page',
+ 'link' => 'dashboard/current',
+ 'icon' => 'glyphicon-plus'
+ ),
+ );
+ }
+
+ }
+
+To find your current loggued user, you need to add the ```basicAuth``` filter to your route :
+
+ Route::get('dashboard/home', array(
+ 'as' => 'test_home',
+ 'before' => 'basicAuth|hasPermissions:user.create',
+ 'uses' => 'HomeController@getIndex'
+ )
+ );
+
+HomeController getIndex view :
+
+ /*
+ app/views/index.blade.php
+ */
+
+ @extends(Config::get('syntara::views.master'))
+ @section('content')
+
+ {{var_dump($currentUser);}}
+
+ @stop
+
+## New permissions
+Add permission to your new Controller route :
+
+ Route::get('routes', array('as' => 'route_name', 'before' => 'hasPermissions:permission', 'uses' => 'Namespace\ControlerRoute'));
+
+Where 'permission' is the name of your permission
+
+Example :
+
+ Route::get('blog/article/new', array('as' => 'new_article', 'before' => 'hasPermissions:create.article',
+ 'uses' => 'MrJuliuss\Syntara\Controllers\ArticleController@getCreate'));
+
+## Custom view
+
+To change a views by nother, you need tu override the config in ```app/routes.php``` or ```app/filters.php``` :
+
+ Config::set('syntara::views.dashboard-index', 'my-view')
+
+Please see ```syntara/src/config/views.php``` for more views
+
+## Change site name
+
+You can set the site name with View::composer in filters.php (or routes.php)
+
+ View::composer('syntara::layouts.dashboard.master', function($view)
+ {
+ $view->with('siteName', 'My Site');
+ });
+
+## Extend the user navigation
+
+Pass in 2 views, 'left-nav' and 'right-nav'. These add links to the left or right of the navigation bar.
+
+ View::composer('syntara::layouts.dashboard.master', function($view)
+ {
+ $view->nest('navPages', 'left-nav');
+ $view->nest('navPagesRight', 'right-nav');
+ });
+
+View ```left-nav.blade.php``` example :
+
+
+
+## Features
+
+* Authentication
+* Users management
+* Groups & permissions management
+* Responsive design
+* i18n support :
+ - English (en)
+ - French (fr)
+ - Italian (it)
+ - Romanian (ro)
+ - Russian (ru)
+ - Slovenian (sl)
+ - Vietnamese (vi)
+ - Spanish (es)
+ - Swedish (se)
+ - Greek (el)
+ - Turkish (tr)
+ - Dutch (nl)
+ - Uyghur (ug)
+* RTL languages support
+
+## Requirements
+
+* PHP 5.3+ (Syntara 1.1)
+* PHP 5.4+ (Syntara 1.2)
+
+## Dependencies
+
+* [Cartalyst Sentry 2 package](https://github.com/cartalyst/sentry)
+* jQuery 2.x
+* Twitter Bootstrap 3.x
+
+## Contributions
+
+Thank you to [everyone](https://github.com/MrJuliuss/syntara/graphs/contributors) who has contributed to Syntara
+
+### Pull requests
+
+*Laravel 4 support, send pull request on 1.1 branch
+*Laravel 4.1 support, send pull requests on 1.2 branch
+
+
+## [Screenshots](http://mrjuliuss.github.io/syntara/docs/screenshots.html)
+
+## [Installation](http://mrjuliuss.github.io/syntara/docs/installation.html)
+
+## [Custom Development](http://mrjuliuss.github.io/syntara/docs/custom.html)
+
+## [Changelogs](http://mrjuliuss.github.io/syntara/docs/changelogs.html)
+
+## [License](http://mrjuliuss.github.io/syntara/docs/license.html)
\ No newline at end of file
diff --git a/vendor/mrjuliuss/syntara/docs/installation.md b/vendor/mrjuliuss/syntara/docs/installation.md
new file mode 100644
index 0000000..cfceede
--- /dev/null
+++ b/vendor/mrjuliuss/syntara/docs/installation.md
@@ -0,0 +1,66 @@
+# Installation
+
+You need to have an installed Laravel 4, if not : please read the [L4 install doc](http://laravel.com/docs/installation)
+
+## Composer
+In the require key of composer.json file add the following line
+
+If your application uses **Laravel 4.0** :
+
+```"mrjuliuss/syntara": "1.1.*"```
+
+If your application uses **Laravel 4.1** :
+
+```"mrjuliuss/syntara": "1.2.*"```
+
+Run the **Composer** update command
+
+```composer update```
+
+## Application
+
+### Config providers & alias
+
+In **app/config/app.php**
+Add ```'Cartalyst\Sentry\SentryServiceProvider'```
and ```'Mrjuliuss\Syntara\SyntaraServiceProvider'``` to the end of the **$providers** array
+
+
+ 'providers' => array(
+ 'Illuminate\Foundation\Providers\ArtisanServiceProvider',
+ 'Illuminate\Auth\AuthServiceProvider',
+ ...
+ 'Cartalyst\Sentry\SentryServiceProvider',
+ 'Mrjuliuss\Syntara\SyntaraServiceProvider'
+ ),
+
+Add ```'Sentry' => 'Cartalyst\Sentry\Facades\Laravel\Sentry'``` to the end of the **$aliases** array
+
+ 'aliases' => array(
+
+ 'App' => 'Illuminate\Support\Facades\App',
+ 'Artisan' => 'Illuminate\Support\Facades\Artisan',
+ ...
+ 'Sentry' => 'Cartalyst\Sentry\Facades\Laravel\Sentry'
+ ),
+
+Before the next step, don't forget to configure your database in ```app/config/database.php```
+Please note that syntara is **not compatible with sqlite**.
+
+### Install command
+```php artisan syntara:install```
+
+### Create first user
+
+The first user must add to the "Admin" group, to allow you an access to all features
+
+```php artisan create:user username email password Admin```
+
+Now you can access to the login page : ```http://your-url/dashboard/login```
+
+
+### Update command
+
+To update Syntara, you need to start an update via composer : ```composer update```
+After this update, just start ```php artisan syntara:update```
+
+This command does the same as the install command, only it won't publish again the config files, overwriting your changes, allowing users to run any new database migrations or publish any new assets.
\ No newline at end of file
diff --git a/vendor/mrjuliuss/syntara/docs/license.md b/vendor/mrjuliuss/syntara/docs/license.md
new file mode 100644
index 0000000..363e03c
--- /dev/null
+++ b/vendor/mrjuliuss/syntara/docs/license.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Julien Richarte
+
+### Create user
+
+
+
+### Edit user
+
+
+
+## Groups
+
+### Groups list
+
+
+
+### Create group
+
+
+
+### Edit group
+
+
+
+## Permissions
+
+### Permissions list
+
+
+
+### Create permission
+
+
+
+### Edit permission
+
+
\ No newline at end of file
diff --git a/vendor/mrjuliuss/syntara/phpunit.xml b/vendor/mrjuliuss/syntara/phpunit.xml
new file mode 100755
index 0000000..12bee7a
--- /dev/null
+++ b/vendor/mrjuliuss/syntara/phpunit.xml
@@ -0,0 +1,18 @@
+
+
+
+
\ No newline at end of file
diff --git a/vendor/mrjuliuss/syntara/src/views/group/list-users-group.blade.php b/vendor/mrjuliuss/syntara/src/views/group/list-users-group.blade.php
new file mode 100644
index 0000000..b7feef5
--- /dev/null
+++ b/vendor/mrjuliuss/syntara/src/views/group/list-users-group.blade.php
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ @foreach ($groups as $group)
+
+ Id
+ {{ trans('syntara::all.name') }}
+ {{ trans('syntara::navigation.permissions') }}
+ {{ trans('syntara::all.show') }}
+
+
+ @endforeach
+
+
+
+
+ {{ $group->getId() }}
+ {{ $group->getName() }}
+ {{ json_encode($group->getPermissions()) }}
+ {{ trans('syntara::all.show') }}
+
+
+
+
+@if(!empty($candidateUsers) && $currentUser->hasAccess('user-group-management'))
+
+ @if($currentUser->hasAccess('user-group-management'))
+
+
+
+ @foreach ($users as $user)
+
+ @endif
+ ID
+ {{ trans('syntara::users.username') }}
+ {{ trans('syntara::all.show') }}
+
+ @if($currentUser->hasAccess('user-group-management'))
+
+ @endforeach
+
+
+
+
+ @endif
+ {{ $user->getId() }}
+ {{ $user->username }}
+ {{ trans('syntara::all.show') }}
+
+
\ No newline at end of file
diff --git a/vendor/mrjuliuss/syntara/src/views/mail/user-activation.blade.php b/vendor/mrjuliuss/syntara/src/views/mail/user-activation.blade.php
new file mode 100644
index 0000000..8c232ac
--- /dev/null
+++ b/vendor/mrjuliuss/syntara/src/views/mail/user-activation.blade.php
@@ -0,0 +1,17 @@
+
+
+
+ Activate your account
+
+
+
\ No newline at end of file
diff --git a/vendor/mrjuliuss/syntara/src/views/permission/new-permission.blade.php b/vendor/mrjuliuss/syntara/src/views/permission/new-permission.blade.php
new file mode 100644
index 0000000..bf8d383
--- /dev/null
+++ b/vendor/mrjuliuss/syntara/src/views/permission/new-permission.blade.php
@@ -0,0 +1,41 @@
+@extends(Config::get('syntara::views.master'))
+
+@section('content')
+
+
+ @if($currentUser->hasAccess('permissions-management'))
+
+
+
+ @foreach ($permissions as $permission)
+
+ @endif
+ Id
+ {{ trans('syntara::all.name') }}
+ {{ trans('syntara::permissions.value') }}
+ {{ trans('syntara::permissions.description') }}
+ @if($currentUser->hasAccess('permissions-management'))
+ {{ trans('syntara::all.show') }}
+ @endif
+
+ @if($currentUser->hasAccess('permissions-management'))
+
+ @endforeach
+
+
+
+
+ @endif
+ {{ $permission->getId() }}
+ {{ $permission->getName() }}
+ {{ $permission->getValue() }}
+ {{ $permission->getDescription() }}
+ @if($currentUser->hasAccess('permissions-management'))
+ {{ trans('syntara::all.show') }}
+ @endif
+
+
+
\ No newline at end of file
diff --git a/vendor/mrjuliuss/syntara/src/views/user/new-user.blade.php b/vendor/mrjuliuss/syntara/src/views/user/new-user.blade.php
new file mode 100644
index 0000000..66313de
--- /dev/null
+++ b/vendor/mrjuliuss/syntara/src/views/user/new-user.blade.php
@@ -0,0 +1,68 @@
+@extends(Config::get('syntara::views.master'))
+
+@section('content')
+
+
+ @if($currentUser->hasAccess('delete-user'))
+
+
+
+ @foreach ($datas['users'] as $user)
+ getId());
+ ?>
+
+ @endif
+
+ {{ trans('syntara::users.username') }}
+ {{ trans('syntara::all.email') }}
+
+
+ {{ trans('syntara::users.last-name') }}
+ {{ trans('syntara::users.first-name') }}
+
+ @if($currentUser->hasAccess('update-user-info'))
+
+
+ {{ trans('syntara::all.show') }}
+ @endif
+
+ @if($currentUser->hasAccess('delete-user'))
+
+ @endforeach
+
+
+
+
+ @endif
+ {{ $user->getId() }}
+ {{ $user->username }}
+ {{ $user->getLogin() }}
+
+ @foreach($user->getGroups()->toArray() as $key => $group)
+ {{ $group['name'] }},
+ @endforeach
+
+ {{ json_encode($user->getPermissions()) }}
+ {{ $user->last_name }}
+ {{ $user->first_name }}
+ {{ $user->isActivated() ? trans('syntara::all.yes') : ''.trans('syntara::all.no').''}}
+ @if($currentUser->hasAccess('update-user-info'))
+ {{ $throttle->isBanned() ? trans('syntara::all.yes') : trans('syntara::all.no')}}
+ {{ trans('syntara::all.show') }}
+ @endif
+
\n";
+ echo $messageId . " Type Indicator
\n";
+
+ if ($messageId == "02000000") {
+ $map = array(
+ 'Challenge',
+ 'Context',
+ 'Target Information Security Buffer',
+ 'Target Name Data',
+ 'NetBIOS Domain Name',
+ 'NetBIOS Server Name',
+ 'DNS Domain Name',
+ 'DNS Server Name',
+ 'BLOB',
+ 'Target Information Terminator',
+ );
+
+ $data = $this->parseMessage2($this->hex2bin($message));
+
+ foreach ($map as $key => $value) {
+ echo bin2hex($data[$key]) . ' - ' . $data[$key] . ' ||| ' . $value . "
\n";
+ }
+ } elseif ($messageId == "03000000") {
+ $i = 0;
+ $data[$i++] = substr($message, 24, 16);
+ list($lmLength, $lmOffset) = $this->readSecurityBuffer($data[$i - 1]);
+
+ $data[$i++] = substr($message, 40, 16);
+ list($ntmlLength, $ntmlOffset) = $this->readSecurityBuffer($data[$i - 1]);
+
+ $data[$i++] = substr($message, 56, 16);
+ list($targetLength, $targetOffset) = $this->readSecurityBuffer($data[$i - 1]);
+
+ $data[$i++] = substr($message, 72, 16);
+ list($userLength, $userOffset) = $this->readSecurityBuffer($data[$i - 1]);
+
+ $data[$i++] = substr($message, 88, 16);
+ list($workLength, $workOffset) = $this->readSecurityBuffer($data[$i - 1]);
+
+ $data[$i++] = substr($message, 104, 16);
+ $data[$i++] = substr($message, 120, 8);
+ $data[$i++] = substr($message, $targetOffset, $targetLength);
+ $data[$i++] = substr($message, $userOffset, $userLength);
+ $data[$i++] = substr($message, $workOffset, $workLength);
+ $data[$i++] = substr($message, $lmOffset, $lmLength);
+ $data[$i] = substr($message, $ntmlOffset, $ntmlLength);
+
+ $map = array(
+ 'LM Response Security Buffer',
+ 'NTLM Response Security Buffer',
+ 'Target Name Security Buffer',
+ 'User Name Security Buffer',
+ 'Workstation Name Security Buffer',
+ 'Session Key Security Buffer',
+ 'Flags',
+ 'Target Name Data',
+ 'User Name Data',
+ 'Workstation Name Data',
+ 'LM Response Data',
+ 'NTLM Response Data',
+ );
+
+ foreach ($map as $key => $value) {
+ echo $data[$key] . ' - ' . $this->hex2bin($data[$key]) . ' ||| ' . $value . "
\n";
+ }
+ }
+
+ echo "
";
+ }
+}
diff --git a/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php
new file mode 100644
index 0000000..de19fc1
--- /dev/null
+++ b/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php
@@ -0,0 +1,71 @@
+
+ * $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls')
+ * ->setAuthMode('XOAUTH2')
+ * ->setUsername('YOUR_EMAIL_ADDRESS')
+ * ->setPassword('YOUR_ACCESS_TOKEN');
+ *
+ *
+ * @package Swift
+ * @subpackage Transport
+ * @author xu.li
+ * $builder = new MaskBuilder();
+ * $builder
+ * ->add('view')
+ * ->add('create')
+ * ->add('edit')
+ * ;
+ * var_dump($builder->get()); // int(7)
+ * var_dump($builder->getPattern()); // string(32) ".............................ECV"
+ *
+ *
+ * We have defined some commonly used base permissions which you can use:
+ * - VIEW: the SID is allowed to view the domain object / field
+ * - CREATE: the SID is allowed to create new instances of the domain object / fields
+ * - EDIT: the SID is allowed to edit existing instances of the domain object / field
+ * - DELETE: the SID is allowed to delete domain objects
+ * - UNDELETE: the SID is allowed to recover domain objects from trash
+ * - OPERATOR: the SID is allowed to perform any action on the domain object
+ * except for granting others permissions
+ * - MASTER: the SID is allowed to perform any action on the domain object,
+ * and is allowed to grant other SIDs any permission except for
+ * MASTER and OWNER permissions
+ * - OWNER: the SID is owning the domain object in question and can perform any
+ * action on the domain object as well as grant any permission
+ *
+ * @author Johannes M. Schmitt
+ * public function getRoles()
+ * {
+ * return array('ROLE_USER');
+ * }
+ *
+ *
+ * Alternatively, the roles might be stored on a ``roles`` property,
+ * and populated in any number of different ways when the user object
+ * is created.
+ *
+ * @return Role[] The user roles
+ */
+ public function getRoles();
+
+ /**
+ * Returns the password used to authenticate the user.
+ *
+ * This should be the encoded password. On authentication, a plain-text
+ * password will be salted, encoded, and then compared to this value.
+ *
+ * @return string The password
+ */
+ public function getPassword();
+
+ /**
+ * Returns the salt that was originally used to encode the password.
+ *
+ * This can return null if the password was not encoded using a salt.
+ *
+ * @return string|null The salt
+ */
+ public function getSalt();
+
+ /**
+ * Returns the username used to authenticate the user.
+ *
+ * @return string The username
+ */
+ public function getUsername();
+
+ /**
+ * Removes sensitive data from the user.
+ *
+ * This is important if, at any given point, sensitive information like
+ * the plain-text password is stored on this object.
+ */
+ public function eraseCredentials();
+}
diff --git a/vendor/symfony/security/Symfony/Component/Security/Core/User/UserProviderInterface.php b/vendor/symfony/security/Symfony/Component/Security/Core/User/UserProviderInterface.php
new file mode 100644
index 0000000..6b7895c
--- /dev/null
+++ b/vendor/symfony/security/Symfony/Component/Security/Core/User/UserProviderInterface.php
@@ -0,0 +1,76 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Security\Core\User;
+
+use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
+use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
+
+/**
+ * Represents a class that loads UserInterface objects from some source for the authentication system.
+ *
+ * In a typical authentication configuration, a username (i.e. some unique
+ * user identifier) credential enters the system (via form login, or any
+ * method). The user provider that is configured with that authentication
+ * method is asked to load the UserInterface object for the given username
+ * (via loadUserByUsername) so that the rest of the process can continue.
+ *
+ * Internally, a user provider can load users from any source (databases,
+ * configuration, web service). This is totally independent of how the authentication
+ * information is submitted or what the UserInterface object looks like.
+ *
+ * @see UserInterface
+ *
+ * @author Fabien Potencier