AIdentity

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 51335923b25bec767bc08e3a358d044a643b76ae
parent 0a064c07fb6a119fd8d9061bc724f6c97c624c8c
Author: minerva-jupiter <ryouturn@gmail.com>
Date:   Sat,  1 Nov 2025 00:20:42 +0900

feat(app): Introduce quiz and flame effect stages, refine initial chat audio

Diffstat:
Mapp/components/1_chat.tsx | 575+++++++++++++++++++++++++++++++++++--------------------------------------------
Mapp/components/2_draw.tsx | 429+++++++++++++++++++++++++++++++++++++------------------------------------------
Mapp/components/6_chat.tsx | 508+++++++++++++++++++++++++++++--------------------------------------------------
Aapp/components/8_flameText.tsx | 179+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mapp/ctrl/page.tsx | 4++--
Mrust-wasm/Cargo.lock | 42++++++++++++++++++++++++++++++++++++------
Mrust-wasm/Cargo.toml | 1+
Mrust-wasm/pkg/rust_wasm.d.ts | 8++++----
Mrust-wasm/pkg/rust_wasm.js | 55+++++++++++++++++++++++++------------------------------
Mrust-wasm/pkg/rust_wasm_bg.wasm | 0
Mrust-wasm/pkg/rust_wasm_bg.wasm.d.ts | 7++++---
Mrust-wasm/src/lib.rs | 143+++++++++++++++++++++++++++++++++++--------------------------------------------
Atarget/rust-analyzer/flycheck0/stderr | 12++++++++++++
Atarget/rust-analyzer/flycheck0/stdout | 149+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
14 files changed, 1116 insertions(+), 996 deletions(-)

diff --git a/app/components/1_chat.tsx b/app/components/1_chat.tsx @@ -1,360 +1,299 @@ -'use client'; - -import React, { useState, useRef, useEffect, KeyboardEvent, useCallback } from 'react'; -import { StageProps } from '../ctrl/page.tsx'; -import init, { chat } from '../../rust-wasm/pkg/rust_wasm.js'; - -// useWebAudioControllerの代替となるカスタムフックを定義 +"use client"; +import React, { + KeyboardEvent, + useCallback, + useEffect, + useRef, + useState, +} from "react"; +import { StageProps } from "../ctrl/page.tsx"; +import init, { chat } from "../../rust-wasm/pkg/rust_wasm.js"; +/** + * カスタムフック: 最初の音源を再生し、終了後にonAudioEndを実行する + */ const useAudioPlayback = ( - initialTalktime: number, + initialAudioId: number, // 1 audioSources: Record<number, string>, onAudioEnd: () => void, ) => { - // Audioオブジェクトの参照を保持 - const audioRef = useRef<HTMLAudioElement | null>(null); - // 現在のトークタイムを保持し、変更を監視するためのState - const talktimesRef = useRef(initialTalktime); - const [currentAudioUrl, setCurrentAudioUrl] = useState(audioSources[initialTalktime] || ''); - - // 外部から再生を停止するための関数 - const stop = useCallback(() => { - if (audioRef.current) { - audioRef.current.pause(); - audioRef.current.currentTime = 0; // 最初に戻す - } - }, []); - - // 外部からループ設定を変更するための関数(AudioRefのcurrentが更新されるたびに適用される) - const setLoop = useCallback((isLooping: boolean) => { - // audioRef.currentが存在する場合にのみ設定を試みる - if (audioRef.current) { - audioRef.current.loop = isLooping; - } - }, []); // 依存配列は空でOK - - // 1. Audioオブジェクトの初期化、クリーンアップ、および終了イベント処理 - useEffect(() => { - // 古い音源を停止 - stop(); + const audioRef = useRef<HTMLAudioElement | null>(null); + const initialAudioUrl = audioSources[initialAudioId] || ""; + + // 外部から再生を停止するための関数 + const stop = useCallback(() => { + if (audioRef.current) { + audioRef.current.pause(); + audioRef.current.currentTime = 0; + } + }, []); - const audio = new Audio(currentAudioUrl); - audioRef.current = audio; - audio.volume = 0.5; // 必要に応じて音量を設定 - - // 常に最新のtalktimesRef.currentに基づいてループ設定 - const isLooping = talktimesRef.current < 4; - audio.loop = isLooping; - setLoop(isLooping); // 念のため - - // 自動再生の試行 (ユーザーのインタラクションが必要なため、失敗する可能性あり) - audio.play().catch(e => { - console.error("Audio playback error on URL change/init:", e); - // ユーザーのインタラクションがない場合は再生できないため、ここではエラーを無視するか、ユーザーに操作を促す - }); - - - const handleEnded = () => { - const currentTalktime = talktimesRef.current; - - // 終了条件を満たしている場合は停止し、onAudioEndを実行 - if (currentTalktime >= 4) { - console.log("最終音源の再生が終了しました。onAudioEndを実行します。"); - stop(); - onAudioEnd(); - return; - } - - // ループがtrueの場合はonendedは呼ばれないはずだが、フォールバックとして再再生を試みる - if (!audio.loop) { - console.log(`音源 ${currentTalktime} の再生が終了しました。ループ再生を再開します。`); - audio.play().catch(e => console.error("Audio playback error on loop restart:", e)); - } - }; - - audio.addEventListener('ended', handleEnded); - - // コンポーネントがアンマウントされる際のクリーンアップ - return () => { - audio.removeEventListener('ended', handleEnded); - audio.pause(); - // audioRef.current = null; // Audioオブジェクトが再生成されるため、ここではnullにしない - }; - }, [currentAudioUrl, onAudioEnd, stop, setLoop]); // currentAudioUrlが変わるとAudioオブジェクトが再生成される - - // 2. talktimesRef.currentの変更を監視し、音源の切り替えを行う - useEffect(() => { - const currentTalktime = talktimesRef.current; - const newAudioUrl = audioSources[currentTalktime]; - - console.log("talktimesRef is ", currentTalktime); - - if (newAudioUrl && newAudioUrl !== currentAudioUrl) { - // URLが変わったら、Audioオブジェクトを再生成するためにstateを更新 - // 新しいcurrentAudioUrlで上のuseEffectがトリガーされる - setCurrentAudioUrl(newAudioUrl); - - // 新しい音源に対するループ設定を即座に更新 - const isLooping = currentTalktime < 4; - setLoop(isLooping); - } else if (currentTalktime === initialTalktime && audioRef.current) { - // 初回ロード時のみ、初期音源を再生(ブラウザの制限のため、ユーザー操作後の初回にのみ有効) - audioRef.current.play().catch(e => console.error("Initial audio playback error:", e)); - } - - }, [talktimesRef.current]); - - // 外部からの更新用にtalktimesRefと制御関数を返す - return { talktimesRef, stop, setLoop, currentAudioUrl }; - }; + // 1. Audioオブジェクトの初期化、再生、および終了イベント処理 (一回限りの再生) + useEffect(() => { + if (!initialAudioUrl) { + console.error("Initial audio URL is missing."); + return; + } - const FirstChat: React.FC<StageProps> = ({ onComplete }) => { - return( - <ChatPage onComplete={onComplete}/> - ) - }; + // 既存の音源を停止 + stop(); - export default FirstChat; + const audio = new Audio(initialAudioUrl); + audioRef.current = audio; + audio.loop = false; // ループはしない - const AUDIO_SOURCES: Record<number, string> = { - 1: '/audio/001.wav', - 2: '/audio/002.wav', - 3: '/audio/003.wav', - 4: '/audio/004.wav', - // 5以降は終了条件を満たすため、再生する音源は設定不要 - }; + // 再生終了時のハンドラ: 無条件で onAudioEnd を実行 + const handleEnded = () => { + console.log( + "初期音源の再生が終了しました。onAudioEndを実行します。", + ); + stop(); + onAudioEnd(); // 完了コールバックを実行 + }; - interface Message { - id: number; - text: string; - sender: 'user' | 'ai'; - } + audio.addEventListener("ended", handleEnded); - const initialMessages: Message[] = [ - { id: 1, text: 'そろそろどうするか決めないとだよ?', sender: 'ai' }, - { id: 2, text: 'はやく話して。', sender:'ai'}, - ]; - - const MessageBubble: React.FC<{ message: Message }> = ({ message }) => { - const isUser = message.sender === 'user'; - - const bubbleStyle: React.CSSProperties = { - padding: '10px 15px', - borderRadius: '15px', - maxWidth: '70%', - wordBreak: 'break-word', - fontSize: '16px', - backgroundColor: isUser ? '#3b82f6' : '#e5e7eb', // blue-500 or gray-200 - color: isUser ? 'white' : '#1f2937', // white or gray-800 - marginLeft: isUser ? 'auto' : '0', - marginRight: isUser ? '0' : 'auto', - }; + // 自動再生の試行 (ユーザーのインタラクションが必要なため、失敗する可能性あり) + audio.play().catch((e) => { + console.warn( + "Audio playback failed initially. Waiting for user interaction.", + ); + }); - const containerStyle: React.CSSProperties = { - display: 'flex', - marginBottom: '10px', - justifyContent: isUser ? 'flex-end' : 'flex-start', + // クリーンアップ関数 + return () => { + audio.removeEventListener("ended", handleEnded); + audio.pause(); }; - - return ( - <div style={containerStyle}> - <div style={bubbleStyle}> - {message.text} - </div> - </div> - ); + }, [initialAudioUrl, onAudioEnd, stop]); + + // 外部とのインタフェースは不要になるが、フックの構造を維持 + return { currentAudioId: initialAudioId }; +}; +// ------------------------------------------------------------------ +// 以下、ChatPage およびその他のコンポーネント +// ------------------------------------------------------------------ +const FirstChat: React.FC<StageProps> = ({ onComplete }) => { + return <ChatPage onComplete={onComplete} />; +}; +export default FirstChat; +const AUDIO_SOURCES: Record<number, string> = { + 1: "/audio/001.wav", // 再生される音源はこれのみ +}; +interface Message { + id: number; + text: string; + sender: "user" | "ai"; +} +const initialMessages: Message[] = [ + { id: 1, text: "そろそろどうするか決めないとだよ?", sender: "ai" }, + { id: 2, text: "はやく話して。", sender: "ai" }, +]; +const MessageBubble: React.FC<{ message: Message }> = ({ message }) => { + const isUser = message.sender === "user"; + + const bubbleStyle: React.CSSProperties = { + padding: "10px 15px", + borderRadius: "15px", + maxWidth: "70%", + wordBreak: "break-word", + fontSize: "16px", + backgroundColor: isUser ? "#3b82f6" : "#e5e7eb", // blue-500 or gray-200 + color: isUser ? "white" : "#1f2937", // white or gray-800 + marginLeft: isUser ? "auto" : "0", + marginRight: isUser ? "0" : "auto", }; - const MessageInput: React.FC<{ onSend: (text: string) => void }> = ({ onSend }) => { - const [input, setInput] = useState(''); + const containerStyle: React.CSSProperties = { + display: "flex", + marginBottom: "10px", + justifyContent: isUser ? "flex-end" : "flex-start", + }; - const handleSend = () => { - if (input.trim() === '') return; - onSend(input); - setInput(''); - }; + return ( + <div style={containerStyle}> + <div style={bubbleStyle}> + {message.text} + </div> + </div> + ); +}; +const MessageInput: React.FC<{ onSend: (text: string) => void }> = ( + { onSend }, +) => { + const [input, setInput] = useState(""); - const handleKeyPress = (e: KeyboardEvent<HTMLInputElement>) => { - if (e.key === 'Enter') { - e.preventDefault(); - handleSend(); - } - }; + const handleSend = () => { + if (input.trim() === "") return; + onSend(input); + setInput(""); + }; - const inputStyle: React.CSSProperties = { - flexGrow: 1, - padding: '12px', - border: '1px solid #d1d5db', // gray-300 - borderRadius: '8px', - marginRight: '10px', - fontSize: '16px', - outline: 'none', - }; + const handleKeyPress = (e: KeyboardEvent<HTMLInputElement>) => { + if (e.key === "Enter") { + e.preventDefault(); + handleSend(); + } + }; - const buttonStyle: React.CSSProperties = { - backgroundColor: '#3b82f6', // blue-500 - color: 'white', - border: 'none', - padding: '12px 20px', - borderRadius: '8px', - cursor: 'pointer', - fontWeight: 'bold', - }; + const inputStyle: React.CSSProperties = { + flexGrow: 1, + padding: "12px", + border: "1px solid #d1d5db", // gray-300 + borderRadius: "8px", + marginRight: "10px", + fontSize: "16px", + outline: "none", + }; + const buttonStyle: React.CSSProperties = { + backgroundColor: "#3b82f6", // blue-500 + color: "white", + border: "none", + padding: "12px 20px", + borderRadius: "8px", + cursor: "pointer", + fontWeight: "bold", + }; - return ( - <div style={{ padding: '15px', backgroundColor: '#f9fafb', display: 'flex', alignItems: 'center' }}> + return ( + <div + style={{ + padding: "15px", + backgroundColor: "#f9fafb", + display: "flex", + alignItems: "center", + }} + > <input - type="text" - style={inputStyle} - placeholder="メッセージを入力してください..." - value={input} - onChange={(e) => setInput(e.target.value)} - onKeyDown={handleKeyPress} + type="text" + style={inputStyle} + placeholder="メッセージを入力してください..." + value={input} + onChange={(e) => setInput(e.target.value)} + onKeyDown={handleKeyPress} /> <button - type='submit' - style={buttonStyle} - onClick={handleSend} - disabled={input.trim() === ''} + type="submit" + style={buttonStyle} + onClick={handleSend} + disabled={input.trim() === ""} > - 送信 + 送信 </button> - </div> - ); - }; - - function ChatPage({onComplete}:StageProps) { - const [messages, setMessages] = useState<Message[]>(initialMessages); - const [ dict, setDict ] = useState<Uint8Array|undefined>(undefined); - const messagesEndRef = useRef<HTMLDivElement>(null); - const dictPath = '/system.dic.zst'; - - // for audio - const { talktimesRef } = useAudioPlayback( - 1, // initialTalktime - AUDIO_SOURCES, - onComplete - ); - - useEffect(() => { - messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); - }, [messages]); - - useEffect(() => { - const loadData = async () => { - const loadedDict = await LoadDict(dictPath); - setDict(loadedDict); - } - loadData(); - }, []); - - useEffect(() => { - init(); - }, []); - - const handleSendMessage = useCallback(async (text: string) => { - if (text.trim() === '') return; - - const newUserMessage: Message = { - id: Date.now(), - text, - sender: 'user', - }; - setMessages((prev) => [...prev, newUserMessage]); - let ans = dict == undefined ? 'もっとマシなことを言いなさい。' : chat(dict, text); - if(messages[messages.length - 1].text === ans){ - ans = 'は?'; - }; - const aiResponse: Message = { - id: Date.now() + 1, - text: ans, - sender: 'ai', - }; - setMessages((prev) => [...prev, aiResponse]); - - talktimesRef.current += 1; - - // termination condition - if(talktimesRef.current >= 4){ - return; - } - - }, [dict, talktimesRef ]); - - const pageContainerStyle: React.CSSProperties = { - display: 'flex', - flexDirection: 'column', - height: '100vh', // 全画面の高さ - maxWidth: '800px', // 最大幅を制限して中央に寄せる - margin: '0 auto', - backgroundColor: 'white', - boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)', - }; - - const headerStyle: React.CSSProperties = { - padding: '15px', - backgroundColor: '#3b82f6', // blue-500 - color: 'white', - textAlign: 'center', - fontWeight: 'bold', - fontSize: '20px', + </div> + ); +}; +function ChatPage({ onComplete }: StageProps) { + const [messages, setMessages] = useState<Message[]>(initialMessages); + const [dict, setDict] = useState<Uint8Array | undefined>(undefined); + const messagesEndRef = useRef<HTMLDivElement>(null); + const dictPath = "/system.dic.zst"; + + // for audio: 最初の音源を再生し、終了したら onComplete を呼ぶ + const { currentAudioId } = useAudioPlayback( + 1, // initialAudioId (最初の音源ID) + AUDIO_SOURCES, + onComplete, + ); + + // **注**: talktime の状態は会話継続の要件から削除しました。 + + useEffect(() => { + messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }); + }, [messages]); + + useEffect(() => { + const loadData = async () => { + const loadedDict = await LoadDict(dictPath); + setDict(loadedDict); }; + loadData(); + }, []); - const messageListStyle: React.CSSProperties = { - flexGrow: 1, // 残りのスペースをすべて占める - padding: '15px', - overflowY: 'auto', // スクロール可能にする - }; + useEffect(() => { + init(); + }, []); - // for audio + const handleSendMessage = useCallback(async (text: string) => { + if (text.trim() === "") return; - useEffect(() => { - messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); - }, [messages]); + const newUserMessage: Message = { + id: Date.now(), + text, + sender: "user", + }; + setMessages((prev) => [...prev, newUserMessage]); - useEffect(() => { - const loadData = async () => { - const loadedDict = await LoadDict(dictPath); - setDict(loadedDict); - } - loadData(); - }, []); + let ans = dict == undefined + ? "もっとマシなことを言いなさい。" + : chat(dict, text); + if (messages[messages.length - 1].text === ans) { + ans = "は?"; + } + const aiResponse: Message = { + id: Date.now() + 1, + text: ans, + sender: "ai", + }; + setMessages((prev) => [...prev, aiResponse]); + + // **修正**: talktime のインクリメントと終了条件を削除。会話は継続します。 + }, [dict, messages]); // 依存配列から talktimeState を削除 + + const pageContainerStyle: React.CSSProperties = { + display: "flex", + flexDirection: "column", + height: "100vh", + maxWidth: "800px", + margin: "0 auto", + backgroundColor: "white", + boxShadow: + "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)", + }; - useEffect(() => { - init(); - }, []); + const headerStyle: React.CSSProperties = { + padding: "15px", + backgroundColor: "#3b82f6", + color: "white", + textAlign: "center", + fontWeight: "bold", + fontSize: "20px", + }; - // function ChatPage's return + const messageListStyle: React.CSSProperties = { + flexGrow: 1, + padding: "15px", + overflowY: "auto", + }; - return ( - <div style={pageContainerStyle}> + return ( + <div style={pageContainerStyle}> <div style={headerStyle}> - チャット + チャット </div> <div style={messageListStyle}> - {messages.map((msg) => ( - <MessageBubble key={msg.id} message={msg} /> - ))} - <div ref={messagesEndRef} /> + {messages.map((msg) => ( + <MessageBubble key={msg.id} message={msg} /> + ))} + <div ref={messagesEndRef} /> </div> <MessageInput onSend={handleSendMessage} /> - </div> - ); - } - - async function LoadDict(dictPath: string): Promise<Uint8Array> { - try{ - const response = await fetch(dictPath); - if(!response.ok){ - throw new Error(`fail to fetch file: ${response.statusText}`); - } - const arrayBuffer = await response.arrayBuffer(); - const byte = new Uint8Array(arrayBuffer); - return byte; - } catch (error) { - console.log("error occur",error); + </div> + ); +} +async function LoadDict(dictPath: string): Promise<Uint8Array> { + try { + const response = await fetch(dictPath); + if (!response.ok) { + throw new Error(`fail to fetch file: ${response.statusText}`); } - return new Uint8Array(0); + const arrayBuffer = await response.arrayBuffer(); + const byte = new Uint8Array(arrayBuffer); + return byte; + } catch (error) { + console.log("error occur", error); } + return new Uint8Array(0); +} diff --git a/app/components/2_draw.tsx b/app/components/2_draw.tsx @@ -1,264 +1,249 @@ -'use client' - -import React, { useState, useRef, useCallback, useEffect } from 'react'; -import init, { find_nearest_point_on_path, NearestPointResult } from '../../rust-wasm/pkg/rust_wasm.js'; -import { StageProps } from '../ctrl/page.tsx'; - -type Tool = 'pen'; -type Point = { x: number; y: number; }; - +"use client"; +import React, { useCallback, useEffect, useRef, useState } from "react"; +import init, { + find_nearest_point_on_path, + NearestPointResult, +} from "../../rust-wasm/pkg/rust_wasm.js"; +import { StageProps } from "../ctrl/page.tsx"; +type Tool = "pen"; +type Point = { x: number; y: number }; interface LineData { id: number; tool: Tool; - points: Point[]; - targetPoints: Point[]; + points: Point[]; + targetPoints: Point[]; } - -const BACKGROUND_SVG_PATH_D_DEFAULT = ""; -const VIEWSBOX_SIZE = 500; -const SNAPPING_DISTANCE_PIXELS = 30; - -const AUDIO_SOURCE = '/audio/001.wav'; - -export default function DrawingApp({onComplete}: StageProps) { +const BACKGROUND_SVG_PATH_D_DEFAULT = ""; +const VIEWSBOX_SIZE = 500; +const SNAPPING_DISTANCE_PIXELS = 30; +const AUDIO_SOURCE = "/audio/001.wav"; +export default function DrawingApp({ onComplete }: StageProps) { const [isClient, setIsClient] = useState(false); const lineIdCounter = useRef(0); - const [lines, setLines] = useState<LineData[]>([]); - const [currentLines, setCurrentLines] = useState<LineData[]>([]); - + const [lines, setLines] = useState<LineData[]>([]); + const [currentLines, setCurrentLines] = useState<LineData[]>([]); const [stageWidth, setStageWidth] = useState(0); const [stageHeight, setStageHeight] = useState(0); - const [backgroundPathD, setBackgroundPathD] = useState(BACKGROUND_SVG_PATH_D_DEFAULT); - const [viewBoxSize, setViewBoxSize] = useState(VIEWSBOX_SIZE); - + const [backgroundPathD, setBackgroundPathD] = useState( + BACKGROUND_SVG_PATH_D_DEFAULT, + ); + const [viewBoxSize, setViewBoxSize] = useState(VIEWSBOX_SIZE); const isDrawing = useRef(false); - const animationRef = useRef<number>(0); - const startTimeRef = useRef<number|undefined>(undefined); - + const startTimeRef = useRef<number | undefined>(undefined); const stageRef = useRef<HTMLDivElement>(null); - useEffect(() => { init(); - },[]) - + }, []); // --- 1. サイズ計算とステージ設定 (画面全体を使用) --- useEffect(() => { setIsClient(true); - const handleResize = () => { - if (typeof globalThis !== 'undefined') { + if (typeof globalThis !== "undefined") { setStageWidth(globalThis.innerWidth); setStageHeight(globalThis.innerHeight); } }; - handleResize(); - globalThis.addEventListener('resize', handleResize); - + globalThis.addEventListener("resize", handleResize); return () => { - globalThis.removeEventListener('resize', handleResize); + globalThis.removeEventListener("resize", handleResize); }; }, []); - // --- 2. 座標変換ユーティリティ --- - const scaleToViewBox = useCallback((p: Point): Point => { if (stageWidth === 0 || stageHeight === 0) return p; - const effectiveSize = Math.min(stageWidth, stageHeight); const scale = viewBoxSize / effectiveSize; - const offsetX = (stageWidth - effectiveSize) / 2; const offsetY = (stageHeight - effectiveSize) / 2; - return { x: (p.x - offsetX) * scale, y: (p.y - offsetY) * scale, }; }, [stageWidth, stageHeight, viewBoxSize]); - const scaleToScreen = useCallback((p: Point): Point => { if (stageWidth === 0 || stageHeight === 0) return p; - const effectiveSize = Math.min(stageWidth, stageHeight); const scale = effectiveSize / viewBoxSize; - const offsetX = (stageWidth - effectiveSize) / 2; const offsetY = (stageHeight - effectiveSize) / 2; - return { x: p.x * scale + offsetX, y: p.y * scale + offsetY, }; }, [stageWidth, stageHeight, viewBoxSize]); + const getPointerPosition = useCallback( + ( + e: React.MouseEvent | React.TouchEvent | MouseEvent | TouchEvent, + ): Point | null => { + if (!stageRef.current) return null; + const rect = stageRef.current.getBoundingClientRect(); + let clientX: number, clientY: number; + if ("touches" in e) { + if (e.touches.length === 0) return null; + clientX = e.touches[0].clientX; + clientY = e.touches[0].clientY; + } else { + clientX = e.clientX; + clientY = e.clientY; + } - const getPointerPosition = useCallback((e: React.MouseEvent | React.TouchEvent | MouseEvent | TouchEvent): Point | null => { - if (!stageRef.current) return null; - const rect = stageRef.current.getBoundingClientRect(); - - let clientX: number, clientY: number; - if ('touches' in e) { - if (e.touches.length === 0) return null; - clientX = e.touches[0].clientX; - clientY = e.touches[0].clientY; - } else { - clientX = e.clientX; - clientY = e.clientY; - } - - return { x: clientX - rect.left, y: clientY - rect.top }; - }, []); - + return { x: clientX - rect.left, y: clientY - rect.top }; + }, + [], + ); // --- 3. SVGコンテンツの取得ロジック (DOMParser) --- useEffect(() => { const fetchAndParseSvg = async () => { try { - const response = await fetch('/whiteperson.svg'); + const response = await fetch("/whiteperson.svg"); const svgText = await response.text(); - const parser = new DOMParser(); const doc = parser.parseFromString(svgText, "image/svg+xml"); - - const svgElement = doc.querySelector('svg'); + const svgElement = doc.querySelector("svg"); if (svgElement) { - const viewBoxAttr = svgElement.getAttribute('viewBox'); + const viewBoxAttr = svgElement.getAttribute("viewBox"); if (viewBoxAttr) { const parts = viewBoxAttr.trim().split(/\s+/); if (parts.length === 4) { - const size = Math.max(parseFloat(parts[2]), parseFloat(parts[3])); + const size = Math.max( + parseFloat(parts[2]), + parseFloat(parts[3]), + ); if (!isNaN(size) && size > 0) { setViewBoxSize(size); } } } } - - const pathElements = doc.querySelectorAll('path'); + const pathElements = doc.querySelectorAll("path"); let foundDValue = null; - for (const element of Array.from(pathElements)) { - const dValue = element.getAttribute('d'); + const dValue = element.getAttribute("d"); if (dValue && dValue.trim().length > 0) { foundDValue = dValue; - break; + break; } } - if (foundDValue) { setBackgroundPathD(foundDValue); - return; + return; } - - console.error("Error: <path> element or 'd' attribute not found in whiteperson.svg."); - + console.error( + "Error: <path> element or 'd' attribute not found in whiteperson.svg.", + ); } catch (error) { - console.error("Failed to load or parse whiteperson.svg:", error); + console.error( + "Failed to load or parse whiteperson.svg:", + error, + ); } }; - - if (isClient && backgroundPathD === "") { + if (isClient && backgroundPathD === "") { fetchAndParseSvg(); } }, [isClient, backgroundPathD]); - - // --- 4. 吸着ロジック (WASM呼び出し) --- const calculateNearestTargetPoint = useCallback((p: Point): Point => { const p_viewbox = scaleToViewBox(p); - const effectiveSize = Math.min(stageWidth, stageHeight); - const snapping_distance_viewbox = SNAPPING_DISTANCE_PIXELS * (viewBoxSize / effectiveSize); - + const snapping_distance_viewbox = SNAPPING_DISTANCE_PIXELS * + (viewBoxSize / effectiveSize); // ⚠️ WASM呼び出し - const nearest_viewbox: NearestPointResult | undefined = find_nearest_point_on_path( - backgroundPathD, - p_viewbox.x, - p_viewbox.y, - snapping_distance_viewbox - ); - console.log("nearest_viewbox is ",nearest_viewbox); - + const nearest_viewbox: NearestPointResult | undefined = + find_nearest_point_on_path( + backgroundPathD, + p_viewbox.x, + p_viewbox.y, + snapping_distance_viewbox, + ); + console.log("nearest_viewbox is ", nearest_viewbox); if (nearest_viewbox) { return scaleToScreen(nearest_viewbox); } - return p; - }, [scaleToViewBox, scaleToScreen, stageWidth, stageHeight, viewBoxSize, backgroundPathD]); - + return p; + }, [ + scaleToViewBox, + scaleToScreen, + stageWidth, + stageHeight, + viewBoxSize, + backgroundPathD, + ]); const calculateTargetPoints = useCallback((points: Point[]): Point[] => { - return points.map(p => calculateNearestTargetPoint(p)); + return points.map((p) => calculateNearestTargetPoint(p)); }, [calculateNearestTargetPoint]); - - // --- 5. イベントハンドラ (吹き飛んでいた部分を再定義) --- - /** * マウス・タッチ開始時の処理 */ - const handleMouseDown = useCallback((e: React.MouseEvent | React.TouchEvent) => { - isDrawing.current = true; - const pos = getPointerPosition(e); - if (pos) { - lineIdCounter.current += 1; - const newLine: LineData = { id: lineIdCounter.current, tool: 'pen', points: [pos], targetPoints: [] }; - setLines(prev => [...prev, newLine]); - setCurrentLines(prev => [...prev, newLine]); - } - }, [getPointerPosition]); - + const handleMouseDown = useCallback( + (e: React.MouseEvent | React.TouchEvent) => { + isDrawing.current = true; + const pos = getPointerPosition(e); + if (pos) { + lineIdCounter.current += 1; + const newLine: LineData = { + id: lineIdCounter.current, + tool: "pen", + points: [pos], + targetPoints: [], + }; + setLines((prev) => [...prev, newLine]); + setCurrentLines((prev) => [...prev, newLine]); + } + }, + [getPointerPosition], + ); /** * マウス・タッチ移動時の処理 */ - const handleMouseMove = useCallback((e: React.MouseEvent | React.TouchEvent) => { - if (!isDrawing.current) return; - const point = getPointerPosition(e); - if (!point) return; - - const updateLines = (prevLines: LineData[]) => { - const lastLineIndex = prevLines.length - 1; - if (lastLineIndex < 0) return prevLines; - const lastLine = prevLines[lastLineIndex]; - const newPoints: Point[] = [...lastLine.points, point]; - return [...prevLines.slice(0, lastLineIndex), { ...lastLine, points: newPoints }]; - }; - - setLines(updateLines); - setCurrentLines(updateLines); - - }, [getPointerPosition]); - + const handleMouseMove = useCallback( + (e: React.MouseEvent | React.TouchEvent) => { + if (!isDrawing.current) return; + const point = getPointerPosition(e); + if (!point) return; + const updateLines = (prevLines: LineData[]) => { + const lastLineIndex = prevLines.length - 1; + if (lastLineIndex < 0) return prevLines; + const lastLine = prevLines[lastLineIndex]; + const newPoints: Point[] = [...lastLine.points, point]; + return [...prevLines.slice(0, lastLineIndex), { + ...lastLine, + points: newPoints, + }]; + }; + setLines(updateLines); + setCurrentLines(updateLines); + }, + [getPointerPosition], + ); /** * マウス・タッチ終了時の処理 */ const handleMouseUp = useCallback(() => { isDrawing.current = false; - setLines((prevLines) => { const lastLineIndex = prevLines.length - 1; if (lastLineIndex < 0) return prevLines; const lastLine = prevLines[lastLineIndex]; - const targetPoints = calculateTargetPoints(lastLine.points); - const newLine: LineData = { ...lastLine, - targetPoints: targetPoints, + targetPoints: targetPoints, }; return [...prevLines.slice(0, lastLineIndex), newLine]; }); }, [calculateTargetPoints]); - // --- 6. アニメーションロジック (変更なし) --- - const animateLines = useCallback((timestamp: number) => { if (!startTimeRef.current) startTimeRef.current = timestamp; const elapsed = timestamp - startTimeRef.current; - const duration = 1500; + const duration = 1500; const progress = Math.min(1, elapsed / duration); - const newCurrentLines: LineData[] = lines.map((line) => { if (line.targetPoints.length === 0) return line; - const newPoints: Point[] = line.points.map((originalP, index) => { const targetP = line.targetPoints[index]; return { @@ -266,144 +251,130 @@ export default function DrawingApp({onComplete}: StageProps) { y: originalP.y + (targetP.y - originalP.y) * progress, }; }); - return { ...line, points: newPoints }; }); - setCurrentLines(newCurrentLines); - if (progress < 1) { animationRef.current = requestAnimationFrame(animateLines); } else { startTimeRef.current = undefined; - setLines(newCurrentLines.map(line => ({ - ...line, - points: line.targetPoints, - targetPoints: [] - }))); + setLines(newCurrentLines.map((line) => ({ + ...line, + points: line.targetPoints, + targetPoints: [], + }))); } }, [lines]); - useEffect(() => { const lastLine = lines[lines.length - 1]; - if (lastLine?.targetPoints.length > 0 && startTimeRef.current === undefined) { + if ( + lastLine?.targetPoints.length > 0 && + startTimeRef.current === undefined + ) { startTimeRef.current = undefined; animationRef.current = requestAnimationFrame(animateLines); } - return () => { if (animationRef.current) { cancelAnimationFrame(animationRef.current); } }; }, [lines, animateLines]); - - const pointsToSvgString = (points: Point[]): string => { - return points.map(p => `${p.x},${p.y}`).join(' '); + return points.map((p) => `${p.x},${p.y}`).join(" "); }; - // for audio const audioRef = useRef<HTMLAudioElement | null>(null); - - useEffect(() => { - init(); - },[]) - useEffect(() => { const audio = new Audio(AUDIO_SOURCE); audioRef.current = audio; - const handleAudioEnded = () => { console.log("Audio playback finished. Calling onComplete."); onComplete(); }; - - audio.addEventListener('ended', handleAudioEnded); - + audio.addEventListener("ended", handleAudioEnded); // ユーザーインタラクションの直後に再生を開始 // コンポーネントがロードされただけではブラウザの制限で再生できないため、 // ユーザーの最初の描画操作をトリガーとして再生を開始するのがより安全ですが、 // 今回はシンプルにロード時に再生を試みます。 const playAudio = () => { - audio.play().catch(e => console.log("Audio playback failed (may require user interaction):", e)); + audio.play().catch((e) => + console.log( + "Audio playback failed (may require user interaction):", + e, + ) + ); }; - // ロード完了を待って再生を試みる audio.oncanplaythrough = playAudio; - // アンマウント時のクリーンアップ return () => { audio.pause(); - audio.removeEventListener('ended', handleAudioEnded); + audio.removeEventListener("ended", handleAudioEnded); audioRef.current = null; }; - }, [onComplete]); - + }, []); return ( <div - ref={stageRef} - style={{ - width: stageWidth, - height: stageHeight, - margin: 0, - position: 'fixed', - top: 0, - left: 0, - overflow: 'hidden', - touchAction: 'none', - }} - onMouseDown={handleMouseDown} - onMouseMove={handleMouseMove} - onMouseUp={handleMouseUp} - onTouchStart={handleMouseDown} - onTouchMove={handleMouseMove} - onTouchEnd={handleMouseUp} + ref={stageRef} + style={{ + width: stageWidth, + height: stageHeight, + margin: 0, + position: "fixed", + top: 0, + left: 0, + overflow: "hidden", + touchAction: "none", + }} + onMouseDown={handleMouseDown} + onMouseMove={handleMouseMove} + onMouseUp={handleMouseUp} + onTouchStart={handleMouseDown} + onTouchMove={handleMouseMove} + onTouchEnd={handleMouseUp} > - {/* 1. 背景のSVG (模倣対象) */} - {backgroundPathD && ( - <svg - width={stageWidth} - height={stageHeight} - viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`} - style={{ position: 'absolute' }} - preserveAspectRatio="xMidYMid meet" + {/* 1. 背景のSVG (模倣対象) */} + {backgroundPathD && ( + <svg + width={stageWidth} + height={stageHeight} + viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`} + style={{ position: "absolute" }} + preserveAspectRatio="xMidYMid meet" + > + <path + d={backgroundPathD} + fill="none" + stroke="white" + strokeWidth="5" + opacity="0.2" + /> + </svg> + )} + + {/* 2. ユーザーの描画 (アニメーション表示用) */} + <svg + width={stageWidth} + height={stageHeight} + viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`} + style={{ position: "absolute", top: 0, left: 0 }} + preserveAspectRatio="xMidYMid meet" > - <path - d={backgroundPathD} - fill="none" - stroke="white" - strokeWidth="5" - opacity="0.2" - /> + {currentLines.map((line) => ( + <polyline + key={line.id} + points={pointsToSvgString( + line.points.map(scaleToViewBox), + )} + fill="none" + stroke="#FF4500" + strokeWidth="3" + strokeLinecap="round" + strokeLinejoin="round" + /> + ))} </svg> - )} - - {/* 2. ユーザーの描画 (アニメーション表示用) */} - <svg width={stageWidth} height={stageHeight} viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`} style={{ position: 'absolute', top: 0, left: 0 }} - preserveAspectRatio="xMidYMid meet" - > - {currentLines.map((line) => ( - <polyline - key={line.id} - points={pointsToSvgString(line.points.map(scaleToViewBox))} - fill="none" - stroke="#FF4500" - strokeWidth="3" - strokeLinecap="round" - strokeLinejoin="round" - /> - ))} - </svg> - - <button - type="submit" - onClick={onComplete} - style={{ position: 'fixed', bottom: 10, left: 10 }} - > - 完了 (onComplete) - </button> </div> ); } - diff --git a/app/components/6_chat.tsx b/app/components/6_chat.tsx @@ -1,356 +1,214 @@ -'use client'; - -import React, { useState, useRef, useEffect, KeyboardEvent, useCallback } from 'react'; -import { StageProps } from '../ctrl/page.tsx'; -import init, { chat2 } from '../../rust-wasm/pkg/rust_wasm.js'; - -// useWebAudioControllerの代替となるカスタムフックを定義 -const useAudioPlayback = ( - initialTalktime: number, - audioSources: Record<number, string>, - onAudioEnd: () => void, -) => { - // Audioオブジェクトの参照を保持 +import React, { + forwardRef, + KeyboardEvent, + useEffect, + useImperativeHandle, + useRef, + useState, +} from "react"; +// 質問データ型を拡張し、音源のURLを追加 +export type QuestionWithAudio = { + input: string; // 質問文 + ans: string; // 正しい回答 + audioUrl: string; // 質問に関連付けられた音源のURL +}; +// 親コンポーネントからアクセスするためのRef型 +export interface QuestionAnswerRef { + // 外部からの操作は不要なため空のまま +} +interface QuestionAnswerProps { + questions: QuestionWithAudio[]; + onComplete: () => void; // 全質問完了時のコールバック +} +const QuestionAnswer = forwardRef<QuestionAnswerRef, QuestionAnswerProps>( + ({ questions, onComplete }, ref) => { + // 現在の質問のインデックス + const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0); + // ユーザーの現在の回答 + const [currentAnswer, setCurrentAnswer] = useState(""); + // エラーメッセージ + const [errorMessage, setErrorMessage] = useState(""); + // Audioオブジェクトのインスタンスを保持するためのRef const audioRef = useRef<HTMLAudioElement | null>(null); - // 現在のトークタイムを保持し、変更を監視するためのState - const talktimesRef = useRef(initialTalktime); - const [currentAudioUrl, setCurrentAudioUrl] = useState(audioSources[initialTalktime] || ''); - // 外部から再生を停止するための関数 - const stop = useCallback(() => { - if (audioRef.current) { - audioRef.current.pause(); - audioRef.current.currentTime = 0; // 最初に戻す - } - }, []); + // **注**: 最新のステートを参照するためのRefは、回答完了時の複雑なロジックを削除するため、ここでは不要になりますが、 + // 回答ロジックのシンプルな遷移のために、念のため残しておきます。 + const latestStateRef = useRef({ + answerLength: 0, + questionIndex: 0, + isAnswerComplete: false, + }); - // 外部からループ設定を変更するための関数(AudioRefのcurrentが更新されるたびに適用される) - const setLoop = useCallback((isLooping: boolean) => { - // audioRef.currentが存在する場合にのみ設定を試みる - if (audioRef.current) { - audioRef.current.loop = isLooping; - } - }, []); // 依存配列は空でOK + const currentQuestion = questions[currentQuestionIndex]; - // 1. Audioオブジェクトの初期化、クリーンアップ、および終了イベント処理 - useEffect(() => { - // 古い音源を停止 - stop(); - - const audio = new Audio(currentAudioUrl); - audioRef.current = audio; - audio.volume = 0.5; // 必要に応じて音量を設定 + if (!currentQuestion) { + return <div className="p-4">🎉 すべての質問が完了しました!</div>; + } - // 常に最新のtalktimesRef.currentに基づいてループ設定 - const isLooping = talktimesRef.current < 4; - audio.loop = isLooping; - setLoop(isLooping); // 念のため + const { input: questionText, ans: correctAnswer, audioUrl } = + currentQuestion; + const nextCorrectKey = correctAnswer[currentAnswer.length]; - // 自動再生の試行 (ユーザーのインタラクションが必要なため、失敗する可能性あり) - audio.play().catch(e => { - console.error("Audio playback error on URL change/init:", e); - // ユーザーのインタラクションがない場合は再生できないため、ここではエラーを無視するか、ユーザーに操作を促す - }); + // ステートが更新されるたびにRefを更新する (回答完了判定には使わない) + useEffect(() => { + latestStateRef.current = { + answerLength: currentAnswer.length, + questionIndex: currentQuestionIndex, + isAnswerComplete: currentAnswer.length === correctAnswer.length, + }; + }, [currentAnswer.length, currentQuestionIndex, correctAnswer.length]); + // Refから親コンポーネントに公開するメソッド(今回はnextQuestionの外部からの使用は非推奨) + useImperativeHandle(ref, () => ({ + // ここでは何もしない + })); - const handleEnded = () => { - const currentTalktime = talktimesRef.current; + // 質問インデックスが変更されたとき、またはコンポーネントがマウントされたときに音源をロード/再生 + useEffect(() => { + // 既存のAudioがあれば、onendedリスナーを解除して停止 + if (audioRef.current) { + audioRef.current.pause(); + audioRef.current.currentTime = 0; + audioRef.current.onended = null; + } - // 終了条件を満たしている場合は停止し、onAudioEndを実行 - if (currentTalktime >= 4) { - console.log("最終音源の再生が終了しました。onAudioEndを実行します。"); - stop(); - onAudioEnd(); - return; - } + // 新しいAudioオブジェクトを作成または既存のものを使用 + const audio = audioRef.current || new Audio(); + audioRef.current = audio; - // ループがtrueの場合はonendedは呼ばれないはずだが、フォールバックとして再再生を試みる - if (!audio.loop) { - console.log(`音源 ${currentTalktime} の再生が終了しました。ループ再生を再開します。`); - audio.play().catch(e => console.error("Audio playback error on loop restart:", e)); + // 新しい音源をロード + audio.src = audioUrl; + audio.load(); + + // 再生終了時のハンドラ: 無条件に次の質問へ強制移行するロジックに変更 + audio.onended = (event: Event) => { + // 再生終了時の最新の質問インデックスを取得 + const currentQuestionIdx = latestStateRef.current.questionIndex; + const nextIndex = currentQuestionIdx + 1; + + if (nextIndex < questions.length) { + // 次の質問へ (音源再生終了を待って強制的に移行) + setCurrentQuestionIndex(nextIndex); + setCurrentAnswer(""); + setErrorMessage(""); + } else { + // 最後の質問の音源再生終了後、onCompleteを実行して終了 + onComplete(); } }; - audio.addEventListener('ended', handleEnded); + // 新しい音源の再生を開始 + audio.play().catch((e) => + console.error("Audio playback failed on initial play:", e) + ); - // コンポーネントがアンマウントされる際のクリーンアップ + // クリーンアップ関数 return () => { - audio.removeEventListener('ended', handleEnded); - audio.pause(); - // audioRef.current = null; // Audioオブジェクトが再生成されるため、ここではnullにしない + if (audioRef.current) { + audioRef.current.onended = null; + audioRef.current.pause(); + } }; - }, [currentAudioUrl, onAudioEnd, stop, setLoop]); // currentAudioUrlが変わるとAudioオブジェクトが再生成される - - // 2. talktimesRef.currentの変更を監視し、音源の切り替えを行う - useEffect(() => { - const currentTalktime = talktimesRef.current; - const newAudioUrl = audioSources[currentTalktime]; - - console.log("talktimesRef is ", currentTalktime); - - if (newAudioUrl && newAudioUrl !== currentAudioUrl) { - // URLが変わったら、Audioオブジェクトを再生成するためにstateを更新 - // 新しいcurrentAudioUrlで上のuseEffectがトリガーされる - setCurrentAudioUrl(newAudioUrl); - - // 新しい音源に対するループ設定を即座に更新 - const isLooping = currentTalktime < 4; - setLoop(isLooping); - } else if (currentTalktime === initialTalktime && audioRef.current) { - // 初回ロード時のみ、初期音源を再生(ブラウザの制限のため、ユーザー操作後の初回にのみ有効) - audioRef.current.play().catch(e => console.error("Initial audio playback error:", e)); - } + }, [currentQuestionIndex, questions.length, audioUrl]); // 依存配列は音源切り替えに必要なもののみ - }, [talktimesRef.current]); - - // 外部からの更新用にtalktimesRefと制御関数を返す - return { talktimesRef, stop, setLoop, currentAudioUrl }; - }; - - const FirstChat: React.FC<StageProps> = ({ onComplete }) => { - return( - <ChatPage onComplete={onComplete}/> - ) - }; - - export default FirstChat; - - const AUDIO_SOURCES: Record<number, string> = { - 1: '/audio/001.wav', - 2: '/audio/002.wav', - 3: '/audio/003.wav', - 4: '/audio/004.wav', - // 5以降は終了条件を満たすため、再生する音源は設定不要 - }; - - interface Message { - id: number; - text: string; - sender: 'user' | 'ai'; - } - - const initialMessages: Message[] = [ - { id: 1, text: 'どうせ私のこと、うっさいな死ねよくらいに思ってんでしょ?', sender: 'ai' }, - ]; - - const MessageBubble: React.FC<{ message: Message }> = ({ message }) => { - const isUser = message.sender === 'user'; - - const bubbleStyle: React.CSSProperties = { - padding: '10px 15px', - borderRadius: '15px', - maxWidth: '70%', - wordBreak: 'break-word', - fontSize: '16px', - backgroundColor: isUser ? '#3b82f6' : '#e5e7eb', // blue-500 or gray-200 - color: isUser ? 'white' : '#1f2937', // white or gray-800 - marginLeft: isUser ? 'auto' : '0', - marginRight: isUser ? '0' : 'auto', - }; - - const containerStyle: React.CSSProperties = { - display: 'flex', - marginBottom: '10px', - justifyContent: isUser ? 'flex-end' : 'flex-start', - }; - - return ( - <div style={containerStyle}> - <div style={bubbleStyle}> - {message.text} - </div> - </div> - ); - }; - - const MessageInput: React.FC<{ onSend: (text: string) => void }> = ({ onSend }) => { - const [input, setInput] = useState(''); - - const handleSend = () => { - if (input.trim() === '') return; - onSend(input); - setInput(''); - }; - - const handleKeyPress = (e: KeyboardEvent<HTMLInputElement>) => { - if (e.key === 'Enter') { + // キー入力時のハンドラ: 回答ロジックのみを保持し、音源制御は削除 + const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => { + // エンターキーなど、特殊なキーのデフォルト動作を防ぐ + if (e.key === "Enter") { e.preventDefault(); - handleSend(); - } - }; - - const inputStyle: React.CSSProperties = { - flexGrow: 1, - padding: '12px', - border: '1px solid #d1d5db', // gray-300 - borderRadius: '8px', - marginRight: '10px', - fontSize: '16px', - outline: 'none', - }; - - const buttonStyle: React.CSSProperties = { - backgroundColor: '#3b82f6', // blue-500 - color: 'white', - border: 'none', - padding: '12px 20px', - borderRadius: '8px', - cursor: 'pointer', - fontWeight: 'bold', - }; - - - return ( - <div style={{ padding: '15px', backgroundColor: '#f9fafb', display: 'flex', alignItems: 'center' }}> - <input - type="text" - style={inputStyle} - placeholder="メッセージを入力してください..." - value={input} - onChange={(e) => setInput(e.target.value)} - onKeyDown={handleKeyPress} - /> - <button - type='submit' - style={buttonStyle} - onClick={handleSend} - disabled={input.trim() === ''} - > - 送信 - </button> - </div> - ); - }; - - function ChatPage({onComplete}:StageProps) { - const [messages, setMessages] = useState<Message[]>(initialMessages); - const [ dict, setDict ] = useState<Uint8Array|undefined>(undefined); - const messagesEndRef = useRef<HTMLDivElement>(null); - const dictPath = '/system.dic.zst'; - - // for audio - const { talktimesRef } = useAudioPlayback( - 1, // initialTalktime - AUDIO_SOURCES, - onComplete - ); - - useEffect(() => { - messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); - }, [messages]); - - useEffect(() => { - const loadData = async () => { - const loadedDict = await LoadDict(dictPath); - setDict(loadedDict); + return; } - loadData(); - }, []); - - useEffect(() => { - init(); - }, []); - - const handleSendMessage = useCallback(async (text: string) => { - if (text.trim() === '') return; - - const newUserMessage: Message = { - id: Date.now(), - text, - sender: 'user', - }; - setMessages((prev) => [...prev, newUserMessage]); - const ans = dict == undefined ? 'みんなはもうできてるのに、なんでできないの?' : chat2(dict, text); - const aiResponse: Message = { - id: Date.now() + 1, - text: ans, - sender: 'ai', - }; - setMessages((prev) => [...prev, aiResponse]); - - talktimesRef.current += 1; - // termination condition - if(talktimesRef.current >= 4){ + // 回答が既に完了している場合は入力を無視 + if (currentAnswer.length >= correctAnswer.length) { + e.preventDefault(); return; } - }, [dict, talktimesRef ]); + if (e.key === nextCorrectKey) { + e.preventDefault(); // デフォルトの入力をキャンセル + setErrorMessage(""); // エラーをクリア - const pageContainerStyle: React.CSSProperties = { - display: 'flex', - flexDirection: 'column', - height: '100vh', // 全画面の高さ - maxWidth: '800px', // 最大幅を制限して中央に寄せる - margin: '0 auto', - backgroundColor: 'white', - boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)', - }; + const newAnswer = currentAnswer + e.key; + setCurrentAnswer(newAnswer); - const headerStyle: React.CSSProperties = { - padding: '15px', - backgroundColor: '#3b82f6', // blue-500 - color: 'white', - textAlign: 'center', - fontWeight: 'bold', - fontSize: '20px', - }; - - const messageListStyle: React.CSSProperties = { - flexGrow: 1, // 残りのスペースをすべて占める - padding: '15px', - overflowY: 'auto', // スクロール可能にする - }; - - // for audio - - useEffect(() => { - messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); - }, [messages]); - - useEffect(() => { - const loadData = async () => { - const loadedDict = await LoadDict(dictPath); - setDict(loadedDict); + // 回答完了後も、音源が終了するまで質問は切り替わらない + if (newAnswer.length === correctAnswer.length) { + // 回答完了時の視覚的な遅延のみを保持 (音源制御は行わない) + // *注意*: 音源終了時に自動で次の質問へ進むため、ここでは何もしません + } + } else { + e.preventDefault(); // デフォルトの入力をキャンセル + setErrorMessage("🚫 その回答は正しくありません"); } - loadData(); - }, []); - - useEffect(() => { - init(); - }, []); - - // function ChatPage's return + }; return ( - <div style={pageContainerStyle}> - <div style={headerStyle}> - チャット - </div> - - <div style={messageListStyle}> - {messages.map((msg) => ( - <MessageBubble key={msg.id} message={msg} /> - ))} - <div ref={messagesEndRef} /> - </div> - - <MessageInput onSend={handleSendMessage} /> + <div> + <p> + {questionText} + </p> + + <div> + <input + type="text" + value={currentAnswer} + onKeyDown={handleKeyDown} + readOnly // カスタムロジックで値をセットするため、readonlyにする + placeholder={correctAnswer.split("").map(() => "_") + .join(" ")} + autoFocus // 自動フォーカス + /> + {/* 回答が正しい場合に緑色の枠線を表示 */} + {currentAnswer.length === correctAnswer.length && ( + <span></span> + )} + </div> + + {errorMessage && ( + <p> + {errorMessage} + </p> + )} + + <p> + (日本語の回答は**ヘボン式ローマ字**のキー入力のみを想定しています) + </p> </div> ); - } + }, +); +QuestionAnswer.displayName = "QuestionAnswer"; +// ダミーの音源URLを持つ拡張された質問データ +const myQuestions: QuestionWithAudio[] = [ + { input: "5 + 9 = ?", ans: "14", audioUrl: "/audio/001.wav" }, // 実際には適切なURLに置き換えてください + { + input: "東京のローマ字表記は?", + ans: "tokyo", + audioUrl: "/audio/002.wav", + }, + { input: "Next.jsの親要素は?", ans: "react", audioUrl: "/audio/003.wav" }, +]; +// StagePropsの定義がないため、ここでは仮の定義を使用します +interface StageProps { + onComplete: () => void; +} +export default function QuizPage({ onComplete }: StageProps) { + const questionAnswerRef = useRef<QuestionAnswerRef>(null); + + const handleQuizComplete = () => { + alert("全ての質問に正しく回答しました!お疲れ様でした!"); + // QuizPageに渡されたonCompleteを実行 + onComplete(); + }; - async function LoadDict(dictPath: string): Promise<Uint8Array> { - try{ - const response = await fetch(dictPath); - if(!response.ok){ - throw new Error(`fail to fetch file: ${response.statusText}`); - } - const arrayBuffer = await response.arrayBuffer(); - const byte = new Uint8Array(arrayBuffer); - return byte; - } catch (error) { - console.log("error occur",error); - } - return new Uint8Array(0); - } + return ( + <div style={{ display: "flex" }}> + <QuestionAnswer + ref={questionAnswerRef} + questions={myQuestions} + onComplete={handleQuizComplete} + /> + </div> + ); +} diff --git a/app/components/8_flameText.tsx b/app/components/8_flameText.tsx @@ -0,0 +1,179 @@ +import React, { useRef } from 'react'; +import { Canvas, useFrame, extend } from '@react-three/fiber'; +import * as THREE from 'three'; + +// Three.jsのShaderMaterialをR3Fで使えるように拡張 +extend({ ShaderMaterial: THREE.ShaderMaterial }); + +// ---------------------------------------------------------------- // +// GLSL シェーダー // +// ---------------------------------------------------------------- // + +// 頂点シェーダー (画面全体を覆う板ポリゴン用) +const vertexShader = ` + varying vec2 vUv; + void main() { + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); + } +`; + +// フラグメントシェーダー (炎と熱ゆらぎの表現) +// Source: 共通のGLSLノイズ関数と炎のアルゴリズムを簡略化して使用 +const fragmentShader = ` + uniform float uTime; + uniform vec2 uResolution; + varying vec2 vUv; + + // 簡略化された擬似ランダムノイズ関数 + float rand(vec2 n) { + return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453); + } + + // ノイズを重ねて流れを作るFBM関数 + float noise(vec2 st) { + vec2 i = floor(st); + vec2 f = fract(st); + + vec2 u = f * f * (3.0 - 2.0 * f); + + float a = rand(i); + float b = rand(i + vec2(1.0, 0.0)); + float c = rand(i + vec2(0.0, 1.0)); + float d = rand(i + vec2(1.0, 1.0)); + + return mix(mix(a, b, u.x), mix(c, d, u.x), u.y); + } + + // 炎のテクスチャを生成 + float fbm(vec2 st) { + float v = 0.0; + float a = 0.5; + vec2 r = mat2(1.5, 0.8, -0.8, 1.5) * st; // 回転とスケールで流れを作る + for (int i = 0; i < 4; ++i) { // 4層のノイズを重ねる + v += a * noise(st); + st *= 2.0; + a *= 0.5; + st += r; + } + return v; + } + + void main() { + // 画面アスペクト比補正 (uv.xが0.0から1.0になるように) + vec2 uv = (gl_FragCoord.xy - 0.5 * uResolution.xy) / uResolution.y; + + // 時間によるゆらぎを加えたノイズ + float n = fbm(uv * vec2(1.0, 2.0) - vec2(0.0, uTime * 0.3)); + + // 炎の形状 (下から上へ) + float mask = pow(1.0 - uv.y * 1.5, 3.0); // 下部を明るく、上部を暗く + float fire = n * mask * 5.0; // ノイズにマスクをかけ、強度を上げる + + // 熱ゆらぎの表現 (UV座標をノイズで歪ませる) + vec2 distortedUv = uv + n * 0.005; + float distortion = fbm(distortedUv * 10.0 + uTime * 0.5) * 0.5; + fire += distortion * 0.5; // 炎の強度にゆらぎを加える + + // 炎の色のグラデーション + vec3 color = vec3(0.0); + color = mix(color, vec3(1.0, 0.0, 0.0), fire * 0.8); // 赤 + color = mix(color, vec3(1.0, 0.5, 0.0), fire * 1.2); // オレンジ + color = mix(color, vec3(1.0, 1.0, 0.0), fire * 2.0); // 黄 + + // 強度に応じてアルファ値を設定(炎の外側は透明に) + float alpha = clamp(fire * 0.8, 0.0, 1.0); + + gl_FragColor = vec4(color, alpha); + } +`; + +// ---------------------------------------------------------------- // +// R3F コンポーネント // +// ---------------------------------------------------------------- // + +const FlameMaterial = () => { + const material = useRef<THREE.ShaderMaterial>(null!); + + useFrame(({ clock, viewport }) => { + if (material.current) { + material.current.uniforms.uTime.value = clock.getElapsedTime(); + material.current.uniforms.uResolution.value.set(viewport.width, viewport.height); + } + }); + + return ( + <mesh position={[0, 0, 0]}> + {/* 画面を覆う板ポリゴン */} + <planeGeometry args={[100, 100]} /> + {/* カスタムシェーダーマテリアル */} + <shaderMaterial + ref={material} + uniforms={{ + uTime: { value: 0 }, + uResolution: { value: new THREE.Vector2(0, 0) }, + }} + vertexShader={vertexShader} + fragmentShader={fragmentShader} + transparent + depthWrite={false} + /> + </mesh> + ); +}; + +// ---------------------------------------------------------------- // +// 文字コンポーネント // +// ---------------------------------------------------------------- // + +type TextOverlayProps = { + text: string; + top?: string; + bottom?: string; + left?: string; + right?: string; + rotation?: string; // 例: "15deg" +}; + +const TextOverlay: React.FC<TextOverlayProps> = ({ + text, + top, + bottom, + left, + right, + rotation = '0deg', +}) => { + return ( + <div + style={{ + position: 'absolute', + top, + bottom, + left, + right, + color: 'white', + fontSize: '8vw', + fontWeight: 'bold', + textShadow: '0 0 10px #f00, 0 0 20px #ff0', // 炎に合わせた光彩 + transform: `rotate(${rotation})`, + zIndex: 10, // Canvasよりも手前に配置 + pointerEvents: 'none', // クリックイベントを無視 + }} + > + {text} + </div> + ); +}; + +// ---------------------------------------------------------------- // +// メインページ // +// ---------------------------------------------------------------- // + +export default function HomePage() { + return ( + <Canvas camera={{ position: [0, 0, 1], near: 0.1, far: 100 }}> + <color attach="background" args={['black']} /> {/* 背景色を黒に */} + <FlameMaterial /> + </Canvas> + ); +}; diff --git a/app/ctrl/page.tsx b/app/ctrl/page.tsx @@ -43,9 +43,9 @@ export default function Play() { const pageRef = useRef<HTMLDivElement>(null); const [isFullscreen, setIsFullscreen] = useState(false); const [isInitialCheckDone, setIsInitialCheckDone] = useState(false); - const [ stage, setStage ] = useState(8); + const [ stage, setStage ] = useState(1); const handleStageComplete = useCallback(() => { - setStage(stage + 1); + setStage(prevStage => prevStage + 1); }, []); let StageComponent: React.ReactNode; diff --git a/rust-wasm/Cargo.lock b/rust-wasm/Cargo.lock @@ -54,7 +54,7 @@ dependencies = [ "instant", "num-traits", "paste", - "rand", + "rand 0.8.5", "rand_xoshiro", "thiserror", ] @@ -70,7 +70,7 @@ dependencies = [ "num-complex", "num-integer", "num-traits", - "rand", + "rand 0.8.5", "thiserror", ] @@ -486,8 +486,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -497,7 +507,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -510,12 +530,21 @@ dependencies = [ ] [[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] name = "rand_xoshiro" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -569,6 +598,7 @@ dependencies = [ "getrandom 0.3.4", "js-sys", "kurbo", + "rand 0.9.2", "vibrato", "wasm-bindgen", "zstd", diff --git a/rust-wasm/Cargo.toml b/rust-wasm/Cargo.toml @@ -14,3 +14,4 @@ getrandom_v02 = { package = "getrandom", version = "0.2", features = ["js"] } getrandom_v03 = { package = "getrandom", version = "0.3", features = ["wasm_js"] } zstd = "0.13.3" kurbo = "0.12.0" +rand = "0.9.2" diff --git a/rust-wasm/pkg/rust_wasm.d.ts b/rust-wasm/pkg/rust_wasm.d.ts @@ -1,6 +1,5 @@ /* tslint:disable */ -/* eslint-disable */ -export function chat2(dict_data: Uint8Array, input: string): string; + export function chat(dict_data: Uint8Array, input: string): string; /** * @@ -21,7 +20,6 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl export interface InitOutput { readonly memory: WebAssembly.Memory; - readonly chat2: (a: number, b: number, c: number, d: number) => [number, number, number, number]; readonly chat: (a: number, b: number, c: number, d: number) => [number, number, number, number]; readonly __wbg_nearestpointresult_free: (a: number, b: number) => void; readonly __wbg_get_nearestpointresult_x: (a: number) => number; @@ -38,7 +36,9 @@ export interface InitOutput { readonly rust_zstd_wasm_shim_memcpy: (a: number, b: number, c: number) => number; readonly rust_zstd_wasm_shim_memmove: (a: number, b: number, c: number) => number; readonly rust_zstd_wasm_shim_memset: (a: number, b: number, c: number) => number; - readonly __wbindgen_export_0: WebAssembly.Table; + readonly __wbindgen_exn_store: (a: number) => void; + readonly __externref_table_alloc: () => number; + readonly __wbindgen_export_2: WebAssembly.Table; readonly __wbindgen_malloc: (a: number, b: number) => number; readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; readonly __externref_table_dealloc: (a: number) => void; diff --git a/rust-wasm/pkg/rust_wasm.js b/rust-wasm/pkg/rust_wasm.js @@ -9,6 +9,26 @@ function getUint8ArrayMemory0() { return cachedUint8ArrayMemory0; } +function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); +} + +function addToExternrefTable0(obj) { + const idx = wasm.__externref_table_alloc(); + wasm.__wbindgen_export_2.set(idx, obj); + return idx; +} + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + const idx = addToExternrefTable0(e); + wasm.__wbindgen_exn_store(idx); + } +} + let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); cachedTextDecoder.decode(); @@ -92,7 +112,7 @@ function passStringToWasm0(arg, malloc, realloc) { } function takeFromExternrefTable0(idx) { - const value = wasm.__wbindgen_export_0.get(idx); + const value = wasm.__wbindgen_export_2.get(idx); wasm.__externref_table_dealloc(idx); return value; } @@ -101,34 +121,6 @@ function takeFromExternrefTable0(idx) { * @param {string} input * @returns {string} */ -export function chat2(dict_data, input) { - let deferred4_0; - let deferred4_1; - try { - const ptr0 = passArray8ToWasm0(dict_data, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ptr1 = passStringToWasm0(input, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - const ret = wasm.chat2(ptr0, len0, ptr1, len1); - var ptr3 = ret[0]; - var len3 = ret[1]; - if (ret[3]) { - ptr3 = 0; len3 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred4_0 = ptr3; - deferred4_1 = len3; - return getStringFromWasm0(ptr3, len3); - } finally { - wasm.__wbindgen_free(deferred4_0, deferred4_1, 1); - } -} - -/** - * @param {Uint8Array} dict_data - * @param {string} input - * @returns {string} - */ export function chat(dict_data, input) { let deferred4_0; let deferred4_1; @@ -265,6 +257,9 @@ async function __wbg_load(module, imports) { function __wbg_get_imports() { const imports = {}; imports.wbg = {}; + imports.wbg.__wbg_getRandomValues_1c61fac11405ffdc = function() { return handleError(function (arg0, arg1) { + globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1)); + }, arguments) }; imports.wbg.__wbg_new_da9dc54c5db29dfa = function(arg0, arg1) { const ret = new Error(getStringFromWasm0(arg0, arg1)); return ret; @@ -273,7 +268,7 @@ function __wbg_get_imports() { throw new Error(getStringFromWasm0(arg0, arg1)); }; imports.wbg.__wbindgen_init_externref_table = function() { - const table = wasm.__wbindgen_export_0; + const table = wasm.__wbindgen_export_2; const offset = table.grow(4); table.set(0, undefined); table.set(offset + 0, undefined); diff --git a/rust-wasm/pkg/rust_wasm_bg.wasm b/rust-wasm/pkg/rust_wasm_bg.wasm Binary files differ. diff --git a/rust-wasm/pkg/rust_wasm_bg.wasm.d.ts b/rust-wasm/pkg/rust_wasm_bg.wasm.d.ts @@ -1,7 +1,6 @@ /* tslint:disable */ -/* eslint-disable */ + export const memory: WebAssembly.Memory; -export const chat2: (a: number, b: number, c: number, d: number) => [number, number, number, number]; export const chat: (a: number, b: number, c: number, d: number) => [number, number, number, number]; export const __wbg_nearestpointresult_free: (a: number, b: number) => void; export const __wbg_get_nearestpointresult_x: (a: number) => number; @@ -18,7 +17,9 @@ export const rust_zstd_wasm_shim_free: (a: number) => void; export const rust_zstd_wasm_shim_memcpy: (a: number, b: number, c: number) => number; export const rust_zstd_wasm_shim_memmove: (a: number, b: number, c: number) => number; export const rust_zstd_wasm_shim_memset: (a: number, b: number, c: number) => number; -export const __wbindgen_export_0: WebAssembly.Table; +export const __wbindgen_exn_store: (a: number) => void; +export const __externref_table_alloc: () => number; +export const __wbindgen_export_2: WebAssembly.Table; export const __wbindgen_malloc: (a: number, b: number) => number; export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; export const __externref_table_dealloc: (a: number) => void; diff --git a/rust-wasm/src/lib.rs b/rust-wasm/src/lib.rs @@ -1,74 +1,69 @@ -use std::{io:: Cursor, iter::Peekable, str::SplitWhitespace, usize}; +use rand::Rng; +use std::{io::Cursor, iter::Peekable, str::SplitWhitespace, usize}; use vibrato::{Dictionary, Tokenizer}; use wasm_bindgen::prelude::*; #[wasm_bindgen] -pub fn chat2(dict_data: &[u8], input: &str) -> Result<String, JsValue> { +pub fn chat(dict_data: &[u8], input: &str) -> Result<String, JsValue> { let encoded = Cursor::new(dict_data); let reader = zstd::Decoder::new(encoded).unwrap(); let dict = Dictionary::read(reader) - .map_err(|_|{JsValue::from(js_sys::Error::new("Dictionary road Error"))})?; + .map_err(|_| JsValue::from(js_sys::Error::new("Dictionary road Error")))?; let tokenizer = Tokenizer::new(dict); let mut worker = tokenizer.new_worker(); + let mut rng = rand::rng(); + let random_number = rng.random_range(1..=2); worker.reset_sentence(input); worker.tokenize(); - let mut ans : String= "どうせ失敗する。当たり前だ。そうに決まっている。".to_string(); + let mut ans: String = if random_number == 1 { + "どうせ失敗する。当たり前だ。そうに決まっている。".to_string() + } else { + "馬鹿なことを言ってないで。".to_string() + }; match worker.num_tokens() { 1..5 => { - ans = "は?".to_string(); - }, + ans = if random_number == 1 { + "は?".to_string() + } else { + "何を言っているの?".to_string() + }; + } 5..9 => { - ans = "期待した私が馬鹿だったの?".to_string(); - }, + ans = if random_number == 1 { + "期待した私が馬鹿だったの?".to_string() + } else { + "そんなことができるわけないじゃない?".to_string() + }; + } 9 => { - ans = "お前のせいで私の人生がめちゃくちゃだ。".to_string(); - }, - 10..=usize::MAX => { - ans = "どうでもいいわ。勝手にすれば。私には関係ない。".to_string(); + ans = if random_number == 1 { + "お前のせいで私の人生がめちゃくちゃだ。".to_string() + } else { + "そんなこと思ってるんじゃないんでしょ?".to_string() + }; } - _ => {ans = "どうでもいいわ。勝手にすれば。私には関係ない。".to_string();}, - } - - Ok(ans) -} - -#[wasm_bindgen] -pub fn chat(dict_data: &[u8], input: &str) -> Result<String, JsValue> { - let encoded = Cursor::new(dict_data); - let reader = zstd::Decoder::new(encoded).unwrap(); - let dict = Dictionary::read(reader) - .map_err(|_|{JsValue::from(js_sys::Error::new("Dictionary road Error"))})?; - let tokenizer = Tokenizer::new(dict); - let mut worker = tokenizer.new_worker(); - - worker.reset_sentence(input); - worker.tokenize(); - - let mut ans : String= "馬鹿なことを言ってないで。".to_string(); - - match worker.num_tokens() { - 1..5 => { - ans = "何を言っているの?".to_string(); - }, - 5..10 => { - ans = "そんなことができるわけないじゃない?".to_string(); - }, 10..=usize::MAX => { - ans = "そんなこと思ってるんじゃないんでしょ?".to_string(); + ans = if random_number == 1 { + "どうでもいいわ。勝手にすれば。私には関係ない。".to_string() + } else { + "意味がわからない。".to_string() + }; + } + _ => { + ans = "どうでもいいわ。勝手にすれば。私には関係ない。".to_string(); } - _ => {ans = "意味がわからない。".to_string();}, } Ok(ans) } -use kurbo::{Point, BezPath, ParamCurve, PathSeg, Vec2}; use kurbo::ParamCurveNearest; -use wasm_bindgen::JsValue; +use kurbo::{BezPath, ParamCurve, PathSeg, Point, Vec2}; use std::f64::consts::PI; +use wasm_bindgen::JsValue; // TypeScriptのPoint型に対応する構造体を定義 #[derive(Debug, Clone, Copy)] @@ -84,10 +79,7 @@ pub struct NearestPointResult { /// ベクトルVを回転角度φだけ回転させます。(名前を rotate_vec2 に変更) fn rotate_vec2(v: Vec2, sin_phi: f64, cos_phi: f64) -> Vec2 { - Vec2::new( - v.x * cos_phi - v.y * sin_phi, - v.x * sin_phi + v.y * cos_phi, - ) + Vec2::new(v.x * cos_phi - v.y * sin_phi, v.x * sin_phi + v.y * cos_phi) } /// 単一のArcセグメント(2つの角度間)をCubic Bezierに変換します。 @@ -100,7 +92,6 @@ fn segment_to_cubic( path: &mut BezPath, current_point: Point, ) -> Point { - if delta_angle.abs() < 1e-6 { return current_point; } @@ -114,14 +105,17 @@ fn segment_to_cubic( // Vec2として扱う let start_vec = Vec2::new(start_angle.cos() * a, start_angle.sin() * b); - let end_vec = Vec2::new((start_angle + delta_angle).cos() * a, (start_angle + delta_angle).sin() * b); + let end_vec = Vec2::new( + (start_angle + delta_angle).cos() * a, + (start_angle + delta_angle).sin() * b, + ); // Vec2を回転 let start_vec_rotated = rotate_vec2(start_vec, sin_phi, cos_phi); let end_vec_rotated = rotate_vec2(end_vec, sin_phi, cos_phi); - let p0 = center + start_vec_rotated; - let p3 = center + end_vec_rotated; + let p0 = center + start_vec_rotated; + let p3 = center + end_vec_rotated; // Vec2 を使ったタンジェント計算 let t_start_vec = Vec2::new(-start_vec.y * t_factor, start_vec.x * t_factor); @@ -138,7 +132,6 @@ fn segment_to_cubic( p3 } - /// SVG Arcコマンドを複数のCubic Bezierセグメントに分解します。 fn arc_to_beziers( start_point: Point, @@ -150,7 +143,6 @@ fn arc_to_beziers( end_point: Point, path: &mut BezPath, ) -> Point { - if (rx.abs() < 1e-6 || ry.abs() < 1e-6) || start_point == end_point { path.line_to(end_point); return end_point; @@ -165,11 +157,7 @@ fn arc_to_beziers( // Vec2を回転し、結果も Vec2 let p_vec = (start_point - end_point) * 0.5; - let mut p_prime_vec = rotate_vec2( - p_vec, - -sin_phi, - cos_phi, - ); + let p_prime_vec = rotate_vec2(p_vec, -sin_phi, cos_phi); // Pointとして使うために一時的に変換 let p_prime = Point::new(p_prime_vec.x, p_prime_vec.y); @@ -185,23 +173,21 @@ fn arc_to_beziers( let x_prime_sq = p_prime.x * p_prime.x; let y_prime_sq = p_prime.y * p_prime.y; - let mut center_coeff = ( - (rx_sq * ry_sq - rx_sq * y_prime_sq - ry_sq * x_prime_sq) / - (rx_sq * y_prime_sq + ry_sq * x_prime_sq) - ).max(0.0).sqrt(); + let mut center_coeff = ((rx_sq * ry_sq - rx_sq * y_prime_sq - ry_sq * x_prime_sq) + / (rx_sq * y_prime_sq + ry_sq * x_prime_sq)) + .max(0.0) + .sqrt(); if large_arc_flag == sweep_flag { center_coeff = -center_coeff; } - let center_prime = Vec2::new( // 中心C'は変位なのでVec2で表現 + let center_prime = Vec2::new( + // 中心C'は変位なのでVec2で表現 center_coeff * rx * p_prime.y / ry, center_coeff * -ry * p_prime.x / rx, ); - // 🚨 修正: 楕円の中心 C を計算 (Vec2で計算し、Point + Vec2 で最終位置を決定) - let center_diff_vec = (start_point - Point::ZERO + end_point.to_vec2()) * 0.5; - let center_midpoint_vec: Vec2 = (start_point - Point::ZERO + end_point.to_vec2()) * 0.5; let midpoint: Point = Point::new(center_midpoint_vec.x, center_midpoint_vec.y); @@ -214,7 +200,9 @@ fn arc_to_beziers( // 7. 角度の計算 let to_angle = |p: Point| -> f64 { let mut angle = (p.y).atan2(p.x); - if angle < 0.0 { angle += 2.0 * PI; } + if angle < 0.0 { + angle += 2.0 * PI; + } angle }; @@ -223,13 +211,13 @@ fn arc_to_beziers( (p_prime.x - center_prime.x) / rx, (p_prime.y - center_prime.y) / ry, ); - let mut start_angle = to_angle(start_vec_p); + let start_angle = to_angle(start_vec_p); let end_vec_p = Point::new( (-p_prime.x - center_prime.x) / rx, (-p_prime.y - center_prime.y) / ry, ); - let mut end_angle = to_angle(end_vec_p); + let end_angle = to_angle(end_vec_p); // 角度差の計算 let mut delta_angle = end_angle - start_angle; @@ -277,7 +265,7 @@ fn parse_svg_path_to_bezpath(path_d: &str) -> Option<BezPath> { let mut current_point = Point::new(0.0, 0.0); let mut subpath_start = Point::new(0.0, 0.0); - let get_f64 = | tokens: &mut Peekable<SplitWhitespace>| -> Option<f64> { + let get_f64 = |tokens: &mut Peekable<SplitWhitespace>| -> Option<f64> { tokens.next().and_then(|s| s.parse::<f64>().ok()) }; @@ -353,7 +341,6 @@ fn parse_svg_path_to_bezpath(path_d: &str) -> Option<BezPath> { Some(path) } - /** * SVGパス上で指定された点に最も近い点を計算します。 */ @@ -362,9 +349,8 @@ pub fn find_nearest_point_on_path( path_d: &str, x: f64, y: f64, - _snapping_distance_viewbox: f64 + _snapping_distance_viewbox: f64, ) -> Option<NearestPointResult> { - let target_point = Point::new(x, y); let bez_path = parse_svg_path_to_bezpath(path_d)?; @@ -374,7 +360,6 @@ pub fn find_nearest_point_on_path( // PathSegのバリアントからジオメトリ型(Line, CubicBez)を抽出 for segment in bez_path.segments() { - let new_closest_point = match segment { // Line構造体を抽出 PathSeg::Line(line) => { @@ -385,11 +370,11 @@ pub fn find_nearest_point_on_path( if dist_sq < min_dist_sq { min_dist_sq = dist_sq; // nearest_result.point は非公開なので、eval(param) を使用する - Some(line.eval(nearest_result.t)) + Some(line.eval(nearest_result.t)) } else { None } - }, + } // CubicBez構造体を抽出 PathSeg::Cubic(cubic_bez) => { let nearest_result = cubic_bez.nearest(target_point, 1.0); @@ -401,7 +386,7 @@ pub fn find_nearest_point_on_path( } else { None } - }, + } // Quad Bezier (サポート外) およびその他のバリアントはスキップ _ => None, }; @@ -415,10 +400,10 @@ pub fn find_nearest_point_on_path( if let Some(p) = closest_point { return Some(NearestPointResult { x: p.x, y: p.y }); } else { - return Some(NearestPointResult {x:500.0,y:500.0}); + return Some(NearestPointResult { x: 500.0, y: 500.0 }); } - return Some(NearestPointResult { x: 0.0, y: 0.0 }) + Some(NearestPointResult { x: 0.0, y: 0.0 }) } // WASMの初期化関数 (必須) diff --git a/target/rust-analyzer/flycheck0/stderr b/target/rust-analyzer/flycheck0/stderr @@ -0,0 +1,12 @@ + 0.183803500s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: stale: changed "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs" + 0.183840700s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: (vs) "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\.fingerprint\\rust-wasm-ccb3f3c99ff11159\\dep-lib-rust_wasm" + 0.183845800s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: FileTime { seconds: 13406391521, nanos: 10841700 } < FileTime { seconds: 13406391530, nanos: 482777700 } + 0.184150400s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: fingerprint dirty for rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("rust_wasm", ["cdylib"], "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs", Edition2024) } + 0.184179300s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleItem(ChangedFile { reference: "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\.fingerprint\\rust-wasm-ccb3f3c99ff11159\\dep-lib-rust_wasm", reference_mtime: FileTime { seconds: 13406391521, nanos: 10841700 }, stale: "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs", stale_mtime: FileTime { seconds: 13406391530, nanos: 482777700 } })) + 0.221929100s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: stale: changed "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs" + 0.221949400s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: (vs) "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\.fingerprint\\rust-wasm-103cac6150b82a40\\dep-test-lib-rust_wasm" + 0.221953700s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: FileTime { seconds: 13406391521, nanos: 10841700 } < FileTime { seconds: 13406391530, nanos: 482777700 } + 0.222250800s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: fingerprint dirty for rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("rust_wasm", ["cdylib"], "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs", Edition2024) } + 0.222285800s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleItem(ChangedFile { reference: "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\.fingerprint\\rust-wasm-103cac6150b82a40\\dep-test-lib-rust_wasm", reference_mtime: FileTime { seconds: 13406391521, nanos: 10841700 }, stale: "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs", stale_mtime: FileTime { seconds: 13406391530, nanos: 482777700 } })) + Checking rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) + Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.41s diff --git a/target/rust-analyzer/flycheck0/stdout b/target/rust-analyzer/flycheck0/stdout @@ -0,0 +1,149 @@ +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\cfg-if-1.0.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"cfg_if","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\cfg-if-1.0.4\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcfg_if-20bb53187b6715fb.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.19","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\unicode-ident-1.0.19\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"unicode_ident","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\unicode-ident-1.0.19\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libunicode_ident-189ca15178b593cc.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libunicode_ident-189ca15178b593cc.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.101","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\proc-macro2-1.0.101\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\proc-macro2-1.0.101\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\proc-macro2-87a5f0ce3b8cc4ee\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\proc-macro2-87a5f0ce3b8cc4ee\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#quote@1.0.41","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\quote-1.0.41\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\quote-1.0.41\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\quote-e6db9c3fe01e6580\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\quote-e6db9c3fe01e6580\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rustversion@1.0.22","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rustversion-1.0.22\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rustversion-1.0.22\\build\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\rustversion-4402b8b95773fa7d\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\rustversion-4402b8b95773fa7d\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zerocopy@0.8.27","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zerocopy-0.8.27\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zerocopy-0.8.27\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["simd"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zerocopy-793199fc09e82c50\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zerocopy-793199fc09e82c50\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#autocfg@1.5.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\autocfg-1.5.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"autocfg","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\autocfg-1.5.0\\src\\lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libautocfg-8e68ba8c9cc64d10.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libautocfg-8e68ba8c9cc64d10.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.2.16","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.2.16\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"getrandom","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.2.16\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["js","js-sys","std","wasm-bindgen"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libgetrandom-112e6c48927a6f1b.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#serde_core@1.0.228","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde_core-1.0.228\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde_core-1.0.228\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","result","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\serde_core-fe4e12263e96879e\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\serde_core-fe4e12263e96879e\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\getrandom-2b5aa131f43f22e4\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\getrandom-2b5aa131f43f22e4\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows_x86_64_msvc@0.52.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows_x86_64_msvc-0.52.6\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows_x86_64_msvc-0.52.6\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\windows_x86_64_msvc-34d12bac09911094\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\windows_x86_64_msvc-34d12bac09911094\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\cfg-if-1.0.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"cfg_if","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\cfg-if-1.0.4\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcfg_if-fcf6f9c63968de1e.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcfg_if-fcf6f9c63968de1e.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#serde@1.0.228","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde-1.0.228\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde-1.0.228\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\serde-7d43a81d6ca7d68a\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\serde-7d43a81d6ca7d68a\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-shared@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-shared-0.2.104\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-shared-0.2.104\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\wasm-bindgen-shared-d5b97ff6f44d3e27\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\wasm-bindgen-shared-d5b97ff6f44d3e27\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#thiserror@1.0.69","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thiserror-1.0.69\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thiserror-1.0.69\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\thiserror-8ad831a78bc45fcd\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\thiserror-8ad831a78bc45fcd\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#find-msvc-tools@0.1.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\find-msvc-tools-0.1.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"find_msvc_tools","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\find-msvc-tools-0.1.4\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libfind_msvc_tools-ccda9af3910b38d5.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libfind_msvc_tools-ccda9af3910b38d5.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.21","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crossbeam-utils-0.8.21\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crossbeam-utils-0.8.21\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\crossbeam-utils-0197e3ce4958f992\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\crossbeam-utils-0197e3ce4958f992\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows-link@0.2.1","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-link-0.2.1\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"windows_link","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-link-0.2.1\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwindows_link-040773b0e32c7ac3.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#anyhow@1.0.100","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\anyhow-1.0.100\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\anyhow-1.0.100\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\anyhow-407480eec81b2c3f\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\anyhow-407480eec81b2c3f\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#shlex@1.3.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\shlex-1.3.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"shlex","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\shlex-1.3.0\\src\\lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libshlex-23091e5ead08762b.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libshlex-23091e5ead08762b.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-conv@0.1.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-conv-0.1.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_conv","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-conv-0.1.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libnum_conv-6a1a0a74f603c286.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libnum_conv-6a1a0a74f603c286.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#paste@1.0.15","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\paste-1.0.15\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\paste-1.0.15\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\paste-8bab462b5cd12688\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\paste-8bab462b5cd12688\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#pkg-config@0.3.32","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\pkg-config-0.3.32\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"pkg_config","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\pkg-config-0.3.32\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libpkg_config-f0dc02b75d7e40ba.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libpkg_config-f0dc02b75d7e40ba.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#time-core@0.1.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-core-0.1.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"time_core","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-core-0.1.6\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libtime_core-caa840fe62544e91.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libtime_core-caa840fe62544e91.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#powerfmt@0.2.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\powerfmt-0.2.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"powerfmt","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\powerfmt-0.2.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libpowerfmt-cb69ab1dd940a5f2.rmeta"],"executable":null,"fresh":true} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.101","linked_libs":[],"linked_paths":[],"cfgs":["wrap_proc_macro","proc_macro_span_location","proc_macro_span_file"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\proc-macro2-4b7a3dafd5f82b84\\out"} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#quote@1.0.41","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\quote-102a82c13fe8e5c0\\out"} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#rustversion@1.0.22","linked_libs":[],"linked_paths":[],"cfgs":["host_os=\"windows\""],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\rustversion-427818efd4c571cf\\out"} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#zerocopy@0.8.27","linked_libs":[],"linked_paths":[],"cfgs":["zerocopy_core_error_1_81_0","zerocopy_diagnostic_on_unimplemented_1_78_0","zerocopy_generic_bounds_in_const_fn_1_61_0","zerocopy_target_has_atomics_1_60_0","zerocopy_aarch64_simd_1_59_0","zerocopy_panic_in_const_and_vec_try_reserve_1_57_0"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zerocopy-6b50d5fe36dc624b\\out"} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-traits-0.2.19\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-traits-0.2.19\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","i128","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\num-traits-e0c1286a9ce5cc20\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\num-traits-e0c1286a9ce5cc20\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.4","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\getrandom-c8f7e475b1bf5c34\\out"} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#serde_core@1.0.228","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\serde_core-4c32884a5d259c6a\\out"} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows_x86_64_msvc@0.52.6","linked_libs":[],"linked_paths":["native=C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows_x86_64_msvc-0.52.6\\lib"],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\windows_x86_64_msvc-8f1c70f04d068791\\out"} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-shared@0.2.104","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[["SCHEMA_FILE_HASH","5268316563830462177"]],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\wasm-bindgen-shared-56c20ef600ffb953\\out"} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#serde@1.0.228","linked_libs":[],"linked_paths":[],"cfgs":["if_docsrs_then_no_serde_core"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\serde-a84a2e9fbe81769e\\out"} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand_core@0.6.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_core-0.6.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_core","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_core-0.6.4\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","getrandom","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand_core-5193f0c292360f52.rmeta"],"executable":null,"fresh":true} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#anyhow@1.0.100","linked_libs":[],"linked_paths":[],"cfgs":["std_backtrace"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\anyhow-294ee02e23beeaaa\\out"} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#thiserror@1.0.69","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\thiserror-f193de1d325333fe\\out"} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.21","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\crossbeam-utils-d50a88d5aacdc3ff\\out"} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#deranged@0.5.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\deranged-0.5.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"deranged","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\deranged-0.5.4\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","powerfmt"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libderanged-382c78febe440cd5.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows-sys@0.61.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-sys-0.61.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"windows_sys","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-sys-0.61.2\\src\\lib.rs","edition":"2021","doc":true,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["Win32","Win32_Foundation","Win32_Security","Win32_Storage","Win32_Storage_FileSystem","Win32_System","Win32_System_Console","default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwindows_sys-0dba8d544dd96146.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#time-macros@0.2.24","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-macros-0.2.24\\Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"time_macros","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-macros-0.2.24\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["formatting"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\time_macros-e6b06d58de61a00b.dll","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\time_macros-e6b06d58de61a00b.dll.lib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\time_macros-e6b06d58de61a00b.dll.exp","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\time_macros-e6b06d58de61a00b.pdb"],"executable":null,"fresh":true} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#paste@1.0.15","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\paste-4b191ff7faa6407d\\out"} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#thread_local@1.1.9","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thread_local-1.1.9\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"thread_local","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thread_local-1.1.9\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libthread_local-b0072ee1a542a0ee.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#once_cell@1.21.3","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\once_cell-1.21.3\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"once_cell","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\once_cell-1.21.3\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","race"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libonce_cell-ff0ad348901115f4.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#time-core@0.1.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-core-0.1.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"time_core","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-core-0.1.6\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libtime_core-ff1862b628a7a0a5.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#itoa@1.0.15","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\itoa-1.0.15\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"itoa","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\itoa-1.0.15\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libitoa-2179d09a8cbaa087.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-conv@0.1.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-conv-0.1.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_conv","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-conv-0.1.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libnum_conv-0d03c5fd8d3669d0.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std","wasm_js"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\getrandom-e6cdff516f30f1d9\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\getrandom-e6cdff516f30f1d9\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.101","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\proc-macro2-1.0.101\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"proc_macro2","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\proc-macro2-1.0.101\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libproc_macro2-422ab01cb9b02ba1.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libproc_macro2-422ab01cb9b02ba1.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rustversion@1.0.22","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rustversion-1.0.22\\Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"rustversion","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rustversion-1.0.22\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\rustversion-eff2ed6ae02d80d9.dll","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\rustversion-eff2ed6ae02d80d9.dll.lib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\rustversion-eff2ed6ae02d80d9.dll.exp","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\rustversion-eff2ed6ae02d80d9.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zerocopy@0.8.27","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zerocopy-0.8.27\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zerocopy","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zerocopy-0.8.27\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["simd"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libzerocopy-52ad25bdd83e533d.rmeta"],"executable":null,"fresh":true} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19","linked_libs":[],"linked_paths":[],"cfgs":["has_total_cmp"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\num-traits-c60d8ff17850a0b2\\out"} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"getrandom","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libgetrandom-8fc3f0a6a70c1aae.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libgetrandom-8fc3f0a6a70c1aae.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#serde_core@1.0.228","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde_core-1.0.228\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"serde_core","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde_core-1.0.228\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","result","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libserde_core-f67fb10023ed2dba.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows_x86_64_msvc@0.52.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows_x86_64_msvc-0.52.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"windows_x86_64_msvc","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows_x86_64_msvc-0.52.6\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwindows_x86_64_msvc-14a69c30625fb86e.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#anyhow@1.0.100","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\anyhow-1.0.100\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"anyhow","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\anyhow-1.0.100\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libanyhow-45b776acfbf9f7ed.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.21","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crossbeam-utils-0.8.21\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crossbeam_utils","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crossbeam-utils-0.8.21\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcrossbeam_utils-d006d632b1d296e4.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-shared@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-shared-0.2.104\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"wasm_bindgen_shared","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-shared-0.2.104\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_shared-a8528d0b6ccc051c.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_shared-a8528d0b6ccc051c.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#bumpalo@3.19.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\bumpalo-3.19.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bumpalo","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\bumpalo-3.19.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libbumpalo-4c348a16f0badee7.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libbumpalo-4c348a16f0badee7.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#version_check@0.9.5","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\version_check-0.9.5\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"version_check","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\version_check-0.9.5\\src\\lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libversion_check-bc9a57e4f71cef9c.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libversion_check-bc9a57e4f71cef9c.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#log@0.4.28","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\log-0.4.28\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"log","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\log-0.4.28\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\liblog-3636dd8cd326c56f.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\liblog-3636dd8cd326c56f.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#memchr@2.7.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\memchr-2.7.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"memchr","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\memchr-2.7.6\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libmemchr-f6b4808565e1c4aa.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog-async@2.8.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-async-2.8.0\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-async-2.8.0\\build.rs","edition":"2015","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\slog-async-dc864f4e00d56e1a\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\slog-async-dc864f4e00d56e1a\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#term@1.2.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\term-1.2.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"term","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\term-1.2.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libterm-64cd54818abb3315.rmeta"],"executable":null,"fresh":true} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.4","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\getrandom-d6d8eb0d49a54dd6\\out"} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#paste@1.0.15","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\paste-1.0.15\\Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"paste","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\paste-1.0.15\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\paste-f84e90df2a3b4d5d.dll","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\paste-f84e90df2a3b4d5d.dll.lib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\paste-f84e90df2a3b4d5d.dll.exp","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\paste-f84e90df2a3b4d5d.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#time@0.3.44","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-0.3.44\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"time","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-0.3.44\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","formatting","macros","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libtime-1ae7d99c233dd8e9.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand_xoshiro@0.6.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_xoshiro-0.6.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_xoshiro","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_xoshiro-0.6.0\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand_xoshiro-9621f07fb88966bd.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#instant@0.1.13","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\instant-0.1.13\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"instant","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\instant-0.1.13\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libinstant-225289b69792fc91.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#take_mut@0.2.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\take_mut-0.2.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"take_mut","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\take_mut-0.2.2\\src\\lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libtake_mut-83b347579412f539.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#virtue@0.0.18","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\virtue-0.0.18\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"virtue","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\virtue-0.0.18\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libvirtue-44479add702c1c76.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libvirtue-44479add702c1c76.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd-safe@7.2.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-safe-7.2.4\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-safe-7.2.4\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["arrays","legacy","std","zdict_builder"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-safe-b4f7b2d4da3917a2\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-safe-b4f7b2d4da3917a2\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#quote@1.0.41","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\quote-1.0.41\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"quote","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\quote-1.0.41\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libquote-c5727dce1eaf2b5d.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libquote-c5727dce1eaf2b5d.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-traits-0.2.19\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_traits","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-traits-0.2.19\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","i128","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libnum_traits-4bb52bdec85e82ce.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#ppv-lite86@0.2.21","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\ppv-lite86-0.2.21\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"ppv_lite86","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\ppv-lite86-0.2.21\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["simd","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libppv_lite86-5f93a61a7b027d08.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#jobserver@0.1.34","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\jobserver-0.1.34\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"jobserver","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\jobserver-0.1.34\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libjobserver-567a1e83b4256e61.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libjobserver-567a1e83b4256e61.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog@2.8.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-2.8.2\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-2.8.2\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","dynamic-keys","nested-values","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\slog-7d04f55b5dce44fe\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\slog-7d04f55b5dce44fe\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#serde@1.0.228","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde-1.0.228\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"serde","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde-1.0.228\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libserde-5479e400a0f29763.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows-targets@0.52.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-targets-0.52.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"windows_targets","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-targets-0.52.6\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwindows_targets-087a1f209bdc7d58.rmeta"],"executable":null,"fresh":true} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog-async@2.8.0","linked_libs":[],"linked_paths":[],"cfgs":["integer128"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\slog-async-4d66d8d6d1908ff0\\out"} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-channel@0.5.15","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crossbeam-channel-0.5.15\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crossbeam_channel","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crossbeam-channel-0.5.15\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcrossbeam_channel-6bbc7059fc4169eb.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#ahash@0.7.8","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\ahash-0.7.8\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\ahash-0.7.8\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\ahash-9f8fff1b593f6755\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\ahash-9f8fff1b593f6755\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#bincode_derive@2.0.1","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\bincode_derive-2.0.1\\Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"bincode_derive","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\bincode_derive-2.0.1\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\bincode_derive-e1a46a02342dd86f.dll","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\bincode_derive-e1a46a02342dd86f.dll.lib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\bincode_derive-e1a46a02342dd86f.dll.exp","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\bincode_derive-e1a46a02342dd86f.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-0.2.104\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-0.2.104\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\wasm-bindgen-2dd8ddbf8d83cf71\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\wasm-bindgen-2dd8ddbf8d83cf71\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"getrandom","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std","wasm_js"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libgetrandom-61e9d2b5847757e2.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#aho-corasick@1.1.3","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\aho-corasick-1.1.3\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"aho_corasick","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\aho-corasick-1.1.3\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["perf-literal","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libaho_corasick-fd2330522298c4d8.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#allocator-api2@0.2.21","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\allocator-api2-0.2.21\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"allocator_api2","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\allocator-api2-0.2.21\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\liballocator_api2-a068e79b7191fc21.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.19","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\unicode-ident-1.0.19\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"unicode_ident","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\unicode-ident-1.0.19\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libunicode_ident-234fca3f993bd676.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#regex-syntax@0.8.8","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\regex-syntax-0.8.8\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"regex_syntax","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\regex-syntax-0.8.8\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std","unicode","unicode-age","unicode-bool","unicode-case","unicode-gencat","unicode-perl","unicode-script","unicode-segment"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libregex_syntax-92bfada28da3f3fa.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#unty@0.0.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\unty-0.0.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"unty","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\unty-0.0.4\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libunty-2c98fe27470c5ca0.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#foldhash@0.1.5","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\foldhash-0.1.5\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"foldhash","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\foldhash-0.1.5\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libfoldhash-ba1d1cac4270f83d.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#equivalent@1.0.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\equivalent-1.0.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"equivalent","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\equivalent-1.0.2\\src\\lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libequivalent-a82a1228783d4ddb.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#csv-core@0.1.13","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\csv-core-0.1.13\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"csv_core","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\csv-core-0.1.13\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcsv_core-8d1d3a9e8b2ca162.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crawdad@0.3.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crawdad-0.3.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crawdad","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crawdad-0.3.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcrawdad-ce4276fab226746b.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#arrayvec@0.7.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\arrayvec-0.7.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"arrayvec","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\arrayvec-0.7.6\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libarrayvec-bd60b7efa38280e3.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#smallvec@1.15.1","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\smallvec-1.15.1\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"smallvec","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\smallvec-1.15.1\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libsmallvec-6ba212861c00b6eb.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#syn@2.0.106","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\syn-2.0.106\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"syn","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\syn-2.0.106\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["clone-impls","default","derive","full","parsing","printing","proc-macro","visit","visit-mut"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libsyn-bd57590419f02bc0.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libsyn-bd57590419f02bc0.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#cc@1.2.41","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\cc-1.2.41\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"cc","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\cc-1.2.41\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["parallel"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcc-28633b62260d7899.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcc-28633b62260d7899.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#erased-serde@0.3.31","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\erased-serde-0.3.31\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"erased_serde","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\erased-serde-0.3.31\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\liberased_serde-d9f68ae5cb83f526.rmeta"],"executable":null,"fresh":true} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog@2.8.2","linked_libs":[],"linked_paths":[],"cfgs":["has_std_error"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\slog-c4e368f0f2a829d0\\out"} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand_chacha@0.3.1","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_chacha-0.3.1\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_chacha","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_chacha-0.3.1\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand_chacha-153e3778d1c62737.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-integer@0.1.46","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-integer-0.1.46\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_integer","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-integer-0.1.46\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libnum_integer-0251ea19821da814.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-complex@0.4.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-complex-0.4.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_complex","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-complex-0.4.6\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libnum_complex-1f8144cb6664151c.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows-sys@0.59.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-sys-0.59.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"windows_sys","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-sys-0.59.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["Win32","Win32_Foundation","Win32_Storage","Win32_Storage_FileSystem","Win32_System","Win32_System_Console","default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwindows_sys-7dc364cd86f75315.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#chrono@0.4.42","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\chrono-0.4.42\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"chrono","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\chrono-0.4.42\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","clock","default","iana-time-zone","js-sys","now","oldtime","std","wasm-bindgen","wasmbind","winapi","windows-link"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libchrono-805153ddb15b0c21.rmeta"],"executable":null,"fresh":true} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#ahash@0.7.8","linked_libs":[],"linked_paths":[],"cfgs":["feature=\"runtime-rng\"","feature=\"folded_multiply\""],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\ahash-ca974626b28a3d9e\\out"} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#regex-automata@0.4.13","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\regex-automata-0.4.13\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"regex_automata","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\regex-automata-0.4.13\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","dfa-onepass","hybrid","meta","nfa-backtrack","nfa-pikevm","nfa-thompson","perf-inline","perf-literal","perf-literal-multisubstring","perf-literal-substring","std","syntax","unicode","unicode-age","unicode-bool","unicode-case","unicode-gencat","unicode-perl","unicode-script","unicode-segment","unicode-word-boundary"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libregex_automata-924ba53260b9d317.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-shared@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-shared-0.2.104\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"wasm_bindgen_shared","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-shared-0.2.104\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_shared-d0e7a5f40a7337fc.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#bincode@2.0.1","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\bincode-2.0.1\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bincode","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\bincode-2.0.1\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","bincode_derive","default","derive","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libbincode-b8745b534a2e5cd8.rmeta"],"executable":null,"fresh":true} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen@0.2.104","linked_libs":[],"linked_paths":[],"cfgs":["wbg_diagnostic"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\wasm-bindgen-ac3816f8f948c21c\\out"} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand_core@0.9.3","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_core-0.9.3\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_core","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_core-0.9.3\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["os_rng","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand_core-8ea9727cb21df7af.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#hashbrown@0.15.5","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\hashbrown-0.15.5\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"hashbrown","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\hashbrown-0.15.5\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["allocator-api2","default","default-hasher","equivalent","inline-more","raw-entry"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libhashbrown-3d5eeeb4d0893213.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#kurbo@0.12.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\kurbo-0.12.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"kurbo","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\kurbo-0.12.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libkurbo-bfdb72cd7cfb3e6a.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#thiserror-impl@1.0.69","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thiserror-impl-1.0.69\\Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"thiserror_impl","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thiserror-impl-1.0.69\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\thiserror_impl-7b54a9369fc65af2.dll","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\thiserror_impl-7b54a9369fc65af2.dll.lib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\thiserror_impl-7b54a9369fc65af2.dll.exp","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\thiserror_impl-7b54a9369fc65af2.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand@0.8.5","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand-0.8.5\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand-0.8.5\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","getrandom","libc","rand_chacha","std","std_rng"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand-9228cf46bb6a2954.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd-sys@2.0.16+zstd.1.5.7","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-sys-2.0.16+zstd.1.5.7\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-sys-2.0.16+zstd.1.5.7\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["legacy","std","zdict_builder"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-sys-33a65b100360ff2d\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-sys-33a65b100360ff2d\\build_script_build.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog@2.8.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-2.8.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"slog","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-2.8.2\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","dynamic-keys","nested-values","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libslog-07e231d23fc17b47.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#is-terminal@0.4.16","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\is-terminal-0.4.16\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"is_terminal","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\is-terminal-0.4.16\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libis_terminal-5a9f899079d6eee0.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-backend@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-backend-0.2.104\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"wasm_bindgen_backend","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-backend-0.2.104\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_backend-31c3377c6ffa5da8.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_backend-31c3377c6ffa5da8.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#ahash@0.7.8","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\ahash-0.7.8\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"ahash","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\ahash-0.7.8\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libahash-4edf125bdf1e31c4.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#regex@1.12.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\regex-1.12.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"regex","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\regex-1.12.2\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","perf","perf-backtrack","perf-cache","perf-dfa","perf-inline","perf-literal","perf-onepass","std","unicode","unicode-age","unicode-bool","unicode-case","unicode-gencat","unicode-perl","unicode-script","unicode-segment"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libregex-0447438afaa06731.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand_chacha@0.9.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_chacha-0.9.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_chacha","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_chacha-0.9.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand_chacha-3de84c9c9b3fc20b.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#thiserror@1.0.69","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thiserror-1.0.69\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"thiserror","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thiserror-1.0.69\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libthiserror-04c18c3a94ed6680.rmeta"],"executable":null,"fresh":true} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd-sys@2.0.16+zstd.1.5.7","linked_libs":["static=zstd"],"linked_paths":["native=C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.44.35207\\atlmfc\\lib\\x64","native=C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-sys-475a80ad8684003a\\out"],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-sys-475a80ad8684003a\\out"} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog-term@2.9.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-term-2.9.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"slog_term","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-term-2.9.2\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libslog_term-f6865356416982a1.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-macro-support@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-macro-support-0.2.104\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"wasm_bindgen_macro_support","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-macro-support-0.2.104\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_macro_support-894d380fddf82587.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_macro_support-894d380fddf82587.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog-async@2.8.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-async-2.8.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"slog_async","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-async-2.8.0\\lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libslog_async-2c4e494577c1a5d0.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#hashbrown@0.12.3","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\hashbrown-0.12.3\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"hashbrown","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\hashbrown-0.12.3\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["ahash","default","inline-more"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libhashbrown-16980954de28e441.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand@0.9.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand-0.9.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand-0.9.2\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","os_rng","small_rng","std","std_rng","thread_rng"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand-50318bae00f6adc2.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#argmin-math@0.4.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\argmin-math-0.4.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"argmin_math","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\argmin-math-0.4.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","num-complex_0_4","primitives","vec"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libargmin_math-3388b099d2694caa.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-macro@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-macro-0.2.104\\Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"wasm_bindgen_macro","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-macro-0.2.104\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\wasm_bindgen_macro-e928ab882000aeeb.dll","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\wasm_bindgen_macro-e928ab882000aeeb.dll.lib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\wasm_bindgen_macro-e928ab882000aeeb.dll.exp","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\wasm_bindgen_macro-e928ab882000aeeb.pdb"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd-sys@2.0.16+zstd.1.5.7","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-sys-2.0.16+zstd.1.5.7\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zstd_sys","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-sys-2.0.16+zstd.1.5.7\\src\\lib.rs","edition":"2018","doc":true,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["legacy","std","zdict_builder"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libzstd_sys-1e223cfe0c64edd7.rmeta"],"executable":null,"fresh":true} +{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd-safe@7.2.4","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-safe-761a4d11e1f0a2d6\\out"} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#argmin@0.10.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\argmin-0.10.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"argmin","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\argmin-0.10.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libargmin-bf57ce8c8d4182ed.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd-safe@7.2.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-safe-7.2.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zstd_safe","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-safe-7.2.4\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["arrays","legacy","std","zdict_builder"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libzstd_safe-14c5d1696b9136b9.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-0.2.104\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"wasm_bindgen","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-0.2.104\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen-ac38c456fd42c3ed.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#argmin-observer-slog@0.1.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\argmin-observer-slog-0.1.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"argmin_observer_slog","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\argmin-observer-slog-0.1.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libargmin_observer_slog-42c76501120fd1c0.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#js-sys@0.3.81","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\js-sys-0.3.81\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"js_sys","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\js-sys-0.3.81\\src\\lib.rs","edition":"2021","doc":true,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libjs_sys-74453de689ea0f19.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd@0.13.3","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-0.13.3\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zstd","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-0.13.3\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["arrays","default","legacy","zdict_builder"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libzstd-9837f1075aeb7035.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rucrf@0.3.3","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rucrf-0.3.3\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rucrf","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rucrf-0.3.3\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","argmin","argmin-math","argmin-observer-slog","crossbeam-channel","default","std","train"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librucrf-08c5b8420dbaeeba.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#vibrato@0.5.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\vibrato-0.5.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"vibrato","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\vibrato-0.5.2\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","rucrf","train"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libvibrato-9e8ad7b69d4d843c.rmeta"],"executable":null,"fresh":true} +{"reason":"compiler-message","package_id":"path+file:///C:/Users/ryout/repository/AIdentity/rust-wasm#0.1.0","manifest_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\Cargo.toml","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"rust_wasm","src_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs","edition":"2024","doc":true,"doctest":false,"test":true},"message":{"rendered":"warning: unreachable expression\n --> src\\lib.rs:406:5\n |\n401 | return Some(NearestPointResult { x: p.x, y: p.y });\n | -------------------------------------------------- any code following this expression is unreachable\n...\n406 | Some(NearestPointResult { x: 0.0, y: 0.0 })\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression\n |\n = note: `#[warn(unreachable_code)]` on by default\n\n","$message_type":"diagnostic","children":[{"children":[],"code":null,"level":"note","message":"`#[warn(unreachable_code)]` on by default","rendered":null,"spans":[]}],"code":{"code":"unreachable_code","explanation":null},"level":"warning","message":"unreachable expression","spans":[{"byte_end":13084,"byte_start":13041,"column_end":48,"column_start":5,"expansion":null,"file_name":"src\\lib.rs","is_primary":true,"label":"unreachable expression","line_end":406,"line_start":406,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":48,"highlight_start":5,"text":" Some(NearestPointResult { x: 0.0, y: 0.0 })"}]},{"byte_end":12951,"byte_start":12901,"column_end":59,"column_start":9,"expansion":null,"file_name":"src\\lib.rs","is_primary":false,"label":"any code following this expression is unreachable","line_end":401,"line_start":401,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":59,"highlight_start":9,"text":" return Some(NearestPointResult { x: p.x, y: p.y });"}]}]}} +{"reason":"compiler-message","package_id":"path+file:///C:/Users/ryout/repository/AIdentity/rust-wasm#0.1.0","manifest_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\Cargo.toml","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"rust_wasm","src_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs","edition":"2024","doc":true,"doctest":false,"test":true},"message":{"rendered":"warning: unreachable expression\n --> src\\lib.rs:406:5\n |\n401 | return Some(NearestPointResult { x: p.x, y: p.y });\n | -------------------------------------------------- any code following this expression is unreachable\n...\n406 | Some(NearestPointResult { x: 0.0, y: 0.0 })\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression\n |\n = note: `#[warn(unreachable_code)]` on by default\n\n","$message_type":"diagnostic","children":[{"children":[],"code":null,"level":"note","message":"`#[warn(unreachable_code)]` on by default","rendered":null,"spans":[]}],"code":{"code":"unreachable_code","explanation":null},"level":"warning","message":"unreachable expression","spans":[{"byte_end":13084,"byte_start":13041,"column_end":48,"column_start":5,"expansion":null,"file_name":"src\\lib.rs","is_primary":true,"label":"unreachable expression","line_end":406,"line_start":406,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":48,"highlight_start":5,"text":" Some(NearestPointResult { x: 0.0, y: 0.0 })"}]},{"byte_end":12951,"byte_start":12901,"column_end":59,"column_start":9,"expansion":null,"file_name":"src\\lib.rs","is_primary":false,"label":"any code following this expression is unreachable","line_end":401,"line_start":401,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":59,"highlight_start":9,"text":" return Some(NearestPointResult { x: p.x, y: p.y });"}]}]}} +{"reason":"compiler-message","package_id":"path+file:///C:/Users/ryout/repository/AIdentity/rust-wasm#0.1.0","manifest_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\Cargo.toml","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"rust_wasm","src_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs","edition":"2024","doc":true,"doctest":false,"test":true},"message":{"rendered":"warning: value assigned to `ans` is never read\n --> src\\lib.rs:20:13\n |\n20 | let mut ans: String = if random_number == 1 {\n | ^^^\n |\n = help: maybe it is overwritten before being read?\n = note: `#[warn(unused_assignments)]` on by default\n\n","$message_type":"diagnostic","children":[{"children":[],"code":null,"level":"help","message":"maybe it is overwritten before being read?","rendered":null,"spans":[]},{"children":[],"code":null,"level":"note","message":"`#[warn(unused_assignments)]` on by default","rendered":null,"spans":[]}],"code":{"code":"unused_assignments","explanation":null},"level":"warning","message":"value assigned to `ans` is never read","spans":[{"byte_end":701,"byte_start":698,"column_end":16,"column_start":13,"expansion":null,"file_name":"src\\lib.rs","is_primary":true,"label":null,"line_end":20,"line_start":20,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":16,"highlight_start":13,"text":" let mut ans: String = if random_number == 1 {"}]}]}} +{"reason":"compiler-message","package_id":"path+file:///C:/Users/ryout/repository/AIdentity/rust-wasm#0.1.0","manifest_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\Cargo.toml","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"rust_wasm","src_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs","edition":"2024","doc":true,"doctest":false,"test":true},"message":{"rendered":"warning: value assigned to `ans` is never read\n --> src\\lib.rs:20:13\n |\n20 | let mut ans: String = if random_number == 1 {\n | ^^^\n |\n = help: maybe it is overwritten before being read?\n = note: `#[warn(unused_assignments)]` on by default\n\n","$message_type":"diagnostic","children":[{"children":[],"code":null,"level":"help","message":"maybe it is overwritten before being read?","rendered":null,"spans":[]},{"children":[],"code":null,"level":"note","message":"`#[warn(unused_assignments)]` on by default","rendered":null,"spans":[]}],"code":{"code":"unused_assignments","explanation":null},"level":"warning","message":"value assigned to `ans` is never read","spans":[{"byte_end":701,"byte_start":698,"column_end":16,"column_start":13,"expansion":null,"file_name":"src\\lib.rs","is_primary":true,"label":null,"line_end":20,"line_start":20,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":16,"highlight_start":13,"text":" let mut ans: String = if random_number == 1 {"}]}]}} +{"reason":"compiler-artifact","package_id":"path+file:///C:/Users/ryout/repository/AIdentity/rust-wasm#0.1.0","manifest_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\Cargo.toml","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"rust_wasm","src_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs","edition":"2024","doc":true,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":true},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librust_wasm-103cac6150b82a40.rmeta"],"executable":null,"fresh":false} +{"reason":"compiler-artifact","package_id":"path+file:///C:/Users/ryout/repository/AIdentity/rust-wasm#0.1.0","manifest_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\Cargo.toml","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"rust_wasm","src_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs","edition":"2024","doc":true,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librust_wasm-ccb3f3c99ff11159.rmeta"],"executable":null,"fresh":false} +{"reason":"build-finished","success":true}