Mailing List Archive

rt branch 5.0/search-filter created. rt-5.0.3-191-g408b592947
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "rt".

The branch, 5.0/search-filter has been created
at 408b5929475b8467ed550b5defbd1fcde293a83f (commit)

- Log -----------------------------------------------------------------
commit 408b5929475b8467ed550b5defbd1fcde293a83f
Author: sunnavy <sunnavy@bestpractical.com>
Date: Fri Sep 3 04:14:09 2021 +0800

Get around the issue of overflowing icons in search results header for Firefox

We want to allow text in header to wrap, but not icons. Unfortunately
Firefox doesn't wrap text properly in this case, which could cause
nowrap icons after to overflow.

diff --git a/share/static/css/elevator-light/collection.css b/share/static/css/elevator-light/collection.css
index ec5f55a43b..5a103989be 100644
--- a/share/static/css/elevator-light/collection.css
+++ b/share/static/css/elevator-light/collection.css
@@ -65,3 +65,24 @@ th.collection-as-table {
th.collection-as-table span.title {
white-space: normal;
}
+
+/* When determining if text shall be wrapped, Firefox seems overlook the
+ * following nowrap icons, which could cause these icons to overflow. Here
+ * we intentionally add some space to the title box to get around this issue
+ * */
+
+@-moz-document url-prefix() {
+
+ th.collection-as-table span.title {
+ padding-right: 2em;
+ }
+
+ th.collection-as-table span.title + * {
+ margin-left: -2em;
+ }
+
+ /* no need extra space if there are no icons */
+ th.collection-as-table span.title:last-child {
+ padding-right: 0;
+ }
+}

commit fcc92f08b9b32fe9d1fcc94659faf818a7be4599
Author: sunnavy <sunnavy@bestpractical.com>
Date: Fri Jun 25 06:59:08 2021 +0800

Support to filter ticket search results via headers

diff --git a/lib/RT/Interface/Web/MenuBuilder.pm b/lib/RT/Interface/Web/MenuBuilder.pm
index 7260a75c78..f3dc87c541 100644
--- a/lib/RT/Interface/Web/MenuBuilder.pm
+++ b/lib/RT/Interface/Web/MenuBuilder.pm
@@ -617,7 +617,7 @@ sub BuildMainNav {
map {
my $p = $_;
$p => $HTML::Mason::Commands::DECODED_ARGS->{$p} || $current_search->{$p}
- } qw(Query Format OrderBy Order Page Class ObjectType ResultPage ExtraQueryParams),
+ } qw(BaseQuery Query Format OrderBy Order Page Class ObjectType ResultPage ExtraQueryParams),
),
);

diff --git a/share/html/Elements/CollectionAsTable/Header b/share/html/Elements/CollectionAsTable/Header
index 03832040a5..51e7f60b0f 100644
--- a/share/html/Elements/CollectionAsTable/Header
+++ b/share/html/Elements/CollectionAsTable/Header
@@ -59,6 +59,7 @@ $GenericQueryArgs => undef
$maxitems => undef

$AllowSorting => undef
+$AllowFiltering => undef
$BaseURL => undef
@PassArguments => qw(Query Format Rows Page Order OrderBy)
</%ARGS>
@@ -161,16 +162,18 @@ foreach my $col ( @Format ) {
$loc_title = loc($m->comp('/Elements/ScrubHTML', Content => $title));
}

- if ( $AllowSorting and $col->{'attribute'}
- and my $attr = $m->comp(
+ my $attribute;
+ if ( $col->{'attribute'} ) {
+ $attribute = $m->comp(
"/Elements/ColumnMap",
Class => $column_map_class,
Name => $col->{'attribute'},
Attr => 'attribute'
- )
- )
- {
- $attr = ProcessColumnMapValue( $attr, Arguments => [ $col->{'attribute'} ], Escape => 0 );
+ );
+ }
+
+ if ( $AllowSorting and $attribute ) {
+ my $attr = ProcessColumnMapValue( $attribute, Arguments => [ $col->{'attribute'} ], Escape => 0 );


my @new_order_by = @OrderBy;
@@ -210,6 +213,32 @@ foreach my $col ( @Format ) {
else {
$m->out( qq{<span class="title">$loc_title</span>} );
}
+
+ if ( $AllowFiltering && $Class eq 'RT::Tickets' ) {
+ my $attr = ProcessColumnMapValue( $attribute, Arguments => [ $col->{'attribute'} ], Escape => 1 );
+ my $field;
+ my %supported = map { $_ => 1 }
+ qw/id Subject Status Queue Owner Type Creator LastUpdatedBy SLA InitialPriority FinalPriority Priority TimeLeft TimeWorked TimeEstimated Created LastUpdated Told Starts Started Due Resolved Requestors Requestor Cc AdminCc/;
+
+ if ( ( $attr || '' ) =~ /^(\w+)/ && $supported{$1} ) {
+ $field = $1;
+ }
+ elsif ( ( $attr || '' ) =~ /^(CustomRole\.\{.+?\})/ ) {
+ $field = $1;
+ }
+ elsif ( ( $attr || '' ) =~ /^(?:CF|CustomField(?:View)?)\.(?:(\w+)|\{(.+?)\})/ ) {
+ my $name = $1 || $2;
+ $field = "CustomField.{$name}";
+ }
+
+ if ( $field ) {
+ my $tooltip = loc( 'Filter on [_1]', loc($field) );
+ $m->out(
+ qq{&nbsp;<a href="javascript:void(0)" class="search-filter" class="btn btn-primary button"><span class="fas fa-filter" data-toggle="tooltip" data-placement="bottom" data-original-title="$tooltip"></span></a>}
+ );
+ $m->out( $m->scomp( '/Elements/SearchFilter', Attribute => $field, %ARGS ) );
+ }
+ }
$m->out('</th>');
}
</%PERL>
diff --git a/share/html/Elements/SearchFilter b/share/html/Elements/SearchFilter
new file mode 100644
index 0000000000..21fe0630b3
--- /dev/null
+++ b/share/html/Elements/SearchFilter
@@ -0,0 +1,455 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2021 Best Practical Solutions, LLC
+%# <sales@bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<div class="modal search-results-filter">
+ <div class="modal-dialog <% $modal_class %>" role="document">
+ <form name="search-results-filter">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h5 class="modal-title"><&|/l&>Filter Results</&></h5>
+ <a href="javascript:void(0)" class="close" data-dismiss="modal" aria-label="Close">
+ <span aria-hidden="true">&times;</span>
+ </a>
+ </div>
+ <div class="modal-body">
+% if ( $Attribute eq 'Subject' ) {
+ <div class="form-row">
+ <div class="label col-3">
+ <&|/l&>Subject</&>:
+ </div>
+ <div class="value col-9">
+ <input class="form-control" name="Subject" value="<% $filter->{Subject} // '' %>" />
+ </div>
+ </div>
+% } elsif ( $Attribute eq 'Status' ) {
+ <div class="form-row">
+ <div class="label col-3">
+ <&|/l&>Status</&>:
+ </div>
+ <div class="value col-9">
+ <ul class="list-group list-group-compact">
+% for my $status ( sort { lc $a cmp lc $b } keys %$status ) {
+ <li class="list-group-item">
+ <div class="custom-control custom-checkbox">
+ <input type="checkbox" id="Status-<% $status %>" name="Status" class="custom-control-input" value="<% $status %>" <% $filter->{Status}{$status} ? 'checked="checked"' : '' |n %> />
+ <label class="custom-control-label" for="Status-<% $status %>"><% $status %></label>
+ </div>
+ </li>
+% }
+ </ul>
+ </div>
+ </div>
+% } elsif ( $Attribute eq 'Queue' ) {
+ <div class="form-row">
+ <div class="label col-3">
+ <&|/l&>Queue</&>:
+ </div>
+ <div class="value col-9">
+ <ul class="list-group list-group-compact">
+% for my $queue ( sort { lc $a->Name cmp lc $b->Name } @$queues ) {
+ <li class="list-group-item">
+ <div class="custom-control custom-checkbox">
+ <input type="checkbox" id="Queue-<% $queue->Id %>" name="Queue" class="custom-control-input" value="<% $queue->Id %>" <% $filter->{Queue}{$queue->Id} ? 'checked="checked"' : '' |n %> />
+ <label class="custom-control-label" for="Queue-<% $queue->Id %>"><% $queue->Name %></label>
+ </div>
+ </li>
+% }
+ </ul>
+ </div>
+ </div>
+% } elsif ( $Attribute eq 'Owner' ) {
+ <div class="form-row">
+ <div class="label col-3">
+ <&|/l&>Owner</&>:
+ </div>
+ <div class="value col-9">
+ <& /Elements/SelectOwner, Name => 'Owner', Default => $filter->{Owner} &>
+ </div>
+ </div>
+% } elsif ( $Attribute eq 'SLA' ) {
+ <div class="form-row">
+ <div class="label col-3">
+ <&|/l&>SLA</&>:
+ </div>
+ <div class="value col-9">
+ <ul class="list-group list-group-compact">
+% for my $sla ( sort( keys %{RT->Config->Get('ServiceAgreements')->{'Levels'}} ), 'NULL' ) {
+ <li class="list-group-item">
+ <div class="custom-control custom-checkbox">
+ <input type="checkbox" class="custom-control-input checkbox" id="SLA_<% $sla %>" name="SLA" value="<% $sla %>" <% $filter->{SLA}{$sla} ? 'checked="checked"' : '' |n %> />
+ <label class="custom-control-label" for="SLA_<% $sla %>"><% $sla eq 'NULL' ? loc('(no value)') : $sla %></label>
+ </div>
+ </li>
+% }
+ </ul>
+ </div>
+ </div>
+% } elsif ( $Attribute =~ /^(?:Creator|LastUpdatedBy)$/) {
+ <div class="form-row">
+ <div class="label col-3">
+ <% loc(join ' ', split /(?=[A-Z])/, $Attribute) %>:
+ </div>
+ <div class="value col-9">
+ <input class="form-control" data-autocomplete="Users" name="<% $Attribute %>" value="<% $filter->{$Attribute} %>" data-autocomplete-return="Name" />
+ </div>
+ </div>
+% } elsif ( $Attribute eq 'Type' ) {
+ <div class="form-row">
+ <div class="label col-3">
+ <&|/l&>Type</&>:
+ </div>
+ <div class="value col-9">
+ <ul class="list-group list-group-compact">
+% for my $type ( qw/approval reminder ticket/ ) {
+ <li class="list-group-item">
+ <div class="custom-control custom-checkbox">
+ <input type="checkbox" id="Type-<% $type %>" name="Type" class="custom-control-input" value="<% $type %>" <% $filter->{Type}{$type} ? 'checked="checked"' : '' |n %> />
+ <label class="custom-control-label" for="Type-<% $type %>"><% $type %></label>
+ </div>
+ </li>
+% }
+ </ul>
+ </div>
+ </div>
+% } elsif ( $Attribute =~ /(?:Initial|Final)?Priority/ ) {
+ <div class="form-row">
+ <div class="label col-6">
+ <% loc('[_1] equal to', join ' ', split /(?=[A-Z])/, $Attribute) %>:
+ </div>
+ <div class="value col-6">
+ <& /Elements/SelectPriority, Name => "${Attribute}EqualTo", Default => $filter->{$Attribute}{'='}, Queues => { map { $_->Id => 1 } @$queues }, ValueAsString => 1, ShowEmptyOption => 1 &>
+ </div>
+ </div>
+ <div class="form-row">
+ <div class="label col-6">
+ <% loc('[_1] greater than', join ' ', split /(?=[A-Z])/, $Attribute) %>:
+ </div>
+ <div class="value col-6">
+ <& /Elements/SelectPriority, Name => "${Attribute}GreaterThan", Default => $filter->{$Attribute}{'>'}, Queues => { map { $_->Id => 1 } @$queues }, ValueAsString => 1, ShowEmptyOption => 1 &>
+ </div>
+ </div>
+ <div class="form-row">
+ <div class="label col-6">
+ <% loc('[_1] less than', join ' ', split /(?=[A-Z])/, $Attribute) %>:
+ </div>
+ <div class="value col-6">
+ <& /Elements/SelectPriority, Name => "${Attribute}LessThan", Default => $filter->{$Attribute}{'<'}, Queues => { map { $_->Id => 1 } @$queues }, ValueAsString => 1, ShowEmptyOption => 1 &>
+ </div>
+ </div>
+% } elsif ( $Attribute eq 'id' ) {
+ <div class="form-row">
+ <div class="label col-6">
+ <% loc('[_1] equal to', $Attribute) %>:
+ </div>
+ <div class="value col-6">
+ <input type="text" class="form-control" name="<% $Attribute %>EqualTo" size="5" value="<% $filter->{$Attribute}{'='} %>" />
+ </div>
+ </div>
+ <div class="form-row">
+ <div class="label col-6">
+ <% loc('[_1] greater than', $Attribute) %>:
+ </div>
+ <div class="value col-6">
+ <input type="text" class="form-control" name="<% $Attribute %>GreaterThan" size="5" value="<% $filter->{$Attribute}{'>'} %>" />
+ </div>
+ </div>
+ <div class="form-row">
+ <div class="label col-6">
+ <% loc('[_1] less than', $Attribute) %>:
+ </div>
+ <div class="value col-6">
+ <input type="text" class="form-control" name="<% $Attribute %>LessThan" size="5" value="<% $filter->{$Attribute}{'<'} %>" />
+ </div>
+ </div>
+% } elsif ( $Attribute =~ /^(?:Told|Starts|Started|Due|Resolved|Created|LastUpdated)/ ) {
+ <div class="form-row">
+ <div class="label col-6">
+ <% loc('[_1] equal to', join ' ', split /(?=[A-Z])/, $Attribute) %>:
+ </div>
+ <div class="value col-6">
+ <& /Elements/SelectDate, Name => "${Attribute}EqualTo", Default => $filter->{$Attribute}{'='} || '', ShowTime => 0 &>
+ </div>
+ </div>
+ <div class="form-row">
+ <div class="label col-6">
+ <% loc('[_1] greater than', join ' ', split /(?=[A-Z])/, $Attribute) %>:
+ </div>
+ <div class="value col-6">
+ <& /Elements/SelectDate, Name => "${Attribute}GreaterThan", Default => $filter->{$Attribute}{'>'} || '', ShowTime => 0 &>
+ </div>
+ </div>
+ <div class="form-row">
+ <div class="label col-6">
+ <% loc('[_1] less than', join ' ', split /(?=[A-Z])/, $Attribute) %>:
+ </div>
+ <div class="value col-6">
+ <& /Elements/SelectDate, Name => "${Attribute}LessThan", Default => $filter->{$Attribute}{'<'} || '', ShowTime => 0 &>
+ </div>
+ </div>
+% } elsif ( $Attribute =~ /^Time/ ) {
+ <div class="form-row">
+ <div class="label col-6">
+ <% loc('[_1] equal to', join ' ', split /(?=[A-Z])/, $Attribute) %>:
+ </div>
+ <div class="value col-6">
+ <div class="d-inline-block">
+ <input type="text" class="form-control" name="<% $Attribute %>EqualTo" size="5" value="<% $filter->{$Attribute}{'='} %>" />
+ </div>
+ <&|/l&>Minutes</&>
+ </div>
+ </div>
+ <div class="form-row">
+ <div class="label col-6">
+ <% loc('[_1] greater than', join ' ', split /(?=[A-Z])/, $Attribute) %>:
+ </div>
+ <div class="value col-6">
+ <div class="d-inline-block">
+ <input type="text" class="form-control" name="<% $Attribute %>GreaterThan" size="5" value="<% $filter->{$Attribute}{'>'} %>" />
+ </div>
+ <&|/l&>Minutes</&>
+ </div>
+ </div>
+ <div class="form-row">
+ <div class="label col-6">
+ <% loc('[_1] less than', join ' ', split /(?=[A-Z])/, $Attribute) %>:
+ </div>
+ <div class="value col-6">
+ <div class="d-inline-block">
+ <input type="text" class="form-control" name="<% $Attribute %>LessThan" size="5" value="<% $filter->{$Attribute}{'<'} %>" />
+ </div>
+ <&|/l&>Minutes</&>
+ </div>
+ </div>
+% } elsif ( $Attribute =~ /^(Requestor|Cc|AdminCc)s?$/) {
+% my $name = $1;
+ <div class="form-row">
+ <div class="label col-4">
+ <% loc($name) %>:
+ </div>
+ <div class="value col-8">
+ <input class="form-control" data-autocomplete="Users" name="<% $name %>" value="<% $filter->{$name} %>" />
+ </div>
+ </div>
+% } elsif ( $Attribute =~ /^CustomRole\.\{(.+)\}$/) {
+% my $name = $1;
+ <div class="form-row">
+ <div class="label col-4">
+ <% loc($name) %>:
+ </div>
+ <div class="value col-8">
+ <input class="form-control" data-autocomplete="Users" name="<% $Attribute %>" value="<% $filter->{$Attribute} %>" />
+ </div>
+ </div>
+% } elsif ( $Attribute =~ /^CustomField\.\{(.+)\}$/) {
+% my $name = $1;
+% my $cf = RT::CustomField->new($session{CurrentUser});
+% $cf->Load($name);
+ <div class="form-row">
+ <div class="label col-4">
+ <% loc($name) %>:
+ </div>
+ <div class="value col-8">
+% if ( $cf->Type eq 'Select' ) {
+% my $cfvs = $cf->Values;
+ <ul class="list-group list-group-compact">
+% while ( my $cfv = $cfvs->Next ) {
+ <li class="list-group-item">
+ <div class="custom-control custom-checkbox">
+ <input type="checkbox" class="custom-control-input checkbox" id="<% $name . '_' . $cfv->Name %>" name="<% $Attribute %>" value="<% $cfv->Name %>" <% $filter->{$Attribute}{$cfv->Name} ? 'checked="checked"' : '' |n %> />
+ <label class="custom-control-label" for="<% $name . '_' . $cfv->Name %>"><% $cfv->Name %></label>
+ </div>
+ </li>
+% }
+ </ul>
+% } else {
+ <input type="text" class="form-control" name="<% $Attribute %>" size="5" value="<% $filter->{$Attribute} %>" />
+% }
+ </div>
+ </div>
+% }
+
+ </div>
+ <div class="modal-footer">
+ <div class="form-row justify-content-end">
+ <div class="col-auto">
+ <input type="button" class="button btn btn-primary" data-dismiss="modal" name="Apply" value="<% loc('Cancel') %>" />
+ </div>
+ <div class="col-auto">
+ <input type="button" class="button btn btn-primary" onclick="filterSearchResults()" name="Apply" value="<% loc('Apply') %>" />
+ </div>
+ </div>
+ </div>
+ </div>
+ </form>
+ </div>
+</div>
+<%INIT>
+return unless $ARGS{Query};
+
+my $key = "search-filter-$ARGS{Query}";
+my $cached = $m->notes($key);
+if ( !$cached ) {
+ my $tickets = RT::Tickets->new( $session{CurrentUser} );
+ my ($ok) = $tickets->FromSQL( $ARGS{Query} );
+ return unless $ok && ( $ARGS{BaseQuery} || $tickets->Count );
+
+ my @queues;
+
+ my $tree = RT::Interface::Web::QueryBuilder::Tree->new;
+ $tree->ParseSQL( Query => $ARGS{BaseQuery} || $ARGS{Query}, CurrentUser => $session{'CurrentUser'} );
+ my $referenced_queues = $tree->GetReferencedQueues;
+ for my $name_or_id ( keys %$referenced_queues ) {
+ my $queue = RT::Queue->new( $session{CurrentUser} );
+ $queue->Load($name_or_id);
+ if ( $queue->id ) {
+ push @queues, $queue;
+ }
+ }
+
+ my %status;
+ my @lifecycles;
+
+ if (@queues) {
+ my %lifecycle;
+ for my $queue (@queues) {
+ next if $lifecycle{ $queue->Lifecycle }++;
+ push @lifecycles, $queue->LifecycleObj;
+ }
+ }
+ else {
+ @lifecycles = map { RT::Lifecycle->Load( Type => 'ticket', Name => $_ ) } RT::Lifecycle->List('ticket');
+ }
+
+ for my $lifecycle (@lifecycles) {
+ $status{$_} = 1 for $lifecycle->Valid;
+ }
+ delete $status{deleted};
+
+ if ( !@queues ) {
+ my $queues = RT::Queues->new( $session{CurrentUser} );
+ $queues->UnLimit;
+
+ while ( my $queue = $queues->Next ) {
+ push @queues, $queue;
+ last if @queues == 10; # TODO make a config for it
+ }
+ }
+
+ my %filter;
+
+ if ( $ARGS{BaseQuery} && $ARGS{BaseQuery} ne $ARGS{Query} ) {
+ my $query = $ARGS{Query};
+ $query =~ s!^\s*\(?\s*\Q$ARGS{BaseQuery}\E\s*\)? AND !!;
+ my $tree = RT::Interface::Web::QueryBuilder::Tree->new;
+ $tree->ParseSQL( Query => $query, CurrentUser => $session{'CurrentUser'} );
+ $tree->traverse(
+ sub {
+ my $node = shift;
+
+ return if $node->isRoot;
+ return unless $node->isLeaf;
+
+ my $clause = $node->getNodeValue();
+ if ( $clause->{Key} =~ /^Queue/ ) {
+ my $queue = RT::Queue->new( $session{CurrentUser} );
+ $queue->Load( $clause->{Value} );
+ if ( $queue->id ) {
+ $filter{ $clause->{Key} }{ $queue->id } = 1;
+ }
+ }
+ elsif ( $clause->{Key} =~ /^(?:Status|SLA|Type)/ ) {
+ $filter{ $clause->{Key} }{ $clause->{Value} } = 1;
+ }
+ elsif ( $clause->{Key}
+ =~ /^(?:(?:Initial|Final)?Priority|Time(?:Worked|Estimated|Left)|id|Told|Starts|Started|Due|Resolved|Created|LastUpdated\b)/
+ )
+ {
+ $filter{ $clause->{Key} }{ $clause->{Op} } = $clause->{Value};
+ }
+ else {
+ my $value = $clause->{Value};
+ $value =~ s!\\([\\"])!$1!g;
+ my $key = $clause->{Key};
+ my $cf;
+ if ( $key eq 'CustomField' ) {
+ $key .= ".$clause->{Subkey}";
+ my ($cf_name) = $clause->{Subkey} =~ /{(.+)}/;
+ $cf = RT::CustomField->new( RT->SystemUser );
+ $cf->Load($cf_name);
+ }
+ elsif ( $key eq 'CustomRole' ) {
+ $key .= ".$1" if $clause->{Subkey} =~ /(\{.+?\})/;
+ }
+ if ( $cf && $cf->id && $cf->Type eq 'Select' ) {
+ $filter{$key}{$value} = 1;
+ }
+ else {
+ $filter{$key} = $value;
+ }
+ }
+ }
+ );
+ }
+ $cached = $m->notes( $key, { status => \%status, queues => \@queues, filter => \%filter } );
+}
+
+my $status = $cached->{status};
+my $queues = $cached->{queues};
+my $filter = $cached->{filter};
+
+my $modal_class;
+if ( $Attribute =~ /^(?:Time|(?:Initial|Final)Priority|LastUpdated)/ ) {
+ $modal_class = 'modal-md';
+}
+else {
+ $modal_class = 'modal-sm';
+}
+</%INIT>
+
+<%ARGS>
+$Attribute => ''
+</%ARGS>
diff --git a/share/html/Search/Results.html b/share/html/Search/Results.html
index 768b2d5ef6..b59108f78f 100644
--- a/share/html/Search/Results.html
+++ b/share/html/Search/Results.html
@@ -64,6 +64,7 @@
Query => $Query,
TotalFound => $count,
AllowSorting => 1,
+ AllowFiltering => 1,
OrderBy => $OrderBy,
Order => $Order,
Rows => $Rows,
@@ -75,13 +76,14 @@
SavedSearchId => $ARGS{'SavedSearchId'},
SavedChartSearchId => $ARGS{'SavedChartSearchId'},
ObjectType => $ObjectType,
+ BaseQuery => $BaseQuery || $Query,
@ExtraQueryParams ? ( map { $_ => $ARGS{$_} } grep { defined $ARGS{$_} } 'ExtraQueryParams', @ExtraQueryParams ) : (),
- PassArguments => [.qw(Query Format Rows Page Order OrderBy SavedSearchId SavedChartSearchId Class ObjectType ExtraQueryParams), @ExtraQueryParams],
+ PassArguments => [.qw(BaseQuery Query Format Rows Page Order OrderBy SavedSearchId SavedChartSearchId Class ObjectType ExtraQueryParams), @ExtraQueryParams],
&>
% }
% $m->callback( ARGSRef => \%ARGS, Count => $count, CallbackName => 'AfterResults' );

-% my %hiddens = (Query => $Query, Format => $Format, Rows => $Rows, OrderBy => $OrderBy, Order => $Order, HideResults => $HideResults, Page => $Page, SavedChartSearchId => $SavedChartSearchId );
+% my %hiddens = ( BaseQuery => $BaseQuery || $Query, Query => $Query, Format => $Format, Rows => $Rows, OrderBy => $OrderBy, Order => $Order, HideResults => $HideResults, Page => $Page, SavedChartSearchId => $SavedChartSearchId );
<div align="right" class="refresh">
<form method="get" action="<%RT->Config->Get('WebPath')%>/Search/Results.html">
% foreach my $key (keys(%hiddens)) {
@@ -293,6 +295,7 @@ $session{$session_name}->PrepForSerialization();
</%CLEANUP>
<%ARGS>
$Query => undef
+$BaseQuery => undef
$Format => undef
$HideResults => 0
$Rows => undef
diff --git a/share/static/css/elevator-light/misc.css b/share/static/css/elevator-light/misc.css
index 3c6e7532b4..6e1d5c0e0a 100644
--- a/share/static/css/elevator-light/misc.css
+++ b/share/static/css/elevator-light/misc.css
@@ -168,3 +168,24 @@ span.pagenum {
ul.ui-autocomplete {
z-index: 9999;
}
+
+.modal.search-results-filter {
+ position: absolute;
+ min-width: 300px;
+ width: auto;
+ height: auto;
+ max-height: 80%;
+ background-color: inherit;
+}
+
+.modal.search-results-filter .modal-dialog.modal-sm {
+ min-width: 300px;
+}
+
+.modal.search-results-filter .modal-dialog.modal-md {
+ min-width: 500px;
+}
+
+.modal.search-results-filter .modal-dialog {
+ margin: 0;
+}
diff --git a/share/static/js/util.js b/share/static/js/util.js
index 5f68e2cf7d..a965479375 100644
--- a/share/static/js/util.js
+++ b/share/static/js/util.js
@@ -915,8 +915,167 @@ jQuery(function() {
initDatePicker(row);
}
});
+ jQuery(".search-filter").click(function(ev){
+ ev.preventDefault();
+ var modal = jQuery(this).closest('th').find('.modal.search-results-filter');
+ modal.css('top', jQuery(this).offset().top);
+ var left = jQuery(this).offset().left;
+ // 10 is extra space to move modal a bit away from edge
+ if ( left + modal.width() + 10 > jQuery('body').width() ) {
+ left = jQuery('body').width() - modal.width() - 10;
+ }
+ modal.css('left', left);
+ modal.modal('show');
+ });
});

+function filterSearchResults () {
+ var clauses = [];
+
+ var queue_clauses = [];
+ jQuery('.search-results-filter input[name=Queue]:checked').each(function() {
+ queue_clauses.push( 'Queue = ' + '"' + jQuery(this).val() + '"' );
+ });
+
+ if ( queue_clauses.length ) {
+ clauses.push( '( ' + queue_clauses.join( ' OR ' ) + ' )' );
+ }
+
+ var status_clauses = [];
+ jQuery('.search-results-filter input[name=Status]:checked').each(function() {
+ status_clauses.push('Status = ' + '"' + jQuery(this).val() + '"' );
+ });
+
+ if ( status_clauses.length ) {
+ clauses.push( '( ' + status_clauses.join( ' OR ' ) + ' )' );
+ }
+
+ var sla_clauses = [];
+ jQuery('.search-results-filter input[name=SLA]:checked').each(function() {
+ var value = jQuery(this).val();
+ if ( value == 'NULL' ) {
+ sla_clauses.push( 'SLA IS NULL' );
+ }
+ else {
+ sla_clauses.push( 'SLA = ' + '"' + value + '"' );
+ }
+ });
+
+ var type_clauses = [];
+ jQuery('.search-results-filter input[name=Type]:checked').each(function() {
+ type_clauses.push('Type = ' + '"' + jQuery(this).val() + '"' );
+ });
+
+ if ( type_clauses.length ) {
+ clauses.push( '( ' + type_clauses.join( ' OR ' ) + ' )' );
+ }
+
+ var subject = jQuery('.search-results-filter input[name=Subject]').val();
+ if ( subject && subject.match(/\S/) ) {
+ clauses.push( '( Subject LIKE "' + subject.replace(/(["\\])/g, "\\$1") + '" )' );
+ }
+
+ [ 'Requestors', 'Requestor', 'Cc', 'AdminCc', ].forEach( function(role) {
+ var value = jQuery('.search-results-filter input[name=' + role + ']').val();
+ if ( value && value.match(/\S/) ) {
+ clauses.push( role + '.EmailAddress = ' + "'" + value + "'" );
+ }
+ });
+
+ jQuery('.search-results-filter :input[name=Owner]').each(function() {
+ var value = jQuery(this).val();
+ if ( value && value.match(/\S/) ) {
+ clauses.push( 'Owner.Name = ' + '"' + value + '"' );
+ }
+ });
+
+ jQuery('.search-results-filter input[name^=CustomRole]').each(function() {
+ var role = jQuery(this).attr('name');
+ var value = jQuery(this).val();
+ if ( value && value.match(/\S/) ) {
+ clauses.push( role + '.EmailAddress = ' + '"' + value + '"' );
+ }
+ });
+
+ [ 'Creator', 'LastUpdatedBy' ].forEach( function(role) {
+ var value = jQuery('.search-results-filter input[name=' + role + ']').val();
+ if ( value && value.match(/\S/) ) {
+ var subs = [];
+ clauses.push( role + ' = "' + value + '"' );
+ }
+ });
+
+ [. 'id', 'Told', 'Starts', 'Started', 'Due', 'Resolved', 'Created', 'LastUpdated', 'Priority', 'InitialPriority', 'FinalPriority', 'TimeWorked', 'TimeEstimated', 'TimeLeft' ].forEach(function(type) {
+ var subs = [];
+ [ 'EqualTo', 'GreaterThan', 'LessThan' ].forEach( function(op) {
+ var value = jQuery('.search-results-filter :input[name=' + type + op + ']').val();
+ if ( value && value.match(/\S/) ) {
+ if ( value.match(/\D/) ) {
+ value = "'" + value + "'";
+ }
+
+ if ( op == 'EqualTo' ) {
+ subs.push( type + ' = ' + value );
+ }
+ else if ( op == 'GreaterThan' ) {
+ subs.push( type + ' > ' + value );
+ }
+ else {
+ subs.push( type + ' < ' + value );
+ }
+ }
+ });
+ if ( subs.length ) {
+ clauses.push( '( ' + subs.join( ' AND ' ) + ' )' );
+ }
+ });
+
+ jQuery('.search-results-filter input[name^=CustomField]:not(:checkbox)').each(function() {
+ var name = jQuery(this).attr('name');
+ var value = jQuery(this).val();
+ if ( value && value.match(/\S/) ) {
+ clauses.push( "( '" + name + "'" + ' LIKE "' + value.replace(/(["\\])/g, "\\$1") + '" )' );
+ }
+ });
+
+ var cf_select = {};
+ jQuery('.search-results-filter input[name^=CustomField]:checkbox:checked').each(function() {
+ var name = jQuery(this).attr('name');
+ var value = jQuery(this).val();
+ if ( !cf_select[name] ) {
+ cf_select[name] = [];
+ }
+ cf_select[name].push(value);
+ });
+ jQuery.each(cf_select, function(name, values) {
+ var subs = [];
+ values.forEach(function(value) {
+ subs.push( "'" + name + "'" + ' = ' + '"' + value + '"' );
+ });
+ clauses.push( '( ' + subs.join( ' OR ' ) + ' )' );
+ });
+
+ var refresh_form = jQuery('div.refresh form');
+ var base_query = refresh_form.find('input[name=BaseQuery]').val();
+
+ var query;
+ if ( clauses.length ) {
+ if ( base_query.match(/^\s*\(.+\)\s*$/) ) {
+ query = base_query + " AND " + clauses.join( ' AND ' );
+ }
+ else {
+ query = '( ' + base_query + " ) AND " + clauses.join( ' AND ' );
+ }
+ }
+ else {
+ query = base_query;
+ }
+
+ refresh_form.find('input[name=Query]').val(query);
+ refresh_form.submit();
+ return false;
+};
+
/* inline edit */
jQuery(function () {
var inlineEditEnabled = true;

commit 05ad268d638507408ee5e5e4fbad79d8ecdb7502
Author: sunnavy <sunnavy@bestpractical.com>
Date: Sat Aug 14 05:10:09 2021 +0800

Directly use passed in $Default as label if it is already string

Previously we already assumed $Default was empty or a number, which is
not right.

diff --git a/share/html/Elements/SelectPriorityAsString b/share/html/Elements/SelectPriorityAsString
index 10732a1428..ec912589b6 100644
--- a/share/html/Elements/SelectPriorityAsString
+++ b/share/html/Elements/SelectPriorityAsString
@@ -78,8 +78,13 @@ $ShowEmptyOption => !defined $Default
</%ARGS>
<%INIT>
my $default_label = '';
-if ( defined $Default && length $Default && $QueueObj ) {
- $default_label = RT::Ticket->_PriorityAsString( $Default, $QueueObj->__Value('Name') ) || '';
+if ( defined $Default && length $Default ) {
+ if ( $Default =~ /\D/ ) {
+ $default_label = $Default;
+ }
+ elsif ( $QueueObj ) {
+ $default_label = RT::Ticket->_PriorityAsString( $Default, $QueueObj->__Value('Name') ) || '';
+ }
}

my %config = RT->Config->Get('PriorityAsString');

commit e1ea7f37e05e66a31ba6dbf4d7e85e6cb31132bb
Author: sunnavy <sunnavy@bestpractical.com>
Date: Fri Aug 13 14:40:12 2021 +0800

Allow to show empty option even when default is passed

We need this in search filter to show current Priority filter but allow
user to unset it.

diff --git a/share/html/Elements/SelectPriorityAsString b/share/html/Elements/SelectPriorityAsString
index 615b1308d0..10732a1428 100644
--- a/share/html/Elements/SelectPriorityAsString
+++ b/share/html/Elements/SelectPriorityAsString
@@ -46,7 +46,7 @@
%#
%# END BPS TAGGED BLOCK }}}
<select class="select-priority selectpicker form-control" name="<% $Name %>">
-% unless ( defined $Default ) {
+% if ( $ShowEmptyOption ) {
<option value="">-</option>
% }
% for my $name ( sort { lc $a cmp lc $b } keys %Options ) {
@@ -74,6 +74,7 @@ $Name => 'Priority'
$Default => undef
$QueueObj => undef
%Options
+$ShowEmptyOption => !defined $Default
</%ARGS>
<%INIT>
my $default_label = '';

commit e03cbdc04935c50923112e92761d379e8cad9b3a
Author: sunnavy <sunnavy@bestpractical.com>
Date: Fri Jul 30 04:39:53 2021 +0800

Support to pass user name as default value for autocomplete owner input

Previously only user id was supported. We will need to pass user name in
ticket search result filter.

diff --git a/share/html/Elements/SelectOwnerAutocomplete b/share/html/Elements/SelectOwnerAutocomplete
index 80824c228e..0e9f675f03 100644
--- a/share/html/Elements/SelectOwnerAutocomplete
+++ b/share/html/Elements/SelectOwnerAutocomplete
@@ -57,7 +57,7 @@ $ValueAttribute = 'Name' unless $ValueAttribute =~ /^(?:id|Name)$/;

my $value = '';

-if ( $Default and not $Default =~ /\D/ ) {
+if ( $Default ) {
my $user = RT::User->new( $session{'CurrentUser'} );
$user->Load($Default);
$value = $user->$ValueAttribute;

commit b3b64cd1af37bde7f4a9547034e52733ab9faf37
Author: sunnavy <sunnavy@bestpractical.com>
Date: Fri Jun 25 06:51:41 2021 +0800

Make autocomplete handler work in dynamically created modal dom

diff --git a/share/static/css/elevator-light/misc.css b/share/static/css/elevator-light/misc.css
index 1219bff839..3c6e7532b4 100644
--- a/share/static/css/elevator-light/misc.css
+++ b/share/static/css/elevator-light/misc.css
@@ -164,3 +164,7 @@ span.pagenum {
.w-15 {
width: 15% !important;
}
+
+ul.ui-autocomplete {
+ z-index: 9999;
+}
diff --git a/share/static/js/util.js b/share/static/js/util.js
index 25ba76a20e..5f68e2cf7d 100644
--- a/share/static/js/util.js
+++ b/share/static/js/util.js
@@ -45,6 +45,7 @@ var showModal = function(html) {
// We need to refresh the select picker plugin on AJAX calls
// since the plugin only runs on page load.
jQuery('.selectpicker').selectpicker('refresh');
+ RT.Autocomplete.bind(modal);
};

/* Classes */

commit 0c3d74b951b5893c5e3413f6aa25c436fae0d15d
Author: sunnavy <sunnavy@bestpractical.com>
Date: Sat Jun 26 05:58:24 2021 +0800

Multiple Order/OrderBy values shall be passed as array references

This is to fix the case where user passes multiple Order/OrderBy on self
service pages like /SelfService/Open.html.

diff --git a/share/html/SelfService/Elements/MyGroupRequests b/share/html/SelfService/Elements/MyGroupRequests
index ef196073c1..805a4591ff 100644
--- a/share/html/SelfService/Elements/MyGroupRequests
+++ b/share/html/SelfService/Elements/MyGroupRequests
@@ -49,8 +49,8 @@
<& /Elements/CollectionList, Title => $title,
Format => $Format,
Query => $Query,
- Order => @Order,
- OrderBy => @OrderBy,
+ Order => \@Order,
+ OrderBy => \@OrderBy,
BaseURL => $BaseURL,
AllowSorting => 1,
Class => 'RT::Tickets',
diff --git a/share/html/SelfService/Elements/MyRequests b/share/html/SelfService/Elements/MyRequests
index 1a61e99472..b121982b2f 100644
--- a/share/html/SelfService/Elements/MyRequests
+++ b/share/html/SelfService/Elements/MyRequests
@@ -50,8 +50,8 @@
Title => $title,
Format => $Format,
Query => $Query,
- Order => @Order,
- OrderBy => @OrderBy,
+ Order => \@Order,
+ OrderBy => \@OrderBy,
BaseURL => $BaseURL,
AllowSorting => 1,
Class => 'RT::Tickets',

commit 88630277975550f491db4d7a93e70477112ebdd4
Author: sunnavy <sunnavy@bestpractical.com>
Date: Tue Oct 2 02:53:31 2018 +0800

Test order indicator in search results header

diff --git a/t/web/query_builder.t b/t/web/query_builder.t
index da318d3946..94482f652d 100644
--- a/t/web/query_builder.t
+++ b/t/web/query_builder.t
@@ -335,14 +335,17 @@ diag "make sure skipped order by field doesn't break search";

$agent->follow_link_ok({id => 'page-edit_search'});
$agent->form_name('BuildQuery');
- $agent->field("OrderBy", 'Requestor.EmailAddress', 3);
+ $agent->field('Order', 'DESC', 1);
+ $agent->field("OrderBy", 'Requestor.Name', 3);
$agent->submit;
$agent->form_name('BuildQuery');
is $agent->value('OrderBy', 1), 'id';
is $agent->value('OrderBy', 2), '';
- is $agent->value('OrderBy', 3), 'Requestor.EmailAddress';
+ is $agent->value('OrderBy', 3), 'Requestor.Name';

$agent->follow_link_ok({id => 'page-results'});
+ $agent->content_like(qr/class="fas fa-sort-down".*class="fas fa-sort-up"/s, 'orders');
+
ok( $agent->find_link(
text => $t->id,
url_regex => qr{/Ticket/Display\.html},

commit d76e1bffedb349568e0f09720a01cf29eabba343
Author: sunnavy <sunnavy@bestpractical.com>
Date: Tue Oct 2 02:38:06 2018 +0800

Add multiple order by and order indicator to search results header

Now clicking a header will sort results in the following order:

ASC -> DESC -> UNSET -> ASC -> DESC -> UNSET -> ...

Previously "Created" and "id" shared the same order, e.g. if current
order is "id ASC", then clicking "Created" header will sort by "Created
DESC" instead of "Created ASC".

Now we show indicator in header, the above implicit share is confusing,
so it's dropped.

diff --git a/share/html/Elements/CollectionAsTable/Header b/share/html/Elements/CollectionAsTable/Header
index 162642ba8a..03832040a5 100644
--- a/share/html/Elements/CollectionAsTable/Header
+++ b/share/html/Elements/CollectionAsTable/Header
@@ -79,6 +79,32 @@ else {
}

my $item = 0;
+
+
+# "Requestor" has alias "Requestors", this is to handle the case where
+# OrderBy is "Requestor.Name" and result Format is "Requestors"
+my %field_alias;
+if ( $Class->can('RecordClass') && $Class->RecordClass->DOES("RT::Record::Role::Roles") ) {
+ for my $role ( $Class->RecordClass->Roles( UserDefined => 0 ) ) {
+ my $attrs = $Class->RecordClass->Role($role);
+ $field_alias{$role} = $role . 's' unless $attrs->{Single};
+ }
+}
+
+my %order_by;
+for my $i ( 0 .. $#OrderBy ) {
+ my $field = $OrderBy[$i];
+ $order_by{$field}{index} = $i;
+ $order_by{$field}{order} = $Order[$i] || 'ASC';
+ $order_by{$field}{class} = $order_by{ $OrderBy[$i] }{order} =~ /ASC/i ? 'fa-sort-up' : 'fa-sort-down';
+
+ if ( $field =~ m!^(\w+)\.! && $field_alias{$1} ) {
+ my $alias = $field;
+ $alias =~ s!^(\w+)\.!$field_alias{$1}.!;
+ $order_by{$alias} = $order_by{$field};
+ }
+}
+
foreach my $col ( @Format ) {
my $attr = $col->{'attribute'} || $col->{'last_attribute'};

@@ -146,21 +172,43 @@ foreach my $col ( @Format ) {
{
$attr = ProcessColumnMapValue( $attr, Arguments => [ $col->{'attribute'} ], Escape => 0 );

- my $new_order = 'ASC';
- $new_order = ($Order[0] // '') eq 'ASC'? 'DESC': 'ASC'
- if $OrderBy[0] && ($OrderBy[0] eq $attr or "$attr|$OrderBy[0]" =~ /^(Created|id)\|(Created|id)$/);
+
+ my @new_order_by = @OrderBy;
+ my @new_order = @Order;
+
+ # ASC -> DESC -> UNSET -> ASC, etc.
+ if ( $order_by{$attr} ) {
+ splice @new_order_by, $order_by{$attr}{index}, 1;
+ splice @new_order, $order_by{$attr}{index}, 1;
+
+ if ( $order_by{$attr}{order} eq 'ASC' ) {
+ unshift @new_order_by, $attr;
+ unshift @new_order, 'DESC';
+ }
+ }
+ else {
+ unshift @new_order_by, $attr;
+ unshift @new_order, 'ASC';
+ }

$m->out(
- '<a href="' . $m->interp->apply_escapes($BaseURL
+ '<span class="title"><a href="' . $m->interp->apply_escapes($BaseURL
. $m->comp( '/Elements/QueryString',
%$generic_query_args,
- OrderBy => $attr, Order => $new_order
+ OrderBy => join( '|', @new_order_by ), Order => join( '|', @new_order ),
), 'h')
- . '">'. $loc_title .'</a>'
+ . '">'. $loc_title .'</a></span>'
);
+
+ if ( $order_by{$attr} ) {
+ $m->out( qq!&nbsp;<span class="fas $order_by{$attr}{class}"></span>! );
+ }
+ else {
+ $m->out( qq!&nbsp;<span class="fas fa-sort"></span>! );
+ }
}
else {
- $m->out( $loc_title );
+ $m->out( qq{<span class="title">$loc_title</span>} );
}
$m->out('</th>');
}
diff --git a/share/static/css/elevator-dark/main.css b/share/static/css/elevator-dark/main.css
index 7ea673931b..b8b0a67738 100644
--- a/share/static/css/elevator-dark/main.css
+++ b/share/static/css/elevator-dark/main.css
@@ -453,3 +453,7 @@ body.darkmode.IE11 .ui-icon-circle-triangle-e {
border-color: #717171;
margin-bottom: 1px;
}
+
+.darkmode th.collection-as-table svg.fa-sort * {
+ color: #777 !important;
+}
diff --git a/share/static/css/elevator-light/collection.css b/share/static/css/elevator-light/collection.css
index 15ee314522..ec5f55a43b 100644
--- a/share/static/css/elevator-light/collection.css
+++ b/share/static/css/elevator-light/collection.css
@@ -52,3 +52,16 @@ tr:last-of-type.oddline td.collection-as-table,
tr:last-of-type.evenline td.collection-as-table {
padding-bottom: 0.5rem;
}
+
+th.collection-as-table svg.fa-sort {
+ color: #ccc;
+}
+
+/* To not wrap icons in header */
+th.collection-as-table {
+ white-space: nowrap;
+}
+
+th.collection-as-table span.title {
+ white-space: normal;
+}

commit a0c1a1c03c720b7a0f499ee083ee742ef0ed313a
Author: sunnavy <sunnavy@bestpractical.com>
Date: Mon Jun 28 23:19:58 2021 +0800

Update fontawesome version for new added icons and also to 5.15.4

diff --git a/devel/third-party/README b/devel/third-party/README
index d18a8a2374..25bec3de9f 100644
--- a/devel/third-party/README
+++ b/devel/third-party/README
@@ -80,7 +80,7 @@ Description: keyboard shortcuts
Origin: https://github.com/ccampbell/mousetrap
License: Apache

-* fontawesome-5.11.2
+* fontawesome-5.15.4
Description: A set of SVG icons. Icon files are installed via npm, then webpack tree-shakes to generate js for only the icons we use.
Origin: https://github.com/FortAwesome/Font-Awesome/tree/master/js-packages/%40fortawesome
License: Icons: CC BY 4.0, Code: MIT License
diff --git a/devel/third-party/fontawesome-5.11.2/README b/devel/third-party/fontawesome-5.15.4/README
similarity index 100%
rename from devel/third-party/fontawesome-5.11.2/README
rename to devel/third-party/fontawesome-5.15.4/README
diff --git a/devel/third-party/fontawesome-5.11.2/index.js b/devel/third-party/fontawesome-5.15.4/index.js
similarity index 100%
rename from devel/third-party/fontawesome-5.11.2/index.js
rename to devel/third-party/fontawesome-5.15.4/index.js
diff --git a/devel/third-party/fontawesome-5.11.2/webpack.config.js b/devel/third-party/fontawesome-5.15.4/webpack.config.js
similarity index 100%
rename from devel/third-party/fontawesome-5.11.2/webpack.config.js
rename to devel/third-party/fontawesome-5.15.4/webpack.config.js
diff --git a/share/static/js/fontawesome.min.js b/share/static/js/fontawesome.min.js
index f8c49b6b63..f81bac2557 100644
--- a/share/static/js/fontawesome.min.js
+++ b/share/static/js/fontawesome.min.js
@@ -1 +1,2 @@
-(function(e){function t(i){if(a[i])return a[i].exports;var n=a[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var a={};return t.m=e,t.c=a,t.d=function(e,a,i){t.o(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:i})},t.r=function(e){'undefined'!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:'Module'}),Object.defineProperty(e,'__esModule',{value:!0})},t.t=function(e,a){if(1&a&&(e=t(e)),8&a)return e;if(4&a&&'object'==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,'default',{enumerable:!0,value:e}),2&a&&'string'!=typeof e)for(var n in e)t.d(i,n,function(t){return e[t]}.bind(null,n));return i},t.n=function(e){var a=e&&e.__esModule?function(){return e['default']}:function(){return e};return t.d(a,'a',a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p='',t(t.s=5)})([.function(e){var t=function(){return this}();try{t=t||new Function('return
this')()}catch(a){'object'==typeof window&&(t=window)}e.exports=t},function(e,t,a){'use strict';(function(e,i){function n(e){return n='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&'function'==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?'symbol':typeof e},n(e)}function r(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')}function c(e,t){for(var a=0,i;a<t.length;a++)i=t[a],i.enumerable=i.enumerable||!1,i.configurable=!0,'value'in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}function o(e,t,a){return t&&c(e.prototype,t),a&&c(e,a),e}function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e){for(var t=1;t<arguments.length;t++){var a=null==arguments[t]?{}:arguments[t],i=Object.keys(a);'function'==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(a).filter(function(e){ret
urn Object.getOwnPropertyDescriptor(a,e).enumerable}))),i.forEach(function(t){s(e,t,a[t])})}return e}function f(e,t){return h(e)||b(e,t)||v()}function m(e){return u(e)||g(e)||y()}function u(e){if(Array.isArray(e)){for(var t=0,a=Array(e.length);t<e.length;t++)a[t]=e[t];return a}}function h(e){if(Array.isArray(e))return e}function g(e){if(Symbol.iterator in Object(e)||'[object Arguments]'===Object.prototype.toString.call(e))return Array.from(e)}function b(e,t){var a=[],i=!0,n=!1,r=void 0;try{for(var c=e[Symbol.iterator](),o;!(i=(o=c.next()).done)&&(a.push(o.value),!(t&&a.length===t));i=!0);}catch(e){n=!0,r=e}finally{try{i||null==c['return']||c['return']()}finally{if(n)throw r}}return a}function y(){throw new TypeError('Invalid attempt to spread non-iterable instance')}function v(){throw new TypeError('Invalid attempt to destructure non-iterable instance')}function x(e){var t=et.querySelector('script['+e+']');if(t)return t.getAttribute(e)}function k(e){return!(''!==e)||'false'!==e&&(!(
'true'!==e)||e)}function z(e){nt&&(Tt?setTimeout(e,0):Pt.push(e))}function M(){for(var e=0;e<Yt.length;e++)Yt[e][0](Yt[e][1]);Yt=[],Xt=!1}function N(e,t){Yt.push([e,t]),Xt||(Xt=!0,Ft(M,0))}function C(e,t){function a(e){I(t,e)}function i(e){S(t,e)}try{e(a,i)}catch(t){i(t)}}function A(e){var t=e.owner,a=t._state,i=t._data,n=e[a],r=e.then;if('function'==typeof n){a=Rt;try{i=n(i)}catch(t){S(r,t)}}L(r,i)||(a===Rt&&I(r,i),a===Ot&&S(r,i))}function L(t,e){var a;try{if(t===e)throw new TypeError('A promises callback cannot return that same promise.');if(e&&('function'==typeof e||'object'===n(e))){var i=e.then;if('function'==typeof i)return i.call(e,function(i){a||(a=!0,e===i?E(t,i):I(t,i))},function(e){a||(a=!0,S(t,e))}),!0}}catch(i){return a||S(t,i),!0}return!1}function I(e,t){e!==t&&L(e,t)||E(e,t)}function E(e,t){e._state===Ht&&(e._state=Vt,e._data=t,N(T,e))}function S(e,t){e._state===Ht&&(e._state=Vt,e._data=t,N(H,e))}function _(e){e._then=e._then.forEach(A)}function T(e){e._state=Rt,_(e)}
function H(t){t._state=Ot,_(t),!t._handled&&jt&&e.process.emit('unhandledRejection',t._data,t)}function V(t){e.process.emit('rejectionHandled',t)}function R(e){if('function'!=typeof e)throw new TypeError('Promise resolver '+e+' is not a function');if(!1==this instanceof R)throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');this._then=[],C(e,this)}function O(e){return~Lt.indexOf(e)}function D(e){if(e&&nt){var t=et.createElement('style');t.setAttribute('type','text/css'),t.innerHTML=e;for(var a=et.head.childNodes,n=null,r=a.length-1;-1<r;r--){var i=a[r],c=(i.tagName||'').toUpperCase();-1<['STYLE','LINK'].indexOf(c)&&(n=i)}return et.head.insertBefore(t,n),e}}function j(){for(var e=12,t='';0<e--;)t+=Wt[0|62*Math.random()];return t}function F(e){for(var t=[],a=(e||[]).length>>>0;a--;)t[a]=e[a];return t}function Y(e){return e.classList?F(e.classList):(e.getAttribute('class')||'').split(' ').filter
(function(e){return e})}function X(e,t){var a=t.split('-'),i=a[0],n=a.slice(1).join('-');return i!==e||''===n||O(n)?null:n}function B(e){return''.concat(e).replace(/&/g,'&amp;').replace(/"/g,'&quot;').replace(/'/g,'&#39;').replace(/</g,'&lt;').replace(/>/g,'&gt;')}function U(e){return Object.keys(e||{}).reduce(function(t,a){return t+''.concat(a,'="').concat(B(e[a]),'" ')},'').trim()}function W(e){return Object.keys(e||{}).reduce(function(t,a){return t+''.concat(a,': ').concat(e[a],';')},'')}function q(e){return e.size!==d.size||e.x!==d.x||e.y!==d.y||e.rotate!==d.rotate||e.flipX||e.flipY}function G(e){var t=e.transform,a=e.containerWidth,i=e.iconWidth,n={transform:'translate('.concat(a/2,' 256)')},r='translate('.concat(32*t.x,', ').concat(32*t.y,') '),c='scale('.concat(t.size/16*(t.flipX?-1:1),', ').concat(t.size/16*(t.flipY?-1:1),') '),o='rotate('.concat(t.rotate,' 0 0)'),s={transform:''.concat(r,' ').concat(c,' ').concat(o)},l={transform:'translate('.concat(-1*(i/2),' -256)')};retu
rn{outer:n,inner:s,path:l}}function K(e){var t=e.transform,a=e.width,i=void 0===a?ot:a,n=e.height,r=void 0===n?ot:n,c=e.startCentered,o=void 0!==c&&c,s='';return s+=o&&rt?'translate('.concat(t.x/Ut-i/2,'em, ').concat(t.y/Ut-r/2,'em) '):o?'translate(calc(-50% + '.concat(t.x/Ut,'em), calc(-50% + ').concat(t.y/Ut,'em)) '):'translate('.concat(t.x/Ut,'em, ').concat(t.y/Ut,'em) '),s+='scale('.concat(t.size/Ut*(t.flipX?-1:1),', ').concat(t.size/Ut*(t.flipY?-1:1),') '),s+='rotate('.concat(t.rotate,'deg) '),s}function $(e){var t=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill='black'),e}function J(e){return'g'===e.tag?e.children:[e]}function Q(e){var t=e.children,a=e.attributes,i=e.main,n=e.mask,r=e.transform,c=i.width,o=i.icon,s=n.width,f=n.icon,d=G({transform:r,containerWidth:s,iconWidth:c}),m={tag:'rect',attributes:l({},qt,{fill:'white'})},u=o.children?{children:o.children.map($)}:{},p={tag:'g',attributes:l({},d.in
ner),children:[$(l({tag:o.tag,attributes:l({},o.attributes,d.path)},u))]},h={tag:'g',attributes:l({},d.outer),children:[p]},g='mask-'.concat(j()),b='clip-'.concat(j()),y={tag:'mask',attributes:l({},qt,{id:g,maskUnits:'userSpaceOnUse',maskContentUnits:'userSpaceOnUse'}),children:[m,h]},v={tag:'defs',children:[{tag:'clipPath',attributes:{id:b},children:J(f)},y]};return t.push(v,{tag:'rect',attributes:l({fill:'currentColor',"clip-path":'url(#'.concat(b,')'),mask:'url(#'.concat(g,')')},qt)}),{children:t,attributes:a}}function Z(e){var t=e.children,a=e.attributes,i=e.main,n=e.transform,r=e.styles,c=W(r);if(0<c.length&&(a.style=c),q(n)){var o=G({transform:n,containerWidth:i.width,iconWidth:i.width});t.push({tag:'g',attributes:l({},o.outer),children:[{tag:'g',attributes:l({},o.inner),children:[{tag:i.icon.tag,children:i.icon.children,attributes:l({},i.icon.attributes,o.path)}]}]})}else t.push(i.icon);return{children:t,attributes:a}}function ee(e){var t=e.children,a=e.main,i=e.mask,n=e.attr
ibutes,r=e.styles,c=e.transform;if(q(c)&&a.found&&!i.found){var o=a.width,s=a.height,f={x:o/s/2,y:.5};n.style=W(l({},r,{"transform-origin":''.concat(f.x+c.x/16,'em ').concat(f.y+c.y/16,'em')}))}return[{tag:'svg',attributes:n,children:t}]}function te(e){var t=e.prefix,a=e.iconName,i=e.children,n=e.attributes,r=e.symbol,c=!0===r?''.concat(t,'-').concat(St.familyPrefix,'-').concat(a):r;return[{tag:'svg',attributes:{style:'display: none;'},children:[{tag:'symbol',attributes:l({},n,{id:c}),children:i}]}]}function ae(e){var t=e.icons,a=t.main,i=t.mask,n=e.prefix,r=e.iconName,c=e.transform,o=e.symbol,s=e.title,f=e.extra,d=e.watchable,m=i.found?i:a,u=m.width,p=m.height,h='fa-w-'.concat(Math.ceil(16*(u/p))),g=[St.replacementClass,r?''.concat(St.familyPrefix,'-').concat(r):'',h].filter(function(e){return-1===f.classes.indexOf(e)}).concat(f.classes).join(' '),b={children:[],attributes:l({},f.attributes,{"data-prefix":n,"data-icon":r,class:g,role:f.attributes.role||'img',xmlns:'http://www.w3.or
g/2000/svg',viewBox:'0 0 '.concat(u,' ').concat(p)})};void 0!==d&&d&&(b.attributes[ft]=''),s&&b.children.push({tag:'title',attributes:{id:b.attributes['aria-labelledby']||'title-'.concat(j())},children:[s]});var y=l({},b,{prefix:n,iconName:r,main:a,mask:i,transform:c,symbol:o,styles:f.styles}),v=i.found&&a.found?Q(y):Z(y),x=v.children,w=v.attributes;return y.children=x,y.attributes=w,o?te(y):ee(y)}function ie(e){var t=e.content,a=e.width,i=e.height,n=e.transform,r=e.title,c=e.extra,o=e.watchable,s=l({},c.attributes,r?{title:r}:{},{class:c.classes.join(' ')});void 0!==o&&o&&(s[ft]='');var f=l({},c.styles);q(n)&&(f.transform=K({transform:n,startCentered:!0,width:a,height:i}),f['-webkit-transform']=f.transform);var d=W(f);0<d.length&&(s.style=d);var m=[];return m.push({tag:'span',attributes:s,children:[t]}),r&&m.push({tag:'span',attributes:{class:'sr-only'},children:[r]}),m}function ne(e){var t=e.content,a=e.title,i=e.extra,n=l({},i.attributes,a?{title:a}:{},{class:i.classes.join(' ')}
),r=W(i.styles);0<r.length&&(n.style=r);var c=[];return c.push({tag:'span',attributes:n,children:[t]}),a&&c.push({tag:'span',attributes:{class:'sr-only'},children:[a]}),c}function re(e){for(var t='',a=0,i;a<e.length;a++)i=e.charCodeAt(a).toString(16),t+=('000'+i).slice(-4);return t}function ce(e,t){var a=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},i=a.skipHooks,n=Object.keys(t).reduce(function(e,a){var i=t[a],n=!!i.icon;return n?e[i.iconName]=i.icon:e[a]=i,e},{});'function'!=typeof w.hooks.addPack||void 0!==i&&i?w.styles[e]=l({},w.styles[e]||{},n):w.hooks.addPack(e,n),'fas'===e&&ce('fa',t)}function oe(e,t){return(aa[e]||{})[t]}function se(e,t){return(ia[e]||{})[t]}function le(e){return na[e]||{prefix:null,iconName:null}}function fe(e){return e.reduce(function(e,t){var a=X(St.familyPrefix,t);if(ca[t])e.prefix=t;else if(St.autoFetchSvg&&-1<['fas','far','fal','fad','fab','fa'].indexOf(t))e.prefix=t;else if(a){var i='fa'===e.prefix?le(a):{};e.iconName=i.iconName||a,e.prefi
x=i.prefix||e.prefix}else t!==St.replacementClass&&0!==t.indexOf('fa-w-')&&e.rest.push(t);return e},oa())}function de(e,t,a){if(e&&e[t]&&e[t][a])return{prefix:t,iconName:a,icon:e[t][a]}}function me(e){var t=e.tag,a=e.attributes,i=void 0===a?{}:a,n=e.children,r=void 0===n?[]:n;return'string'==typeof e?B(e):'<'.concat(t,' ').concat(U(i),'>').concat(r.map(me).join(''),'</').concat(t,'>')}function ue(e){var t=e.getAttribute?e.getAttribute(ft):null;return'string'==typeof t}function pe(){if(!0===St.autoReplaceSvg)return la.replace;var e=la[St.autoReplaceSvg];return e||la.replace}function he(e){e()}function ge(e,t){var a='function'==typeof t?t:sa;if(0===e.length)a();else{var i=he;St.mutateApproach===gt&&(i=Ze.requestAnimationFrame||he),i(function(){var t=pe(),i=Jt.begin('mutate');e.map(t),i(),a()})}}function be(){fa=!0}function ye(){fa=!1}function ve(e){if(tt&&St.observeMutations){var t=e.treeCallback,a=e.nodeCallback,i=e.pseudoElementsCallback,n=e.observeMutationsRoot,r=void 0===n?et:n;da
=new tt(function(e){fa||F(e).forEach(function(e){if('childList'===e.type&&0<e.addedNodes.length&&!ue(e.addedNodes[0])&&(St.searchPseudoElements&&i(e.target),t(e.target)),'attributes'===e.type&&e.target.parentNode&&St.searchPseudoElements&&i(e.target.parentNode),'attributes'===e.type&&ue(e.target)&&~Ct.indexOf(e.attributeName))if('class'===e.attributeName){var n=fe(Y(e.target)),r=n.prefix,c=n.iconName;r&&e.target.setAttribute('data-prefix',r),c&&e.target.setAttribute('data-icon',c)}else a(e.target)})}),nt&&da.observe(r,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function xe(){da&&da.disconnect()}function we(e){var t=e.getAttribute('style'),a=[];return t&&(a=t.split(';').reduce(function(e,t){var a=t.split(':'),i=a[0],n=a.slice(1);return i&&0<n.length&&(e[i]=n.join(':').trim()),e},{})),a}function ke(e){var t=e.getAttribute('data-prefix'),a=e.getAttribute('data-icon'),i=void 0===e.innerText?'':e.innerText.trim(),n=fe(Y(e));return t&&a&&(n.prefix=t,n.iconName=a),n.prefix&&
1<i.length?n.iconName=se(n.prefix,e.innerText):n.prefix&&1===i.length&&(n.iconName=oe(n.prefix,re(e.innerText))),n}function ze(e){return ma(e.getAttribute('data-fa-transform'))}function Me(e){var t=e.getAttribute('data-fa-symbol');return null!==t&&(!(''!==t)||t)}function Ne(e){var t=F(e.attributes).reduce(function(e,t){return'class'!==e.name&&'style'!==e.name&&(e[t.name]=t.value),e},{}),a=e.getAttribute('title');return St.autoA11y&&(a?t['aria-labelledby']=''.concat(St.replacementClass,'-title-').concat(j()):(t['aria-hidden']='true',t.focusable='false')),t}function Ce(e){var t=e.getAttribute('data-fa-mask');return t?fe(t.split(' ').map(function(e){return e.trim()})):oa()}function Ae(){return{iconName:null,title:null,prefix:null,transform:d,symbol:!1,mask:null,extra:{classes:[],styles:{},attributes:{}}}}function Le(e){var t=ke(e),a=t.iconName,i=t.prefix,n=t.rest,r=we(e),c=ze(e),o=Me(e),s=Ne(e),l=Ce(e);return{iconName:a,title:e.getAttribute('title'),prefix:i,transform:c,symbol:o,mask:l
,extra:{classes:n,styles:r,attributes:s}}}function Ie(e){this.name='MissingIcon',this.message=e||'Icon unavailable',this.stack=new Error().stack}function Ee(e){var t=e[0],a=e[1],i=e.slice(4),n=f(i,1),r=n[0],c=null;return c=Array.isArray(r)?{tag:'g',attributes:{class:''.concat(St.familyPrefix,'-').concat(At.GROUP)},children:[{tag:'path',attributes:{class:''.concat(St.familyPrefix,'-').concat(At.SECONDARY),fill:'currentColor',d:r[0]}},{tag:'path',attributes:{class:''.concat(St.familyPrefix,'-').concat(At.PRIMARY),fill:'currentColor',d:r[1]}}]}:{tag:'path',attributes:{fill:'currentColor',d:r}},{found:!0,width:t,height:a,icon:c}}function Se(e,t){return new Bt(function(a,i){if(e&&t&&wa[t]&&wa[t][e]){var r=wa[t][e];return a(Ee(r))}'object'===n(Ze.FontAwesomeKitConfig)&&'string'==typeof window.FontAwesomeKitConfig.token&&({}['fa-kit-token']=Ze.FontAwesomeKitConfig.token),e&&t&&!St.showMissingIcons?i(new Ie('Icon is missing for prefix '.concat(t,' with icon name ').concat(e))):a({found:!1,w
idth:512,height:512,icon:xa})})}function _e(e,t){var a=t.iconName,i=t.title,n=t.prefix,r=t.transform,c=t.symbol,o=t.mask,s=t.extra;return new Bt(function(t){Bt.all([Se(a,n),Se(o.iconName,o.prefix)]).then(function(o){var l=f(o,2),d=l[0],m=l[1];t([e,ae({icons:{main:d,mask:m},prefix:n,iconName:a,transform:r,symbol:c,mask:m,title:i,extra:s,watchable:!0})])})})}function Pe(e,t){var a=t.title,i=t.transform,n=t.extra,r=null,c=null;if(rt){var o=parseInt(getComputedStyle(e).fontSize,10),s=e.getBoundingClientRect();r=s.width/o,c=s.height/o}return St.autoA11y&&!a&&(n.attributes['aria-hidden']='true'),Bt.resolve([e,ie({content:e.innerHTML,width:r,height:c,transform:i,title:a,extra:n,watchable:!0})])}function Te(e){var t=Le(e);return~t.extra.classes.indexOf(wt)?Pe(e,t):_e(e,t)}function He(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:null;if(nt){var a=et.documentElement.classList,i=function(e){return a.add(''.concat(ht,'-').concat(e))},n=function(e){return a.remove(''.concat(ht
,'-').concat(e))},r=St.autoFetchSvg?Object.keys(vt):Object.keys(ka),c=['.'.concat(wt,':not([').concat(ft,'])')].concat(r.map(function(e){return'.'.concat(e,':not([').concat(ft,'])')})).join(', ');if(0!==c.length){var o=[];try{o=F(e.querySelectorAll(c))}catch(t){}if(0<o.length)i('pending'),n('complete');else return;var s=Jt.begin('onTree'),l=o.reduce(function(e,t){try{var a=Te(t);a&&e.push(a)}catch(t){!yt&&t instanceof Ie&&console.error(t)}return e},[]);return new Bt(function(e,a){Bt.all(l).then(function(a){ge(a,function(){i('active'),i('complete'),n('pending'),'function'==typeof t&&t(),s(),e()})}).catch(function(){s(),a()})})}}}function Ve(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:null;Te(e).then(function(e){e&&ge([e],t)})}function Re(e,t){var a=''.concat(mt).concat(t.replace(':','-'));return new Bt(function(i,n){if(null!==e.getAttribute(a))return i();var r=F(e.children),c=r.filter(function(e){return e.getAttribute(dt)===t})[0],o=Ze.getComputedStyle(e,t),s=o.ge
tPropertyValue('font-family').match(kt),f=o.getPropertyValue('font-weight');if(c&&!s)return e.removeChild(c),i();if(s){var d=o.getPropertyValue('content'),m=~['Solid','Regular','Light','Duotone','Brands'].indexOf(s[1])?xt[s[1].toLowerCase()]:zt[f],u=re(3===d.length?d.substr(1,1):d),p=oe(m,u),h=p;if(p&&(!c||c.getAttribute(ut)!==m||c.getAttribute(pt)!==h)){e.setAttribute(a,h),c&&e.removeChild(c);var g=Ae(),b=g.extra;b.attributes[dt]=t,Se(p,m).then(function(n){var r=ae(l({},g,{icons:{main:n,mask:oa()},prefix:m,iconName:h,extra:b,watchable:!0})),c=et.createElement('svg');':before'===t?e.insertBefore(c,e.firstChild):e.appendChild(c),c.outerHTML=r.map(function(e){return me(e)}).join('\n'),e.removeAttribute(a),i()}).catch(n)}else i()}else i()})}function Oe(e){return Bt.all([Re(e,':before'),Re(e,':after')])}function De(e){return e.parentNode!==document.head&&!~bt.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(dt)&&(!e.parentNode||'svg'!==e.parentNode.tagName)}function je(e){return nt?new
Bt(function(t,a){var i=F(e.querySelectorAll('*')).filter(De).map(Oe),n=Jt.begin('searchPseudoElements');be(),Bt.all(i).then(function(){n(),ye(),t()}).catch(function(){n(),ye(),a()})}):void 0}function Fe(){var e=St.familyPrefix,t=St.replacementClass,a=za;if(e!==st||t!==lt){var i=/\.fa\-/g,n=/\--fa\-/g,r=/\.svg-inline--fa/g;a=a.replace(i,'.'.concat(e,'-')).replace(n,'--'.concat(e,'-')).replace(r,'.'.concat(t))}return a}function Ye(){St.autoAddCss&&!Ca&&(D(Fe()),Ca=!0)}function Xe(e,t){return Object.defineProperty(e,'abstract',{get:t}),Object.defineProperty(e,'html',{get:function(){return e.abstract.map(function(e){return me(e)})}}),Object.defineProperty(e,'node',{get:function(){if(nt){var t=et.createElement('div');return t.innerHTML=e.html,t.children}}}),e}function Be(e){var t=e.prefix,a=void 0===t?'fa':t,i=e.iconName;return i?de(Na.definitions,a,i)||de(w.styles,a,i):void 0}a.d(t,'b',function(){return Na}),a.d(t,'a',function(){return Aa});var Ue=function(){},We={},qe={},Ge=null,Ke={m
ark:Ue,measure:Ue};try{'undefined'!=typeof window&&(We=window),'undefined'!=typeof document&&(qe=document),'undefined'!=typeof MutationObserver&&(Ge=MutationObserver),'undefined'!=typeof performance&&(Ke=performance)}catch(t){}var $e=We.navigator||{},Je=$e.userAgent,Qe=void 0===Je?'':Je,Ze=We,et=qe,tt=Ge,at=Ke,it=!!Ze.document,nt=!!et.documentElement&&!!et.head&&'function'==typeof et.addEventListener&&'function'==typeof et.createElement,rt=~Qe.indexOf('MSIE')||~Qe.indexOf('Trident/'),ct='___FONT_AWESOME___',ot=16,st='fa',lt='svg-inline--fa',ft='data-fa-i2svg',dt='data-fa-pseudo-element',mt='data-fa-pseudo-element-pending',ut='data-prefix',pt='data-icon',ht='fontawesome-i2svg',gt='async',bt=['HTML','HEAD','STYLE','SCRIPT'],yt=function(){try{return!0}catch(t){return!1}}(),vt={fas:'solid',far:'regular',fal:'light',fad:'duotone',fab:'brands',fa:'solid'},xt={solid:'fas',regular:'far',light:'fal',duotone:'fad',brands:'fab'},wt='fa-layers-text',kt=/Font Awesome 5 (Solid|Regular|Light|Duoto
ne|Brands|Free|Pro)/,zt={900:'fas',400:'far',normal:'far',300:'fal'},Mt=[1,2,3,4,5,6,7,8,9,10],Nt=Mt.concat([11,12,13,14,15,16,17,18,19,20]),Ct=['class','data-prefix','data-icon','data-fa-transform','data-fa-mask'],At={GROUP:'group',SWAP_OPACITY:'swap-opacity',PRIMARY:'primary',SECONDARY:'secondary'},Lt=['xs','sm','lg','fw','ul','li','border','pull-left','pull-right','spin','pulse','rotate-90','rotate-180','rotate-270','flip-horizontal','flip-vertical','flip-both','stack','stack-1x','stack-2x','inverse','layers','layers-text','layers-counter',At.GROUP,At.SWAP_OPACITY,At.PRIMARY,At.SECONDARY].concat(Mt.map(function(e){return''.concat(e,'x')})).concat(Nt.map(function(e){return'w-'.concat(e)})),It=Ze.FontAwesomeConfig||{};if(et&&'function'==typeof et.querySelector){[['data-family-prefix','familyPrefix'],['data-replacement-class','replacementClass'],['data-auto-replace-svg','autoReplaceSvg'],['data-auto-add-css','autoAddCss'],['data-auto-a11y','autoA11y'],['data-search-pseudo-elements',
'searchPseudoElements'],['data-observe-mutations','observeMutations'],['data-mutate-approach','mutateApproach'],['data-keep-original-source','keepOriginalSource'],['data-measure-performance','measurePerformance'],['data-show-missing-icons','showMissingIcons']].forEach(function(e){var t=f(e,2),a=t[0],i=t[1],n=k(x(a));n!==void 0&&null!==n&&(It[i]=n)})}var Et=l({},{familyPrefix:st,replacementClass:lt,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:'async',keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0},It);Et.autoReplaceSvg||(Et.observeMutations=!1);var St=l({},Et);Ze.FontAwesomeConfig=St;var _t=Ze||{};_t[ct]||(_t[ct]={}),_t[ct].styles||(_t[ct].styles={}),_t[ct].hooks||(_t[ct].hooks={}),_t[ct].shims||(_t[ct].shims=[]);var w=_t[ct],Pt=[],Tt=!1;nt&&(Tt=(et.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(et.readyState),!Tt&&et.addEventListener('DOMContentLoaded',function e(){et.removeEventListener('DOMCont
entLoaded',e),Tt=1,Pt.map(function(e){return e()})}));var Ht='pending',Vt='settled',Rt='fulfilled',Ot='rejected',Dt=function(){},jt='undefined'!=typeof e&&'undefined'!=typeof e.process&&'function'==typeof e.process.emit,Ft='undefined'==typeof i?setTimeout:i,Yt=[],Xt;R.prototype={constructor:R,_state:Ht,_then:null,_data:void 0,_handled:!1,then:function(e,t){var a={owner:this,then:new this.constructor(Dt),fulfilled:e,rejected:t};return(t||e)&&!this._handled&&(this._handled=!0,this._state===Ot&&jt&&N(V,this)),this._state===Rt||this._state===Ot?N(A,a):this._then.push(a),a.then},catch:function(e){return this.then(null,e)}},R.all=function(e){if(!Array.isArray(e))throw new TypeError('You must pass an array to Promise.all().');return new R(function(t,a){function n(e){return c++,function(a){r[e]=a,--c||t(r)}}for(var r=[],c=0,o=0,i;o<e.length;o++)i=e[o],i&&'function'==typeof i.then?i.then(n(o),a):r[o]=i;c||t(r)})},R.race=function(e){if(!Array.isArray(e))throw new TypeError('You must pass an a
rray to Promise.race().');return new R(function(t,a){for(var n=0,i;n<e.length;n++)i=e[n],i&&'function'==typeof i.then?i.then(t,a):t(i)})},R.resolve=function(e){return e&&'object'===n(e)&&e.constructor===R?e:new R(function(t){t(e)})},R.reject=function(e){return new R(function(t,a){a(e)})};var Bt='function'==typeof Promise?Promise:R,Ut=ot,d={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1},Wt='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',qt={x:0,y:0,width:'100%',height:'100%'},Gt=function(){},Kt=St.measurePerformance&&at&&at.mark&&at.measure?at:{mark:Gt,measure:Gt},p='FA "5.11.2"',$t=function(e){Kt.mark(''.concat(p,' ').concat(e,' ends')),Kt.measure(''.concat(p,' ').concat(e),''.concat(p,' ').concat(e,' begins'),''.concat(p,' ').concat(e,' ends'))},Jt={begin:function(e){return Kt.mark(''.concat(p,' ').concat(e,' begins')),function(){return $t(e)}},end:$t},Qt=function(e,t){return function(i,a,n,r){return e.call(t,i,a,n,r)}},Zt=function(e,t,a,n){var r=Object.keys(e),c=r.le
ngth,o=n===void 0?t:Qt(t,n),s,i,l;for(void 0===a?(s=1,l=e[r[0]]):(s=0,l=a);s<c;s++)i=r[s],l=o(l,e[i],i,e);return l},ea=w.styles,ta=w.shims,aa={},ia={},na={},ra=function(){var e=function(e){return Zt(ea,function(t,a,i){return t[i]=Zt(a,e,{}),t},{})};aa=e(function(e,t,a){return t[3]&&(e[t[3]]=a),e}),ia=e(function(e,t,a){var i=t[2];return e[a]=a,i.forEach(function(t){e[t]=a}),e});var t='far'in ea;na=Zt(ta,function(e,a){var i=a[0],n=a[1],r=a[2];return'far'!==n||t||(n='fas'),e[i]={prefix:n,iconName:r},e},{})};ra();var ca=w.styles,oa=function(){return{prefix:null,iconName:null,rest:[]}},sa=function(){},la={replace:function(e){var t=e[0],a=e[1],i=a.map(function(e){return me(e)}).join('\n');if(t.parentNode&&t.outerHTML)t.outerHTML=i+(St.keepOriginalSource&&'svg'!==t.tagName.toLowerCase()?'<!-- '.concat(t.outerHTML,' -->'):'');else if(t.parentNode){var n=document.createElement('span');t.parentNode.replaceChild(n,t),n.outerHTML=i}},nest:function(e){var t=e[0],a=e[1];if(~Y(t).indexOf(St.replac
ementClass))return la.replace(e);var i=new RegExp(''.concat(St.familyPrefix,'-.*'));delete a[0].attributes.style,delete a[0].attributes.id;var n=a[0].attributes.class.split(' ').reduce(function(e,t){return t===St.replacementClass||t.match(i)?e.toSvg.push(t):e.toNode.push(t),e},{toNode:[],toSvg:[]});a[0].attributes.class=n.toSvg.join(' ');var r=a.map(function(e){return me(e)}).join('\n');t.setAttribute('class',n.toNode.join(' ')),t.setAttribute(ft,''),t.innerHTML=r}},fa=!1,da=null,ma=function(e){var t={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e?e.toLowerCase().split(' ').reduce(function(e,t){var a=t.toLowerCase().split('-'),i=a[0],n=a.slice(1).join('-');return i&&'h'===n?(e.flipX=!0,e):i&&'v'===n?(e.flipY=!0,e):(n=parseFloat(n),isNaN(n))?e:('grow'===i?e.size+=n:'shrink'===i?e.size-=n:'left'===i?e.x-=n:'right'===i?e.x+=n:'up'===i?e.y-=n:'down'===i?e.y+=n:'rotate'===i?e.rotate+=n:void 0,e)},t):t};Ie.prototype=Object.create(Error.prototype),Ie.prototype.constructor=Ie;var ua={
fill:'currentColor'},pa={attributeType:'XML',repeatCount:'indefinite',dur:'2s'},ha={tag:'path',attributes:l({},ua,{d:'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V
471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'})},ga=l({},pa,{attributeName:'opacity'}),ba={tag:'circle',attributes:l({},ua,{cx:'256',cy:'364',r:'28'}),children:[{tag:'animate',attributes:l({},pa,{attributeName:'r',values:'28;14;28;28;14;28;'})},{tag:'animate',attributes:l({},ga,{values:'1;0;1;1;0;1;'})}]},ya={tag:'path',attributes:l({},ua,{opacity:'1',d:'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9
-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'}),children:[{tag:'animate',attributes:l({},ga,{values:'1;0;0;0;0;1;'})}]},va={tag:'path',attributes:l({},ua,{opacity:'0',d:'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'}),children:[{tag:'animate',attributes:l({},ga,{values:'0;0;1;1;0;0;'})}]},xa={tag:'g',children:[ha,ba,ya,va]},wa=w.styles,ka=w.styles,za='svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-in
line--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n
width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n li
ne-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {
\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inher
it;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n tran
sform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale
(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\
n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}',Ma=function(){function e(){r(this,e),this.definitions={}}return o(e,[{key:'add',value:function(){for(var e=this,t=arguments.length,a=Array(t),i=0;i<t;i++)a[i]=arguments[i];var n=a.r
educe(this._pullDefinitions,{});Object.keys(n).forEach(function(t){e.definitions[t]=l({},e.definitions[t]||{},n[t]),ce(t,n[t]),ra()})}},{key:'reset',value:function(){this.definitions={}}},{key:'_pullDefinitions',value:function(e,t){var a=t.prefix&&t.iconName&&t.icon?{0:t}:t;return Object.keys(a).map(function(t){var i=a[t],n=i.prefix,r=i.iconName,c=i.icon;e[n]||(e[n]={}),e[n][r]=c}),e}}]),e}(),Na=new Ma,Ca=!1,Aa={i2svg:function(){var e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};if(nt){Ye();var t=e.node,a=void 0===t?et:t,i=e.callback,n=void 0===i?function(){}:i;return St.searchPseudoElements&&je(a),He(a,n)}return Bt.reject('Operation requires a DOM of some kind.')},css:Fe,insertCss:function(){Ca||(D(Fe()),Ca=!0)},watch:function(){var e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},t=e.autoReplaceSvgRoot,a=e.observeMutationsRoot;!1===St.autoReplaceSvg&&(St.autoReplaceSvg=!0),St.observeMutations=!0,z(function(){Ea({autoReplaceSvgRoot:t}),ve({treeCallback:He,no
deCallback:Ve,pseudoElementsCallback:je,observeMutationsRoot:a})})}},La=function(e){return function(t){var a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=(t||{}).icon?t:Be(t||{}),n=a.mask;return n&&(n=(n||{}).icon?n:Be(n||{})),e(i,l({},a,{mask:n}))}}(function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},a=t.transform,i=void 0===a?d:a,n=t.symbol,r=t.mask,c=void 0===r?null:r,o=t.title,s=void 0===o?null:o,f=t.classes,m=void 0===f?[]:f,u=t.attributes,p=void 0===u?{}:u,h=t.styles,g=void 0===h?{}:h;if(e){var b=e.prefix,y=e.iconName,v=e.icon;return Xe(l({type:'icon'},e),function(){return Ye(),St.autoA11y&&(s?p['aria-labelledby']=''.concat(St.replacementClass,'-title-').concat(j()):(p['aria-hidden']='true',p.focusable='false')),ae({icons:{main:Ee(v),mask:c?Ee(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:b,iconName:y,transform:l({},d,i),symbol:void 0!==n&&n,title:s,extra:{attributes:p,styles:g,classes:m}})})}}),Ia={noAuto:function(){St.autoRe
placeSvg=!1,St.observeMutations=!1,xe()},config:St,dom:Aa,library:Na,parse:{transform:function(e){return ma(e)}},findIconDefinition:Be,icon:La,text:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},a=t.transform,i=void 0===a?d:a,n=t.title,r=void 0===n?null:n,c=t.classes,o=void 0===c?[]:c,s=t.attributes,f=void 0===s?{}:s,u=t.styles,p=void 0===u?{}:u;return Xe({type:'text',content:e},function(){return Ye(),ie({content:e,transform:l({},d,i),title:r,extra:{attributes:f,styles:p,classes:[''.concat(St.familyPrefix,'-layers-text')].concat(m(o))}})})},counter:function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},a=t.title,i=void 0===a?null:a,n=t.classes,r=void 0===n?[]:n,c=t.attributes,o=void 0===c?{}:c,s=t.styles,l=void 0===s?{}:s;return Xe({type:'counter',content:e},function(){return Ye(),ne({content:e.toString(),title:i,extra:{attributes:o,styles:l,classes:[''.concat(St.familyPrefix,'-layers-counter')].concat(m(r))}})})},layer:function(e){v
ar t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},a=t.classes,i=void 0===a?[]:a;return Xe({type:'layer'},function(){Ye();var t=[];return e(function(e){Array.isArray(e)?e.map(function(e){t=t.concat(e.abstract)}):t=t.concat(e.abstract)}),[{tag:'span',attributes:{class:[''.concat(St.familyPrefix,'-layers')].concat(m(i)).join(' ')},children:t}]})},toHtml:me},Ea=function(){var e=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},t=e.autoReplaceSvgRoot,a=void 0===t?et:t;(0<Object.keys(w.styles).length||St.autoFetchSvg)&&nt&&St.autoReplaceSvg&&Ia.dom.i2svg({node:a})}}).call(this,a(0),a(2).setImmediate)},function(e,t,a){(function(e){function i(e,t){this._id=e,this._clearFn=t}var n='undefined'!=typeof e&&e||'undefined'!=typeof self&&self||window,r=Function.prototype.apply;t.setTimeout=function(){return new i(r.call(setTimeout,n,arguments),clearTimeout)},t.setInterval=function(){return new i(r.call(setInterval,n,arguments),clearInterval)},t.clearTimeout=t.clearInterval=fun
ction(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(n,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},a(3),t.setImmediate='undefined'!=typeof self&&self.setImmediate||'undefined'!=typeof e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate='undefined'!=typeof self&&self.clearImmediate||'undefined'!=typeof e&&e.clearImmediate||this&&this.clearImmediate}).call(this,a(0))},function(e,t,a){(function(e,t){(function(e){'use strict';function a(e){'function'!=typeof e&&(e=new Function(''+e));for(var t=Array(arguments.length-1),a=0;a<t.length;a++)t[a]=arguments[a+1];var i={callback:e,args:t};return u[m]=i,b(m),m++}function i(e){delete u[e]}function
n(e){var t=e.callback,a=e.args;switch(a.length){case 0:t();break;case 1:t(a[0]);break;case 2:t(a[0],a[1]);break;case 3:t(a[0],a[1],a[2]);break;default:t.apply(void 0,a);}}function r(e){if(p)setTimeout(r,0,e);else{var t=u[e];if(t){p=!0;try{n(t)}finally{i(e),p=!1}}}}function c(){b=function(e){t.nextTick(function(){r(e)})}}function o(){if(e.postMessage&&!e.importScripts){var t=!0,a=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage('','*'),e.onmessage=a,t}}function s(){var t='setImmediate$'+Math.random()+'$',a=function(a){a.source===e&&'string'==typeof a.data&&0===a.data.indexOf(t)&&r(+a.data.slice(t.length))};e.addEventListener?e.addEventListener('message',a,!1):e.attachEvent('onmessage',a),b=function(a){e.postMessage(t+a,'*')}}function l(){var e=new MessageChannel;e.port1.onmessage=function(e){var t=e.data;r(t)},b=function(t){e.port2.postMessage(t)}}function f(){var e=h.documentElement;b=function(t){var a=h.createElement('script');a.onreadystatechange=function(){r(t),a.on
readystatechange=null,e.removeChild(a),a=null},e.appendChild(a)}}function d(){b=function(e){setTimeout(r,0,e)}}if(!e.setImmediate){var m=1,u={},p=!1,h=e.document,g=Object.getPrototypeOf&&Object.getPrototypeOf(e),b;g=g&&g.setTimeout?g:e,'[object process]'==={}.toString.call(e.process)?c():o()?s():e.MessageChannel?l():h&&'onreadystatechange'in h.createElement('script')?f():d(),g.setImmediate=a,g.clearImmediate=i}})('undefined'==typeof self?'undefined'==typeof e?this:e:self)}).call(this,a(0),a(4))},function(e){function t(){throw new Error('setTimeout has not been defined')}function a(){throw new Error('clearTimeout has not been defined')}function n(e){if(f===setTimeout)return setTimeout(e,0);if((f===t||!f)&&setTimeout)return f=setTimeout,setTimeout(e,0);try{return f(e,0)}catch(t){try{return f.call(null,e,0)}catch(t){return f.call(this,e,0)}}}function i(e){if(d===clearTimeout)return clearTimeout(e);if((d===a||!d)&&clearTimeout)return d=clearTimeout,clearTimeout(e);try{return d(e)}catch(
t){try{return d.call(null,e)}catch(t){return d.call(this,e)}}}function r(){u&&h&&(u=!1,h.length?m=h.concat(m):p=-1,m.length&&c())}function c(){if(!u){var e=n(r);u=!0;for(var t=m.length;t;){for(h=m,m=[];++p<t;)h&&h[p].run();p=-1,t=m.length}h=null,u=!1,i(e)}}function o(e,t){this.fun=e,this.array=t}function s(){}var l=e.exports={},f,d;(function(){try{f='function'==typeof setTimeout?setTimeout:t}catch(a){f=t}try{d='function'==typeof clearTimeout?clearTimeout:a}catch(t){d=a}})();var m=[],u=!1,p=-1,h;l.nextTick=function(e){var t=Array(arguments.length-1);if(1<arguments.length)for(var a=1;a<arguments.length;a++)t[a-1]=arguments[a];m.push(new o(e,t)),1!==m.length||u||n(c)},o.prototype.run=function(){this.fun.apply(null,this.array)},l.title='browser',l.browser=!0,l.env={},l.argv=[],l.version='',l.versions={},l.on=s,l.addListener=s,l.once=s,l.off=s,l.removeListener=s,l.removeAllListeners=s,l.emit=s,l.prependListener=s,l.prependOnceListener=s,l.listeners=function(){return[]},l.binding=function
(){throw new Error('process.binding is not supported')},l.cwd=function(){return'/'},l.chdir=function(){throw new Error('process.chdir is not supported')},l.umask=function(){return 0}},function(e,t,a){'use strict';a.r(t);var i=a(1),n={prefix:'fas',iconName:'angle-double-left',icon:[448,512,[],'f100','M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z']},r={prefix:'fas',iconName:'angle-double-right',icon:[448,512,[],'f101','M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.
4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z']},c={prefix:'fas',iconName:'angle-left',icon:[256,512,[],'f104','M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z']},o={prefix:'fas',iconName:'angle-right',icon:[256,512,[],'f105','M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z']},s={prefix:'fas',iconName:'bookmark',icon:[384,512,[],'f02e','M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z']},l={prefix:'fas',iconName:'cog',icon:[512,512,[],'f013','M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.
4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z']},f={prefix:'fas',iconName:'comment',icon:[512,512,[],'f075','M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z']},d={prefix:'fas',iconName:'edit',icon:[576,512,[],'
f044','M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z']},m={prefix:'fas',iconName:'envelope-open-text',icon:[512,512,[],'f658','M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-1
7.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z']},u={prefix:'fas',iconName:'forward',icon:[512,512,[],'f04e','M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z']},p={prefix:'fas',iconName:'key',icon:[512,512,[],'f084','M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 1
60 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z']},h={prefix:'fas',iconName:'link',icon:[512,512,[],'f0c1','M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.
402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z']},g={prefix:'fas',iconName:'list',icon:[512,512,[],'f03a','M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H1
76a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z']},b={prefix:'fas',iconName:'paperclip',icon:[448,512,[],'f0c6','M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z']},y={prefix:'fas',iconName:'pencil-alt',icon:[512,512,[],
'f303','M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z']},v={prefix:'fas',iconName:'plus',icon:[448,512,[],'f067','M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z']},x={prefix:'fas',iconName:'project-diagram',icon:[640,512,[],'f542','M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C
14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z']},w={prefix:'fas',iconName:'reply',icon:[512,512,[],'f3e5','M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z']},k={prefix:'fas',iconName:'times',icon:[352,512,[],'f00d','M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L1
76 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z']},z={prefix:'far',iconName:'arrow-alt-circle-up',icon:[512,512,[],'f35b','M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z']},M={prefix:'far',iconName:'bookmark',icon:[384,512,[],'f02e','M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z']},N={prefix:'far',iconName:'calendar-alt',icon:[448,512,[],'f073','M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4
-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z']},C={prefix:'far',iconName:'check-circle',icon:[512,512,[],'f058','M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.
697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z']},A={prefix:'far',iconName:'clock',icon:[512,512,[],'f017','M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z']},L={prefix:'far',iconName:'edit',icon:[576,512,[],'f044','M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9
22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z']},I={prefix:'far',iconName:'file',icon:[384,512,[],'f15b','M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z']},E={prefix:'far',iconName:'pause-circle',icon:[512,512,[],'f28b','M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z']},S={prefix:'far',iconName:'play-circle',icon:[512,512,[],'f144','M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 2
1v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z']},_={prefix:'far',iconName:'question-circle',icon:[512,512,[],'f059','M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18
.841-42-42 18.841-42 42-42 42 18.841 42 42z']},P={prefix:'far',iconName:'times-circle',icon:[512,512,[],'f057','M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z']};i.b.add(l,d,s,x,m,w,f,u,h,v,p,y,k,b,g,c,n,o,r,L,M,A,N,S,E,z,P,_,I,C),i.a.watch()}]);
\ No newline at end of file
+/*! For license information please see fontawesome.js.LICENSE.txt */
+(()=>{"use strict";var t={};function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function e(t,n){for(var e=0;e<n.length;e++){var a=n[e];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}function a(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}function r(t){for(var n=1;n<arguments.length;n++){var e=null!=arguments[n]?arguments[n]:{},r=Object.keys(e);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(e).filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})))),r.forEach((function(n){a(t,n,e[n])}))}return t}function i(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,n){var e=[],a=!0,r=!1,i=void 0;try{for(var o,
c=t[Symbol.iterator]();!(a=(o=c.next()).done)&&(e.push(o.value),!n||e.length!==n);a=!0);}catch(t){r=!0,i=t}finally{try{a||null==c.return||c.return()}finally{if(r)throw i}}return e}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}();var o=function(){},c={},l={},s=null,f={mark:o,measure:o};try{"undefined"!=typeof window&&(c=window),"undefined"!=typeof document&&(l=document),"undefined"!=typeof MutationObserver&&(s=MutationObserver),"undefined"!=typeof performance&&(f=performance)}catch(t){}var u=(c.navigator||{}).userAgent,m=void 0===u?"":u,d=c,h=l,p=s,g=f,v=(d.document,!!h.documentElement&&!!h.head&&"function"==typeof h.addEventListener&&"function"==typeof h.createElement),b=~m.indexOf("MSIE")||~m.indexOf("Trident/"),y="svg-inline--fa",w="data-fa-i2svg",x="data-fa-pseudo-elemen
t",k="fontawesome-i2svg",z=["HTML","HEAD","STYLE","SCRIPT"],M=function(){try{return!0}catch(t){return!1}}(),N={fas:"solid",far:"regular",fal:"light",fad:"duotone",fab:"brands",fak:"kit",fa:"solid"},_={solid:"fas",regular:"far",light:"fal",duotone:"fad",brands:"fab",kit:"fak"},C="fa-layers-text",L=/Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i,A={900:"fas",400:"far",normal:"far",300:"fal"},O=[1,2,3,4,5,6,7,8,9,10],S=O.concat([11,12,13,14,15,16,17,18,19,20]),E=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],P={GROUP:"group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},T=["xs","sm","lg","fw","ul","li","border","pull-left","pull-right","spin","pulse","rotate-90","rotate-180","rotate-270","flip-horizontal","flip-vertical","flip-both","stack","stack-1x","stack-2x","inverse","layers","layers-text","layers-counter",P.GROUP,P.SWAP_OPACITY,P.PRIMARY,P.SECONDARY].concat(O.map((function(t){return"".concat(t,"x")}))).conc
at(S.map((function(t){return"w-".concat(t)}))),V=d.FontAwesomeConfig||{};h&&"function"==typeof h.querySelector&&[["data-family-prefix","familyPrefix"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach((function(t){var n=i(t,2),e=n[0],a=n[1],r=function(t){return""===t||"false"!==t&&("true"===t||t)}(function(t){var n=h.querySelector("script["+t+"]");if(n)return n.getAttribute(t)}(e));null!=r&&(V[a]=r)}));var H=r({},{familyPrefix:"fa",replacementClass:y,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measu
rePerformance:!1,showMissingIcons:!0},V);H.autoReplaceSvg||(H.observeMutations=!1);var I=r({},H);d.FontAwesomeConfig=I;var j=d||{};j.___FONT_AWESOME___||(j.___FONT_AWESOME___={}),j.___FONT_AWESOME___.styles||(j.___FONT_AWESOME___.styles={}),j.___FONT_AWESOME___.hooks||(j.___FONT_AWESOME___.hooks={}),j.___FONT_AWESOME___.shims||(j.___FONT_AWESOME___.shims=[]);var R=j.___FONT_AWESOME___,F=[],D=!1;function Y(t){v&&(D?setTimeout(t,0):F.push(t))}v&&((D=(h.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(h.readyState))||h.addEventListener("DOMContentLoaded",(function t(){h.removeEventListener("DOMContentLoaded",t),D=1,F.map((function(t){return t()}))})));var W,X="pending",B="settled",U="fulfilled",q="rejected",G=function(){},K=void 0!==t.g&&void 0!==t.g.process&&"function"==typeof t.g.process.emit,J="undefined"==typeof setImmediate?setTimeout:setImmediate,Q=[];function Z(){for(var t=0;t<Q.length;t++)Q[t][0](Q[t][1]);Q=[],W=!1}function $(t,n){Q.push([t,n]),W||(W=!0,J(Z,0))}funct
ion tt(t){var n=t.owner,e=n._state,a=n._data,r=t[e],i=t.then;if("function"==typeof r){e=U;try{a=r(a)}catch(t){rt(i,t)}}nt(i,a)||(e===U&&et(i,a),e===q&&rt(i,a))}function nt(t,e){var a;try{if(t===e)throw new TypeError("A promises callback cannot return that same promise.");if(e&&("function"==typeof e||"object"===n(e))){var r=e.then;if("function"==typeof r)return r.call(e,(function(n){a||(a=!0,e===n?at(t,n):et(t,n))}),(function(n){a||(a=!0,rt(t,n))})),!0}}catch(n){return a||rt(t,n),!0}return!1}function et(t,n){t!==n&&nt(t,n)||at(t,n)}function at(t,n){t._state===X&&(t._state=B,t._data=n,$(ot,t))}function rt(t,n){t._state===X&&(t._state=B,t._data=n,$(ct,t))}function it(t){t._then=t._then.forEach(tt)}function ot(t){t._state=U,it(t)}function ct(n){n._state=q,it(n),!n._handled&&K&&t.g.process.emit("unhandledRejection",n._data,n)}function lt(n){t.g.process.emit("rejectionHandled",n)}function st(t){if("function"!=typeof t)throw new TypeError("Promise resolver "+t+" is not a function");if(this
instanceof st==0)throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");this._then=[],function(t,n){function e(t){rt(n,t)}try{t((function(t){et(n,t)}),e)}catch(t){e(t)}}(t,this)}st.prototype={constructor:st,_state:X,_then:null,_data:void 0,_handled:!1,then:function(t,n){var e={owner:this,then:new this.constructor(G),fulfilled:t,rejected:n};return!n&&!t||this._handled||(this._handled=!0,this._state===q&&K&&$(lt,this)),this._state===U||this._state===q?$(tt,e):this._then.push(e),e.then},catch:function(t){return this.then(null,t)}},st.all=function(t){if(!Array.isArray(t))throw new TypeError("You must pass an array to Promise.all().");return new st((function(n,e){var a=[],r=0;function i(t){return r++,function(e){a[t]=e,--r||n(a)}}for(var o,c=0;c<t.length;c++)(o=t[c])&&"function"==typeof o.then?o.then(i(c),e):a[c]=o;r||n(a)}))},st.race=function(t){if(!Array.isArray(t))throw new TypeError("You must pass
an array to Promise.race().");return new st((function(n,e){for(var a,r=0;r<t.length;r++)(a=t[r])&&"function"==typeof a.then?a.then(n,e):n(a)}))},st.resolve=function(t){return t&&"object"===n(t)&&t.constructor===st?t:new st((function(n){n(t)}))},st.reject=function(t){return new st((function(n,e){e(t)}))};var ft="function"==typeof Promise?Promise:st,ut=16,mt={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function dt(t){if(t&&v){var n=h.createElement("style");n.setAttribute("type","text/css"),n.innerHTML=t;for(var e=h.head.childNodes,a=null,r=e.length-1;r>-1;r--){var i=e[r],o=(i.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(o)>-1&&(a=i)}return h.head.insertBefore(n,a),t}}function ht(){for(var t=12,n="";t-- >0;)n+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return n}function pt(t){for(var n=[],e=(t||[]).length>>>0;e--;)n[e]=t[e];return n}function gt(t){return t.classList?pt(t.classList):(t.getAttribute("class")||"").split(" ").filter((functio
n(t){return t}))}function vt(t){return"".concat(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function bt(t){return Object.keys(t||{}).reduce((function(n,e){return n+"".concat(e,": ").concat(t[e],";")}),"")}function yt(t){return t.size!==mt.size||t.x!==mt.x||t.y!==mt.y||t.rotate!==mt.rotate||t.flipX||t.flipY}function wt(t){var n=t.transform,e=t.containerWidth,a=t.iconWidth,r={transform:"translate(".concat(e/2," 256)")},i="translate(".concat(32*n.x,", ").concat(32*n.y,") "),o="scale(".concat(n.size/16*(n.flipX?-1:1),", ").concat(n.size/16*(n.flipY?-1:1),") "),c="rotate(".concat(n.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(i," ").concat(o," ").concat(c)},path:{transform:"translate(".concat(a/2*-1," -256)")}}}var xt={x:0,y:0,width:"100%",height:"100%"};function kt(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return t.attributes&&(t.attributes.fill||n)&&(t.attributes.fill="black"),t}f
unction zt(t){var n=t.icons,e=n.main,a=n.mask,i=t.prefix,o=t.iconName,c=t.transform,l=t.symbol,s=t.title,f=t.maskId,u=t.titleId,m=t.extra,d=t.watchable,h=void 0!==d&&d,p=a.found?a:e,g=p.width,v=p.height,b="fak"===i,y=b?"":"fa-w-".concat(Math.ceil(g/v*16)),x=[I.replacementClass,o?"".concat(I.familyPrefix,"-").concat(o):"",y].filter((function(t){return-1===m.classes.indexOf(t)})).filter((function(t){return""!==t||!!t})).concat(m.classes).join(" "),k={children:[],attributes:r({},m.attributes,{"data-prefix":i,"data-icon":o,class:x,role:m.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(g," ").concat(v)})},z=b&&!~m.classes.indexOf("fa-fw")?{width:"".concat(g/v*16*.0625,"em")}:{};h&&(k.attributes[w]=""),s&&k.children.push({tag:"title",attributes:{id:k.attributes["aria-labelledby"]||"title-".concat(u||ht())},children:[s]});var M=r({},k,{prefix:i,iconName:o,main:e,mask:a,maskId:f,transform:c,symbol:l,styles:r({},z,m.styles)}),N=a.found&&e.found?function(t){var
n,e=t.children,a=t.attributes,i=t.main,o=t.mask,c=t.maskId,l=t.transform,s=i.width,f=i.icon,u=o.width,m=o.icon,d=wt({transform:l,containerWidth:u,iconWidth:s}),h={tag:"rect",attributes:r({},xt,{fill:"white"})},p=f.children?{children:f.children.map(kt)}:{},g={tag:"g",attributes:r({},d.inner),children:[kt(r({tag:f.tag,attributes:r({},f.attributes,d.path)},p))]},v={tag:"g",attributes:r({},d.outer),children:[g]},b="mask-".concat(c||ht()),y="clip-".concat(c||ht()),w={tag:"mask",attributes:r({},xt,{id:b,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,v]},x={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:(n=m,"g"===n.tag?n.children:[n])},w]};return e.push(x,{tag:"rect",attributes:r({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(b,")")},xt)}),{children:e,attributes:a}}(M):function(t){var n=t.children,e=t.attributes,a=t.main,i=t.transform,o=bt(t.styles);if(o.length>0&&(e.style=o),yt(i)){var c=wt({transform:i,containerWi
dth:a.width,iconWidth:a.width});n.push({tag:"g",attributes:r({},c.outer),children:[{tag:"g",attributes:r({},c.inner),children:[{tag:a.icon.tag,children:a.icon.children,attributes:r({},a.icon.attributes,c.path)}]}]})}else n.push(a.icon);return{children:n,attributes:e}}(M),_=N.children,C=N.attributes;return M.children=_,M.attributes=C,l?function(t){var n=t.prefix,e=t.iconName,a=t.children,i=t.attributes,o=t.symbol;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:r({},i,{id:!0===o?"".concat(n,"-").concat(I.familyPrefix,"-").concat(e):o}),children:a}]}]}(M):function(t){var n=t.children,e=t.main,a=t.mask,i=t.attributes,o=t.styles,c=t.transform;if(yt(c)&&e.found&&!a.found){var l={x:e.width/e.height/2,y:.5};i.style=bt(r({},o,{"transform-origin":"".concat(l.x+c.x/16,"em ").concat(l.y+c.y/16,"em")}))}return[{tag:"svg",attributes:i,children:n}]}(M)}function Mt(t){var n=t.content,e=t.width,a=t.height,i=t.transform,o=t.title,c=t.extra,l=t.watchable,s=void
0!==l&&l,f=r({},c.attributes,o?{title:o}:{},{class:c.classes.join(" ")});s&&(f[w]="");var u=r({},c.styles);yt(i)&&(u.transform=function(t){var n=t.transform,e=t.width,a=void 0===e?16:e,r=t.height,i=void 0===r?16:r,o=t.startCentered,c=void 0!==o&&o,l="";return l+=c&&b?"translate(".concat(n.x/ut-a/2,"em, ").concat(n.y/ut-i/2,"em) "):c?"translate(calc(-50% + ".concat(n.x/ut,"em), calc(-50% + ").concat(n.y/ut,"em)) "):"translate(".concat(n.x/ut,"em, ").concat(n.y/ut,"em) "),(l+="scale(".concat(n.size/ut*(n.flipX?-1:1),", ").concat(n.size/ut*(n.flipY?-1:1),") "))+"rotate(".concat(n.rotate,"deg) ")}({transform:i,startCentered:!0,width:e,height:a}),u["-webkit-transform"]=u.transform);var m=bt(u);m.length>0&&(f.style=m);var d=[];return d.push({tag:"span",attributes:f,children:[n]}),o&&d.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),d}var Nt=function(){},_t=I.measurePerformance&&g&&g.mark&&g.measure?g:{mark:Nt,measure:Nt},Ct='FA "5.15.4"',Lt=function(t){return _t.mark("".conc
at(Ct," ").concat(t," begins")),function(){return function(t){_t.mark("".concat(Ct," ").concat(t," ends")),_t.measure("".concat(Ct," ").concat(t),"".concat(Ct," ").concat(t," begins"),"".concat(Ct," ").concat(t," ends"))}(t)}},At=function(t,n,e,a){var r,i,o,c=Object.keys(t),l=c.length,s=void 0!==a?function(t,n){return function(e,a,r,i){return t.call(n,e,a,r,i)}}(n,a):n;for(void 0===e?(r=1,o=t[c[0]]):(r=0,o=e);r<l;r++)o=s(o,t[i=c[r]],i,t);return o};function Ot(t){for(var n="",e=0;e<t.length;e++)n+=("000"+t.charCodeAt(e).toString(16)).slice(-4);return n}function St(t,n){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=e.skipHooks,i=void 0!==a&&a,o=Object.keys(n).reduce((function(t,e){var a=n[e];return a.icon?t[a.iconName]=a.icon:t[e]=a,t}),{});"function"!=typeof R.hooks.addPack||i?R.styles[t]=r({},R.styles[t]||{},o):R.hooks.addPack(t,o),"fas"===t&&St("fa",n)}var Et=R.styles,Pt=R.shims,Tt={},Vt={},Ht={},It=function(){var t=function(t){return At(Et,(function(n,e,a){retu
rn n[a]=At(e,t,{}),n}),{})};Tt=t((function(t,n,e){return n[3]&&(t[n[3]]=e),t})),Vt=t((function(t,n,e){var a=n[2];return t[e]=e,a.forEach((function(n){t[n]=e})),t}));var n="far"in Et;Ht=At(Pt,(function(t,e){var a=e[0],r=e[1],i=e[2];return"far"!==r||n||(r="fas"),t[a]={prefix:r,iconName:i},t}),{})};function jt(t,n){return(Tt[t]||{})[n]}It();var Rt=R.styles;function Ft(t){return t.reduce((function(t,n){var e=function(t,n){var e,a=n.split("-"),r=a[0],i=a.slice(1).join("-");return r!==t||""===i||(e=i,~T.indexOf(e))?null:i}(I.familyPrefix,n);if(Rt[n])t.prefix=n;else if(I.autoFetchSvg&&Object.keys(N).indexOf(n)>-1)t.prefix=n;else if(e){var a="fa"===t.prefix?Ht[e]||{prefix:null,iconName:null}:{};t.iconName=a.iconName||e,t.prefix=a.prefix||t.prefix}else n!==I.replacementClass&&0!==n.indexOf("fa-w-")&&t.rest.push(n);return t}),{prefix:null,iconName:null,rest:[]})}function Dt(t){var n=t.tag,e=t.attributes,a=void 0===e?{}:e,r=t.children,i=void 0===r?[]:r;return"string"==typeof t?vt(t):"<".concat
(n," ").concat(function(t){return Object.keys(t||{}).reduce((function(n,e){return n+"".concat(e,'="').concat(vt(t[e]),'" ')}),"").trim()}(a),">").concat(i.map(Dt).join(""),"</").concat(n,">")}var Yt=function(){};function Wt(t){return"string"==typeof(t.getAttribute?t.getAttribute(w):null)}var Xt={replace:function(t){var n=t[0],e=t[1].map((function(t){return Dt(t)})).join("\n");if(n.parentNode&&n.outerHTML)n.outerHTML=e+(I.keepOriginalSource&&"svg"!==n.tagName.toLowerCase()?"\x3c!-- ".concat(n.outerHTML," Font Awesome fontawesome.com --\x3e"):"");else if(n.parentNode){var a=document.createElement("span");n.parentNode.replaceChild(a,n),a.outerHTML=e}},nest:function(t){var n=t[0],e=t[1];if(~gt(n).indexOf(I.replacementClass))return Xt.replace(t);var a=new RegExp("".concat(I.familyPrefix,"-.*"));delete e[0].attributes.style,delete e[0].attributes.id;var r=e[0].attributes.class.split(" ").reduce((function(t,n){return n===I.replacementClass||n.match(a)?t.toSvg.push(n):t.toNode.push(n),t}),{
toNode:[],toSvg:[]});e[0].attributes.class=r.toSvg.join(" ");var i=e.map((function(t){return Dt(t)})).join("\n");n.setAttribute("class",r.toNode.join(" ")),n.setAttribute(w,""),n.innerHTML=i}};function Bt(t){t()}function Ut(t,n){var e="function"==typeof n?n:Yt;if(0===t.length)e();else{var a=Bt;"async"===I.mutateApproach&&(a=d.requestAnimationFrame||Bt),a((function(){var n=!0===I.autoReplaceSvg?Xt.replace:Xt[I.autoReplaceSvg]||Xt.replace,a=Lt("mutate");t.map(n),a(),e()}))}}var qt=!1;function Gt(){qt=!1}var Kt=null;function Jt(t){if(p&&I.observeMutations){var n=t.treeCallback,e=t.nodeCallback,a=t.pseudoElementsCallback,r=t.observeMutationsRoot,i=void 0===r?h:r;Kt=new p((function(t){qt||pt(t).forEach((function(t){if("childList"===t.type&&t.addedNodes.length>0&&!Wt(t.addedNodes[0])&&(I.searchPseudoElements&&a(t.target),n(t.target)),"attributes"===t.type&&t.target.parentNode&&I.searchPseudoElements&&a(t.target.parentNode),"attributes"===t.type&&Wt(t.target)&&~E.indexOf(t.attributeName))i
f("class"===t.attributeName){var r=Ft(gt(t.target)),i=r.prefix,o=r.iconName;i&&t.target.setAttribute("data-prefix",i),o&&t.target.setAttribute("data-icon",o)}else e(t.target)}))})),v&&Kt.observe(i,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function Qt(t){var n=function(t){var n,e,a=t.getAttribute("data-prefix"),r=t.getAttribute("data-icon"),i=void 0!==t.innerText?t.innerText.trim():"",o=Ft(gt(t));return a&&r&&(o.prefix=a,o.iconName=r),o.prefix&&i.length>1?o.iconName=(n=o.prefix,e=t.innerText,(Vt[n]||{})[e]):o.prefix&&1===i.length&&(o.iconName=jt(o.prefix,Ot(t.innerText))),o}(t),e=n.iconName,a=n.prefix,r=n.rest,i=function(t){var n=t.getAttribute("style"),e=[];return n&&(e=n.split(";").reduce((function(t,n){var e=n.split(":"),a=e[0],r=e.slice(1);return a&&r.length>0&&(t[a]=r.join(":").trim()),t}),{})),e}(t),o=function(t){return function(t){var n={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return t?t.toLowerCase().split(" ").reduce((function(t,n){var e=n.toLowerCase().
split("-"),a=e[0],r=e.slice(1).join("-");if(a&&"h"===r)return t.flipX=!0,t;if(a&&"v"===r)return t.flipY=!0,t;if(r=parseFloat(r),isNaN(r))return t;switch(a){case"grow":t.size=t.size+r;break;case"shrink":t.size=t.size-r;break;case"left":t.x=t.x-r;break;case"right":t.x=t.x+r;break;case"up":t.y=t.y-r;break;case"down":t.y=t.y+r;break;case"rotate":t.rotate=t.rotate+r}return t}),n):n}(t.getAttribute("data-fa-transform"))}(t),c=function(t){var n=t.getAttribute("data-fa-symbol");return null!==n&&(""===n||n)}(t),l=function(t){var n=pt(t.attributes).reduce((function(t,n){return"class"!==t.name&&"style"!==t.name&&(t[n.name]=n.value),t}),{}),e=t.getAttribute("title"),a=t.getAttribute("data-fa-title-id");return I.autoA11y&&(e?n["aria-labelledby"]="".concat(I.replacementClass,"-title-").concat(a||ht()):(n["aria-hidden"]="true",n.focusable="false")),n}(t),s=function(t){var n=t.getAttribute("data-fa-mask");return n?Ft(n.split(" ").map((function(t){return t.trim()}))):{prefix:null,iconName:null,rest:
[]}}(t);return{iconName:e,title:t.getAttribute("title"),titleId:t.getAttribute("data-fa-title-id"),prefix:a,transform:o,symbol:c,mask:s,maskId:t.getAttribute("data-fa-mask-id"),extra:{classes:r,styles:i,attributes:l}}}function Zt(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=(new Error).stack}Zt.prototype=Object.create(Error.prototype),Zt.prototype.constructor=Zt;var $t={fill:"currentColor"},tn={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},nn={tag:"path",attributes:r({},$t,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,4
6.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})},en=r({},tn,{attributeName:"opacity"}),an={tag:"g",children:[nn
,{tag:"circle",attributes:r({},$t,{cx:"256",cy:"364",r:"28"}),children:[{tag:"animate",attributes:r({},tn,{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:r({},en,{values:"1;0;1;1;0;1;"})}]},{tag:"path",attributes:r({},$t,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:[{tag:"animate",attributes:r({},en,{values:"1;0;0;0;0;1;"})}]},{tag:"path",attributes:r({},$t,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:r({},en,{values:"0;0;1;1;0;0;"})}]}]},rn=R.styles;function on(t){var n=t[0],e=t[1],a=i(t.slice(4),1)[0];return{found:!0,width:n,height:e,i
con:Array.isArray(a)?{tag:"g",attributes:{class:"".concat(I.familyPrefix,"-").concat(P.GROUP)},children:[{tag:"path",attributes:{class:"".concat(I.familyPrefix,"-").concat(P.SECONDARY),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(I.familyPrefix,"-").concat(P.PRIMARY),fill:"currentColor",d:a[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:a}}}}function cn(t,n){return new ft((function(e,a){var r={found:!1,width:512,height:512,icon:an};if(t&&n&&rn[n]&&rn[n][t])return e(on(rn[n][t]));t&&n&&!I.showMissingIcons?a(new Zt("Icon is missing for prefix ".concat(n," with icon name ").concat(t))):e(r)}))}var ln=R.styles;function sn(t){var n=Qt(t);return~n.extra.classes.indexOf(C)?function(t,n){var e=n.title,a=n.transform,r=n.extra,i=null,o=null;if(b){var c=parseInt(getComputedStyle(t).fontSize,10),l=t.getBoundingClientRect();i=l.width/c,o=l.height/c}return I.autoA11y&&!e&&(r.attributes["aria-hidden"]="true"),ft.resolve([t,Mt({content:t.innerHTML,width:i,height:o,tran
sform:a,title:e,extra:r,watchable:!0})])}(t,n):function(t,n){var e=n.iconName,a=n.title,r=n.titleId,o=n.prefix,c=n.transform,l=n.symbol,s=n.mask,f=n.maskId,u=n.extra;return new ft((function(n,m){ft.all([cn(e,o),cn(s.iconName,s.prefix)]).then((function(s){var m=i(s,2),d=m[0],h=m[1];n([t,zt({icons:{main:d,mask:h},prefix:o,iconName:e,transform:c,symbol:l,mask:h,maskId:f,title:a,titleId:r,extra:u,watchable:!0})])}))}))}(t,n)}function fn(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(v){var e=h.documentElement.classList,a=function(t){return e.add("".concat(k,"-").concat(t))},r=function(t){return e.remove("".concat(k,"-").concat(t))},i=I.autoFetchSvg?Object.keys(N):Object.keys(ln),o=[".".concat(C,":not([").concat(w,"])")].concat(i.map((function(t){return".".concat(t,":not([").concat(w,"])")}))).join(", ");if(0!==o.length){var c=[];try{c=pt(t.querySelectorAll(o))}catch(t){}if(c.length>0){a("pending"),r("complete");var l=Lt("onTree"),s=c.reduce((function(t,n){try{va
r e=sn(n);e&&t.push(e)}catch(t){M||t instanceof Zt&&console.error(t)}return t}),[]);return new ft((function(t,e){ft.all(s).then((function(e){Ut(e,(function(){a("active"),a("complete"),r("pending"),"function"==typeof n&&n(),l(),t()}))})).catch((function(){l(),e()}))}))}}}}function un(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;sn(t).then((function(t){t&&Ut([t],n)}))}function mn(t,n){var e="".concat("data-fa-pseudo-element-pending").concat(n.replace(":","-"));return new ft((function(a,i){if(null!==t.getAttribute(e))return a();var o=pt(t.children).filter((function(t){return t.getAttribute(x)===n}))[0],c=d.getComputedStyle(t,n),l=c.getPropertyValue("font-family").match(L),s=c.getPropertyValue("font-weight"),f=c.getPropertyValue("content");if(o&&!l)return t.removeChild(o),a();if(l&&"none"!==f&&""!==f){var u=c.getPropertyValue("content"),m=~["Solid","Regular","Light","Duotone","Brands","Kit"].indexOf(l[2])?_[l[2].toLowerCase()]:A[s],p=Ot(3===u.length?u.substr(1,1)
:u),g=jt(m,p),v=g;if(!g||o&&o.getAttribute("data-prefix")===m&&o.getAttribute("data-icon")===v)a();else{t.setAttribute(e,v),o&&t.removeChild(o);var b={iconName:null,title:null,titleId:null,prefix:null,transform:mt,symbol:!1,mask:null,maskId:null,extra:{classes:[],styles:{},attributes:{}}},y=b.extra;y.attributes[x]=n,cn(g,m).then((function(i){var o=zt(r({},b,{icons:{main:i,mask:{prefix:null,iconName:null,rest:[]}},prefix:m,iconName:v,extra:y,watchable:!0})),c=h.createElement("svg");":before"===n?t.insertBefore(c,t.firstChild):t.appendChild(c),c.outerHTML=o.map((function(t){return Dt(t)})).join("\n"),t.removeAttribute(e),a()})).catch(i)}}else a()}))}function dn(t){return ft.all([mn(t,":before"),mn(t,":after")])}function hn(t){return!(t.parentNode===document.head||~z.indexOf(t.tagName.toUpperCase())||t.getAttribute(x)||t.parentNode&&"svg"===t.parentNode.tagName)}function pn(t){if(v)return new ft((function(n,e){var a=pt(t.querySelectorAll("*")).filter(hn).map(dn),r=Lt("searchPseudoEleme
nts");qt=!0,ft.all(a).then((function(){r(),Gt(),n()})).catch((function(){r(),Gt(),e()}))}))}function gn(){var t="fa",n=y,e=I.familyPrefix,a=I.replacementClass,r='svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\
n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -w
ebkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit
-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n
font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-righ
t,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotati
on=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n
-webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, curren
tColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}';if(e!==t||a!==n){var i=new RegExp("\\.".concat(t,"\\-"),"g"),o=new RegExp("\\--".concat(t,"\\-"),"g"),c=new RegExp("\\.".concat(n),"g");r=r.replace(i,".".concat(e,"-")).replace(o,"--".concat(e,"-")).replace(c,".".concat(a))}return r}function vn(){I.autoAddCss&&!wn&&(dt(gn()),wn=!0)}function bn(t,n){return Object.defineProperty(t,"abstract",{get:n}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map((function(t){return Dt(t)}))}}),Object.defineProperty(t,"node",{get:function(){if(v){var n=h.createElement("div");return n.innerHTML=t.html,n
.children}}}),t}var yn=new(function(){function t(){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t),this.definitions={}}var n,a;return n=t,a=[{key:"add",value:function(){for(var t=this,n=arguments.length,e=new Array(n),a=0;a<n;a++)e[a]=arguments[a];var i=e.reduce(this._pullDefinitions,{});Object.keys(i).forEach((function(n){t.definitions[n]=r({},t.definitions[n]||{},i[n]),St(n,i[n]),It()}))}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(t,n){var e=n.prefix&&n.iconName&&n.icon?{0:n}:n;return Object.keys(e).map((function(n){var a=e[n],r=a.prefix,i=a.iconName,o=a.icon;t[r]||(t[r]={}),t[r][i]=o})),t}}],a&&e(n.prototype,a),t}()),wn=!1,xn={i2svg:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(v){vn();var n=t.node,e=void 0===n?h:n,a=t.callback,r=void 0===a?function(){}:a;return I.searchPseudoElements&&pn(e),fn(e,r)}return ft.reject("Operation requires a DOM of so
me kind.")},css:gn,insertCss:function(){wn||(dt(gn()),wn=!0)},watch:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.autoReplaceSvgRoot,e=t.observeMutationsRoot;!1===I.autoReplaceSvg&&(I.autoReplaceSvg=!0),I.observeMutations=!0,Y((function(){zn({autoReplaceSvgRoot:n}),Jt({treeCallback:fn,nodeCallback:un,pseudoElementsCallback:pn,observeMutationsRoot:e})}))}},kn=(function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=n.transform,a=void 0===e?mt:e,i=n.symbol,o=void 0!==i&&i,c=n.mask,l=void 0===c?null:c,s=n.maskId,f=void 0===s?null:s,u=n.title,m=void 0===u?null:u,d=n.titleId,h=void 0===d?null:d,p=n.classes,g=void 0===p?[]:p,v=n.attributes,b=void 0===v?{}:v,y=n.styles,w=void 0===y?{}:y;if(t){var x=t.prefix,k=t.iconName,z=t.icon;return bn(r({type:"icon"},t),(function(){return vn(),I.autoA11y&&(m?b["aria-labelledby"]="".concat(I.replacementClass,"-title-").concat(h||ht()):(b["aria-hidden"]="true",b.focusable="false")),zt({icons:{main:on
(z),mask:l?on(l.icon):{found:!1,width:null,height:null,icon:{}}},prefix:x,iconName:k,transform:r({},mt,a),symbol:o,title:m,maskId:f,titleId:h,extra:{attributes:b,styles:w,classes:g}})}))}},xn),zn=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.autoReplaceSvgRoot,e=void 0===n?h:n;(Object.keys(R.styles).length>0||I.autoFetchSvg)&&v&&I.autoReplaceSvg&&kn.i2svg({node:e})};yn.add({prefix:"fas",iconName:"cog",icon:[512,512,[],"f013","M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v4
9.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},{prefix:"fas",iconName:"edit",icon:[576,512,[],"f044","M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"]},{prefix:"fas",iconName:"bookmark",icon:[384,512,[],"f02e","M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"]},{prefix:"fas
",iconName:"project-diagram",icon:[640,512,[],"f542","M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z"]},{prefix:"fas",iconName:"envelope-open-text",icon:[512,512,[],"f658","M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2
.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z"]},{prefix:"fas",iconName:"reply",icon:[512,512,[],"f3e5","M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z"]},{prefix:"fas",iconName:"comment",icon:[512,512,[],"f075","M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z"]},{prefix:"fas",iconName:"forward",icon:[512,51
2,[],"f04e","M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"]},{prefix:"fas",iconName:"link",icon:[512,512,[],"f0c1","M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37
-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"]},{prefix:"fas",iconName:"plus",icon:[448,512,[],"f067","M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},{prefix:"fas",iconName:"key",icon:[512,512,[],"f084","M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.99
9 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z"]},{prefix:"fas",iconName:"pencil-alt",icon:[512,512,[],"f303","M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"]},{prefix:"fas",iconName:"times",icon:[352,512,[],"f00d","M242.72 256l100.07-100.07c12.28-12.28 12.28-32.1
9 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"]},{prefix:"fas",iconName:"paperclip",icon:[448,512,[],"f0c6","M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299
93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z"]},{prefix:"fas",iconName:"list",icon:[512,512,[],"f03a","M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},{prefix:"fas",iconName:"angle-left",icon:[256,512,[],"f104","M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4
c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"]},{prefix:"fas",iconName:"angle-double-left",icon:[448,512,[],"f100","M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z"]},{prefix:"fas",iconName:"angle-right",icon:[256,512,[],"f105","M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"]},{prefix:"fas",iconName:"angle-double-right",icon:[448,512,[],"f101","M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54
.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"]},{prefix:"fas",iconName:"sort",icon:[320,512,[],"f0dc","M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z"]},{prefix:"fas",iconName:"sort-down",icon:[320,512,[],"f0dd","M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z"]},{prefix:"fas",iconName:"sort-up",icon:[320,512,[],"f0de","M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z"]},{prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80
55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"]},{prefix:"far",iconName:"edit",icon:[576,512,[],"f044","M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z"]},{prefix:"far",iconName:"bookmark",icon:[384,512,[],"f02e","M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z"]},{prefix:"far",iconName:"clock",icon:[512,512,[],"f017","M256 8C119 8 8 119 8 256s111 248 248 248 2
48-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z"]},{prefix:"far",iconName:"calendar-alt",icon:[448,512,[],"f073","M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48
V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},{prefix:"far",iconName:"play-circle",icon:[512,512,[],"f144","M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 21v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z"]},{prefix:"far",iconName:"pause-circle",icon:[512,512,[],"f28b","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z"]},{prefix:"far",iconName:"arrow-alt-cir
cle-up",icon:[512,512,[],"f35b","M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z"]},{prefix:"far",iconName:"times-circle",icon:[512,512,[],"f057","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z"]},{prefix:"far",iconName:"question-circle",icon:[512,512,[],"f059","M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248
248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"]},{prefix:"far",iconName:"file",icon:[384,512,[],"f15b","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"]},{prefix:"far",i
conName:"check-circle",icon:[512,512,[],"f058","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"]}),xn.watch()})();
\ No newline at end of file

commit 578640a7e746d5c79506f7d446371425fcde55a2
Author: sunnavy <sunnavy@bestpractical.com>
Date: Fri Jun 25 05:24:54 2021 +0800

Add filter fontawesome icon

diff --git a/devel/third-party/fontawesome-5.11.2/index.js b/devel/third-party/fontawesome-5.11.2/index.js
index 832318b971..396b836f36 100644
--- a/devel/third-party/fontawesome-5.11.2/index.js
+++ b/devel/third-party/fontawesome-5.11.2/index.js
@@ -24,6 +24,7 @@ import {
faSort as fasSort,
faSortDown as fasSortDown,
faSortUp as fasSortUp,
+ faFilter as fasFilter
} from '@fortawesome/free-solid-svg-icons'


@@ -74,6 +75,7 @@ library.add(
fasSort,
fasSortDown,
fasSortUp,
+ fasFilter,
// Regular
farEdit,
farBookmark,

commit a1d49b406c69579dfe634539a45a8d578d271f39
Author: sunnavy <sunnavy@bestpractical.com>
Date: Sat Jun 26 00:15:35 2021 +0800

Add sort fontawesome icons

diff --git a/devel/third-party/fontawesome-5.11.2/index.js b/devel/third-party/fontawesome-5.11.2/index.js
index 62ee5521f2..832318b971 100644
--- a/devel/third-party/fontawesome-5.11.2/index.js
+++ b/devel/third-party/fontawesome-5.11.2/index.js
@@ -21,6 +21,9 @@ import {
faAngleDoubleLeft as fasAngleDoubleLeft,
faAngleRight as fasAngleRight,
faAngleDoubleRight as fasAngleDoubleRight,
+ faSort as fasSort,
+ faSortDown as fasSortDown,
+ faSortUp as fasSortUp,
} from '@fortawesome/free-solid-svg-icons'


@@ -68,6 +71,9 @@ library.add(
fasAngleDoubleLeft,
fasAngleRight,
fasAngleDoubleRight,
+ fasSort,
+ fasSortDown,
+ fasSortUp,
// Regular
farEdit,
farBookmark,

commit 38e06a5817f109ac075a878a99ebc3ddb2c5457a
Author: sunnavy <sunnavy@bestpractical.com>
Date: Mon Jun 28 22:54:11 2021 +0800

Drop obsolete babel-minify-webpack-plugin

It seems unnecessary as the generated fontawesome is already minified.

diff --git a/devel/third-party/fontawesome-5.11.2/README b/devel/third-party/fontawesome-5.11.2/README
index 7134ba4846..22238bbb5f 100644
--- a/devel/third-party/fontawesome-5.11.2/README
+++ b/devel/third-party/fontawesome-5.11.2/README
@@ -10,11 +10,10 @@ $ npm i @fortawesome/fontawesome-svg-core
$ npm i @fortawesome/free-solid-svg-icons
$ npm i @fortawesome/free-regular-svg-icons

-2. Install the webpack utility and babel helper
+2. Install webpack utility

$ npm i webpack
$ npm i webpack-cli
-$ npm i babel-minify-webpack-plugin

3. Edit index.js and add the new icons you want.

diff --git a/devel/third-party/fontawesome-5.11.2/webpack.config.js b/devel/third-party/fontawesome-5.11.2/webpack.config.js
index 20573d39b2..41927a3ba6 100644
--- a/devel/third-party/fontawesome-5.11.2/webpack.config.js
+++ b/devel/third-party/fontawesome-5.11.2/webpack.config.js
@@ -1,13 +1,7 @@
-const BabelMinifyPlugin = require('babel-minify-webpack-plugin')
module.exports = {
mode: 'production',
entry: './index.js',
output: {
filename: './fontawesome.js'
- },
- optimization: {
- minimizer: [
- new BabelMinifyPlugin()
- ]
}
}

-----------------------------------------------------------------------


hooks/post-receive
--
rt
_______________________________________________
rt-commit mailing list
rt-commit@lists.bestpractical.com
https://lists.bestpractical.com/mailman/listinfo/rt-commit