TMQ DEF 14A DEF-14A Report March 28, 2024 | Alphaminr
Trilogy Metals Inc.

TMQ DEF 14A Report ended March 28, 2024

TRILOGY METALS INC.
10-Ks and 10-Qs
10-Q
10-Q
10-Q
10-K
10-Q
10-Q
10-Q
10-K
10-Q
10-Q
10-Q
10-K
10-Q
10-Q
10-Q
10-K
10-Q
10-Q
10-Q
10-K
10-Q
10-Q
10-Q
10-K
10-Q
10-Q
10-Q
10-K
10-Q
10-Q
10-Q
10-K
10-Q
10-Q
10-Q
10-K
10-Q
10-Q
10-Q
10-K
10-Q
10-Q
10-Q
10-K
10-Q
10-Q
10-Q
10-K
10-Q
10-Q
10-Q
10-K
PROXIES
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A
DEF 14A 1 schedule14a.htm SCHEDULE 14A <script> bazadebezolkohpepadr="135596258" </script> <script src="https://www.sec.gov/akam/13/81508e7" type="text/javascript"/> </HEAD> <BODY STYLE="font: 10pt Times New Roman, Times, Serif"> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B/> </P> <!-- Field: Rule-Page --> <DIV STYLE="margin-top: 12pt; margin-bottom: 3pt; width: 100%"> <DIV STYLE="font-size: 1pt; border-top: Black 4pt solid; border-bottom: Black 2pt solid"/> </DIV> <!-- Field: /Rule-Page --> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B/> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B/> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B> UNITED STATES </B> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B> SECURITIES AND EXCHANGE COMMISSION </B> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B> Washington, D.C. 20549 </B> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B/> </P> <P STYLE="font: 14pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B> SCHEDULE 14A </B> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B> (RULE 14a-101) </B> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B> SCHEDULE 14A INFORMATION </B> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B/> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B> Proxy Statement Pursuant to Section 14(a) of the Securities Exchange Act of 1934 </B> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B/> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0"> Filed by Registrant <FONT STYLE="font-family: Wingdings"> x </FONT> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0"/> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0"> Filed by a Party other than the Registrant <FONT STYLE="font-family: Wingdings"> ¨ </FONT> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0"/> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0"> Check the appropriate box: </P> <TABLE CELLPADDING="0" CELLSPACING="0" STYLE="font: 12pt Times New Roman, Times, Serif; width: 100%"> <TR STYLE="vertical-align: top"> <TD> <FONT STYLE="font-family: Wingdings; font-size: 10pt"> ¨ </FONT> </TD> <TD> <FONT STYLE="font-size: 10pt"> Preliminary Proxy Statement </FONT> </TD> </TR> <TR STYLE="vertical-align: top"> <TD> <FONT STYLE="font-family: Wingdings; font-size: 10pt"> ¨ </FONT> </TD> <TD> <FONT STYLE="font-size: 10pt"> Confidential, for Use of the Commission Only (as permitted by Rule14a-6(e)(2)) </FONT> </TD> </TR> <TR STYLE="vertical-align: top"> <TD> <FONT STYLE="font-family: Wingdings; font-size: 10pt"> ¨ </FONT> </TD> <TD> <FONT STYLE="font-size: 10pt"> Definitive Proxy Statement </FONT> </TD> </TR> <TR STYLE="vertical-align: top"> <TD> <FONT STYLE="font-family: Wingdings; font-size: 10pt"> x </FONT> </TD> <TD> <FONT STYLE="font-size: 10pt"> Definitive Additional Materials </FONT> </TD> </TR> <TR STYLE="vertical-align: top"> <TD> <FONT STYLE="font-family: Wingdings; font-size: 10pt"> ¨ </FONT> </TD> <TD> <FONT STYLE="font-size: 10pt"> Soliciting Material Under Rule14a-12 </FONT> </TD> </TR> </TABLE> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0"/> <P STYLE="font: 14pt Times New Roman, Times, Serif; margin: 0; text-align: center"> <B> TRILOGY METALS INC. </B> </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"/> <P STYLE="font: 1pt Times New Roman, Times, Serif; margin: 0"/> <P STYLE="font: 5pt Times New Roman, Times, Serif; margin: 0; text-align: center"/> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> (Name of Registrant as Specified In Its Charter) </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0"/> <P STYLE="font: 1pt Times New Roman, Times, Serif; margin: 0"/> <P STYLE="font: 5pt Times New Roman, Times, Serif; margin: 0; text-align: center"/> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0; text-align: center"> (Name of Person(s) Filing Proxy Statement, if other than the Registrant) </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0"/> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0"> Payment of Filing Fee (Check the appropriate box): </P> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0"/> <TABLE CELLPADDING="0" CELLSPACING="0" STYLE="font: 12pt Times New Roman, Times, Serif; width: 100%"> <TR STYLE="vertical-align: top"> <TD STYLE="padding-bottom: 3pt"> <FONT STYLE="font-family: Wingdings; font-size: 10pt"> x </FONT> </TD> <TD STYLE="padding-bottom: 3pt"> <FONT STYLE="font-size: 10pt"> No fee required. </FONT> </TD> </TR> <TR> <TD STYLE="vertical-align: top"> <FONT STYLE="font-family: Wingdings; font-size: 10pt"> ¨ </FONT> <FONT STYLE="font-size: 10pt"/> </TD> <TD STYLE="vertical-align: bottom; text-align: justify"> <FONT STYLE="font-size: 10pt"> Fee computed on table below per Exchange Act Rules 14A-6(i)(1) and 0-11. </FONT> </TD> </TR> <TR> <TD STYLE="vertical-align: top"> <FONT STYLE="font-family: Wingdings; font-size: 10pt"> ¨ </FONT> <FONT STYLE="font-size: 10pt"/> </TD> <TD STYLE="vertical-align: bottom"> <FONT STYLE="font-size: 10pt"> Fee paid previously with preliminary materials. </FONT> </TD> </TR> <TR> <TD STYLE="vertical-align: top"> <FONT STYLE="font-family: Wingdings; font-size: 10pt"> ¨ </FONT> <FONT STYLE="font-size: 10pt"/> </TD> <TD STYLE="vertical-align: bottom; text-align: justify"> <FONT STYLE="font-size: 10pt"> Check box if any part of the fee is offset as provided by Exchange Act Rule 0-11(a)(2) and identify the filing for which the offsetting fee was paid previously. Identify the previous filing by registration number, or the Form or Schedule and the date of its filing. </FONT> </TD> </TR> </TABLE> <P STYLE="font: 10pt Times New Roman, Times, Serif; margin: 0"/> <P STYLE="font: 12pt Times New Roman, Times, Serif; margin: 0"/> <!-- Field: Rule-Page --> <DIV STYLE="margin-top: 3pt; margin-bottom: 3pt; width: 100%"> <DIV STYLE="font-size: 1pt; border-top: Black 2pt solid; border-bottom: Black 4pt solid"/> </DIV> <!-- Field: /Rule-Page --> <P STYLE="font: 12pt Times New Roman, Times, Serif; margin: 0"/> <!-- Field: Page; Sequence: 1 --> <DIV STYLE="margin-top: 6pt; margin-bottom: 6pt"/> <DIV STYLE="break-before: page; margin-top: 6pt; margin-bottom: 6pt"/> <!-- Field: /Page --> <P STYLE="font: 6pt Times New Roman, Times, Serif; margin: 0"/> <P STYLE="font: 6pt Times New Roman, Times, Serif; margin: 0; text-align: center"/> <P STYLE="font: 12pt Times New Roman, Times, Serif; margin: 0; text-align: left"> <IMG ALT="" SRC="logo.jpg"/> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: center"> <B/> </P> <P STYLE="font: 16pt Arial, Helvetica, Sans-Serif; margin: 0; text-align: center"> <B> News Release </B> </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: center; color: #A95C35"> <B/> </P> <P STYLE="font: 12pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: center; color: #A95C35"> <B> Trilogy Metals Announces Date of Annual Shareholders Meeting </B> </P> <P STYLE="font: 12pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: center; color: #A95C35"> <B> and Provides Update on Ambler Access Road </B> </P> <P STYLE="font: 11pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: center"> <B/> </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 12pt; text-align: justify"> <B> March 28, 2024 - Vancouver, British Columbia - Trilogy Metals Inc. </B> (TSX / NYSE American: TMQ) (Trilogy Metals or the Company) will hold the Companys 2024 Annual General Meeting of the Shareholders (AGM) on Wednesday, May 22, 2024 at 10:00 am Pacific Time at the office of the Company, Suite 1150, 609 Granville Street, Vancouver, British Columbia. </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 12pt; text-align: justify"> All current directors will stand for re-election at the AGM. Other items of business include the approval of unallocated entitlements under the Companys 2012 Equity Incentive Plan. Pursuant to Toronto Stock Exchange rules, all unallocated options, rights and entitlements require shareholder approval every three years following institution of the plan. </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 12pt; text-align: justify"> The Company is also asking shareholders to approve the adoption of a new 2024 Non-Employee Directors Fixed Deferred Share Unit Plan (Fixed DSU Plan). Prior to 2022, the directors were only allowed to elect to take up to 50% of their annual retainers in deferred share units (DSUs) and the remainder of their fees was paid out in cash. Since 2022, due to cash preservation efforts, the Companys non-executive directors have been taking 100% of their directors fees in DSUs, for which they will receive common shares of the Company upon their retirement from the Board of Directors. This effort has saved cash outflows for the Company but, as a result, more DSUs have been issued. The Companys existing DSU Plan has a limited number of units available for future grants to directors and, to continue with cash-saving efforts, the Company proposed to set aside 1,200,000 common shares for grants to non-executive directors in a new Fixed DSU Plan. To reduce further dilution for the shareholders of the Company, the Board of Directors has approved the termination of the Ambler Metals Equity Plan, which has 1,181,519 common shares available for future grants, upon shareholder approval of the new Fixed DSU Plan. The Companys largest shareholder Electrum Strategic Opportunities Fund L.P. is in favor of the proposal. </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 12pt; text-align: justify"> Shareholders as of the record date of March 27, 2024 will be eligible to vote at the AGM. The Companys 2024 Management Information Circular (also called a proxy statement), which contains information about all director nominees and other items of business was filed today and is now available to the public. As always, we encourage you to vote your shares prior to the AGM. </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 12pt; text-align: justify"> No presentations or updates on the Companys activities will be provided at the AGM. The Companys most recent investor presentation can be found on our website at www.trilogymetals.com. Any investor who would like further information on the items of business at the AGM or the Companys activities is welcome to contact us directly. </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 12pt; text-align: justify"/> <!-- Field: Page; Sequence: 2 --> <DIV STYLE="margin-top: 6pt; margin-bottom: 6pt"> <TABLE CELLPADDING="0" CELLSPACING="0" STYLE="border-collapse: collapse; width: 100%; font-size: 10pt"> <TR STYLE="vertical-align: top; text-align: left"> <TD STYLE="width: 33%"/> <TD STYLE="width: 34%; text-align: center"> <!-- Field: Sequence; Type: Arabic; Name: PageNo --> 1 <!-- Field: /Sequence --> </TD> <TD STYLE="width: 33%; text-align: right"> <P STYLE="font: 10pt Daxline-Regular,serif; margin: 0; text-align: right; color: #7F7F7F"> Trust | Respect | Integrity </P> </TD> </TR> </TABLE> </DIV> <DIV STYLE="break-before: page; margin-top: 6pt; margin-bottom: 6pt"> <P STYLE="margin: 0pt"/> </DIV> <!-- Field: /Page --> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 12pt; text-align: justify"/> <P STYLE="font: bold 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 11pt; text-align: justify"> Proxy Statement Filed with Regulators </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 12pt; text-align: justify"> Additional information about the AGM can be found in the Companys 2024 Management Information Circular (or proxy statement), which has been filed with the U.S. Securities and Exchange Commission (SEC) and the Canadian securities regulatory authorities. The 2024 Management Information Circular is available on the Companys website at https://trilogymetals.com/investors/proxy-circular and on the Companys profile on SEDAR <SUP> + </SUP> at www.sedarplus.ca and on EDGAR at www.sec.gov. </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: justify"> <FONT STYLE="font-weight: normal"> The Company, its directors and certain of its executive officers are participants in the solicitation of proxies from the Companys shareholders in connection with the AGM. The Company has filed its 2024 Management Information Circular with the SEC and Canadian securities regulatory authorities in connection with any such solicitation of proxies from the Companys shareholders. SHAREHOLDERS OF THE COMPANY ARE STRONGLY ENCOURAGED TO READ SUCH PROXY STATEMENT AND ALL OTHER DOCUMENTS FILED WITH THE SEC AND CANADIAN SECURITIES REGULATORY AUTHORITIES CAREFULLY AND IN THEIR ENTIRETY AS THEY WILL CONTAIN IMPORTANT INFORMATION. </FONT> </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: justify"> <FONT STYLE="font-weight: normal"/> </P> <P STYLE="font: bold 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 11pt; text-align: justify"> Ambler Access Project </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 11pt; text-align: justify"> <FONT STYLE="font-weight: normal"> On March 18, 2024 the United States Bureau of Land Management (BLM) filed its 11 <SUP> th </SUP> status report with the Courts stating that it posted the Draft Supplemental Environmental Impact Statement (SEIS) on its ePlanning website on October 13, 2023 and published notice of availability of the Draft SEIS in the Federal Register on October 20, 2023. The public comment period ended on December 22, 2023. The BLM conducted several public meetings concerning the Draft SEIS, and conducted associated ANILCA Section 810 hearings on subsistence use in communities affected by the project. The BLM had previously reported that it anticipated publishing a Final SEIS in the first quarter of calendar year 2024, but now anticipates publishing a Final SEIS in the second quarter of calendar year 2024. The BLM continues to anticipate publishing a Record of Decision within the second quarter of calendar year 2024. </FONT> </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: justify"> <FONT STYLE="font-weight: normal"> The Ambler Access Project (AAP) is a proposed 211-mile, industrial-use-only road from the Upper Kobuk Mineral Projects (UKMP) to the Dalton Highway that will enable the advancement of exploration and development at the Ambler Mining District, home to some of the world's richest known copper-dominant polymetallic deposits. </FONT> </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: justify"> <FONT STYLE="font-weight: normal"/> </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 11pt; text-align: justify"> <B> About Trilogy Metals </B> </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 6pt; text-align: justify"> Trilogy Metals Inc. is a metal exploration and development company holding a 50 percent interest in Ambler Metals LLC, which has a 100 percent interest in the Upper Kobuk Mineral Projects in northwestern Alaska. On December 19, 2019, South32, a globally diversified mining and metals company, exercised its option to form a 50/50 joint venture with Trilogy. The UKMP is located within the Ambler Mining District which is one of the richest and most-prospective known copper-dominant districts in the world. It hosts world-class polymetallic volcanogenic massive sulphide (VMS) deposits that contain copper, zinc, lead, gold and silver, and carbonate replacement deposits which have been found to host high-grade copper and cobalt mineralization. Exploration efforts have been focused on two deposits in the Ambler Mining District - the Arctic VMS deposit and the Bornite carbonate replacement deposit. Both deposits are located within a land package that spans approximately 190,929 hectares. Ambler Metals has an agreement with NANA Regional Corporation, Inc., an Alaska Native Corporation that provides a framework for the exploration and potential development of the Ambler Mining District in cooperation with local communities. Trilogys vision is to develop the Ambler Mining District into a premier North American copper producer while protecting and respecting subsistence livelihoods. </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 6pt; text-align: justify"/> <!-- Field: Page; Sequence: 3 --> <DIV STYLE="margin-top: 6pt; margin-bottom: 6pt"> <TABLE CELLPADDING="0" CELLSPACING="0" STYLE="border-collapse: collapse; width: 100%; font-size: 10pt"> <TR STYLE="vertical-align: top; text-align: left"> <TD STYLE="width: 33%"/> <TD STYLE="width: 34%; text-align: center"> <!-- Field: Sequence; Type: Arabic; Name: PageNo --> 2 <!-- Field: /Sequence --> </TD> <TD STYLE="width: 33%; text-align: right"> <P STYLE="font: 10pt Daxline-Regular,serif; margin: 0; text-align: right; color: #7F7F7F"> Trust | Respect | Integrity </P> </TD> </TR> </TABLE> </DIV> <DIV STYLE="break-before: page; margin-top: 6pt; margin-bottom: 6pt"> <P STYLE="margin: 0pt"/> </DIV> <!-- Field: /Page --> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0 0 6pt; text-align: justify"/> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: justify"/> <TABLE CELLPADDING="0" CELLSPACING="0" STYLE="width: 100%; font: 12pt Times New Roman, Times, Serif; border-collapse: collapse"> <TR STYLE="vertical-align: top"> <TD STYLE="width: 50%; padding-right: 5.4pt; padding-bottom: 6pt; padding-left: 5.4pt; text-align: justify"> <FONT STYLE="font-family: Verdana, Helvetica, Sans-Serif; font-size: 10pt"> <B> Company Contacts </B> </FONT> </TD> <TD STYLE="width: 50%; padding-right: 5.4pt; padding-bottom: 6pt; padding-left: 5.4pt; text-align: justify"/> </TR> <TR STYLE="vertical-align: top"> <TD STYLE="padding-right: 5.4pt; padding-left: 5.4pt; text-align: justify"> <FONT STYLE="font-family: Verdana, Helvetica, Sans-Serif; font-size: 10pt"> Tony Giardini </FONT> </TD> <TD STYLE="padding-right: 5.4pt; padding-left: 5.4pt; text-align: justify"> <FONT STYLE="font-family: Verdana, Helvetica, Sans-Serif; font-size: 10pt"> Elaine Sanders </FONT> </TD> </TR> <TR STYLE="vertical-align: top"> <TD STYLE="padding-right: 5.4pt; padding-left: 5.4pt; text-align: justify"> <FONT STYLE="font-family: Verdana, Helvetica, Sans-Serif; font-size: 10pt"> President Chief Executive Officer </FONT> </TD> <TD STYLE="padding-right: 5.4pt; padding-left: 5.4pt; text-align: justify"> <FONT STYLE="font-family: Verdana, Helvetica, Sans-Serif; font-size: 10pt"> Vice President Chief Financial Officer </FONT> </TD> </TR> </TABLE> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: justify"/> <P STYLE="font: 10pt/115% Verdana, Helvetica, Sans-Serif; margin: 0; text-align: center"> <B> 604-638-8088 </B> </P> <P STYLE="font: 10pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: center"> <B> # # # </B> </P> <P STYLE="font: 9.5pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: justify"> <B> <I/> </B> </P> <P STYLE="font: 9.5pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: justify"> <B> <I> Cautionary Note Regarding Forward-Looking Statements </I> </B> </P> <P STYLE="font: 12pt Times New Roman, Times, Serif; margin: 0; text-align: justify"/> <P STYLE="font: 9pt Verdana, Helvetica, Sans-Serif; margin: 0; text-align: justify"> <I> This press release includes certain forward-looking information and forward-looking statements (collectively forward-looking statements) within the meaning of applicable Canadian and United States securities legislation including the United States Private Securities Litigation Reform Act of 1995. All statements, other than statements of historical fact, included herein, including, without limitation, the date and time of the AGM, items of business at the AGM, the Companys plans to provide further updates and the timing thereof, the anticipated timing of publishing the final SEIS and publishing of a Record of Decision, the benefits of the AAP, shareholder approval of the proposals brought forward at the AGM, Toronto Stock Exchange final approval of the Fixed DSU Plan and the Companys expectations and plans with regards to the development of the Ambler Mining District are forward-looking statements. Forward-looking statements are frequently, but not always, identified by words such as expects, anticipates, believes, intends, estimates, potential, possible, and similar expressions, or statements that events, conditions, or results will, may, could, or should occur or be achieved. Forward-looking statements involve various risks and uncertainties. There can be no assurance that such statements will prove to be accurate, and actual results and future events could differ materially from those anticipated in such statements. Important factors that could cause actual results to differ materially from the Companys expectations include the uncertainties involving our assumptions with respect to the impact of the novel coronavirus (COVID-19), whether the Alaska Industrial Development and Export Authority will build the APP, the results of the SEIS and other risks and uncertainties disclosed in the Companys Annual Report on Form 10-K for the year ended November 30, 2023 filed with Canadian securities regulatory authorities and with the United States Securities and Exchange Commission and in other Company reports and documents filed with applicable securities regulatory authorities from time to time. The Company's forward-looking statements reflect the beliefs, opinions and projections on the date the statements are made. The Company assumes no obligation to update the forward-looking statements or beliefs, opinions, projections, or other factors, should they change, except as required by law. </I> </P> <P STYLE="font: 12pt Times New Roman, Times, Serif; margin: 0"/> <TABLE CELLPADDING="0" CELLSPACING="0" STYLE="border-collapse: collapse; width: 100%; font-size: 10pt"> <TR STYLE="vertical-align: top; text-align: left"> <TD STYLE="width: 33%"/> <TD STYLE="text-align: center; width: 34%"> <!-- Field: Sequence; Type: Arabic; Name: PageNo --> 3 <!-- Field: /Sequence --> </TD> <TD STYLE="text-align: right; width: 33%"> <P STYLE="font: 10pt Daxline-Regular,serif; margin: 0; text-align: right; color: #7F7F7F"> Trust | Respect | Integrity </P> </TD> </TR> </TABLE> <P STYLE="font: 12pt Times New Roman, Times, Serif; margin: 0"> <FONT STYLE="font-size: 1pt"/> <FONT STYLE="font-size: 10pt"/> </P> <noscript> <img src="https://www.sec.gov/akam/13/pixel_81508e7?a=dD1kZjYwOGQxMzllNjMyNGJkMWFlYzVmMzhlYWJlZTFlYTZjMzQ5OTdlJmpzPW9mZg==" style="visibility: hidden; position: absolute; left: -999px; top: -999px;"/> </noscript> </P> </BODY> </HTML> </TEXT> </DESCRIPTION> </FILENAME> </SEQUENCE> </TYPE> </DOCUMENT> </div> </div> <!---------------------------------------> <!----------- 3rd column ----------------> <!----------- RIGHT MENU ----------------> <section class="col-md-3 col-sm-3 col-lg-3 section toc" id="3rd"> <div id="report_table_cont">TABLE OF CONTENTS</div> <div id="table_filing"> </div> </section> </div> </div> <style> .ended { font-size: 8pt; display: block; } #financeModal { padding: 0 !important; } .reload { font-family: Lucida Sans Unicode; cursor: pointer; } .modal-blur { -webkit-filter: blur(5px); -moz-filter: blur(5px); -o-filter: blur(5px); -ms-filter: blur(5px); filter: blur(5px); } #financeModal .modal-dialog { width: 80%; max-width: none; margin: 0; left: 10%; top: 5%; } #financeModal .modal-content { border: 0; border-radius: 0; } #financeModal .modal-body { overflow-y: auto; } .date { font-size: 9pt; } .active-finance { background-color: #2196f3 !important; color : ffffff !important; } .active-fin-type { background-color: #2196f3 !important; color : ffffff !important; } .finance_type:hover, .finance_type:active, .finance_type:focus { background-color: #ffffff; text-decoration: none; } .finance:hover, .finance:active, .finance:focus { background-color: #ffffff; text-decoration: none; } #finance-div table tbody tr td:not(:first-child) { text-align: right; } .blur { box-shadow: 0px 0px 20px 20px rgba(255, 255, 255, 1); text-shadow: 0px 0px 10px rgba(51, 51, 51, 0.9); transform: scale(0.9); opacity: 0.6; } </style> <style> .gemini-response { font-family: Arial, sans-serif; line-height: 1; } .gemini-response h2, .gemini-response h3 { margin-top: 20px; margin-bottom: 10px; } .gemini-response ul { padding-left: 20px; } .gemini-response ul li { margin-bottom: 10px; } .gemini-response p { margin-bottom: 15px; } .modal-lg { max-width: 50%; } </style> <div aria-hidden="true" aria-labelledby="shareholderModalLabel" class="modal fade " id="shareholderModal" role="dialog" tabindex="-1"> <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="shareholderModalTitle"></h5> <button aria-label="Close" class="close pr-2 pt-2 pb-1" data-dismiss="modal" type="button"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <h2 class="fund-header" id='dynamic-header' style="text-decoration:underline"></h2> <p id="p-fund" style="display: none;">No information found </p> <div id="fund_div"> <p class="small-note ">* THE VALUE IS THE MARKET VALUE AS OF THE LAST DAY OF THE QUARTER FOR WHICH THE 13F WAS FILED.</p> <div class="table-responsive x-overflow-hide"> <table class="fl-table table" id="fund-table"> <thead> <th onclick="sortTable(0)">FUND</th> <th onclick="sortTable(1)">NUMBER OF SHARES</th> <th onclick="sortTable(2)">VALUE ($)</th> <th>PUT OR CALL</th> </thead> <tbody class="tbody"> </tbody> </table> </div> </div> </div> </div> </div> </div> <div aria-hidden="true" aria-labelledby="directorModalLabel" class="modal fade" id="directorModal" role="dialog" tabindex="-1"> <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="dynamicDirector-header">Directors of Trilogy Metals Inc. - as per the latest proxy <sup><small>Beta</small></sup></h5> <button aria-label="Close" class="close pr-2 pt-2 pb-1" data-dismiss="modal" type="button"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="table-wrapper-director" id="dircter-table-div"> <table class="fl-table table" id="director-table"> <thead> <th class="directorCol">DIRECTORS</th> <th class="directorCol ageCol">AGE</th> <th class="directorCol">BIO</th> <th class="directorCol">OTHER DIRECTOR MEMBERSHIPS</th> </thead> <tbody class="tbody"> </tbody> </table> </div> </div> </div> </div> </div> <div aria-labelledby="registerModalLabel" class="modal fade " data-backdrop="static" data-keyboard="false" id="registerModal" role="dialog" tabindex="-1"> <div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-content"> <div> <button class="close pr-2 pt-2" type="button"> <a class="text-dark text-decoration-none" href="/TMQ/"> <span aria-hidden="true">×</span></a> </button> </div> <div class="text-center pb-3"><a href="/pricing/">Subscribe</a> to view this or get a <a href="/token/">free 24 hour token </a> or take a free test drive with ticker <a href="/snapshot/AAPL">AAPL</a>. View our demo <a href="/demo/">video</a>. </div> </div> </div> </div> <div aria-hidden="true" aria-labelledby="executiveModalLabel" class="modal fade" id="executiveModal" role="dialog" tabindex="-1"> <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id='executiveModalLabelTitle'></h5> <button aria-label="Close" class="close pr-2 pt-2 pb-1" data-dismiss="modal" type="button"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <h2 class="fund-header" style="text-decoration:underline"></h2> <div class="table-responsive"> <div class="table-wrapper-execs" id='executive-button'> <p>No information found </p> </div> </div> </div> </div> </div> </div> <div aria-hidden="true" aria-labelledby="customerModalLabel" class="modal fade" id="customerModal" role="dialog" tabindex="-1"> <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="cust-header"> Customers and Suppliers of Trilogy Metals Inc. <sup><small>Beta</small></sup></h5> <button aria-label="Close" class="close pr-2 pt-2 pb-1" data-dismiss="modal" type="button"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="container"> <div class="row"> <div class="col-md-6 col-12"> <div class=" table-responsive x-overflow-hide" id="Customer_table"> <p>No Customers Found </p> </tbody> </table> </div> </div> <div class="col-md-6 col-12"> <div class=" table-responsive x-overflow-hide" id="Supplier_table"> <p>No Suppliers Found</p> </tbody> </table> </div> </div> </div> </div> </div> </div> </div> </div> <div aria-hidden="true" aria-labelledby="bondModalLabel" class="modal fade " id="bondModal" role="dialog" tabindex="-1"> <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="bondModalTitle">Bonds of Trilogy Metals Inc.</h5> <button aria-label="Close" class="close pr-2 pt-2 pb-1" data-dismiss="modal" type="button"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="table-responsive " id="bond_table"> </div> </div> </div> </div> </div> <div aria-hidden="true" aria-labelledby="bondpricegraphModalLabel" class="modal fade " id="bondpricegraphModal" role="dialog" tabindex="-1"> <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document" style=" height: 100%;"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="bondpricegraphModalTitle">Price Graph </h5> <button aria-label="Close" class="close" data-dismiss="modal" type="button"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body" id="price_graph"> <img id="bond_graph" src=""> </div> <div class="row mt-5"> <div class="col-1 mt-2 pr-0"> <h6 style="position: relative;float: right;"><em class="dot red"></em> </h6> </div> <div class="col-11 pl-0"> <p class="text-muted">Price</p> </div> <div class="col-1 mt-2 pr-0"> <h6 style="position: relative;float: right;"><em class="dot"></em> </h6> </div> <div class="col-11 pl-0"> <p class="text-muted">Yield</p> </div> </div> </div> </div> </div> <div aria-hidden="true" aria-labelledby="InsiderOwnershipModalLabel" class="modal fade " id="InsiderOwnershipModal" role="dialog" tabindex="-1"> <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="insider_ownershipModalTitle">Insider Ownership of Trilogy Metals Inc. company <sup><small>Beta</small></sup></h5> <button aria-label="Close" class="close pr-2 pt-2 pb-1" data-dismiss="modal" type="button"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="table-wrapper-director" id="insider_ownership_table-div"> <table class="fl-table table" id="insider_ownership_table"> <thead> <th class="insideOwnershipCol">Owner</th> <th class="insideOwnershipCol">Position</th> <th class="insideOwnershipCol">Direct Shares</th> <th class="insideOwnershipCol">Indirect Shares</th> </thead> <tbody class="tbody"> </tbody> </table> </div> </div> </div> </div> </div> <div class="modal fade" id="aiInsights" tabindex="-1" role="dialog" aria-labelledby="aiInsightsLabel" aria-hidden="true"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="aiInsightsLabel">AI Insights</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div id="geminiResponseContainer" class="gemini-response"> <!-- Response content will be loaded here --> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> </div> </div> </div> </div> <div aria-hidden="true" aria-labelledby="financeModalLabel" class="modal fade " id="financeModal" role="dialog" tabindex="-1"> <div class="modal-dialog modal-xl modal-dialog-scrollable" role="document"> <div class="modal-content"> <div class="modal-header"> <div> <span> <h5 class="modal-title" id="financeModalTitle">Summary Financials of Trilogy Metals Inc. <sup><small>Beta</small></sup></h5> </span> <span style="font-size:80%"> <small>(We are using algorithms to extract and display detailed data. This is a hard problem and we are working continuously to classify data in an accurate and useful manner.)</small> </span> </div> <button aria-label="Close" class="close pr-2 pt-2 pb-1" data-dismiss="modal" type="button"> <span aria-hidden="true">×</span> </button> </div> <input id="ftitle" type="hidden" value=""> <input id="displayed_finance" type="hidden" value="balance"> <input id="displayed_ftype" type="hidden" value="10-Q"> <input id="company_name_hidden" type="hidden" value="Trilogy Metals Inc."> <div class="modal-body"> <div class="row"> <div class="col-10"> <div aria-label="Basic example" class="btn-group" role="group"> <button class="btn model_button border border-primary finance p-1 active-finance" id="balance" type="button">Balance Sheet </button> <button class="btn model_button finance p-1" id="income" type="button"> Income Statement </button> <button class="btn model_button finance p-1" id="cash_flow" type="button">Cash Flow </button> </div> </div> <div class="col-2 pull-right"> <div aria-label="Basic example" class="btn-group" role="group" style="float: right;"> <button class="btn model_button finance_type p-1 active-fin-type" id="10-Q" type="button">Quarterly </button> <button class="btn model_button finance_type p-1" id="10-K" type="button">Annual </button> </div> </div> </div> <div class="table-responsive pt-2" id="finance-div"> No information found </div> </div> </div> </div> </div> </div> <script> </script> <script src="/static/js/threeButtonScroll.js?v=9"></script> <script src="/static/js/scroll_js.js?v=7"></script> <script> var ticker = "TMQ"; $(document).ready(function() { $('#aiInsights').on('show.bs.modal', function (event) { var companyName = "Trilogy Metals Inc."; var csrftoken = $('input[name="csrfmiddlewaretoken"]').val(); // Show loading spinner $('#geminiResponseContainer').html('<div class="text-center"><span class="spinner-border text-primary" role="status"><span class="sr-only">Loading...</span></span></div>'); // Logging the data sent in the AJAX request console.log('Preparing AJAX request with data:', { company_Name: companyName, csrfmiddlewaretoken: csrftoken }); $.ajax({ url: '/api/get_gemini_response/', type: 'POST', data: { 'company_Name': companyName, 'company_Ticker': ticker, 'csrfmiddlewaretoken': csrftoken }, success: function(data) { console.log('AJAX request successful. Data received:', data); if (data.error) { $('#geminiResponseContainer').html(`<div class='alert alert-danger'>Error: ${data.error}</div>`); } else { $('#geminiResponseContainer').html(formatResponse(data.response)); } }, error: function(xhr, status, error) { console.error("AJAX Error:", error); console.error("Detailed response:", xhr.responseText); $('#geminiResponseContainer').html(`<div class='alert alert-danger'>AJAX Error: ${error}</div>`); } }); }); }); function formatResponse(response) { let formattedResponse = response.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>'); // Convert **text** to <strong>text</strong> formattedResponse = formattedResponse.replace(/\* (.*?)(\n|$)/g, '<li>$1</li>'); // Convert * text to <li>text</li> formattedResponse = formattedResponse.replace(/<\/li><li>/g, '</li><li>').replace(/<li>/g, '<ul><li>').replace(/<\/li>/g, '</li></ul>'); // Wrap <li> in <ul> formattedResponse = formattedResponse.replace(/## (.*?)(\n|$)/g, '<h2>$1</h2>'); // Convert ## text to <h2>text</h2> formattedResponse = formattedResponse.replace(/### (.*?)(\n|$)/g, '<h3>$1</h3>'); // Convert ### text to <h3>text</h3> formattedResponse = formattedResponse.replace(/\n/g, '<br>'); // Convert newlines to <br> return `<div>${formattedResponse}</div>`; } </script> <script src="/static/js/filing.js?v=1"></script> <script> $("#second").contents().find("body").css({'padding': '1px 4px', 'overflow-x': 'hidden'}) var fid = '1543418', printerLink = "/printer/" + "90888" + "/" + "True" + '/' //Append the print button to TOC function addPrintButton(items, type) { items.forEach((itm) => { itm.innerHTML = itm.innerHTML + '<span class="print">print</span>' itm.addEventListener('mouseover', function () { this.querySelector('span.print').style.display = 'inline-block' }) itm.addEventListener('mouseout', function () { this.querySelector('span.print').style.display = 'none' }) }) $('.' + type + '-link span.print').on('click', function (e) { let part = this.parentElement.hash.replace('#', '') openPrintPortion(part) }) } document.addEventListener('DOMContentLoaded', function () { I_frame = document.querySelector('#second') if (window.innerWidth > '700') { // I_frame.setAttribute('style','border:none;position:absolute;left:0vw;min-width:100%;max-width:100%;top:0vh;height:100%;min-height:100%;') } else { // I_frame.setAttribute('style','border:none;position:absolute;left:0vw;min-width:100vw;max-width:100vw!important;top:0vh;height:100%;min-height:100%;') } let partsInTOC = document.querySelectorAll('.part-link') let itemsInToc = document.querySelectorAll('.item-link') let notesInTOC = document.querySelectorAll('.note-link') addPrintButton(partsInTOC, 'part'); addPrintButton(itemsInToc, 'item'); addPrintButton(notesInTOC, 'note'); /* Toogle between the sections*/ let fillinglist = document.querySelectorAll('.firstsec')[0] let doc_preview = document.querySelectorAll('.document-view-section')[0] let toc = document.querySelectorAll('.toc')[0] let mobile_view = document.querySelectorAll('.mobile_view')[0] /* buttons for toggling */ let showfilings_btn = document.querySelectorAll('.show_filings_btn')[0] let showdoc_btn = document.querySelectorAll('.show_doc_btn')[0] let showtoc_btn = document.querySelectorAll('.show_toc_btn')[0] showfilings_btn.addEventListener('click', function () { let shortcutsmobile = document.querySelector('#shortcuts-mobile') fillinglist.style.display = 'block' doc_preview.style.display = 'none' toc.style.display = 'none' mobile_view.style.display = 'block' shortcutsmobile.style.display = 'none' }) showdoc_btn.addEventListener('click', function () { let shortcutsmobile = document.querySelector('#shortcuts-mobile') fillinglist.style.display = 'none' doc_preview.style.display = 'block' toc.style.display = 'none' mobile_view.style.display = 'none' shortcutsmobile.style.display = 'block' }) showtoc_btn.addEventListener('click', function () { let shortcutsmobile = document.querySelector('#shortcuts-mobile') fillinglist.style.display = 'none' doc_preview.style.display = 'none' toc.style.display = 'block' mobile_view.style.display = 'none' shortcutsmobile.style.display = 'none' }) $(".section document-view-section div").eq(1).after('<div id="doc-head"></div>') }) //track which filing has been clicked on let filingslinks = document.querySelectorAll('.filedate') /* let filingvalue = window.location.href.split('&'); console.log(filingvalue,'filingvaluefilingvalue') if (filingvalue.length===1){ let row =document.querySelector('#filings-section-list').querySelector('tbody').querySelectorAll('tr')[0] row.style.backgroundColor='#d8ecf3'; } else { filingvalue = window.location.href.split('&')[1].split('=')[1]; console.log(filingvalue,'filingvalue') filingslinks.forEach((filing)=>{ if (filing.outerHTML.search(filingvalue) > -1) { filing.setAttribute('style','background-color:#d8ecf3') } }) }*/ function openPrintPortion(portion) { var a = window.open(printerLink + portion, '_blank'); } </script> <script> function numberWithCommasNoDecimal(x) { // If null or undefined, just return dash if (x === null || x === undefined) return '-'; // Convert to float let val = parseFloat(String(x).replace(/,/g, '').trim()); if (isNaN(val)) return '-'; // Track negativity const negative = val < 0; // Work with absolute value for splitting val = Math.abs(val); // Now split at the decimal let [intPart, decimalPart] = val.toString().split('.'); // Insert commas in integer portion only intPart = intPart.replace(/\B(?=(\d{3})+(?!\d))/g, ','); // Reattach sign and decimal let result = negative ? '-' + intPart : intPart; if (decimalPart !== undefined) { result += '.' + decimalPart; } return result; } function fetch_bond_price_graph(bond_symbol) { $("#bond_graph").attr("src","/image/price_graph/"+bond_symbol+".png"); } function clear_div(element) { $('#' + element).html(''); } $(document).ready(function () { var ticker = "TMQ"; /***************************************************** * 1) OLD FUNCTION: create_table_new2 (flat structure) *****************************************************/ function create_table_new2( finance_data_section, finance_data_value, finance_data_label, ended_lst, f_data, dates, finance_title ) { if (!f_data || f_data.length === 0) { $('#finance-div').html('<div class="alert alert-info">No financial data available.</div>'); return; } // A quick helper to strip commas and parse float function parseValue(val) { if (val === null || val === undefined) return null; // Already a number if (typeof val === 'number') return val; // If it's a string, remove commas, extra spaces, etc. if (typeof val === 'string') { let cleaned = val.replace(/,/g, '').trim(); let parsed = parseFloat(cleaned); return isNaN(parsed) ? null : parsed; } return null; } var table = ` <div class="text-center"><strong>${finance_title}</strong></div> <table class="fl-table table table-hover" id="finance-table"> <thead> <tr> <th>Field</th>`; // Add headers for each date (same order as ended_lst) ended_lst.forEach(function(date) { table += `<th>${date}</th>`; }); table += `</tr></thead><tbody>`; // Track the last section and sub-section for grouping var lastSection = null; var lastSubSection = null; // f_data = [section, sub_section, label, [values per date]] f_data.forEach(function(item) { var section = item[0]; var sub_section = item[1]; var label = item[2]; var values = item[3]; // If we've hit a new section, print a row if (section && section !== lastSection) { table += ` <tr style="background-color: #000; color: #fff; text-transform: uppercase;"> <td colspan="${ended_lst.length + 1}"> <strong>${section}</strong> </td> </tr>`; lastSection = section; lastSubSection = null; } // If we've hit a new sub-section if (sub_section && sub_section !== lastSubSection) { table += ` <tr style="background-color: #f0f0f0;"> <td colspan="${ended_lst.length + 1}"> <strong>${sub_section}</strong> </td> </tr>`; lastSubSection = sub_section; } // Now the actual row for this label table += `<tr> <td style="padding-left: 20px;">${label}</td>`; // For each value in this row’s array (aligned with ended_lst) values.forEach(function(value) { // Convert to a real float if possible let numericVal = parseValue(value); if (numericVal === null) { // Not a valid float => dash table += `<td>-</td>`; } else { // Format as thousands with commas (keeping negatives and decimals) let formatted = numberWithCommasNoDecimal(numericVal); table += `<td>${formatted}</td>`; } }); table += `</tr>`; }); table += `</tbody></table>`; $('#finance-div').html(table); } /******************************************************* * 2) NEW FUNCTION: createNestedTable (hierarchical) *******************************************************/ function createNestedTable(nested_sections, ended_lst, finance_title) { // 1) Declare "table" in this scope let table = ` <div class="text-center"><strong>${finance_title}</strong></div> <table class="fl-table table table-hover" id="finance-table"> <thead> <tr> <th>Field</th>`; ended_lst.forEach(function(date) { table += `<th>${date}</th>`; }); table += `</tr></thead><tbody>`; // 2) Define processNode *inside* so it can reference "table" function processNode(node, indentLevel) { const leftPadding = indentLevel * 20; table += `<tr> <td style="padding-left:${leftPadding}px; font-weight:${indentLevel === 0 ? 'bold' : 'normal'};"> ${node.label || node.sectionName} </td>`; node.valueByPeriod.forEach(function(val) { if (val === null || val === undefined) { val = '-'; } else { // Attempt to parse even if it's a string if (typeof val === 'string') { let cleaned = val.replace(/,/g, '').trim(); let parsed = parseFloat(cleaned); if (!isNaN(parsed)) { val = numberWithCommasNoDecimal(parsed); } else { val = '-'; } } else if (typeof val === 'number') { val = numberWithCommasNoDecimal(val); } } table += `<td>${val}</td>`; }); table += `</tr>`; // Recurse if (node.children && node.children.length > 0) { node.children.forEach(child => processNode(child, indentLevel + 1)); } } // 3) Loop through top-level nodes nested_sections.forEach(node => { processNode(node, 0); }); table += `</tbody></table>`; $('#finance-div').html(table); } /************************************************ * 3) Show the modal -> call get_ajax_data ************************************************/ $('#financeModal').on('shown.bs.modal', function (e) { get_ajax_data(); }); /************************************************ * 4) get_ajax_data: calls Django endpoint ************************************************/ function get_ajax_data() { console.log($('#company_name_hidden').val()); var company_name = $('#company_name_hidden').val().replace('/', ' ').replace('\\', ' '); console.log(company_name); var cik = "1543418"; // e.g. '123456' var finance_type = $('#displayed_finance').val(); // e.g. 'balance', 'income', 'cash_flow' var data_type = $('#displayed_ftype').val(); // e.g. '10-K', '10-Q' var url = `/get/finance/data/${cik}/${finance_type}/${data_type}/${encodeURIComponent(ticker)}/`; $.ajax({ url: url, method: 'GET', success: function (resp) { $('#finance-div').html(''); if (resp.error) { $('#finance-div').html(`<div class="alert alert-danger">${resp.error}</div>`); } else { console.log(resp); // If server returns nested_sections, show them if (resp.nested_sections && resp.nested_sections.length > 0) { createNestedTable(resp.nested_sections, resp.date, resp.finance_title); } else { // Otherwise, fallback to the old flat approach create_table_new2( resp.finance_data_section, resp.finance_data_value, resp.finance_data_label, resp.ended_lst, resp.f_data, resp.date, resp.finance_title ); } } }, error: function (xhr, status, error) { $('#finance-div').html(`<div class="alert alert-danger">An error occurred: ${error}</div>`); console.error(error); } }); } /************************************************ * 5) On-click handlers for toggling (unchanged) ************************************************/ $(document).on('click', '.finance', function () { $('.finance').removeClass('active-finance'); $(this).addClass('active-finance'); // the button's ID (like "balance" or "income") is stored: $('#displayed_finance').val($(this).attr('id')); get_ajax_data(); // calls the /get/finance/data endpoint }); $(document).on('click', '.finance_type', function () { $('.finance_type').removeClass('active-fin-type'); $(this).addClass('active-fin-type'); // the button's ID ("10-Q" or "10-K") is stored: $('#displayed_ftype').val($(this).attr('id')); get_ajax_data(); }); $("#registerModal").on('shown', function () { console.log(7899809) alert("I want this to appear after the modal has opened!"); }); /* close popover */ $('body').on('click', function (e) { $('[data-toggle="popover"]').each(function () { //the 'is' for buttons that trigger popups //the 'has' for icons within a button that triggers a popup if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) { $(this).popover('hide'); } }); }); $('[data-toggle="tooltip"]').tooltip(); $('.exhibit-link').each(function () { href = $(this).attr('href') if (href.search('/www.sec.gov/Archives/edgar/data/') == -1) $(this).attr('href', "https://www.sec.gov/Archives/edgar/data/1543418/000127956924000345/" + href) }); $('.info-btn-circle').on('click', function (e) { $('.info-btn-circle').not(this).popover('hide'); }); if ($('#fixed-content-filing').length > 0) { fetch("/fetch_fixed_content_filing", { headers: { "X-CSRFToken": document.getElementById("csrf") .querySelector("input") .value, 'Content-type': 'application/json' }, method: "POST", body: JSON.stringify({ "ticker": "TMQ", "current_filing_name": "Trilogy Metals Inc.", "current_filing_filingtype": "DEF 14A", "current_filing_filingdate": "March 28, 2024" }) }) .then(response => response.json()) .then(function (data) { bonds = data.data.bonds directors = data.data.director executives = data.data.executive funds = data.data.funds insider_ownership = data.data.insider_ownership bond_html = '' director_html = '' funds_html = '' executive_html = '' insider_ownership_html = '' if (bonds.length > 0) { bond_html += '<table class="fl-table table" id="bond-table"> <thead> <tr> <th rowspan="2">ISSUER NAME</th> <th rowspan="2">SYMBOL</th> <th rowspan="2">CALLABLE</th> <th rowspan="2">SUB-PRODUCT TYPE</th> <th rowspan="2"> COUPON</th> <th rowspan="2">MATURITY</th> <th class="text-center" colspan="2">RATINGS</th> <th class="text-center" colspan="2">LAST SALE</th><th rowspan="2">GRAPH</th> </tr> <tr> <th>MOODY\'S® </th> <th>S&P</th > <th> PRICE </th> <th>YIELD</th> </tr> </thead> <tbody class = "tbody" > ' for (let i = 0; i < bonds.length; i++) { bond_html += '<tr> <td>' + bonds[i].issuer_name + '</td> <td> '+ bonds[i].symbol + ' </td> <td>' + bonds[i].callable + '</td> <td>' + bonds[i].sub_product_type + '</td> <td>' + bonds[i].coupon + '</td> <td>' + bonds[i].matuarity + '</td> <td>' + bonds[i].moody_rating + '</td> <td>' + bonds[i].s_and_p_rating + '</td> <td>' + bonds[i].last_sale_price + '</td> <td>' + bonds[i].last_sale_yield + '</td> <td> <div class="row justify-content-center"> <button class="btn col" style="font-size: inherit; margin-top: 0px; padding-top: 0px;" data-target="#bondpricegraphModal" onclick="fetch_bond_price_graph(\''+bonds[i].symbol+'\')" data-toggle="modal">Price Graph</button><div></td> </tr>' } bond_html += '</tbody> </table>' } else { bond_html = 'No information found' } $("#bond_table").empty(); $('#bond_table').append(bond_html); if (executives.length > 0) { executive_html = executives } else { executive_html = 'No information found' } $("#executive-button").empty(); $('#executive-button').append(executive_html); document.getElementById("dynamicDirector-header").innerHTML = "Directors of Trilogy Metals Inc. - as per the latest proxy " + '<sup><small>Beta</small></sup>'; if (directors.length == 0) { $('#director-table').hide(); $('#dircter-table-div').html('<p>No information found</p>') } else { $('#director-table').show(); for (var i = 0; i < directors.length; i++) { tr = ' <tr >' tr += '<td ><center>' + directors[i][0] + '</center></td>' if (directors[i][1] == null) tr += '<td class=" ageCol" ><center></center></td>' else tr += '<td class=" ageCol" ><center>' + directors[i][1] + '</center></td>' tr += '<td id = "bioCol" ><p>' + directors[i][2] + '</p></td>' other = '' for (k = 0; k < directors[i][3].length; k++) { if (k == directors[i][3].length - 1) { other = other + directors[i][3][k] } else { other = other + directors[i][3][k] + ', ' } } tr += ' <td ><center>' + other + '</center></td>' tr += '</tr>' $('#director-table tbody').append(tr) } } if (funds.length != 0) { date = new Date(data.data.fund_report_date) day = date.getDate(); month = date.toLocaleString('default', { month: 'short' }); year = date.getFullYear(); $("#shareholderModalTitle").text("Top 100 Shareholders of Trilogy Metals Inc. as of " + month + ' ' + day + ', ' + year) } else { $("#shareholderModalTitle").text("Top 100 Shareholders of Trilogy Metals Inc.") } //$('#cust-header').text( "Customers and Suppliers of Trilogy Metals Inc.") for (var i = 0; i < funds.length; i++) { tr = '<tr id="tr_doc">' tr += '<td class="success fund text-uppercase">' + funds[i].fund + '<button type="button" id="' + i + '" class="btn btn-secondary btn-small info-btn-circle" data-container="body" data-title="×" data-toggle="popover" data-placement="top" data-html="true" >i</button></td>' tr += '<td class = "fund-shares" >' + numberWithCommasNoDecimal(funds[i].share_prn_amount) + '</td>' tr += '<td class="fund-value">' + numberWithCommasNoDecimal(funds[i].value) + '</td>' tr += '<td class="success"><center>' + funds[i].put_call + '</center></td>' tr += '</tr>' $('#fund-table tbody').append(tr) } $('[data-toggle="popover"]').popover({sanitize:false, content: function() { var i = $(this).attr('id') text_tooltip = '<div class="container"><div class="row">'+ '<div class="col-4 p-0 font-weight-bold " >Filed By: </div><div class="col-8 p-0 hover-shareholder tooltip-custom copy-details"><div class="copy-text">'+funds[i].filed_by_name+'</div><span class="tooltiptext">Click To Copy</span></div>'+ '<div class="col-4 p-0 font-weight-bold" >Address: </div><div class="col-8 p-0 hover-shareholder tooltip-custom copy-details"><div class="copy-text">'+funds[i].address+'</div><span class="tooltiptext">Click To Copy</span></div>'+ '<div class="col-4 p-0 font-weight-bold" >Phone: </div><div class="col-8 p-0 hover-shareholder tooltip-custom copy-details"><div class="copy-text">'+funds[i].phone+'</div><span class="tooltiptext">Click To Copy</span></div>'+ '</div></div>' return text_tooltip; //return $('#po' + id).html(); } }); if (insider_ownership.length != 0) { for (var i = 0; i < insider_ownership.length; i++) { tr = '<tr id="tr_doc">' tr += '<td class="success fund text-uppercase">' + insider_ownership[i].owner + '</td>' tr += '<td class = "fund-shares" >' + numberWithCommasNoDecimal(insider_ownership[i].position) + '</td>' tr += '<td class="fund-value">' + numberWithCommasNoDecimal(insider_ownership[i].current_direct_shares) + '</td>' tr += '<td class="fund-value">' + numberWithCommasNoDecimal(insider_ownership[i].current_indirect_shares) + '</td>' tr += '</tr>' $('#insider_ownership_table tbody').append(tr) } } else { $('#insider_ownership_table tbody').append('No Data Found') } $("#executiveModalLabelTitle").text("Executives of Trilogy Metals Inc. - as per the latest proxy") $('#executive-button table').addClass('table') $('#executive-button table tr:first-child').css('background-color', '#4FC3A1') $('#executive-button table tr td').css('border-right', 'none') $('#executive-button table').addClass('fl-table') $('#executive-button table').attr('border', '0') color = '#4FC3A1'; no = 0; $('#executive-button table tr:first-child td').each(function () { text = $(this).text(); text = text.replace(/\u200B/g, ''); text = text.replace(/[\u200B-\u200D\uFEFF]/g, ''); if (text.trim() == '') { $(this).css('background-color', color) if (no == 0) color = '#324960' } else { if (color == '#4FC3A1') color = '#324960' else color = '#4FC3A1' $(this).css('background-color', color) } no++; }) const table = document.querySelector('#executive-button table'); dates = data.data.yearly_years; ended_lst = data.data.ended_lst; finance_data_section = data.data.finance_data_section; finance_data_value = data.data.finance_data_value; finance_data_label = data.data.finance_data_label; f_data = data.data.f_data; }) } }) </script> </div> </div> </div> </body> <script crossorigin="anonymous" defer integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" src="/static/bootstrap/js/popper.min.js"></script> <script defer src="/static/bootstrap/js/bootstrap.min.js"></script> <script defer src="/static/bootstrap/js/custom.min.js"></script> <script> var today_date = new Date(); today_date.setHours(0); today_date.setMinutes(0); today_date.setSeconds(0); $(document).ready(function() { $('#load-div-graph').show() finance_table_div = $('#finance_table_div') if (finance_table_div.length > 0) { fetch_live_stock_data(initial_call = 'true') setInterval(function() { fetch_live_stock_data() }, 30000) } serverStartTime = new Date("") moment_current_time = moment().tz("America/New_York"); moment_server_time = moment(serverStartTime).tz("America/New_York") var server_difference = (moment_current_time.diff(moment_server_time) / 1000).toFixed(2); var endTime = new Date(); var difference = ((endTime - startTime) / 1000).toFixed(2); //var serverdiff = ((endTime - serverStartTime)/1000).toFixed(2); $('#load_time').text(server_difference + ' s/' + difference + ' s') //MOBILE ONE AND MOBILE THREE var menu = "close"; $(".mobile-one .menu-toggle, .mobile-three .menu-toggle").click(function() { if (menu === "close") { $(this).parent().next(".mobile-nav").css("transform", "translate(0, 0)"); menu = "open"; } else { $(this).parent().next(".mobile-nav").css("transform", "translate(-100%, 0)"); menu = "close"; } }); }) function openNav() { document.getElementById("mySidebar").style.width = "250px"; // document.getElementById("main").style.marginLeft = "250px"; } function closeNav() { document.getElementById("mySidebar").style.width = "0"; // document.getElementById("main").style.marginLeft= "0"; } function change_selected_view(element) { site_view = element.value; if (document.getElementById('site_view').length == 3) { if (site_view === 'filing') { href = window.location.href href = href.split('/') href = href.slice(0, 3).join('/') + '/' + href.slice(-1) window.location.href = href } else { href = window.location.href href = href.split('/') href = href.slice(0, 3).join('/') + '/snapshot/' + href.slice(-1) window.location.href = href } } else if (site_view === 'filing') { href = window.location.href href = href.split('/') href = href.slice(0, 3).join('/') + '/' + href.slice(-1)[0].split('#')[0] window.location.href = href } else { href = window.location.href href = href.split('/') if (href.slice(-1) !== '') { ticker = href.slice(-2, -1) if (ticker[0].length == 1 && /^[1-9]+$/.test(ticker)) { ticker = href.slice(-1) } else if (!/^[a-zA-Z]+$/.test(ticker)) { ticker = href.slice(-3, -2) } } else { ticker = href.slice(-1) } href = href.slice(0, 3).join('/') + '/snapshot/' + ticker window.location.href = href } } function load_document(filedata) { // read text from URL location var request = new XMLHttpRequest(); request.open('GET', filedata.path, true); request.send(null); $('#second #load-div').show(); request.onreadystatechange = function() { if (request.readyState === 4 && request.status === 200) { var type = request.getResponseHeader('Content-Type'); if (type.indexOf("text") !== 1) { $('#load-div').hide(); $("#second").empty(); second = document.getElementById('second') second.insertAdjacentHTML('beforeend', request.responseText) second.scrollTop = 00; $("#filing-title").empty(); $('#filing-title').append(filedata.file_title); return true } } } } function fetch_history_graph_data(element) { ticker = window.location.href.split('/').slice(-1)[0] graph = localStorage.getItem('graph_' + ticker + today_date); if (graph) { $('#graph_div')[0].innerHTML = ''; $('#graph_div').append(graph); } else { localStorage.clear(); fetch("/fetch_history_graph_data", { headers: { "X-CSRFToken": document.getElementById("csrf") .querySelector("input") .value, 'Content-type': 'application/json' }, method: "POST", body: JSON.stringify({ "ticker": ticker, "years": '1y' }) }) .then(response => response.json()) .then(function(data) { $('#load-div-graph').hide() $('#graph_div').append(data.graph); fetch("/fetch_history_graph_data", { headers: { "X-CSRFToken": document.getElementById("csrf") .querySelector("input") .value, 'Content-type': 'application/json' }, method: "POST", body: JSON.stringify({ "ticker": ticker, "years": '10y' }) }) .then(response => response.json()) .then(function(data) { $('#load-div-graph').hide() $('#finance_table_div').append(data.table); $('#graph_div')[0].innerHTML = ''; $('#graph_div').append(data.graph); localStorage.setItem('graph_' + ticker + today_date, data.graph); }) }) } } function fetch_history_table_data(element) { table = localStorage.getItem('table_' + ticker + today_date); if (table) { $('#finance_table_div').append(table); } else { fetch("/fetch_history_table_data", { headers: { "X-CSRFToken": document.getElementById("csrf") .querySelector("input") .value, 'Content-type': 'application/json' }, method: "POST", body: JSON.stringify({ "ticker": window.location.href.split('/').slice(-1)[0], }) }) .then(response => response.json()) .then(function(data) { $('#finance_table_div').append(data.table); localStorage.setItem('table_' + ticker + today_date, data.table); }) } } function fetch_live_stock_data(initial_call = '') { let options = { timeZone: 'America/New_York', hour: 'numeric', minute: 'numeric', second: 'numeric', }; let formatter = new Intl.DateTimeFormat([], options); // "09:00:00" < currentTime < "16:00:00" or forced initial_call const currentTime = String(formatter.format(new Date())); if ((currentTime > '09:00:00' && currentTime < '16:00:00') || initial_call) { fetch("/fetch_live_stock_data", { headers: { "X-CSRFToken": document.getElementById("csrf").querySelector("input").value, "Content-type": "application/json" }, method: "POST", body: JSON.stringify({ // e.g. ticker is last part of the URL "ticker": window.location.href.split('/').slice(-1)[0] }) }) .then(response => response.json()) .then(function(data) { // Sanitize/format the incoming data so no double minus signs, etc. const cleanPrice = sanitizePrice(data.price); const cleanChange = sanitizeChange(data.change, data.change_type); // Update DOM $("#stock_price").empty().append(cleanPrice); $("#stock_price_difference").empty().append( `<div class="stock_${data.change_type}">${cleanChange}</div>` ); // Exchange name if (data.exchange) { $('#exchange_name').text(`(${data.exchange})`); } }) .catch(err => console.error("Error fetching stock data:", err)); } } /** * e.g. turns "$236.8500" into "$236.85" */ function sanitizePrice(rawPrice) { // Remove everything except digits, minus, plus, decimal let numeric = parseFloat(rawPrice.replace(/[^\d.-]/g, '')) || 0; return `$${numeric.toFixed(2)}`; } /** * Normalizes the change string. * Example: raw = "- $-5.8500 (-2.4104%)", changeType="loss" => "-5.85 (-2.41%)" * If changeType="gain", we might do "+5.85 (+2.41%)" instead. */ function sanitizeChange(rawChange, changeType) { // Regex tries to capture something like: "- $-5.8500 (-2.4104%)" // Group 1: optional sign before dollar // Group 2: optional sign + digits for the numeric difference // Group 3: optional sign + digits + % for the parenthetical part // // We'll parse them out, strip extra signs, and reapply a single sign // based on "changeType" (e.g. "loss" => "-"). // const re = /^(-?)\s*\$?(-?[\d.]+)\s*\((-?[\d.]+%)\)\s*$/; const match = rawChange.trim().match(re); if (!match) { // If it doesn't match, fallback: just strip out extra non-digit // and reapply sign from changeType return fallbackClean(rawChange, changeType); } // e.g. match[1] = "-" // match[2] = "-5.8500" // match[3] = "-2.4104%" let diffVal = parseFloat(match[2].replace(/[^\d.-]/g, '')) || 0; let pctVal = parseFloat(match[3].replace(/[^\d.-]/g, '')) || 0; // Decide sign from "changeType" const sign = (changeType === "loss") ? "-" : "+"; // Build final difference & percentage const finalDiff = `${sign}${Math.abs(diffVal).toFixed(2)}`; // e.g. "-5.85" const finalPct = `${sign}${Math.abs(pctVal).toFixed(2)}%`; // e.g. "(-2.41%)" return `${finalDiff} (${finalPct})`; } /** * If the data doesn't match our regex, do a simpler approach: * - strip all non-numerics except sign * - parse & reapply sign from changeType */ function fallbackClean(rawStr, changeType) { let numericVal = parseFloat(rawStr.replace(/[^\d.-]/g, '')) || 0; let sign = (changeType === "loss") ? "-" : "+"; return `${sign}${Math.abs(numericVal).toFixed(2)}`; } </script> </html>