加密货币市场における技术指标の分析は、トレーダーにとって不可欠な意思決定プロセスです。本稿では、CryptoCompareの公式APIとカスタム計算、そしてHolySheep AIという新しい選択肢を比較し、どのようなシチュエーションでどれを選択すべきかを実践的に解説します。
CryptoCompare API vs カスタム計算 vs HolySheep AI:比較表
| 比較項目 | CryptoCompare 公式API | カスタム計算(Pandas/NumPy) | HolySheep AI |
|---|---|---|---|
| 価格 | ¥7.3/$1(レート) | インフラコストのみ | ¥1/$1(85%節約) |
| 対応指標 | RSI、MACD、EMA等60+ | 何でも実装可能 | AI推論で自在に分析 |
| レイテンシ | 100-300ms | ローカル依存 | <50ms |
| 学習コスト | 中程度(ドキュメント読解) | 高い(プログラミング必要) | 低い(自然言語で質問) |
| データ蓄積 | 有(ヒストリカル対応) | 自作が必要 | API経由で取得可能 |
| 決済方法 | クレジットカードのみ | ー | WeChat Pay / Alipay対応 |
| 無料枠 | 制限あり | ー | 登録で無料クレジット付与 |
各アプローチの詳細解説
CryptoCompare 公式APIの特徴
CryptoCompareは加密货币データ提供において業界標準と言える存在です。60種類以上の技術指標をAPI経由で直接取得でき、ヒストリカルデータの蓄積も対応しています。私が以前担当したプロジェクトでは、BTC/USDの日足データに基づくRSI・MACD自動売買ボットにCryptoCompareを採用しました。
# CryptoCompare API呼び出し例(RSI取得)
import requests
def get_crypto_compare_rsi(symbol="BTC", comparison_symbol="USD"):
url = f"https://min-api.cryptocompare.com/data/v2 RSI?fsym={symbol}&tsym={comparison_symbol}"
headers = {"authorization": "YOUR_CRYPTCOMPARE_API_KEY"}
response = requests.get(url, headers=headers)
return response.json()
問題点:エンドポイント命名が不安定、直近100件のみ
result = get_crypto_compare_rsi()
print(result)
しかし、CryptoCompareの泣き所はその料金体系です。¥7.3/$1というレートは、個人開発者や小额トレーダーにとって大きな负担となります。私の経験では、月間で约$200のAPIコストがかかり、利益率の低い高频取引ではROID(投资回报率)に大きく影响しました。
カスタム計算の現実
オープンソースライブラリ(Pandas、TA-Lib、ccxt)を用いたカスタム計算は、自由度において最高の選択肢です。独自指標の実装や、机械学習モデルの组み込みも可能です。
# カスタム計算でRSIを実装
import pandas as pd
import numpy as np
def calculate_rsi_custom(prices, period=14):
"""Pandasを使ったRSI計算"""
delta = prices.diff()
gain = (delta.where(delta > 0, 0)).rolling(window=period).mean()
loss = (-delta.where(delta < 0, 0)).rolling(window=period).mean()
rs = gain / loss
rsi = 100 - (100 / (1 + rs))
return rsi
实际问题:リアルタイムデータ取得のコスト
ヒストリカルデータ保存インフラが必要
計算資源の负荷が大きい
prices = pd.Series([...]) # 価格データ
rsi_values = calculate_rsi_custom(prices)
カスタム計算の欠点は、インフラコストとメンテナンス负担です。データ取得、高可用性保证、实时更新を考えると、実際にはAPI服务借助の方がコスト効率が良いケースが多いです。
HolySheep AIという新选择肢
HolySheep AIは、私が入手した情报では¥1/$1という破格のレートを提供するAI API服务平台です。2026年output价格(/MTok)で見ると、GPT-4.1が$8、Claude Sonnet 4.5が$15、Gemini 2.5 Flashが$2.50、そしてDeepSeek V3.2が$0.42という价格帯に位置しています。
私自身、この料金体系に惊きました。CryptoCompareの¥7.3/$1と比べると85%のコスト削减が可能ということです。例えば、月間$200のAPIコストが$30程度で同じサービスが利用可能になります。
# HolySheep AIでの技術指標分析
import requests
import json
HolySheep API基本設定
BASE_URL = "https://api.holysheep.ai/v1"
HEADERS = {
"Authorization": f"Bearer YOUR_HOLYSHEEP_API_KEY",
"Content-Type": "application/json"
}
def analyze_crypto_with_ai(symbol, price_data, indicators):
"""
HolySheep AIを使用して暗号通貨の技術指標を分析
カスタム計算より高速で、自然言語で結果を取得可能
"""
prompt = f"""
以下の{symbol}の価格データと技術指標を分析してください:
価格データ: {json.dumps(price_data)}
計算済み指標: {indicators}
以下の点を含めて分析してください:
1. トレンド判断(上昇/下落/中立)
2. 売買シグナルの評価
3. リスクレベル
"""
payload = {
"model": "gpt-4.1",
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.3
}
response = requests.post(
f"{BASE_URL}/chat/completions",
headers=HEADERS,
json=payload
)
if response.status_code == 200:
return response.json()["choices"][0]["message"]["content"]
else:
raise Exception(f"API Error: {response.status_code}")
实证:RSI 30以下且つMACDゴールデンクロスという複合条件の分析
result = analyze_crypto_with_ai(
symbol="BTC",
price_data={"current": 67500, "high": 68000, "low": 66000},
indicators={"rsi": 28, "macd": {"signal": 150, "histogram": 45}}
)
print(result)
向いている人・向いていない人
向いている人
- 個人トレーダー・ 소상공인:APIコストを85%削減したい人士。WeChat Pay/Alipay対応で支払いも简单
- スタートアップ・新規プロジェクト:早期段階でのインフラコストを最小化したい团队。登録時の免费クレジットで試作可能
- 多言語対応サービス開発者:自然语言での分析叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨叨