Bugzilla – Attachment 145487 Details for
Bug 20256
Add ability to limit editing of items to home library or library group
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 20256: Use new methods
Bug-20256-Use-new-methods.patch (text/plain), 19.70 KB, created by
Kyle M Hall (khall)
on 2023-01-19 16:21:08 UTC
(
hide
)
Description:
Bug 20256: Use new methods
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2023-01-19 16:21:08 UTC
Size:
19.70 KB
patch
obsolete
>From 5041008946eb976ec89df802f8cf84dd3193e00e Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Thu, 28 Mar 2019 11:07:02 -0400 >Subject: [PATCH] Bug 20256: Use new methods > >Signed-off-by: Bob Bennhoff - CLiC <bbennhoff@clicweb.org> >Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> >--- > Koha/Item.pm | 5 ++-- > Koha/Patron.pm | 30 ++----------------- > Koha/UI/Table/Builder/Items.pm | 5 ++++ > catalogue/detail.pl | 2 ++ > catalogue/itemsearch.pl | 7 +++-- > catalogue/moredetail.pl | 2 ++ > cataloguing/additem.pl | 14 +++++++-- > course_reserves/course-details.pl | 1 + > .../catalogue/itemsearch_item.json.inc | 2 +- > .../prog/en/includes/html_helpers.inc | 2 +- > .../prog/en/includes/permissions.inc | 4 +-- > .../prog/en/modules/admin/library_groups.tt | 2 +- > .../prog/en/modules/catalogue/detail.tt | 6 ++-- > .../en/modules/catalogue/itemsearch_json.tt | 2 +- > .../prog/en/modules/cataloguing/additem.tt | 4 +++ > .../modules/course_reserves/course-details.tt | 3 +- > tools/batchMod.pl | 5 ++-- > 17 files changed, 49 insertions(+), 47 deletions(-) > >diff --git a/Koha/Item.pm b/Koha/Item.pm >index dae9df8f29..7d3d27a994 100644 >--- a/Koha/Item.pm >+++ b/Koha/Item.pm >@@ -295,9 +295,8 @@ sub safe_to_delete { > > $error //= "not_same_branch" > if defined C4::Context->userenv >- && !C4::Context->IsSuperLibrarian() >- && C4::Context->preference("IndependentBranches") >- && ( C4::Context->userenv->{branch} ne $self->homebranch ); >+ and defined C4::Context->userenv->{number} >+ and !Koha::Patrons->find( C4::Context->userenv->{number} )->can_edit_item( $self ); > > # check it doesn't have a waiting reserve > $error //= "book_reserved" >diff --git a/Koha/Patron.pm b/Koha/Patron.pm >index 354040586a..e3a302d553 100644 >--- a/Koha/Patron.pm >+++ b/Koha/Patron.pm >@@ -1496,7 +1496,7 @@ sub can_see_patrons_from { > > =head3 libraries_where_can_see_patrons > >-my $libraries = $patron-libraries_where_can_see_patrons; >+my $libraries = $patron->libraries_where_can_see_patrons; > > Return the list of branchcodes(!) of libraries the patron is allowed to see other patron's infos. > The branchcodes are arbitrarily returned sorted. >@@ -1545,7 +1545,7 @@ sub can_edit_item { > > return 1 if C4::Context->IsSuperLibrarian(); > >- if ( C4::Context->preference('IndependentBranches') ) { >+ if ( $userenv && C4::Context->preference('IndependentBranches') ) { > return $userenv->{branch} eq $branchcode; > } > >@@ -1653,35 +1653,11 @@ sub can_log_into { > return $can; > } > >-=head3 libraries_where_can_see_patrons >- >-my $libraries = $patron-libraries_where_can_see_patrons; >- >-Return the list of branchcodes(!) of libraries the patron is allowed to see other patron's infos. >-The branchcodes are arbitrarily returned sorted. >-We are supposing here that the object is related to the logged in patron (use of C4::Context::only_my_library) >- >-An empty array means no restriction, the patron can see patron's infos from any libraries. >- >-=cut >- >-sub libraries_where_can_see_patrons { >- my ($self) = @_; >- >- return $self->libraries_where_can_see_things( >- { >- permission => 'borrowers', >- subpermission => 'view_borrower_infos_from_any_libraries', >- group_feature => 'ft_hide_patron_info', >- } >- ); >-} >- > =head3 libraries_where_can_see_things > > my $libraries = $thing-libraries_where_can_see_things; > >-Returns a list of libraries where an aribitarary action is allowd to be taken by the logged in librarian >+Returns a list of libraries where an aribitarary action is allowed to be taken by the logged in librarian > against an object based on some branchcode related to the object ( patron branchcode, item homebranch, etc ). > > We are supposing here that the object is related to the logged in librarian (use of C4::Context::only_my_library) >diff --git a/Koha/UI/Table/Builder/Items.pm b/Koha/UI/Table/Builder/Items.pm >index 8837ad5e28..a7230997f8 100644 >--- a/Koha/UI/Table/Builder/Items.pm >+++ b/Koha/UI/Table/Builder/Items.pm >@@ -71,7 +71,11 @@ Use it with: > > sub build_table { > my ( $self, $params ) = @_; >+ >+ my $patron = $params->{patron}; >+ > my %itemnumbers_to_idx = map { $self->{itemnumbers}->[$_] => $_ } 0..$#{$self->{itemnumbers}}; >+ > my $items = Koha::Items->search( { itemnumber => $self->{itemnumbers} } ); > > my @items; >@@ -85,6 +89,7 @@ sub build_table { > holds => $item->biblio->holds->count, > item_holds => $item->holds->count, > is_checked_out => $item->checkout ? 1 : 0, >+ nomod => $patron ? !$patron->can_edit_item($item) : 0, > }; > push @items, $item_info; > } >diff --git a/catalogue/detail.pl b/catalogue/detail.pl >index c7908bc969..1018f21a5d 100755 >--- a/catalogue/detail.pl >+++ b/catalogue/detail.pl >@@ -442,6 +442,8 @@ foreach my $item (@items) { > $item_info->{'course_reserves'} = GetItemCourseReservesInfo( itemnumber => $item->itemnumber ); > } > >+ $item->{can_be_edited} = $patron->can_edit_item( $item_object ); >+ > if ( C4::Context->preference("LocalCoverImages") == 1 ) { > $item_info->{cover_images} = $item->cover_images; > } >diff --git a/catalogue/itemsearch.pl b/catalogue/itemsearch.pl >index e18524307c..72074a8fdf 100755 >--- a/catalogue/itemsearch.pl >+++ b/catalogue/itemsearch.pl >@@ -251,10 +251,11 @@ if ( defined $format ) { > } > > $template->param( >- filter => $filter, >+ filter => $filter, > search_params => $search_params, >- results => $results, >- total_rows => $total_rows, >+ results => $results, >+ total_rows => $total_rows, >+ user => Koha::Patrons->find( $borrowernumber ), > ); > > if ($format eq 'csv') { >diff --git a/catalogue/moredetail.pl b/catalogue/moredetail.pl >index 6eb3fe7fda..567aba8aee 100755 >--- a/catalogue/moredetail.pl >+++ b/catalogue/moredetail.pl >@@ -244,6 +244,8 @@ foreach my $item (@items){ > } > ); > >+ $item_data->{nomod} = !$patron->can_edit_item( $item ); >+ > push @item_data, $item_info; > } > >diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl >index ed31390663..586f89cd62 100755 >--- a/cataloguing/additem.pl >+++ b/cataloguing/additem.pl >@@ -158,7 +158,15 @@ my ($template, $loggedinuser, $cookie) > > > # Does the user have a restricted item editing permission? >-my $uid = Koha::Patrons->find( $loggedinuser )->userid; >+my $patron = Koha::Patrons->find( $loggedinuser ); >+ >+my $item = $itemnumber ? Koha::Items->find( $itemnumber ) : undef; >+if ( $item && !$patron->can_edit_item( $item ) ) { >+ print $input->redirect("/cgi-bin/koha/catalogue/detail.pl?biblionumber=$biblionumber"); >+ exit; >+} >+ >+my $uid = $patron->userid; > my $restrictededition = $uid ? haspermission($uid, {'editcatalogue' => 'edit_items_restricted'}) : undef; > # In case user is a superlibrarian, editing is not restricted > $restrictededition = 0 if ($restrictededition != 0 && C4::Context->IsSuperLibrarian()); >@@ -626,7 +634,9 @@ if ($op) { > > my @items; > for my $item ( $biblio->items->as_list, $biblio->host_items->as_list ) { >- push @items, $item->columns_to_str; >+ my $i = $item->columns_to_str; >+ $i->{nomod} = 1 unless $patron->can_edit_item($item); >+ push @items, $i; > } > > my @witness_attributes = uniq map { >diff --git a/course_reserves/course-details.pl b/course_reserves/course-details.pl >index e5c7efe5b2..c5d74f950e 100755 >--- a/course_reserves/course-details.pl >+++ b/course_reserves/course-details.pl >@@ -66,6 +66,7 @@ my $course_reserves = GetCourseReserves( > $template->param( > course => $course, > course_reserves => $course_reserves, >+ user => Koha::Patrons->find( $loggedinuser ), > ); > > output_html_with_http_headers $cgi, $cookie, $template->output; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/catalogue/itemsearch_item.json.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/catalogue/itemsearch_item.json.inc >index 5d30c08a9b..39e95ac8fe 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/catalogue/itemsearch_item.json.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/catalogue/itemsearch_item.json.inc >@@ -32,6 +32,6 @@ > "[% (item.issues || 0) | html %]", > "[% IF item.checkout %][% item.checkout.date_due | $KohaDates %][% END %]", > "[% FILTER escape_quotes ~%] >- <div class="btn-group dropup"><button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-pencil"></i> Edit <span class="caret"></span> </button> <ul class="dropdown-menu pull-right"> <li><a href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=[% item.biblionumber | uri %]&itemnumber=[% item.itemnumber | uri %]">Edit item</a></li> <li><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% item.biblionumber | html %]">Edit record</a></li> </ul> </div> >+ <div class="btn-group dropup"><button type="button" class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-pencil"></i> Edit <span class="caret"></span> </button> <ul class="dropdown-menu pull-right"> [% IF user.can_edit_item( item ) %]<li><a href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=[% item.biblionumber | uri %]&itemnumber=[% item.itemnumber | uri %]">Edit item</a></li>[% END %] <li><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% item.biblionumber | html %]">Edit record</a></li> </ul> </div> > [%~ END %]" > ] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc >index 52d645f255..dd8682a2b7 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc >@@ -262,7 +262,7 @@ > </thead> > <tbody> > [% FOREACH item IN items %] >- [% SET can_be_edited = ! ( Koha.Preference('IndependentBranches') && ! logged_in_user.is_superlibrarian && item.homebranch != Branches.GetLoggedInBranchname() ) %] >+ [% SET can_be_edited = !item.nomod && !( Koha.Preference('IndependentBranches') && ! logged_in_user && item.homebranch != Branches.GetLoggedInBranchname() ) %] > > <tr> > <td>[% item.index + 1 | html %]</td> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc >index a406d68d4a..a8bfd89e02 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc >@@ -343,12 +343,12 @@ > <span class="permissioncode">([% name | html %])</span> > [%- CASE 'edit_items' -%] > <span class="sub_permission edit_items_subpermission"> >- Edit items >+ Edit items (not including items restricted by library group) > </span> > <span class="permissioncode">([% name | html %])</span> > [%- CASE 'edit_any_item' -%] > <span class="sub_permission edit_items_subpermission"> >- Edit any item. If not set the logged in user can only edit items whose home library matches the logged in library. >+ Edit any item including items that would otherwise be restricted > </span> > <span class="permissioncode">([% name | html %])</span> > [%- CASE 'edit_items_restricted' -%] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/library_groups.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/library_groups.tt >index 7b631bd593..49dba189b9 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/library_groups.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/library_groups.tt >@@ -420,7 +420,7 @@ > <li>Hide patron's info for librarians outside of this group.</li> > [% END %] > [% IF group.ft_limit_item_editing %] >- <li>Limit item editing for librarians outside of this group.</li> >+ <li>Limit item editing to librarians inside of this group.</li> > [% END %] > [% IF group.ft_search_groups_opac %] > <li>Use for OPAC search groups</li> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >index ace46656c9..59a704cc9f 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >@@ -381,7 +381,9 @@ > <tr id="item_[% item.itemnumber | html %]" data-itemnumber="[% item.itemnumber | html %]" data-duedate="[% item.datedue | html %]"> > [% IF (StaffDetailItemSelection) %] > <td style="text-align:center;vertical-align:middle"> >- <input type="checkbox" value="[% item.itemnumber | html %]" name="itemnumber" /> >+ [% IF item.can_be_edited %] >+ <input type="checkbox" value="[% item.itemnumber | html %]" name="itemnumber" /> >+ [% END %] > </td> > [% END %] > [% IF Koha.Preference('LocalCoverImages') && ( tab == 'holdings' && itemloop_has_images || tab == 'otherholdings' && otheritemloop_has_images ) %] >@@ -638,7 +640,7 @@ Note that permanent location is a code, and location may be an authval. > > [% IF CAN_user_editcatalogue_edit_items %] > <td class="actions"> >- [% UNLESS item.cannot_be_edited %] >+ [% IF item.can_be_edited %] > [% IF Koha.Preference('LocalCoverImages') OR Koha.Preference('OPACLocalCoverImages') %] > <div class="btn-group"> > <a class="btn btn-default btn-xs" href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=[% item.biblionumber | html %]&itemnumber=[% item.itemnumber | html %]#edititem"><i class="fa fa-pencil"></i> Edit</a><a class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></a> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/itemsearch_json.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/itemsearch_json.tt >index 3c7b17d61b..3d46ae4708 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/itemsearch_json.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/itemsearch_json.tt >@@ -4,7 +4,7 @@ > "iTotalDisplayRecords": [% total_rows | html %], > "aaData": [ > [%- FOREACH item IN results -%] >- [%- INCLUDE 'catalogue/itemsearch_item.json.inc' item = item -%] >+ [%- INCLUDE 'catalogue/itemsearch_item.json.inc' item = item, user = user -%] > [%- UNLESS loop.last %],[% END -%] > [%- END -%] > ] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt >index e9a512c60e..aef2909b86 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt >@@ -115,10 +115,14 @@ > [% IF item.biblionumber != biblio.biblionumber %] [%# Host item %] > <li><a href="additem.pl?op=edititem&biblionumber=[% item.biblionumber | uri %]&itemnumber=[% item.itemnumber | uri %]#edititem">Edit in host</a> <a class="delete" href="/cgi-bin/koha/cataloguing/additem.pl?op=delinkitem&biblionumber=[% biblio.biblionumber | html %]&hostitemnumber=[% item.itemnumber | html %]&searchid=[% searchid | html %]">Delink</a></li> > [% ELSE %] >+ [% UNLESS item.nomod %] > <li><a href="additem.pl?op=edititem&biblionumber=[% biblio.biblionumber | uri %]&itemnumber=[% item.itemnumber | uri %]&searchid=[% searchid | uri %]#edititem">Edit</a></li> >+ [% END %] > <li><a href="additem.pl?op=dupeitem&biblionumber=[% biblio.biblionumber | uri %]&itemnumber=[% item.itemnumber | uri %]&searchid=[% searchid | uri %]#additema">Duplicate</a></li> > <li class="print_label"><a href="/cgi-bin/koha/labels/label-edit-batch.pl?op=add&number_type=itemnumber&number_list=[% item.itemnumber | uri %]" target="_blank" >Print label</a></li> >+ [% UNLESS item.nomod %] > <li><a class="delete" href="/cgi-bin/koha/cataloguing/additem.pl?op=delitem&biblionumber=[% item.biblionumber | html %]&itemnumber=[% item.itemnumber | html %]&searchid=[% searchid | html %]" onclick="return confirm_deletion();">Delete</a></li> >+ [% END %] > [% END %] > [% IF ( OPACBaseURL ) %] > <li class="view-in-opac"><a target="_blank" href="[% Koha.Preference('OPACBaseURL') | url %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% item.biblionumber | uri %]">OPAC view</a></li> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course-details.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course-details.tt >index 36abc1d196..623974a4f3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course-details.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course-details.tt >@@ -294,7 +294,7 @@ > > [% IF CAN_user_coursereserves_add_reserves || CAN_user_coursereserves_delete_reserves %] > <td class="actions"> >- [% IF CAN_user_coursereserves_add_reserves %] >+ [% IF CAN_user_coursereserves_add_reserves && user.can_edit_item( cr.item ) %] > <a class="btn btn-default btn-xs" href="add_items.pl?course_id=[% course.course_id | html %]&itemnumber=[% cr.item.itemnumber | html %]&biblionumber=[% cr.biblio.biblionumber | html %]&action=lookup&return=[% course.course_id | html %]&is_edit=1"><i class="fa fa-pencil"></i> Edit</a> > [% END %] > >@@ -304,7 +304,6 @@ > [% END %] > </td> > [% END %] >- > </tr> > [% END %] > </tbody> >diff --git a/tools/batchMod.pl b/tools/batchMod.pl >index 31a61b7046..27830f505c 100755 >--- a/tools/batchMod.pl >+++ b/tools/batchMod.pl >@@ -74,7 +74,8 @@ my ($template, $loggedinuser, $cookie) > $template->param( searchid => scalar $input->param('searchid'), ); > > # Does the user have a restricted item edition permission? >-my $uid = $loggedinuser ? Koha::Patrons->find( $loggedinuser )->userid : undef; >+my $patron = Koha::Patrons->find( $loggedinuser ); >+my $uid = $loggedinuser ? $patron->userid : undef; > my $restrictededition = $uid ? haspermission($uid, {'tools' => 'items_batchmod_restricted'}) : undef; > # In case user is a superlibrarian, edition is not restricted > $restrictededition = 0 if ($restrictededition != 0 && C4::Context->IsSuperLibrarian()); >@@ -292,7 +293,7 @@ if ($op eq "show"){ > if ( $display_items ) { > my $items_table = > Koha::UI::Table::Builder::Items->new( { itemnumbers => \@itemnumbers } ) >- ->build_table; >+ ->build_table( { patron => $patron } );; > $template->param( > items => $items_table->{items}, > item_header_loop => $items_table->{headers}, >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 20256
:
87226
|
87227
|
87228
|
87229
|
87230
|
87231
|
87232
|
87233
|
87262
|
87263
|
87264
|
87265
|
87266
|
87267
|
87268
|
87269
|
87270
|
88537
|
88539
|
88541
|
88542
|
88543
|
88544
|
88545
|
88546
|
88547
|
88632
|
88702
|
88703
|
88704
|
88705
|
88935
|
88936
|
96015
|
96016
|
96017
|
96018
|
96019
|
96020
|
96021
|
96022
|
96023
|
96024
|
96025
|
96026
|
96027
|
96028
|
96029
|
96030
|
96031
|
96032
|
96033
|
102622
|
102623
|
102624
|
102625
|
102626
|
102627
|
102628
|
102629
|
102630
|
102631
|
102632
|
102633
|
102634
|
102635
|
102636
|
102637
|
102638
|
102639
|
102640
|
102641
|
102642
|
102703
|
102704
|
102705
|
102706
|
102707
|
102708
|
102709
|
102710
|
102711
|
102712
|
102713
|
102714
|
102715
|
102716
|
102717
|
102718
|
102719
|
102720
|
102721
|
102722
|
102732
|
102733
|
102734
|
102735
|
102736
|
102737
|
102738
|
102739
|
102740
|
102741
|
102742
|
102743
|
102744
|
102745
|
102746
|
102747
|
102748
|
102749
|
102750
|
102751
|
107312
|
107313
|
107314
|
107315
|
107316
|
107317
|
107318
|
107319
|
107320
|
107321
|
107322
|
107323
|
107324
|
107325
|
107326
|
107327
|
107328
|
107329
|
107330
|
108851
|
108852
|
108853
|
108854
|
108855
|
108856
|
108857
|
108858
|
108859
|
108860
|
108861
|
108862
|
108863
|
108864
|
108865
|
108866
|
108867
|
108868
|
108869
|
108870
|
109939
|
110005
|
113706
|
113707
|
113708
|
113709
|
113710
|
113711
|
113712
|
113713
|
113714
|
113715
|
113716
|
113717
|
113718
|
113719
|
113720
|
113721
|
113722
|
113723
|
113724
|
113725
|
113726
|
113727
|
113728
|
116042
|
116043
|
116044
|
116045
|
116046
|
116047
|
116048
|
116049
|
116050
|
116051
|
116052
|
116053
|
116054
|
116055
|
116056
|
116057
|
116058
|
116059
|
116060
|
116061
|
116062
|
116063
|
116064
|
120055
|
120056
|
120057
|
120058
|
120059
|
120060
|
120061
|
120062
|
120063
|
120064
|
120065
|
120066
|
120067
|
120068
|
120069
|
120070
|
120071
|
120072
|
120073
|
120074
|
120075
|
120076
|
121771
|
121772
|
121773
|
121774
|
121775
|
121776
|
121777
|
121778
|
121779
|
121780
|
121781
|
121782
|
121783
|
121785
|
121786
|
121787
|
121788
|
121789
|
121790
|
121791
|
121792
|
124286
|
124287
|
124288
|
124289
|
124290
|
124291
|
124292
|
124293
|
124294
|
124295
|
124296
|
124297
|
124298
|
124299
|
124300
|
124301
|
124302
|
124303
|
124304
|
124305
|
124306
|
124307
|
124321
|
128734
|
128735
|
128736
|
128737
|
128738
|
128739
|
128740
|
128741
|
128742
|
128743
|
128744
|
128745
|
128746
|
128747
|
128748
|
128749
|
128750
|
128751
|
128752
|
128753
|
131676
|
131677
|
131678
|
131679
|
131680
|
131681
|
131682
|
131683
|
131684
|
131685
|
131686
|
131687
|
131688
|
131689
|
131690
|
131691
|
131692
|
131693
|
131694
|
131695
|
131696
|
131697
|
132483
|
132484
|
132486
|
132917
|
134375
|
134376
|
134377
|
139135
|
139136
|
139137
|
139138
|
139139
|
139140
|
139141
|
139142
|
139143
|
139144
|
139145
|
139146
|
139147
|
139148
|
139149
|
139150
|
139151
|
139152
|
139153
|
139154
|
139155
|
139156
|
139157
|
139158
|
139159
|
139160
|
139161
|
139162
|
139163
|
143527
|
143529
|
143530
|
143531
|
143532
|
143533
|
143534
|
143535
|
143536
|
143537
|
143538
|
143539
|
143540
|
143541
|
143542
|
143543
|
143544
|
143545
|
143546
|
143547
|
143548
|
143549
|
143550
|
143551
|
143552
|
143553
|
143554
|
143555
|
143556
|
145286
|
145287
|
145288
|
145289
|
145290
|
145291
|
145292
|
145293
|
145482
|
145483
|
145484
|
145485
|
145486
|
145487
|
145488
|
145489
|
145809
|
145810
|
145811
|
145812
|
145813
|
145814
|
145815
|
145816
|
145887
|
145888
|
145889
|
145890
|
145891
|
145892
|
145893
|
145894
|
145895
|
145896
|
145951
|
145952
|
145953
|
145954
|
145955