From 0eee1fd0af3f1a0c0f1fc734326c457c07c2fa4e Mon Sep 17 00:00:00 2001 From: Yan Date: Wed, 16 Aug 2017 18:26:30 +0630 Subject: [PATCH] menu ui update --- app/assets/stylesheets/settings.scss | 4 ++ .../settings/set_menu_items_controller.rb | 58 +++++++++++++-- .../settings/simple_menu_items_controller.rb | 59 +++++++++++++-- app/models/menu_item.rb | 6 +- app/views/crm/customers/_form.html.erb | 1 - app/views/crm/customers/index.html.erb | 3 +- app/views/settings/item_sets/_form.html.erb | 1 + app/views/settings/item_sets/edit.html.erb | 1 - app/views/settings/item_sets/new.html.erb | 1 - .../settings/set_menu_items/_form.html.erb | 68 +++++++++++------- .../settings/set_menu_items/edit.html.erb | 26 ++++++- .../settings/set_menu_items/new.html.erb | 2 +- .../settings/simple_menu_items/_form.html.erb | 67 ++++++++++------- .../settings/simple_menu_items/edit.html.erb | 28 ++++++-- .../settings/simple_menu_items/new.html.erb | 6 +- .../20170331024749_create_menu_items.rb | 11 +-- .../20170628103624_create_print_settings.rb | 6 +- ...1543_remove_d_bcols_from_print_settings.rb | 8 --- ...d_Dome_dish_kitchen_restaurant_1886917.png | Bin 0 -> 6195 bytes 19 files changed, 260 insertions(+), 96 deletions(-) delete mode 100644 db/migrate/20170814041543_remove_d_bcols_from_print_settings.rb create mode 100644 public/image/menu_images/if_Dish_food_Dome_dish_kitchen_restaurant_1886917.png diff --git a/app/assets/stylesheets/settings.scss b/app/assets/stylesheets/settings.scss index 2660d836..ec02f7c4 100644 --- a/app/assets/stylesheets/settings.scss +++ b/app/assets/stylesheets/settings.scss @@ -56,4 +56,8 @@ ul.dropdown-menu li a{ .menu-item-img { margin: 10px; text-align: center; + } + + .padding-10 { + padding: 10px; } \ No newline at end of file diff --git a/app/controllers/settings/set_menu_items_controller.rb b/app/controllers/settings/set_menu_items_controller.rb index 73e8b4eb..64b9c945 100644 --- a/app/controllers/settings/set_menu_items_controller.rb +++ b/app/controllers/settings/set_menu_items_controller.rb @@ -1,6 +1,8 @@ class Settings::SetMenuItemsController < ApplicationController before_action :set_settings_menu_item, only: [:show, :edit, :update, :destroy] before_action :set_settings_menu_category, only: [:index, :show, :edit, :new, :update] + before_action :set_settings_item_attribute, only: [:index, :show, :edit, :new, :update ,:create] + before_action :set_settings_item_option, only: [:index, :show, :edit, :new, :update ,:create] # GET /settings/menu_items # GET /settings/menu_items.json def index @@ -18,22 +20,43 @@ class Settings::SetMenuItemsController < ApplicationController def new @settings_menu_item = MenuItem.new @settings_menu_item.type = "SetMenuItem" + @item_sets = ItemSet.all end # GET /settings/menu_items/1/edit def edit + @item_sets = ItemSet.all end # POST /settings/menu_items # POST /settings/menu_items.json def create @settings_menu_item = MenuItem.new(settings_menu_item_params) - if params[:simple_menu_item][:menu_item_id] == '' - @settings_menu_item.menu_category_id = params[:menu_category_id] - end + + # if params[:simple_menu_item][:menu_item_id] == '' + @settings_menu_item.menu_category_id = params[:menu_category_id] + # end @settings_menu_item.created_by = current_login_employee.name + + # Bind for Item Sets + if params[:simple_menu_item][:item_sets].count > 1 + params[:simple_menu_item][:item_sets].delete_at(0) + + sets = ItemSet.find(params[:simple_menu_item][:item_sets]) + + if sets.count > 0 + @settings_menu_item.item_sets = sets + end + end + + # Remove "" default first + params[:simple_menu_item][:item_attributes].delete_at(0) + params[:simple_menu_item][:item_options].delete_at(0) respond_to do |format| if @settings_menu_item.save + menu_item = MenuItem.find(@settings_menu_item.id) + menu_item.update_attributes(item_attributes: params[:simple_menu_item][:item_attributes], item_options: params[:simple_menu_item][:item_options]) + format.html { redirect_to settings_menu_category_set_menu_items_path, notice: 'Menu item was successfully created.' } format.json { render :show, status: :created, location: @settings_menu_item } else @@ -46,8 +69,27 @@ class Settings::SetMenuItemsController < ApplicationController # PATCH/PUT /settings/menu_items/1 # PATCH/PUT /settings/menu_items/1.json def update + # Remove "" default first + params[:simple_menu_item][:item_attributes].delete_at(0) + params[:simple_menu_item][:item_options].delete_at(0) + + # Bind for Item Sets + if params[:simple_menu_item][:item_sets].count > 1 + params[:simple_menu_item][:item_sets].delete_at(0) + + sets = ItemSet.find(params[:simple_menu_item][:item_sets]) + + if sets.count > 0 + @settings_menu_item.item_sets = sets + end + end + + @settings_menu_item.menu_category_id = params[:menu_category_id] + respond_to do |format| if @settings_menu_item.update(settings_menu_item_params) + @settings_menu_item.update_attributes(item_attributes: params[:simple_menu_item][:item_attributes], item_options: params[:simple_menu_item][:item_options]) + format.html { redirect_to settings_menu_category_set_menu_items_path, notice: 'Menu item was successfully updated.' } format.json { render :show, status: :ok, location: @settings_menu_item } else @@ -79,8 +121,16 @@ class Settings::SetMenuItemsController < ApplicationController @category = MenuCategory.find(params[:menu_category_id]) end + def set_settings_item_attribute + @item_attributes = MenuItemAttribute.all.order("id asc").map{|a| [a.name, a.value]} + end + + def set_settings_item_option + @item_options = MenuItemOption.all + end + # Never trust parameters from the scary internet, only allow the white list through. def settings_menu_item_params - params.require(:set_menu_item).permit(:item_code, :name, :alt_name, :type, :image_path, :menu_category_id,:account_id , :menu_item_id, :min_qty, :min_selectable_item, :max_selectable_item, :created_by) + params.require(:set_menu_item).permit(:item_code, :name, :alt_name, :type, :image_path, :menu_category_id,:account_id , :item_attributes, :item_options, :min_qty, :is_sub_item, :is_available, :created_by) end end diff --git a/app/controllers/settings/simple_menu_items_controller.rb b/app/controllers/settings/simple_menu_items_controller.rb index 3fa1945d..9d3ac5ed 100644 --- a/app/controllers/settings/simple_menu_items_controller.rb +++ b/app/controllers/settings/simple_menu_items_controller.rb @@ -1,6 +1,8 @@ class Settings::SimpleMenuItemsController < ApplicationController before_action :set_settings_menu_item, only: [:show, :edit, :update, :destroy ] before_action :set_settings_menu_category, only: [:index, :show, :edit, :new, :update ,:create] + before_action :set_settings_item_attribute, only: [:index, :show, :edit, :new, :update ,:create] + before_action :set_settings_item_option, only: [:index, :show, :edit, :new, :update ,:create] # GET /settings/menu_items # GET /settings/menu_items.json def index @@ -16,11 +18,13 @@ class Settings::SimpleMenuItemsController < ApplicationController # GET /settings/menu_items/new def new - @settings_menu_item = MenuItem.new + @settings_menu_item = MenuItem.new + @item_sets = ItemSet.all end # GET /settings/menu_items/1/edit - def edit + def edit + @item_sets = ItemSet.all end # POST /settings/menu_items @@ -28,13 +32,30 @@ class Settings::SimpleMenuItemsController < ApplicationController def create @settings_menu_item = MenuItem.new(settings_menu_item_params) - if params[:simple_menu_item][:menu_item_id] == '' - @settings_menu_item.menu_category_id = params[:menu_category_id] - end + # if params[:simple_menu_item][:menu_item_id] == '' + @settings_menu_item.menu_category_id = params[:menu_category_id] + # end @settings_menu_item.created_by = current_login_employee.name + # Bind for Item Sets + if params[:simple_menu_item][:item_sets].count > 1 + params[:simple_menu_item][:item_sets].delete_at(0) + + sets = ItemSet.find(params[:simple_menu_item][:item_sets]) + + if sets.count > 0 + @settings_menu_item.item_sets = sets + end + end + + # Remove "" default first + params[:simple_menu_item][:item_attributes].delete_at(0) + params[:simple_menu_item][:item_options].delete_at(0) respond_to do |format| if @settings_menu_item.save + menu_item = MenuItem.find(@settings_menu_item.id) + menu_item.update_attributes(item_attributes: params[:simple_menu_item][:item_attributes], item_options: params[:simple_menu_item][:item_options]) + format.html { redirect_to settings_menu_category_simple_menu_items_path, notice: 'Menu item was successfully created.' } format.json { render :show, status: :created, location: @settings_menu_item } else @@ -47,8 +68,26 @@ class Settings::SimpleMenuItemsController < ApplicationController # PATCH/PUT /settings/menu_items/1 # PATCH/PUT /settings/menu_items/1.json def update + # Remove "" default first + params[:simple_menu_item][:item_attributes].delete_at(0) + params[:simple_menu_item][:item_options].delete_at(0) + + # Bind for Item Sets + if params[:simple_menu_item][:item_sets].count > 1 + params[:simple_menu_item][:item_sets].delete_at(0) + + sets = ItemSet.find(params[:simple_menu_item][:item_sets]) + + if sets.count > 0 + @settings_menu_item.item_sets = sets + end + end + + @settings_menu_item.menu_category_id = params[:menu_category_id] + respond_to do |format| if @settings_menu_item.update(settings_menu_item_params) + @settings_menu_item.update_attributes(item_attributes: params[:simple_menu_item][:item_attributes], item_options: params[:simple_menu_item][:item_options]) format.html { redirect_to settings_menu_category_simple_menu_items_path, notice: 'Menu item was successfully updated.' } format.json { render :show, status: :ok, location: @settings_menu_item } else @@ -80,8 +119,16 @@ class Settings::SimpleMenuItemsController < ApplicationController @category = MenuCategory.find(params[:menu_category_id]) end + def set_settings_item_attribute + @item_attributes = MenuItemAttribute.all.order("id asc") #.map{|a| [a.name, a.value]} + end + + def set_settings_item_option + @item_options = MenuItemOption.all + end + # Never trust parameters from the scary internet, only allow the white list through. def settings_menu_item_params - params.require(:simple_menu_item).permit(:item_code, :name, :alt_name, :type, :image_path, :menu_category_id,:account_id,:item_attributes, :menu_item_id, :min_qty, :min_selectable_item, :max_selectable_item, :created_by) + params.require(:simple_menu_item).permit(:item_code, :name, :alt_name, :type, :image_path, :menu_category_id, :account_id, :item_attributes, :item_options, :min_qty, :is_sub_item, :is_available, :created_by) end end diff --git a/app/models/menu_item.rb b/app/models/menu_item.rb index 2f575d9f..8213ae88 100644 --- a/app/models/menu_item.rb +++ b/app/models/menu_item.rb @@ -3,14 +3,14 @@ class MenuItem < ApplicationRecord belongs_to :menu_category, :optional => true has_many :menu_item_instances - belongs_to :parent, :class_name => "MenuItem", foreign_key: "menu_item_id", :optional => true - has_many :children, :class_name => "MenuItem", foreign_key: "menu_item_id" + # belongs_to :parent, :class_name => "MenuItem", foreign_key: "menu_item_id", :optional => true + # has_many :children, :class_name => "MenuItem", foreign_key: "menu_item_id" belongs_to :account has_many :menu_item_sets has_many :item_sets, through: :menu_item_sets - validates_presence_of :name, :type, :min_qty, :taxable, :min_selectable_item, :max_selectable_item + validates_presence_of :name, :type, :min_qty, :taxable default_scope { order('item_code asc') } diff --git a/app/views/crm/customers/_form.html.erb b/app/views/crm/customers/_form.html.erb index c913651a..e9cef629 100644 --- a/app/views/crm/customers/_form.html.erb +++ b/app/views/crm/customers/_form.html.erb @@ -1,4 +1,3 @@ - <%= simple_form_for([:crm,@crm_customer]) do |f| %> <%= f.error_notification %> diff --git a/app/views/crm/customers/index.html.erb b/app/views/crm/customers/index.html.erb index 14e38822..71772c92 100644 --- a/app/views/crm/customers/index.html.erb +++ b/app/views/crm/customers/index.html.erb @@ -124,7 +124,7 @@ $(document).on('click',".customer_tr",function(){ var url = "customers/" + customer_id + "/edit"; } - $("#customer_tax_profiles").children().removeAttr("selected").css({'color':'#000','background':'none'});; + $("#customer_tax_profiles").children().removeAttr("selected").css({'color':'#000','background':'none'}); $.ajax({ type: "GET", @@ -135,7 +135,6 @@ $(document).on('click',".customer_tr",function(){ // Selected for Taxes var taxes = JSON.stringify(data.tax_profiles); var parse_taxes = JSON.parse(taxes); - console.log(parse_taxes); $.each(parse_taxes, function(i, value){ $("#customer_tax_profiles option[value='" + value + "']").attr("selected","selected").css({'color':'#fff','background':'#215d9c'}); }); diff --git a/app/views/settings/item_sets/_form.html.erb b/app/views/settings/item_sets/_form.html.erb index e28cab09..28441ea5 100644 --- a/app/views/settings/item_sets/_form.html.erb +++ b/app/views/settings/item_sets/_form.html.erb @@ -9,5 +9,6 @@
<%= f.button :submit ,:class=>'btn btn-success'%> + <%= link_to 'Back', settings_item_sets_path,:class => 'btn btn-danger' %>
<% end %> diff --git a/app/views/settings/item_sets/edit.html.erb b/app/views/settings/item_sets/edit.html.erb index 2f0d54ba..55a86645 100644 --- a/app/views/settings/item_sets/edit.html.erb +++ b/app/views/settings/item_sets/edit.html.erb @@ -1,4 +1,3 @@

Editing Settings Item Set

<%= render 'form', settings_item_set: @settings_item_set %> -<%= link_to 'Back', settings_item_sets_path,:class => 'btn btn-danger' %> diff --git a/app/views/settings/item_sets/new.html.erb b/app/views/settings/item_sets/new.html.erb index ff581dc6..003b758d 100644 --- a/app/views/settings/item_sets/new.html.erb +++ b/app/views/settings/item_sets/new.html.erb @@ -2,4 +2,3 @@ <%= render 'form', settings_item_set: @settings_item_set %> -<%= link_to 'Back', settings_item_sets_path,:class => 'btn btn-danger' %> diff --git a/app/views/settings/set_menu_items/_form.html.erb b/app/views/settings/set_menu_items/_form.html.erb index 1ac499fd..f243fb74 100644 --- a/app/views/settings/set_menu_items/_form.html.erb +++ b/app/views/settings/set_menu_items/_form.html.erb @@ -1,36 +1,52 @@ <%= simple_form_for([:settings,@category, @settings_menu_item]) do |f| %> <%= f.error_notification %> -
+ +
- +
+ +
+
+
+ + <%= f.file_field :image_path, :class => "img-thumbnail" %>
- <%= f.file_field :image_path, :class => "img-thumbnail" %>
-
-
-
- <%= f.input :item_code %> - <%= f.input :name %> - <%= f.input :alt_name %> - <%= f.input :type %> - <%= f.input :account_id, :label => "Account type", :collection => Account.collection %> - <%= f.input :menu_item_id, :label => "Parent Menu Item", :collection => MenuItem.collection %> - - <%= f.input :min_qty %> - <%= f.input :min_selectable_item %> - <%= f.input :max_selectable_item %> +
+
+ <%= f.input :item_sets, :collection => @item_sets, :input_html => { :multiple => true }, :class => "form-control item_sets" %> +
-
-
- <%= f.button :submit %> +
+ <%= f.button :submit %> +
<% end %> diff --git a/app/views/settings/set_menu_items/edit.html.erb b/app/views/settings/set_menu_items/edit.html.erb index 158b7c1c..6a4eb567 100644 --- a/app/views/settings/set_menu_items/edit.html.erb +++ b/app/views/settings/set_menu_items/edit.html.erb @@ -1,5 +1,3 @@ - -
- <%= render 'form', settings_set_menu_item: @settings_menu_item %> + + <%= render 'form', settings_set_menu_item: @settings_menu_item, item_sets: @item_sets %>
+ + \ No newline at end of file diff --git a/app/views/settings/set_menu_items/new.html.erb b/app/views/settings/set_menu_items/new.html.erb index c7d277bf..f0eaf2df 100644 --- a/app/views/settings/set_menu_items/new.html.erb +++ b/app/views/settings/set_menu_items/new.html.erb @@ -11,5 +11,5 @@
  • New
  • - <%= render 'form', settings_set_menu_item: @settings_menu_item %> + <%= render 'form', settings_set_menu_item: @settings_menu_item, item_attributes: @item_attributes, item_options: @item_options, item_sets: @item_sets %>
    diff --git a/app/views/settings/simple_menu_items/_form.html.erb b/app/views/settings/simple_menu_items/_form.html.erb index 2edc1e50..721c7230 100644 --- a/app/views/settings/simple_menu_items/_form.html.erb +++ b/app/views/settings/simple_menu_items/_form.html.erb @@ -1,35 +1,52 @@ <%= simple_form_for([:settings,@category, @settings_menu_item]) do |f| %> <%= f.error_notification %> -
    + +
    - +
    + +
    +
    +
    + + <%= f.file_field :image_path, :class => "img-thumbnail" %>
    - <%= f.file_field :image_path, :class => "img-thumbnail" %>
    -
    -
    -
    - <%= f.input :item_code %> - <%= f.input :name %> - <%= f.input :alt_name %> - <%= f.input :type %> - <%= f.input :account_id, :label => "Account type", :collection => Account.collection %> - <%= f.input :menu_item_id, :label => "Parent Menu Item", :collection => MenuItem.collection %> - <%= f.input :min_qty %> - <%= f.input :min_selectable_item %> - <%= f.input :max_selectable_item %> +
    +
    + <%= f.input :item_sets, :collection => @item_sets, :input_html => { :multiple => true }, :class => "form-control item_sets" %> +
    -
    -
    - <%= f.button :submit %> +
    + <%= f.button :submit %> +
    <% end %> diff --git a/app/views/settings/simple_menu_items/edit.html.erb b/app/views/settings/simple_menu_items/edit.html.erb index 07849c07..84c60e04 100644 --- a/app/views/settings/simple_menu_items/edit.html.erb +++ b/app/views/settings/simple_menu_items/edit.html.erb @@ -1,7 +1,3 @@ - -
    - <%= render 'form', settings_simple_menu_item: @settings_menu_item %> + + <%= render 'form', settings_simple_menu_item: @settings_menu_item, item_sets: @item_sets %>
    + + diff --git a/app/views/settings/simple_menu_items/new.html.erb b/app/views/settings/simple_menu_items/new.html.erb index 9e18525b..158e7d52 100644 --- a/app/views/settings/simple_menu_items/new.html.erb +++ b/app/views/settings/simple_menu_items/new.html.erb @@ -10,5 +10,9 @@
  • New
  • - <%= render 'form', settings_simple_menu_item: @settings_menu_item %> +
    +
    + <%= render 'form', settings_simple_menu_item: @settings_menu_item, item_attributes: @item_attributes, item_options: @item_options, item_sets: @item_sets %> +
    +
    diff --git a/db/migrate/20170331024749_create_menu_items.rb b/db/migrate/20170331024749_create_menu_items.rb index ce6d1486..75897d52 100644 --- a/db/migrate/20170331024749_create_menu_items.rb +++ b/db/migrate/20170331024749_create_menu_items.rb @@ -1,4 +1,3 @@ - class CreateMenuItems < ActiveRecord::Migration[5.1] def change create_table :menu_items do |t| @@ -10,12 +9,16 @@ class CreateMenuItems < ActiveRecord::Migration[5.1] t.string :information t.string :type, :null => false, :default => "SimpleMenuItem" t.references :menu_category, foreign_key: true - t.references :menu_item, foreign_key: true + t.json :item_attributes + t.json :item_options + # t.references :menu_item, foreign_key: true t.references :account, foreign_key: true t.integer :min_qty, :null => false, :default => 1 t.boolean :taxable, :null => false, :default => true - t.integer :min_selectable_item, :null => false, :default => 1 - t.integer :max_selectable_item, :null => false, :default => 1 + t.boolean :is_sub_item, :null => false, :default => false + t.boolean :is_available, :null => false, :default => true + # t.integer :min_selectable_item, :null => false, :default => 1 + # t.integer :max_selectable_item, :null => false, :default => 1 t.string :created_by t.timestamps diff --git a/db/migrate/20170628103624_create_print_settings.rb b/db/migrate/20170628103624_create_print_settings.rb index aca49a0d..28c0ae57 100644 --- a/db/migrate/20170628103624_create_print_settings.rb +++ b/db/migrate/20170628103624_create_print_settings.rb @@ -3,11 +3,7 @@ class CreatePrintSettings < ActiveRecord::Migration[5.1] create_table :print_settings do |t| t.string :name, :null => false t.string :unique_code, :null => false - t.string :template - t.string :db_name - t.string :db_type - t.string :db_username - t.string :db_password + t.string :template t.string :printer_name, :null => false t.string :api_settings t.decimal :page_width, :null => false, :default => 200 diff --git a/db/migrate/20170814041543_remove_d_bcols_from_print_settings.rb b/db/migrate/20170814041543_remove_d_bcols_from_print_settings.rb deleted file mode 100644 index 48a7de5d..00000000 --- a/db/migrate/20170814041543_remove_d_bcols_from_print_settings.rb +++ /dev/null @@ -1,8 +0,0 @@ -class RemoveDBcolsFromPrintSettings < ActiveRecord::Migration[5.1] - def change - remove_column :print_settings, :db_name, :string - remove_column :print_settings, :db_type, :string - remove_column :print_settings, :db_username, :string - remove_column :print_settings, :db_password, :string - end -end diff --git a/public/image/menu_images/if_Dish_food_Dome_dish_kitchen_restaurant_1886917.png b/public/image/menu_images/if_Dish_food_Dome_dish_kitchen_restaurant_1886917.png new file mode 100644 index 0000000000000000000000000000000000000000..0c364b22b1963415a7b33961eed94b45ebbdc97d GIT binary patch literal 6195 zcmV-37|iF1P)5n?m~f-uAMv-+O1fAn=(fYB=n8| zI|;lKjMw*^`OdBtD^_r&ud$e*N_U`8{OHQoF_$>3KN=w(r|P22jnOE)imx7gQIPV_kfti5h+O*HI2Uop?oM01qjxa3KR z|0l`g6i5mM@+Cm}LHw8I9ir4G61}N5;CiunYjZf?YpVqM1OeKvX!9JfBD0mCiG@C; zfcmV0t^fhj(!m|9)h~$9wy&=KnH3wGq7E;$?5Ju2th%ywGAOnPg6jx08~{?KSbYRI z{6|CfD#pXwQmdCeb;FKcF12E)IsyoUR?lnwB#FKqq%KO_;qJn#ZURWkes*L@gA`87Cg}b`fRsOf6qdV}KC@^uDvXK}VAZ^zoMb8f4nVUqZcu+GK-U3p)|!^z z_S~ZFs1PbbfJd%=q&6nj*R{y43d%~osYez81OQ^1;zc7p!GsP zuT)UuB}2$vN8JyKNdU=A&P+(Dy*va!ybJucu(f#Eb2n~58BsO@tX%wr-yP_@55P@{ zw2}}&1S|sK!wn>aOw@I`DOa6LOGzgXKq=(ts*gqDb(VwxUCAup9c;VrESEy5ECg6{ z^@dXgvOz&kNFRQaNBI+g0cM71fw07dMnIPsvkTjh0Esk8IS}b;M+=x4;NlVh0)Y8d zQP%ur&))bdN{o^dVC^-n*JzDZN}(om_{^IC0_d0q$2cwo5K`q>N&*}%7f)kmaEzg2 zI@z~m_wywH1k4DM$iijMFWG<+qGSYUnel>a?3mpTD8en-1PwSR0LK{Gjtf4Cgs>|_ zfYdaOY3L|}H5W{P!|C$CF++xYscB=AMhQ?70<6B_=k+QYc#KHR0kR7^S9&%A=%|Jr zjX|^^r?9Jl0Lf87Gh$H<9n~nD002aOX)E9SFFt#107XX839x>_`jJs`J*^0*CDQUG zKrE_Zhi!l*rKi7T7@>+SY{-0MPnPVr%Bot;MrJC>jACzP5FuhCHvJ#%A{1 zlmNnlNFWMrcfIZ?dF%T$0TP|lwniing|OsDfOx_#hMu{6%gt}22vEhSWZgAwV>u!G zJYk1p2p$Y|y*K+OERO|$gAeW+S0UAm7g$>!nz3qhG5S<60oE^AKay2!OTNMv7KGZv z@h2mb@%<1)fVb8I-{2aM%5MNxz<4IT<-rSnIHJ)06hwg4H~hR_E7#KmbzJYcyCW9W z2!0ss*H3*eSRM=hA%0jME58bqn#|BoeS6j;wT1K}Zvwo~@`6k0@MBPPTJO2LBNB)r z)E?@ti$8)uir^dUgSXa`UwP0pmmO+tyP_>m78O8%zyE#j0}7bqxS$|DT>9?5efQ?uc3uQncim&x0Jz0zIblKIU8=NzVA)p@>uW>^W`-;6kyGRGrm97X*ov(Sh@HK zzX&z}sBuzGSPQV^*bhkQp&HDYHgXZ){$%+5x^4(eH)+?oRo|0Yy9yI zZF31~mXlTk9|q&godYN;ND=%)oy`YG;o=8A@n0AAlqV+vT3T9^K)&Im!N{QqVgp*f zlEGc$hPTeyd_V)=6iCijeNF;Q{Ktux0m^uxhhvP;!9Eomp-;lsP~+%Tpp-iE{&WBP z(wyhBB?^Qf^ff0P3miDISN6&UQUw1Hho6RomRzGiR@0RA3)?;kp;Jujw?j7UD*WX8 z^nc8Og}T^%jsAohNo6MTjZV<29Mtjca6(jGK%4;82>%d2+TZUm&aVV_00snDcVp{hFfKB!IAO%u>(f;M z?B96+mRljBqlkYTAMT^C&Wj;O4*>vt`2GPz0+FmEKr~|Gt^GToNa5IFc^N*H1TK#S zZ>1JjR28)nGLAnrWJ-d`o?G9#G#V_q^p8Q)*sU?-!X$mq24_;Tz;dv@>Fq zS1C23vzBK8csiMunt=&TrVZO6d%(J<3gGg(;Bw$+AV`;Sk^pP3TU#S6pEj*1a>$Hz z11LRe9IO@+^JgBK{ZO(%k^pX1cfL}p&ZH92Vm|vEK*`~$^O&2EDK*#*dd^M!OpYC_ z%uT$LGtcULE#`!`&Wrk^YT;|}VdP1NooXhXF%hg8b+LMII}q)xKBZPqAR>7D9z+c1 z0)Wf`@GOu*0AkD$LltvhvFRT&rUB#58jX=tMxgQ7p{Q%j?nET;wOgY`yBB$|3i48*P8f!7-qRE(i-b4&Ky1u9TV2qC4hp=Po+j!&ow-D^odY0QD zB<1qE{-l4YK!E*!Kak>i3;>eF^B52al&E8t|N3+9y8u92>SMj!gCwfe%xl>AAvkOP z>6mcN*u0%Cb79cY^_X_$sW|=eQ?Tphcks$j|B8d}9xQ4b1%u+t#nGVI=&U6+9l%dr z0KibwO>dcL1LZ>fQFZue^I4em@d+iLlPHUD>_^98!Z~B{w{5%d`$zwTz=7(qe)9Ou z2|%F31Q3z4Ol{Ds#jT5oaPp-m;+*TI!Cm9-y+D!MKJMcaFm~E#{Qf8Zi|x0wbMKbnH3QZNgX1N#Ka%kHVb0 zF335fuM|4=9>Vhv{s#MZ9-bhVbrRT>*1o#~(LiFJmU|Ki0VKxbm16f4(~GRM>UYfP zqj1@`=2V^V0btNk^_cswGjY@jjTP;O%i|#Yj8an+AQMdU$D);c|4;bHSX^??EV#S{ z#n&k*JU$O*fBAe2pE|T+eQBE9B_Nxm~+QW z)Q$C5q!o#;=)L>kE&#e4o=~Mu2uNxPCc^1@=^0%#A4xC2_<%B6$HLsZXF6K#sut8W)MD1M^AO?k+Ds@*nJdBsjY>d9vliCnfBHYM=pz_5 zz5Yr zm(^#2j2%a~Q88dNTPf%8uPlWbHybZcR5geQmwtXW_H@2qwl+;i06_Va0*tH*%gNxW zb5Fp~aea5_&&23Sqj2oG;}DD%J=%MAn1+^7@G7tw0m`N8RxX8UO{bQpu`*)Tf(!7^ zj`tvCxRK`ahqoxfqKk>+&!338;nk<<4#f!{pM(R!4=df3G$<&Tt{;{Kr+n(9 z@-$QdeB!d{*n4PC$wvXxw>1M1#V{j4J`pUPV#w&hIBIfbb?K$VgpL;?)#H0tDx5L%bnNT=prmcE@fRD16qxs$WK~w_2{8VwF(q%K z(m3%W$0HaGlvFt+#!5T2Pl+N!0+e>X=<&NT{J3EyZKE16_JlF;c-=S{I#9AUOqF&- z*r!NfG#-(nlD-B;P8m^_*G#2hxh#x7X&gGj=Dz(-z?#iZ1z@LXfl@BXHjExzvbw7c!^boNkdkNyorLBU!Y)N1 zV*)rbH*$!f*sB zBC+BVz=_$OhV`0ybL?MtF{9I@fD=D-r*QkqYujH*c>Qq$m#8kjlZ~<826OwJ+ZO*r ztyr;w0WsRAURkPSc6rro>{)DhYT~1v=Hl8|#-iGM*?Qg?oJK4+RpG?=7w4d3X)w+dy%eJ7Eb-#d&a*6-D z70=d}!^hdWOh|oFi>UY#XCr`Cye+K<>lQxtCV?g;DofUz5gz~m+TTAE4-H!a*RZz_ z>_AwD($b6wkWIE3*^5emZvI=DE?zm@z*5qD9zP}xKfWlgVbP$Cj@^gizk7)fz%1Lp z_?w%j04Whdl+Y$2Oo9Qtb)J&N2A()%QjflY-GrTu0I8!wHUi`#MUI=BjR3_A5K#=6 zhlc?`*pxU->UM=>Q}*25;jQ%)yZ-|y03zb({VysD0dy?*A_GP%6r>2AJU2WZK=Bdn zj2eIbG2>w1gT|KK){0gUSJv5aAB<;hzYPuXw#Fsewvc-V?Ig zOe=ENxJs%T9)KBQk(i^9_M|9H#%TobwaYUsyw|j{n!y93K&26CcQE;5?5^viEvZRq z1ZdjW6b0yE)B3!APf2YA2GBFKtsMpJ5+!Sw{BcRzY_XeO*Ui>yt@ukuH4@-!@S$^m z;p^H9R(&>6r88vt9(Pnc-=cZ8n<(-4SByWpaw6z(lPvt%bhEJ^9_W z*$I%|!HnZ<1Ta$tXL|&URKeNOa@E@d0h~fulJSa-Vd0)^!cXf@w}v3JzIo&C1(;?s z0ziQ9p-6HQseDI(G@%_KYXMG1fZ%~3!krl#MfEfSu>5ZMOE-Nq7Xfm9!x2cJMEt$c{0OH&9I1SY=O5K%9_&_hahhMwq%FO_8cG94KsQ-v?@F+J}i}S$Lf+y~H z@pD^x%F??QN6B)Ax$&B^6l#Z7CPrR=M&QGsSq$JVFxc+eEwo4UN`ULu%-^m+-!X0( z@pXa$HF5C}Y7aZ!!j^=-z3io%cJ!9dNRJzK`&+>Bwv!Ij)O+FaA33Jpr9w1lJKmv9 zfE^vE`MOD7BLXa0^{F637CY(%0Dpt;h%)ysHe!)jUR(1jk;N;vHXG@QjaPD-*UjGo z$afv}gn-&%zCID-x7whi8iD2n&IkMU>AYk$>A5k~}QUe_G9ESV2xN8cl)2(?28NMM4b@Er!`WT2Bo&tJNE zsiO&lCq^vDA%D%aJ1ZhxrDqhx2mZmnBU)`NEC?M8 z?WGoSL7$AW)|zfbK3QY^%x8o>iWXgfdI zvB-86b6v9J$t4BtTv@P1=b|-N?QzHKnPBY7r#vZ&zY=OaWr;>wX^03SfhfZ5;k-le z3-eBp%v$=Jg#|~PEQ(3*HIH8Nu6FC0oF@r@`1*mrp{8Gt20E${JQyx$_f=-zNsJ3_ zfBvTTiqWT{K5{?0zIBW+J*Pw_r>0AafkJoB<+^0)=E8^lR21E-W6_4I_JktVc>tV$B4)tySnv&suPT;0RBbWA znh_1!2p@{%J;_Uj2tV$t!TH4&K2U-YAc3|k+N^*#b}xvQ=Q{$Vo)dI!UL9p{Eaj$F z(FnjX9q*s!lm|Ke!kmr(0^B=lNW)hP`PAzPC7*V$y?VnuVZ8=Q`3ogLGFN{F(2cdfp9!&Jq(6^f=7g#cX#0sss! zb9`eyL+64-jN-*+zhjb7><$+F|KO01*gC? zsusZ~P;~@I#Sbrkt9;2v8njmfRqq@jsThX!DZ`5DhtzvWI73*&5)A`sP8Vk9D;U4 z0PXNw#M_9iZC`l0d3Uj|shsHZ1jvLyXwAPoI#yF`3Wz2MV*-K3F-xN;Gy>d6 zqI|^c1(Y{V0FFSZ2x|@z)IL(YPeA*GWfugy2x_MVdTsHO*Z!m0CUJ%0{{hwQkqJSM RX(|8!002ovPDHLkV1j2Bx55Ab literal 0 HcmV?d00001