- anipharm_api.py: 동물약 PDF 생성 API 추가 - data/master/*.json: 16종 마스터 데이터 업데이트 - templates: medication_guide_v2, 로고 추가 - docs: AI 매핑 아키텍처, API 스펙 문서 - .gitignore: _dev_scripts/, *.db 제외 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
719 lines
40 KiB
HTML
719 lines
40 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>애니팜 투약지도서</title>
|
|
<style>
|
|
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700;900&display=swap');
|
|
|
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
|
|
html, body {
|
|
font-family: 'Noto Sans KR', sans-serif;
|
|
font-size: 9pt;
|
|
color: #333;
|
|
line-height: 1.4;
|
|
background: #fff;
|
|
}
|
|
|
|
/* 페이지 */
|
|
.page {
|
|
width: 210mm;
|
|
min-height: 297mm;
|
|
padding: 5mm;
|
|
page-break-after: always;
|
|
box-sizing: border-box;
|
|
position: relative; /* 푸터 absolute 위치 기준 */
|
|
}
|
|
|
|
.page:last-child {
|
|
page-break-after: avoid;
|
|
}
|
|
|
|
/* 헤더 */
|
|
.header {
|
|
position: relative;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-end;
|
|
border-bottom: 1.5px solid #008BD5;
|
|
padding-bottom: 2mm;
|
|
margin-bottom: 3mm;
|
|
height: 18mm;
|
|
}
|
|
|
|
.header-left {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1mm;
|
|
width: 50mm;
|
|
}
|
|
|
|
.header-left .patient-name {
|
|
font-size: 16pt;
|
|
font-weight: 700;
|
|
color: #1a1a1a;
|
|
letter-spacing: -0.5pt;
|
|
}
|
|
|
|
.header-left .patient-info {
|
|
font-size: 8pt;
|
|
color: #555;
|
|
font-weight: 400;
|
|
}
|
|
|
|
.header-center {
|
|
position: absolute;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
bottom: 2mm;
|
|
text-align: center;
|
|
}
|
|
|
|
.header-center .pharmacy-name {
|
|
font-size: 22pt;
|
|
font-weight: 900;
|
|
color: #008BD5;
|
|
letter-spacing: -1pt;
|
|
}
|
|
|
|
.header-center .pharmacy-sub {
|
|
font-size: 7pt;
|
|
color: #666;
|
|
margin-top: 0.5mm;
|
|
}
|
|
|
|
.header-right {
|
|
text-align: right;
|
|
font-size: 8pt;
|
|
color: #333;
|
|
font-weight: 500;
|
|
width: 50mm;
|
|
}
|
|
|
|
.header-right .tel-label {
|
|
font-size: 6pt;
|
|
color: #888;
|
|
}
|
|
|
|
/* 카드 그리드 영역 */
|
|
.cards-area {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
grid-template-rows: auto auto;
|
|
gap: 3mm;
|
|
}
|
|
|
|
/* 약품 카드 */
|
|
.drug-card {
|
|
border: 1px solid #E0E0E0;
|
|
border-radius: 2mm;
|
|
overflow: hidden;
|
|
page-break-inside: avoid;
|
|
}
|
|
|
|
.drug-card-header {
|
|
background: linear-gradient(135deg, #1565C0, #42A5F5);
|
|
color: white;
|
|
padding: 1.5mm;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 2mm;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.drug-icon {
|
|
width: 10mm;
|
|
height: 10mm;
|
|
background: white;
|
|
border-radius: 1mm;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 10pt;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.drug-icon img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.drug-icon-fallback {
|
|
width: 100%;
|
|
height: 100%;
|
|
background: #f5f5f5;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.drug-icon-fallback svg {
|
|
width: 70%;
|
|
height: 70%;
|
|
fill: #bdbdbd;
|
|
}
|
|
|
|
.drug-name {
|
|
font-size: 8pt;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.drug-subtitle {
|
|
font-size: 5pt;
|
|
opacity: 0.9;
|
|
}
|
|
|
|
.drug-badges {
|
|
display: flex;
|
|
gap: 0.5mm;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.badge {
|
|
background: rgba(255,255,255,0.2);
|
|
padding: 0.2mm 1mm;
|
|
border-radius: 0.5mm;
|
|
font-size: 4.5pt;
|
|
}
|
|
|
|
.drug-card-body {
|
|
padding: 3mm;
|
|
font-size: 7pt;
|
|
}
|
|
|
|
/* 섹션들 */
|
|
.coverage-title {
|
|
font-size: 8pt;
|
|
font-weight: 700;
|
|
color: #1565C0;
|
|
margin-bottom: 2mm;
|
|
}
|
|
|
|
.coverage-table {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, 1fr);
|
|
gap: 1mm;
|
|
background: #F5F5F5;
|
|
padding: 2mm;
|
|
border-radius: 1.5mm;
|
|
margin-bottom: 3mm;
|
|
}
|
|
|
|
.coverage-item {
|
|
background: white;
|
|
padding: 1.5mm;
|
|
border-radius: 1mm;
|
|
text-align: center;
|
|
font-size: 6pt;
|
|
}
|
|
|
|
.coverage-item.covered { border-left: 1.5px solid #4CAF50; }
|
|
.coverage-item.not-covered { border-left: 1.5px solid #F44336; background: #FFEBEE; }
|
|
|
|
.coverage-icon { font-size: 7pt; }
|
|
.coverage-name { font-weight: 500; }
|
|
|
|
/* 갭 경고 */
|
|
.gap-warning {
|
|
background: #FFF3E0;
|
|
border: 1px solid #FFB74D;
|
|
border-radius: 1.5mm;
|
|
padding: 2mm;
|
|
margin-bottom: 3mm;
|
|
font-size: 6pt;
|
|
}
|
|
|
|
.gap-warning-title { font-weight: 700; color: #E65100; font-size: 7pt; }
|
|
.gap-solution { color: #F57C00; }
|
|
|
|
/* 투약 정보 */
|
|
.dosing-section {
|
|
background: #E3F2FD;
|
|
border-radius: 1.5mm;
|
|
padding: 2mm 3mm;
|
|
margin-bottom: 3mm;
|
|
}
|
|
|
|
.dosing-title { font-weight: 700; color: #1565C0; font-size: 7pt; }
|
|
.dosing-main { font-size: 11pt; font-weight: 700; color: #0D47A1; }
|
|
.dosing-note { font-size: 6pt; color: #1976D2; margin-top: 1mm; }
|
|
|
|
/* 체중별 제품 */
|
|
.weight-products {
|
|
display: flex;
|
|
gap: 0.5mm;
|
|
flex-wrap: wrap;
|
|
margin-top: 1mm;
|
|
}
|
|
|
|
.weight-product {
|
|
background: #E8F5E9;
|
|
padding: 0.5mm 1mm;
|
|
border-radius: 0.5mm;
|
|
font-size: 4.5pt;
|
|
border: 0.5px solid #A5D6A7;
|
|
}
|
|
|
|
/* 용량표 */
|
|
.dosage-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: 1mm;
|
|
background: #E3F2FD;
|
|
padding: 2mm;
|
|
border-radius: 1.5mm;
|
|
margin-bottom: 3mm;
|
|
}
|
|
|
|
.dosage-cell {
|
|
background: white;
|
|
padding: 1.5mm;
|
|
border-radius: 1mm;
|
|
text-align: center;
|
|
font-size: 6pt;
|
|
}
|
|
|
|
.dosage-weight { font-weight: 500; color: #1565C0; font-size: 7pt; }
|
|
.dosage-amount { font-weight: 700; color: #0D47A1; font-size: 9pt; }
|
|
|
|
/* 절대 금기 */
|
|
.contraindication-box {
|
|
background: #FFEBEE;
|
|
border: 1.5px solid #F44336;
|
|
border-radius: 1.5mm;
|
|
padding: 2mm;
|
|
margin-bottom: 3mm;
|
|
}
|
|
|
|
.contraindication-title { font-weight: 900; color: #C62828; font-size: 8pt; margin-bottom: 1mm; }
|
|
|
|
.contraindication-list {
|
|
list-style: none;
|
|
font-size: 6pt;
|
|
color: #B71C1C;
|
|
}
|
|
|
|
.contraindication-list li { padding: 0.5mm 0; }
|
|
|
|
/* 주의사항 */
|
|
.warnings-section {
|
|
background: #FFF8E1;
|
|
border: 1px solid #FFE082;
|
|
border-radius: 1.5mm;
|
|
padding: 2mm;
|
|
}
|
|
|
|
.warnings-title { font-weight: 700; color: #F57F17; font-size: 7pt; margin-bottom: 1mm; }
|
|
|
|
.warnings-list {
|
|
list-style: none;
|
|
font-size: 6pt;
|
|
color: #795548;
|
|
}
|
|
|
|
.warnings-list li { padding: 0.3mm 0; }
|
|
|
|
/* 외용제 용법 */
|
|
.usage-box {
|
|
background: #E8F5E9;
|
|
padding: 1mm;
|
|
border-radius: 1mm;
|
|
font-size: 5pt;
|
|
margin-bottom: 1.5mm;
|
|
}
|
|
|
|
/* 푸터 */
|
|
.footer {
|
|
position: absolute;
|
|
bottom: 3mm;
|
|
left: 5mm;
|
|
right: 5mm;
|
|
text-align: center;
|
|
font-size: 5pt;
|
|
color: #9E9E9E;
|
|
border-top: 0.5px solid #E0E0E0;
|
|
padding-top: 1mm;
|
|
height: 10mm;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
.footer-left {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 2mm;
|
|
}
|
|
|
|
.footer-logo { font-weight: 700; color: #008BD5; font-size: 7pt; letter-spacing: 0.5px; }
|
|
|
|
.footer-right {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1.5mm;
|
|
}
|
|
|
|
.footer-right img {
|
|
height: 6mm;
|
|
}
|
|
|
|
.footer-provider {
|
|
font-size: 5pt;
|
|
color: #666;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
{% set drugs_per_page = 4 %}
|
|
{% set total_pages = ((drugs|length - 1) // drugs_per_page) + 1 %}
|
|
|
|
{% for page_num in range(total_pages) %}
|
|
<div class="page">
|
|
{% if page_num == 0 %}
|
|
<!-- 헤더 (첫 페이지만) -->
|
|
<div class="header">
|
|
<div class="header-left">
|
|
<div class="patient-name">{{ patient_name }} 반려인님</div>
|
|
<div class="patient-info">{{ pet_name }} · {{ pet_species }} · {{ pet_age }}</div>
|
|
</div>
|
|
<div class="header-center">
|
|
<div class="pharmacy-name">{{ pharmacy_name }}</div>
|
|
<div class="pharmacy-sub">동물약 전문 상담</div>
|
|
</div>
|
|
<div class="header-right">
|
|
<div class="tel-label">TEL</div>
|
|
<div>{{ pharmacy_tel }}</div>
|
|
<div style="font-size:6pt; color:#888; margin-top:1mm;">{{ issue_date }}</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="cards-area">
|
|
{% set start_idx = page_num * drugs_per_page %}
|
|
{% set end_idx = [start_idx + drugs_per_page, drugs|length] | min %}
|
|
|
|
{% for drug in drugs[start_idx:end_idx] %}
|
|
<div class="drug-card">
|
|
<div class="drug-card-header">
|
|
<div class="drug-icon">
|
|
{% if drug.image_url %}
|
|
<img src="{{ drug.image_url }}"
|
|
alt="{{ drug.name }}"
|
|
onerror="this.style.display='none'; this.nextElementSibling.style.display='flex';" />
|
|
<span class="drug-icon-fallback" style="display:none;">
|
|
<svg viewBox="0 0 24 24"><path d="M20 6h-4V4c0-1.1-.9-2-2-2h-4c-1.1 0-2 .9-2 2v2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-6 0h-4V4h4v2z"/></svg>
|
|
</span>
|
|
{% elif drug.apc_code is not none and drug.apc_code and (drug.apc_code|string)[:4] != '0519' and (drug.apc_code|string)[:4] != 'None' %}
|
|
<img src="https://cdn-saas-web-218-79.cdn-nhncommerce.com/anypharm70_godomall_com/data/img/product/resized/{{ drug.apc_code }}_F_600_wm.jpg"
|
|
alt="{{ drug.name }}"
|
|
onerror="this.style.display='none'; this.nextElementSibling.style.display='flex';" />
|
|
<span class="drug-icon-fallback" style="display:none;">
|
|
<svg viewBox="0 0 24 24"><path d="M20 6h-4V4c0-1.1-.9-2-2-2h-4c-1.1 0-2 .9-2 2v2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-6 0h-4V4h4v2z"/></svg>
|
|
</span>
|
|
{% else %}
|
|
<span class="drug-icon-fallback">
|
|
<svg viewBox="0 0 24 24"><path d="M20 6h-4V4c0-1.1-.9-2-2-2h-4c-1.1 0-2 .9-2 2v2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-6 0h-4V4h4v2z"/></svg>
|
|
</span>
|
|
{% endif %}
|
|
</div>
|
|
<div>
|
|
<div class="drug-name">{{ drug.name }}</div>
|
|
<div class="drug-subtitle">{{ drug.english_name }}</div>
|
|
<div class="drug-badges">
|
|
<span class="badge">{{ drug.category_display }}</span>
|
|
{% for animal in drug.target_animal %}<span class="badge">{{ animal }}</span>{% endfor %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="drug-card-body">
|
|
{% if drug.category == 'antiparasitic' %}
|
|
<!-- 구충제 -->
|
|
<div class="coverage-title">🎯 구충 범위</div>
|
|
<div class="coverage-table">
|
|
{% for item in drug.coverage_summary.covered %}
|
|
<div class="coverage-item covered">
|
|
<span class="coverage-icon">✅</span>
|
|
<span class="coverage-name">{{ item }}</span>
|
|
</div>
|
|
{% endfor %}
|
|
{% for item in drug.coverage_summary.not_covered %}
|
|
<div class="coverage-item not-covered">
|
|
<span class="coverage-icon">❌</span>
|
|
<span class="coverage-name">{{ item }}</span>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
{% if drug.coverage_summary.gap_solution %}
|
|
<div class="gap-warning">
|
|
<span class="gap-warning-title">⚠️ 보완:</span>
|
|
<span class="gap-solution">{{ drug.coverage_summary.gap_solution }}</span>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="dosing-section">
|
|
<div class="dosing-title">📅 투약 주기</div>
|
|
<div class="dosing-main">{{ drug.dosing.interval }}</div>
|
|
{% if drug.dosing.interval_reason %}
|
|
<div class="dosing-note">{{ drug.dosing.interval_reason }}</div>
|
|
{% endif %}
|
|
{% if drug.dosing.minimum_age or drug.dosing.minimum_weight %}
|
|
<div class="dosing-note">최소 연령: {{ drug.dosing.minimum_age }} / 최소 체중: {{ drug.dosing.minimum_weight }}</div>
|
|
{% endif %}
|
|
{% if drug.weight_products %}
|
|
<div class="weight-products">
|
|
{% for wp in drug.weight_products %}<div class="weight-product">{{ wp.size }}({{ wp.weight_range }})</div>{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
|
|
{% elif drug.category == 'nsaid' %}
|
|
<!-- NSAIDs -->
|
|
<div class="coverage-title">⚖️ 체중별 용량 ({{ drug.dosage.standard }})</div>
|
|
<div class="dosage-grid">
|
|
{% for row in drug.dosage_table[:6] %}
|
|
<div class="dosage-cell">
|
|
<div class="dosage-weight">{{ row.weight }}</div>
|
|
<div class="dosage-amount">{{ row.tablets }}</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
{% if drug.absolute_contraindications %}
|
|
<div class="contraindication-box">
|
|
<div class="contraindication-title">⭕ 절대 금기</div>
|
|
<ul class="contraindication-list">
|
|
{% for c in drug.absolute_contraindications %}
|
|
<li>❌ {{ c.item }} — {{ c.reason }}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if drug.washout_period %}
|
|
<div class="gap-warning">
|
|
<span class="gap-warning-title">⏱️ 약물 전환 시 휴약기</span><br>
|
|
<span class="gap-solution">• 다른 NSAIDs로: {{ drug.washout_period.to_other_nsaid }}</span><br>
|
|
<span class="gap-solution">• 스테로이드로: {{ drug.washout_period.to_steroid }}</span>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% elif drug.category == 'antibiotic' %}
|
|
<!-- 항생제 -->
|
|
<div class="dosing-section">
|
|
<div class="dosing-title">📋 {{ drug.indication[:40] if drug.indication is string else drug.indication }}...</div>
|
|
<div class="dosing-main">{{ drug.dosage.standard if drug.dosage.standard is defined else drug.dosage }}</div>
|
|
{% if drug.dosage.duration is defined %}
|
|
<div class="dosing-note">기간: {{ drug.dosage.duration }}</div>
|
|
{% endif %}
|
|
</div>
|
|
|
|
{% if drug.dosage_table %}
|
|
<div class="coverage-title">⚖️ 체중별 용량</div>
|
|
<div class="dosage-grid">
|
|
{% for row in drug.dosage_table[:6] %}
|
|
<div class="dosage-cell">
|
|
<div class="dosage-weight">{{ row.weight }}</div>
|
|
<div class="dosage-amount">{{ row.tablets_per_dose if row.tablets_per_dose is defined else (row.tablets if row.tablets is defined else row.dose) }}</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if drug.treatment_timeline %}
|
|
<div class="gap-warning">
|
|
<span class="gap-warning-title">📅 효과 시기</span><br>
|
|
{% if drug.treatment_timeline.phases is defined %}
|
|
{% for phase in drug.treatment_timeline.phases[:4] %}
|
|
<span class="gap-solution">• {{ phase.week }}: {{ phase.expected[:30] }}...</span><br>
|
|
{% endfor %}
|
|
{% else %}
|
|
{% for key, val in drug.treatment_timeline.items() %}
|
|
{% if key not in ['realistic_expectation', 'important_note', 'description', 'phases'] %}
|
|
<span class="gap-solution">• {{ key }}: {{ val }}</span><br>
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if drug.clinical_notes %}
|
|
<div class="gap-warning">
|
|
<span class="gap-warning-title">💡 임상 참고</span><br>
|
|
{% for note in drug.clinical_notes[:3] %}<span class="gap-solution">• {{ note }}</span><br>{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if drug.cat_warning %}
|
|
<div class="contraindication-box">
|
|
<div class="contraindication-title">🐱 고양이 주의</div>
|
|
<div style="font-size:5pt;">최대: {{ drug.cat_warning.max_dose }} ({{ drug.cat_warning.risk }})</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% elif drug.category == 'antiemetic' %}
|
|
<!-- 항구토제 -->
|
|
<div class="dosing-section">
|
|
<div class="dosing-title">📋 {{ drug.indication }}</div>
|
|
</div>
|
|
|
|
<div class="dosage-grid" style="grid-template-columns: 1fr 1fr;">
|
|
<div class="dosage-cell" style="background:#E3F2FD;">
|
|
<div class="dosage-weight">🤮 급성구토</div>
|
|
<div class="dosage-amount">{{ drug.dosage.acute_vomiting.dose }}</div>
|
|
<div style="font-size:5pt;">({{ drug.dosage.acute_vomiting.duration }})</div>
|
|
</div>
|
|
<div class="dosage-cell" style="background:#FFF3E0;">
|
|
<div class="dosage-weight">🚗 멀미예방</div>
|
|
<div class="dosage-amount">{{ drug.dosage.motion_sickness.dose }}</div>
|
|
<div style="font-size:5pt;">({{ drug.dosage.motion_sickness.timing }})</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% if drug.available_strengths %}
|
|
<div class="usage-box">
|
|
<b>제품 규격:</b> {{ drug.available_strengths | join(', ') }}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if drug.clinical_notes %}
|
|
<div class="gap-warning">
|
|
<span class="gap-warning-title">💡 임상 참고</span><br>
|
|
{% for note in drug.clinical_notes %}<span class="gap-solution">• {{ note }}</span><br>{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% elif drug.category == 'immunomodulator' %}
|
|
<!-- 면역조절제 (아포퀠 등) -->
|
|
<div class="dosing-section">
|
|
<div class="dosing-title">📋 {{ drug.indication }}</div>
|
|
{% if drug.mechanism %}
|
|
<div class="dosing-note">{{ drug.mechanism.action }}</div>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<div class="coverage-title">⚖️ 체중별 용량</div>
|
|
<div class="dosage-grid">
|
|
{% for row in drug.dosage_table[:6] %}
|
|
<div class="dosage-cell">
|
|
<div class="dosage-weight">{{ row.weight }}</div>
|
|
<div class="dosage-amount">{{ row.tablets }}</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<div class="gap-warning">
|
|
<span class="gap-warning-title">💊 투약법</span><br>
|
|
<span class="gap-solution">• {{ drug.dosage.note }}</span>
|
|
</div>
|
|
|
|
{% elif drug.category == 'analgesic' %}
|
|
<!-- 진통제 (가바펜틴 등) -->
|
|
<div class="dosing-section">
|
|
<div class="dosing-title">📋 {{ drug.indication }}</div>
|
|
</div>
|
|
|
|
<div class="usage-box">
|
|
{% if drug.dosage.dog_pain %}<b>🐕 개:</b> {{ drug.dosage.dog_pain }}<br>{% endif %}
|
|
{% if drug.dosage.cat_pain %}<b>🐱 고양이:</b> {{ drug.dosage.cat_pain }}<br>{% endif %}
|
|
{% if drug.dosage.cat_anxiety %}<b>🐱 불안:</b> {{ drug.dosage.cat_anxiety }}{% endif %}
|
|
</div>
|
|
|
|
{% if drug.clinical_notes %}
|
|
<div class="gap-warning">
|
|
<span class="gap-warning-title">💡 임상 참고</span><br>
|
|
{% for note in drug.clinical_notes %}<span class="gap-solution">• {{ note }}</span><br>{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% else %}
|
|
<!-- 기타 (외용제 등) -->
|
|
<div class="dosing-section">
|
|
<div class="dosing-title">📋 {{ drug.indication }}</div>
|
|
</div>
|
|
{% if drug.dosage %}
|
|
<div class="usage-box">
|
|
{% if drug.dosage.frequency %}<b>빈도:</b> {{ drug.dosage.frequency }}<br>{% endif %}
|
|
{% if drug.dosage.duration %}<b>기간:</b> {{ drug.dosage.duration }}<br>{% endif %}
|
|
{% if drug.dosage.max_duration %}<b>최대:</b> {{ drug.dosage.max_duration }}<br>{% endif %}
|
|
{% if drug.dosage.application %}<b>방법:</b> {{ drug.dosage.application }}{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if drug.application_method %}
|
|
<div class="gap-warning">
|
|
<span class="gap-warning-title">🖐️ 도포 방법</span>
|
|
<div style="display:flex; flex-wrap:wrap; gap:1mm; margin-top:1mm;">
|
|
{% for key, val in drug.application_method.items() %}
|
|
{% if key.startswith('step') and val.action is defined %}
|
|
<span style="background:#E3F2FD; padding:0.5mm 1.5mm; border-radius:1mm; font-size:5pt;">{{ loop.index }}. {{ val.action[:12] }}</span>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if drug.progress_monitoring %}
|
|
<div class="gap-warning">
|
|
<span class="gap-warning-title">📅 경과 관찰</span><br>
|
|
{% for key, val in drug.progress_monitoring.items() %}
|
|
{% if val.description is defined %}
|
|
<span class="gap-solution">• {{ key.replace('_', ' ') }}: {{ val.description }}</span><br>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if drug.pharmacy_tips %}
|
|
<div class="gap-warning" style="background:#E8F5E9;">
|
|
<span class="gap-warning-title">💡 약사 꿀팁</span><br>
|
|
{% if drug.pharmacy_tips.human_vs_animal %}
|
|
<span class="gap-solution">• {{ drug.pharmacy_tips.human_vs_animal }}</span><br>
|
|
{% endif %}
|
|
{% if drug.pharmacy_tips.ph_tip %}
|
|
<span class="gap-solution">• {{ drug.pharmacy_tips.ph_tip }}</span><br>
|
|
{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if drug.clinical_notes %}
|
|
<div class="gap-warning">
|
|
<span class="gap-warning-title">💡 임상 참고</span><br>
|
|
{% for note in drug.clinical_notes[:3] %}<span class="gap-solution">• {{ note }}</span><br>{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
<!-- 주의사항 -->
|
|
{% if drug.warnings %}
|
|
<div class="warnings-section">
|
|
<div class="warnings-title">⚠️ 주의사항</div>
|
|
<ul class="warnings-list">
|
|
{% for w in drug.warnings %}<li>{{ w }}</li>{% endfor %}
|
|
</ul>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<!-- 푸터 (모든 페이지) -->
|
|
<div class="footer">
|
|
<div class="footer-left">
|
|
<div class="footer-logo">애니팜 투약지도서</div>
|
|
<span>※ 참고용 안내문입니다. 정확한 투약은 약사님과 함께 허가사항 해석과, 수의사 지시에 따릅니다.</span>
|
|
</div>
|
|
<div class="footer-right">
|
|
<span class="footer-provider">투약정보 제공</span>
|
|
<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNC4xLjIsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0i66CI7J207Ja0XzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCINCgkgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDAwIDE1MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDAwIDE1MDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzAwOEJENTt9DQoJLnN0MXtmaWxsOiMyMzE4MTU7fQ0KPC9zdHlsZT4NCjxnPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTguMywxMTYuODZjMC02Ljc3LTUuNDktMTIuMjEtMTIuMjYtMTIuMjFoLTkuMTJjLTMuMTgsMC02LjE0LTAuOTQtOC42NC0yLjU0DQoJCQljLTQuMzYtMi43OC03LjI4LTcuNi03LjQ0LTEzLjFjMC0wLjE2LTAuMDItMC4zMS0wLjAyLTAuNDdjMC01Ljc0LDMuMDItMTAuNzksNy41Ni0xMy42NGMxLjM5LTAuODcsMi40MS0yLjIzLDIuNjQtMy44NQ0KCQkJYzAuNTUtMy44NiwxLjg1LTcuNDgsMy43NS0xMC43MmM1LjY4LTkuNjQsMTYuNjQtMTUuODIsMjguODktMTQuNDJjMS45NywwLjIyLDMuODksMC42Niw1LjczLDEuMjdjMi43MywwLjkxLDUuNzEtMC4yMyw3LjAzLTIuNzkNCgkJCWwwLDBjMS44OS0zLjY3LDAuMjItNy42OC0zLjcxLTguOTRjLTMuODctMS4yNC03Ljk3LTEuOTItMTIuMi0xLjk1Yy0xOS40OC0wLjEzLTM1Ljg3LDEzLjA4LTQwLjYzLDMxLjAzDQoJCQljLTAuMywxLjEzLTAuOTMsMi4xMi0xLjgsMi45Yy03LjYsNi43OS0xMS41NCwxNy41OS04LjM4LDI5LjFjMy4zNSwxMi4yLDE0LjkxLDIwLjM0LDI3LjU2LDIwLjM0TDU4LjMsMTE2Ljg2eiIvPg0KCTwvZz4NCjwvZz4NCjxnPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDUuNDgsNzMuNjhjMCwyLjE2LTEuNzYsMy45Mi0zLjkyLDMuOTJjLTIuMTcsMC0zLjkyLTEuNzYtMy45Mi0zLjkyYzAtMi4xNywxLjc2LTMuOTIsMy45Mi0zLjkyDQoJCQlDNDMuNzMsNjkuNzYsNDUuNDgsNzEuNTIsNDUuNDgsNzMuNjh6Ii8+DQoJPC9nPg0KPC9nPg0KPGc+DQoJPGc+DQoJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMDguODYsMzMuNWwtMi4zOSwwYy0xNS45NCwwLTI4Ljg3LDEyLjkzLTI4Ljg3LDI4Ljg3djU0LjQ2YzAsMC4wMSwwLjAxLDAuMDMsMC4wMywwLjAzDQoJCQljNi43My0wLjAxLDEyLjE5LTUuNDgsMTIuMTktMTIuMjF2LTQuMzJWNzguMDJ2LTEzYzAtMTAuNTgsOC41LTE5LjE2LDE5LjA1LTE5LjNjOC43MS0wLjExLDE2LjQ0LDYuNDEsMTYuOTcsMTUuMQ0KCQkJYzAuNTcsOS4zNC02Ljg2LDE3LjEyLTE2LjA4LDE3LjEyaC04Ljc0Yy0zLjM4LDAtNi4xMiwyLjc0LTYuMTIsNi4xMmwwLDBjMCwzLjM3LDIuNzMsNi4xLDYuMSw2LjFoOC43Ng0KCQkJYzE2LjA3LDAsMjkuMDEtMTMuMzgsMjguMjktMjkuNjFDMTM3LjM3LDQ1LjI2LDEyNC4xNiwzMy41LDEwOC44NiwzMy41eiIvPg0KCTwvZz4NCjwvZz4NCjxnPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTE0LjU5LDEwMS41MnYzLjNoOC41MXYxLjJoLTQuMjd2Mi4wNmg2LjczdjEuMTZoLTE0Ljg0di0xLjE2aDYuOHYtMi4wNmgtNC4yN3YtNS42N2g5Ljc4djEuMThIMTE0LjU5eg0KCQkJIE0xMTguMTUsMTE3LjEyYy0yLjc3LDAtNC40NC0xLjUtNC40NC0zLjM4YzAtMS44NywxLjY3LTMuNCw0LjQ0LTMuNGMyLjc3LDAsNC40NCwxLjUzLDQuNDQsMy40DQoJCQlDMTIyLjU5LDExNS42MiwxMjAuOTIsMTE3LjEyLDExOC4xNSwxMTcuMTJ6IE0xMTguMTUsMTExLjQ4Yy0xLjg1LDAtMy4wNywwLjk5LTMuMDcsMi4yNmMwLDEuMywxLjIyLDIuMjcsMy4wNywyLjI3DQoJCQlzMy4wNy0wLjk3LDMuMDctMi4yN0MxMjEuMjIsMTEyLjQ2LDEyMCwxMTEuNDgsMTE4LjE1LDExMS40OHoiLz4NCgk8L2c+DQoJPGc+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xMjkuMzksMTE2Ljc2di00LjAyaDguNTN2LTEuNTloLTguNTN2LTEuMThoNC4zNHYtMS42N2gtNi43OXYtMS4xOGgxNC44NHYxLjE4aC02Ljc1djEuNjdoNC4xOHYzLjk3aC04LjUzDQoJCQl2MS42Nmg5LjAxdjEuMTZIMTI5LjM5eiBNMTI5LjQ4LDEwNS41OXYtNS40OGg5Ljc2djUuNDhIMTI5LjQ4eiBNMTM3LjkyLDEwMS4yOWgtNy4xMnYzLjFoNy4xMlYxMDEuMjl6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTQ3LjQ1LDEwOC4yOWMtMi4zNiwwLTQuMTItMS42Mi00LjEyLTMuNzljMC0yLjEzLDEuNzYtMy43NCw0LjEyLTMuNzRjMi4zNCwwLDQuMTMsMS41OSw0LjEzLDMuNzQNCgkJCUMxNTEuNTcsMTA2LjY3LDE0OS43OSwxMDguMjksMTQ3LjQ1LDEwOC4yOXogTTE0Ny40NSwxMDEuOTFjLTEuNjIsMC0yLjc1LDEuMi0yLjc1LDIuNTljMCwxLjM4LDEuMTMsMi42MywyLjc1LDIuNjMNCgkJCWMxLjY0LDAsMi43Ny0xLjI1LDIuNzctMi42M0MxNTAuMjEsMTAzLjEsMTQ5LjA5LDEwMS45MSwxNDcuNDUsMTAxLjkxeiBNMTU0LjUsMTE2LjQ4di01aC04LjA3di0xLjJoOS40djYuMkgxNTQuNXoNCgkJCSBNMTU1LjgyLDEwMy41M3YyLjE1aDIuNTV2MS4yaC0yLjU1djIuNDdoLTEuMzJ2LTkuMzZoMS4zMnYyLjM0aDIuNTV2MS4ySDE1NS44MnoiLz4NCgk8L2c+DQoJPGc+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNzAuNjQsMTEwLjc1Yy0xLjk0LDAuMjEtNC4zNywwLjQxLTYuMDgsMC40OGMtMS41OSwwLjA3LTMuNzIsMC4xMi01LjE1LDAuMTJsLTAuMTQtMS4yDQoJCQljMS4yNSwwLjAyLDMuNC0wLjA0LDUuMDEtMC4wOWMxLjg3LTAuMDcsNC41My0wLjE5LDYuMjYtMC40MkwxNzAuNjQsMTEwLjc1eiBNMTY4LjU5LDEwNC4zNGMwLDIuMS0xLjY0LDMuNzItNC4xMywzLjcyDQoJCQljLTIuNCwwLTQuMTYtMS42Mi00LjE2LTMuNzJjMC0yLjEzLDEuNzYtMy43LDQuMTYtMy43QzE2Ni43OSwxMDAuNjQsMTY4LjU5LDEwMi4yMSwxNjguNTksMTA0LjM0eiBNMTY0LjQ3LDEwMS44Mg0KCQkJYy0xLjc2LDAtMi44NCwxLjA4LTIuODQsMi41MmMwLDEuNDEsMS4wNiwyLjU0LDIuODQsMi41NGMxLjczLDAsMi43NS0xLjEzLDIuNzUtMi41NEMxNjcuMjIsMTAyLjg5LDE2Ni4xOSwxMDEuODIsMTY0LjQ3LDEwMS44MnoNCgkJCSBNMTcxLjU5LDExNC43di0xNC42OGgxLjN2MTQuNjhIMTcxLjU5eiIvPg0KCTwvZz4NCgk8Zz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTE4OS42NiwxMDkuNGMtMS45Ni0wLjYtMy40Ny0xLjktNC4xNi0zLjQ5Yy0wLjY3LDEuNjQtMS45NiwyLjkxLTQuMTEsMy43NGwtMC42NS0xLjA5DQoJCQljMi4zNC0wLjksNC4wNS0yLjYxLDQuMDUtNS4yNXYtMC45NWgtMy42NXYtMS4xNmg4LjQ2djEuMTZoLTMuNDR2MC45MmMwLDIuNTQsMS44Miw0LjMsNC4xMSw1LjA0TDE4OS42NiwxMDkuNHogTTE4NS4wOCwxMTYuMTENCgkJCXYtNS41M2gxLjN2NC4zMmg4LjIxdjEuMjJIMTg1LjA4eiBNMTkyLjk5LDExMS41NXYtNS45N2gtMy44MXYtMS4xNmgzLjgxVjEwMGgxLjN2MTEuNTRIMTkyLjk5eiIvPg0KCTwvZz4NCgk8Zz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTIwMy44MSwxMTIuOTl2LTMuMzhoLTcuMXYtMS4xOGgxNC44NHYxLjE4aC02LjQ1djMuMzhIMjAzLjgxeiBNMjAwLjQ5LDExMS41OHYzLjYzaDguNjR2MS4yaC05Ljk2di00LjgzDQoJCQlIMjAwLjQ5eiBNMTk5LjI0LDEwNi40OXYtNi4wMWg5Ljc2djYuMDFIMTk5LjI0eiBNMjA3LjY5LDEwMS42OGgtNy4xMnYzLjYxaDcuMTJWMTAxLjY4eiIvPg0KCTwvZz4NCgk8Zz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTIyMS4xNCwxMDEuMTNjLTAuMDksNS4zOS0zLjQ0LDguNDQtNy40MiwxMC4wM2wtMC43OC0xLjE1YzMuOTUtMS41LDYuMzUtNC4xNiw2LjczLTcuN2gtNS45di0xLjE4SDIyMS4xNHoNCgkJCSBNMjI1LjU3LDEwNi4xOXY4LjUxaC0xLjMydi0xNC42OGgxLjMydjQuOTloMi43OXYxLjE4SDIyNS41N3oiLz4NCgk8L2c+DQoJPGc+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0yMjkuMTIsMTA5LjQzdi0xLjE4aDE0Ljg0djEuMThIMjI5LjEyeiBNMjMyLjk2LDExMS4ydjMuNzdoOC42N3YxLjJoLTkuOTl2LTQuOTdIMjMyLjk2eiBNMjMxLjcxLDEwNS44Ng0KCQkJdi01LjYyaDEuM3Y0LjQyaDguNjJ2MS4ySDIzMS43MXoiLz4NCgk8L2c+DQoJPGc+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0yNTQuNTYsMTA4LjI5Yy0yLjM2LDAtNC4xMi0xLjYyLTQuMTItMy43OWMwLTIuMTMsMS43Ni0zLjc0LDQuMTItMy43NGMyLjM0LDAsNC4xMywxLjU5LDQuMTMsMy43NA0KCQkJQzI1OC42OCwxMDYuNjcsMjU2LjksMTA4LjI5LDI1NC41NiwxMDguMjl6IE0yNTQuNTYsMTAxLjkxYy0xLjYyLDAtMi43NSwxLjItMi43NSwyLjU5YzAsMS4zOCwxLjEzLDIuNjMsMi43NSwyLjYzDQoJCQljMS42NCwwLDIuNzctMS4yNSwyLjc3LTIuNjNDMjU3LjMzLDEwMy4xLDI1Ni4yLDEwMS45MSwyNTQuNTYsMTAxLjkxeiBNMjYxLjYxLDExNi40OHYtNWgtOC4wN3YtMS4yaDkuNHY2LjJIMjYxLjYxeg0KCQkJIE0yNjIuOTMsMTAzLjUzdjIuMTVoMi41NXYxLjJoLTIuNTV2Mi40N2gtMS4zMnYtOS4zNmgxLjMydjIuMzRoMi41NXYxLjJIMjYyLjkzeiIvPg0KCTwvZz4NCgk8Zz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTI3NC45MywxMTAuNjVjLTEuNjYtMC45NS0zLjQ1LTMuMDYtMy44OC00LjgxYy0wLjM3LDEuODUtMS45Miw0LjA5LTMuOTcsNS4xOGwtMC44NS0wLjk1DQoJCQljMi4zOC0xLjI3LDQuMDctMy45LDQuMDctNy4yNnYtMi4xM2gxLjQxdjIuMDhjMCwzLjMsMS44Miw1LjcxLDQuMDQsNi45MUwyNzQuOTMsMTEwLjY1eiBNMjc5LjE0LDEwNi4xOXY4LjUxaC0xLjMxdi0xNC42OGgxLjMxDQoJCQl2NC45OWgyLjc4djEuMThIMjc5LjE0eiIvPg0KCTwvZz4NCgk8Zz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTI4Ny41MiwxMDguMzZjLTIuMzgsMC00LjE4LTEuNjItNC4xOC0zLjg2YzAtMi4yNCwxLjgtMy44Miw0LjE4LTMuODJjMi40MywwLDQuMjEsMS41OSw0LjIxLDMuODINCgkJCUMyOTEuNzMsMTA2LjczLDI4OS45NywxMDguMzYsMjg3LjUyLDEwOC4zNnogTTI4Ny41MiwxMDEuODRjLTEuNjksMC0yLjg0LDEuMjMtMi44NCwyLjY2YzAsMS40MSwxLjE1LDIuNjgsMi44NCwyLjY4DQoJCQljMS43OCwwLDIuODktMS4yNywyLjg5LTIuNjhDMjkwLjQxLDEwMy4wNywyODkuMywxMDEuODQsMjg3LjUyLDEwMS44NHogTTI4Ny4xLDExNi42MnYtNi44NGgxLjN2Mi4wOGg2Ljc3di0yLjA4aDEuMzJ2Ni44NEgyODcuMQ0KCQkJeiBNMjk1LjE3LDExMy4wM2gtNi43N3YyLjQxaDYuNzdWMTEzLjAzeiBNMjk1LjE3LDEwOC44di04LjgxaDEuMzJ2OC44MUgyOTUuMTd6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzAxLjMsMTA4LjljMy4xLDAsNS43Ni0wLjIxLDcuODMtMC42N2wwLjE5LDEuMTZjLTIuMzgsMC41My01LjY2LDAuNzEtOS4zNiwwLjcxdi05LjEzaDEuMzRWMTA4Ljl6DQoJCQkgTTMxMS4xMywxMDAuMDRoMS4zMnYxNC42N2gtMS4zMlYxMDAuMDR6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzI0Ljk0LDEwOS43OGMtMi42NiwwLjQyLTUuODIsMC42Mi05LjIyLDAuNDl2LTkuMjJoNy4zMXYxLjE2aC01Ljk3djYuODZjMi4wMSwwLjExLDUuNjItMC4xMiw3Ljc0LTAuNTENCgkJCUwzMjQuOTQsMTA5Ljc4eiBNMzI3Ljc0LDEwNS4wMWgyLjc5djEuMThoLTIuNzl2OC41MWgtMS4zdi0xNC42OGgxLjNWMTA1LjAxeiIvPg0KCTwvZz4NCjwvZz4NCjxnPg0KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNTMuOCw1Mi40N2MwLTMuNTMsMC44Ni02LjY0LDIuNTgtOS4zM2MxLjcyLTIuNjksNC4wMS00LjgsNi44OS02LjM0YzIuODgtMS41Myw2LjAzLTIuMyw5LjQ3LTIuMw0KCQljMy40MywwLDYuNTksMC43Nyw5LjQ3LDIuM2MyLjg4LDEuNTMsNS4yLDMuNjQsNi45Niw2LjM0YzEuNzYsMi42OSwyLjY1LDUuOCwyLjY1LDkuMzNjMCwzLjYyLTAuODgsNi44LTIuNjUsOS41NA0KCQljLTEuNzYsMi43NC00LjA5LDQuODctNi45Niw2LjQxYy0yLjg4LDEuNTMtNi4wNCwyLjMtOS40NywyLjNjLTMuNDQsMC02LjU5LTAuNzctOS40Ny0yLjNjLTIuODgtMS41My01LjE4LTMuNjctNi44OS02LjQxDQoJCUMxNTQuNjYsNTkuMjcsMTUzLjgsNTYuMDksMTUzLjgsNTIuNDd6IE0xNjUuNSw1Mi40N2MwLDIuMjMsMC43MiwzLjk3LDIuMTYsNS4yMmMxLjQ0LDEuMjUsMy4xMywxLjg4LDUuMDgsMS44OA0KCQljMi4xMywwLDMuOS0wLjYzLDUuMjktMS44OGMxLjM5LTEuMjUsMi4wOS0yLjk5LDIuMDktNS4yMmMwLTIuMTMtMC43LTMuODMtMi4wOS01LjA4Yy0xLjM5LTEuMjUtMy4xNi0xLjg4LTUuMjktMS44OA0KCQljLTEuOTUsMC0zLjY0LDAuNjMtNS4wOCwxLjg4QzE2Ni4yMSw0OC42NCwxNjUuNSw1MC4zNCwxNjUuNSw1Mi40N3ogTTIyOS42OSw3NS44NmMwLDEuNzYtMC41NCwzLjItMS42LDQuMzINCgkJYy0xLjA3LDEuMTEtMi4zOSwxLjY3LTMuOTcsMS42N2MtMS43NiwwLTMuMTYtMC41Ni00LjE4LTEuNjdjLTEuMDItMS4xMS0xLjUzLTIuNTUtMS41My00LjMyVjYzLjA1YzAtMC43NC0wLjI2LTEuNDYtMC43Ny0yLjE2DQoJCWMtMC41MS0wLjctMS4yOC0xLjA1LTIuMy0xLjA1aC0xLjgxYy0wLjkzLDAuMDktMS42MiwwLjQ0LTIuMDksMS4wNWMtMC40NywwLjYtMC43LDEuMzItMC43LDIuMTZ2MTIuNTNjMCwxLjc3LTAuNTEsMy4yLTEuNTMsNC4zMg0KCQljLTEuMDIsMS4xMS0yLjQxLDEuNjctNC4xOCwxLjY3Yy0xLjY3LDAtMy4wMi0wLjU2LTQuMDQtMS42N2MtMS4wMi0xLjEyLTEuNTMtMi41NS0xLjUzLTQuMzJWMzguOTdjMC0xLjc2LDAuNDktMy4xOCwxLjQ2LTQuMjUNCgkJYzAuOTctMS4wNywyLjM0LTEuNiw0LjExLTEuNmMxLjg2LDAsMy4xOCwwLjQyLDMuOTcsMS4yNWMwLjc5LDAuODMsMS4yNywxLjY5LDEuNDYsMi41OGMwLjE5LDAuODgsMC4yOCwxLjU2LDAuMjgsMi4wMnY3LjENCgkJYzAsMC44NCwwLjE2LDEuNzIsMC40OSwyLjY1YzAuMzIsMC45MywxLjA5LDEuMzksMi4zLDEuMzloMS45NWMxLjExLDAsMS44OC0wLjQ2LDIuMy0xLjM5YzAuNDItMC45MywwLjYzLTEuODEsMC42My0yLjY1di03LjENCgkJYzAtMC40NiwwLjA5LTEuMTQsMC4yOC0yLjAyYzAuMTktMC44OCwwLjctMS43NCwxLjUzLTIuNThjMC44NC0wLjg0LDIuMTMtMS4yNSwzLjktMS4yNWMxLjY3LDAsMy4wMiwwLjU0LDQuMDQsMS42DQoJCWMxLjAyLDEuMDcsMS41MywyLjQ4LDEuNTMsNC4yNVY3NS44NnoiLz4NCgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjQ3LjA4LDQxLjYxYzAtMS41OCwwLjUtMi45LDEuNTEtMy45N2MxLjAxLTEuMDcsMi4zLTEuNiwzLjktMS42YzEuNDIsMCwyLjY2LDAuNTQsMy43MSwxLjYNCgkJYzEuMDUsMS4wNywxLjU3LDIuMzksMS41NywzLjk3djExLjk4YzAsMS40OSwwLjM2LDIuNzgsMS4wNywzLjljMC43MSwxLjExLDEuOTEsMS42NywzLjU4LDEuNjdIMjc2YzEuNTEsMCwyLjc4LDAuNDcsMy44MywxLjM5DQoJCWMxLjA1LDAuOTMsMS41NywyLjI4LDEuNTcsNC4wNGMwLDEuNjctMC41MiwzLjA0LTEuNTcsNC4xMWMtMS4wNSwxLjA3LTIuMzMsMS42LTMuODMsMS42aC0yMC44N2MtMi4xOCwwLTQuMDctMC43Ny01LjY2LTIuMw0KCQljLTEuNTktMS41My0yLjM5LTMuNjktMi4zOS02LjQ4VjQxLjYxeiBNMjk3Ljk5LDc1LjQ1YzAsMS43Ni0wLjQ4LDMuMi0xLjQ1LDQuMzJjLTAuOTYsMS4xMS0yLjIsMS42Ny0zLjcxLDEuNjcNCgkJYy0xLjUxLDAtMi44MS0wLjU2LTMuOS0xLjY3Yy0xLjA5LTEuMTEtMS42My0yLjU1LTEuNjMtNC4zMlYzOC44M2MwLTAuNDYsMC4xNS0xLjE0LDAuNDQtMi4wMmMwLjI5LTAuODgsMC44NC0xLjc0LDEuNjMtMi41OA0KCQljMC44LTAuODMsMS45NS0xLjI1LDMuNDYtMS4yNWMxLjU5LDAsMi44NSwwLjUzLDMuNzcsMS42YzAuOTIsMS4wNywxLjM4LDIuNDgsMS4zOCw0LjI1Vjc1LjQ1eiIvPg0KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zMjAuNjgsNzAuMTZjLTEuNzYsMC0zLjE4LTAuNTEtNC4yNS0xLjUzYy0xLjA3LTEuMDItMS42LTIuMzctMS42LTQuMDRjMC0xLjc2LDAuNTMtMy4xMSwxLjYtNC4wNA0KCQljMS4wNy0wLjkzLDIuNDgtMS4zOSw0LjI1LTEuMzloMS42N2MxLjM5LDAsMi4wOS0wLjgzLDIuMDktMi41MXYtNi44MmMwLTEuOTUtMC43LTIuOTItMi4wOS0yLjkyaC0xLjM5DQoJCWMtMS42NywwLTMuMDQtMC40Ni00LjExLTEuMzljLTEuMDctMC45My0xLjYtMi4yNy0xLjYtNC4wNGMwLTEuNTgsMC41My0yLjg2LDEuNi0zLjgzYzEuMDctMC45NywyLjM5LTEuNTEsMy45Ny0xLjZoMzUuMjMNCgkJYzEuNjcsMCwzLjA0LDAuNTEsNC4xMSwxLjUzYzEuMDcsMS4wMiwxLjYsMi4zMiwxLjYsMy45YzAsMS43Ni0wLjU0LDMuMTEtMS42LDQuMDRjLTEuMDcsMC45My0yLjQ0LDEuMzktNC4xMSwxLjM5aC0wLjk4DQoJCWMtMC42NSwwLTEuMjUsMC4yMS0xLjgxLDAuNjNjLTAuNTYsMC40Mi0wLjg0LDEuMDktMC44NCwyLjAydjcuMWMwLDEuNjcsMC43NCwyLjUxLDIuMjMsMi41MWgxLjgxYzEuNTgsMCwyLjkyLDAuNDcsNC4wNCwxLjM5DQoJCWMxLjExLDAuOTMsMS42NywyLjI4LDEuNjcsNC4wNGMwLDEuNjctMC41NiwzLjAyLTEuNjcsNC4wNGMtMS4xMSwxLjAyLTIuNDYsMS41My00LjA0LDEuNTNIMzIwLjY4eiBNMzQyLjEzLDUwLjM4DQoJCWMwLTEuNTgtMC4zNS0yLjU1LTEuMDQtMi45M2MtMC43LTAuMzctMS40Mi0wLjU2LTIuMTYtMC41NmgtMC44M2MtMC43NCwwLTEuNDYsMC4xOS0yLjE2LDAuNTZjLTAuNywwLjM3LTEuMDQsMS4zLTEuMDQsMi43OXY2LjI3DQoJCWMwLDAuOTMsMC4zLDEuNjMsMC45MSwyLjA5YzAuNiwwLjQ2LDEuMzcsMC43LDIuMywwLjdoMC44M2MwLjg0LDAsMS41OC0wLjIxLDIuMjMtMC42M2MwLjY1LTAuNDIsMC45Ny0xLjE4LDAuOTctMi4zVjUwLjM4eg0KCQkgTTM0OS43OSwxMTcuNzhjLTIuNiwwLTQuNzMtMC43OS02LjQxLTIuMzdjLTEuNjctMS41OC0yLjUxLTMuNjctMi41MS02LjI3VjkzLjY5YzAtMi42LDAuODQtNC42OSwyLjUxLTYuMjcNCgkJYzEuNjctMS41OCwzLjgxLTIuMzcsNi40MS0yLjM3aDE4LjI0YzIuNjksMCw0LjgzLDAuNzksNi40MSwyLjM3YzEuNTgsMS41OCwyLjM3LDMuNjcsMi4zNyw2LjI3djE1LjQ2YzAsMi42LTAuNzksNC42OS0yLjM3LDYuMjcNCgkJYy0xLjU4LDEuNTgtMy43MSwyLjM3LTYuNDEsMi4zN0gzNDkuNzl6IE0zNTIuNzEsMTAyLjg4YzAsMS4yMSwwLjE4LDIuMTgsMC41NiwyLjkyYzAuMzcsMC43NCwxLjI1LDEuMTEsMi42NSwxLjExaDUuMjkNCgkJYzEuNDgsMCwyLjQ4LTAuMzcsMi45OS0xLjExYzAuNTEtMC43NCwwLjc3LTEuNzIsMC43Ny0yLjkyVjk5LjRjMC0xLjExLTAuMjYtMS45Ny0wLjc3LTIuNThjLTAuNTEtMC42LTEuNTYtMC45MS0zLjEzLTAuOTFoLTQuODcNCgkJYy0xLjMsMC0yLjIxLDAuMzUtMi43MiwxLjA1Yy0wLjUxLDAuNy0wLjc3LDEuNTUtMC43NywyLjU4VjEwMi44OHogTTM2OC44NiwzOS4xYzAtMS44NiwwLjU2LTMuMjksMS42Ny00LjMyDQoJCWMxLjExLTEuMDIsMi41NS0xLjUzLDQuMzItMS41M2MxLjc2LDAsMy4wNCwwLjQyLDMuODMsMS4yNWMwLjc5LDAuODQsMS4zMiwxLjcsMS42LDIuNThjMC4yOCwwLjg4LDAuNDIsMS41NiwwLjQyLDIuMDJ2Ni45Ng0KCQljMCwyLjUxLDEuMTYsMy43NiwzLjQ4LDMuNzZoMy42MmMyLjEzLDAsMy42MiwwLjU2LDQuNDYsMS42N2MwLjg0LDEuMTEsMS4yNSwyLjM3LDEuMjUsMy43NmMwLDEuNTgtMC41MSwyLjktMS41MywzLjk3DQoJCWMtMS4wMiwxLjA3LTIuNDEsMS42LTQuMTgsMS42aC0zLjYyYy0yLjMyLDAtMy40OCwxLjAyLTMuNDgsMy4wNnYxMi4xMWMwLDEuNzYtMC41OCwzLjItMS43NCw0LjMyYy0xLjE2LDEuMTEtMi41MywxLjY3LTQuMTEsMS42Nw0KCQljLTEuNzYsMC0zLjItMC41Ni00LjMyLTEuNjdjLTEuMTEtMS4xMS0xLjY3LTIuNTUtMS42Ny00LjMyVjM5LjF6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==" alt="애니팜" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</body>
|
|
</html>
|