lnbapi-public

๐Ÿš€ Get started here

This template guides you through CRUD operations (GET, POST, PUT, DELETE), variables, and tests.

๐Ÿ”– How to use this template

Step 1: Send requests

RESTful APIs allow you to perform CRUD operations using the POST, GET, PUT, and DELETE HTTP methods.

This collection contains each of these request types. Open each request and click “Send” to see what happens.

Step 2: View responses

Observe the response tab for status code (200 OK), response time, and size.

Step 3: Send new Body data

Update or add new data in “Body” in the POST request. Typically, Body data is also used in PUT request.

{
    "name": "Add your name in the body"
}

Step 4: Update the variable

Variables enable you to store and reuse values in Postman. We have created a variable called base_url with the sample request https://postman-api-learner.glitch.me. Replace it with your API endpoint to customize this collection.

Step 5: Add tests in the “Scripts” tab

Adding tests to your requests can help you confirm that your API is working as expected. You can write test scripts in JavaScript and view the output in the “Test Results” tab.

๐Ÿ’ช Pro tips

  • Use folders to group related requests and organize the collection.

  • Add more scripts to verify if the API works as expected and execute workflows.

๐Ÿ’กRelated templates

API testing basics
API documentation
Authorization methods

Recrutement 5

Description

Crรฉer un recrutement

โœ… Mรฉthode : POST

๐ŸŒ URL :

Plain Text

http://{votre-domaine}/api/recrutements

๐Ÿ” Headers requis

Clรฉ Valeur
Accept application/json
Content-Type application/json
Authorization Bearer {votre_token}

๐Ÿ“ Corps de la requรชte (JSON)

Voici un exemple complet du body JSON.

Tous les champs marquรฉs required sont obligatoires, les autres sont optionnels.

{
“description”: “Recrutement d’un dรฉveloppeur full stack”,
“recruitment_type”: “Externe”,
“duration”: 6,
“total_candidate_needed”: 2,
“requested_document_list”: [
“CV”,
“Lettre de motivation”,
“Copie du diplรดme”,
],
“post_id”: “a1b2c3d4-e5f6-7890-abcd-ef1234567883”,
“cause_recruitment_id”: “a1b2c3d4-e5f6-7890-abcd-ef1234567883”,
“raison_creation_post_id”: “6f312fd2-e370-4820-9407-a1a8f0cde426”,
“application_close_date”: “2025-07-15”,
“status”: “Ouvert”
}

๐Ÿ“‹ Validation cรดtรฉ serveur

Champ Type Obligatoire Par dรฉfaut Contraintes / Valeurs autorisรฉes Description
description chaรฎne โŒ Non
โ€”
max: 2000 caractรจres
recruitment_type chaรฎne โœ… Oui
โ€”
"Interne" ou "Externe"
duration entier โœ… Oui
โ€”
Nombre entier Durรฉe en mois (si applicable)
total_candidate_needed entier โœ… Oui min: 1
requested_document_list array โœ… Oui Liste de chaรฎnes de caractรจres La liste des documents requis pour un recrutement
type_contrat_id entier โœ… Oui Doit exister dans type_contrats.id
post_id chaรฎne โœ… Oui Doit exister dans posts.id
cause_recrutement_id chaรฎne โœ… Oui Doit exister dans cause_recrutements.id
raison_creation_post_id chaรฎne โœ… Oui Doit exister dans raison_creation_postes.id
application_close_date date โœ… Oui Format YYYY-MM-DD
status chaรฎne โŒ Non "Ouvert", "En traitement", "Clรดturรฉ" "Ouvert"

View more

โš ๏ธ Rรฉponse (422 - Erreur de validation)

{
“message”: “The given data was invalid.”,
“errors”: {
“description”: [“Le champ duration est obligatoire.”],
“recruitment_type”: [“Le champ type_recrutement est obligatoire.”],


}
}

๐Ÿงช Conseils pour les tests Postman

  • Utilisez lโ€™onglet Body > raw > sรฉlectionnez JSON.
  • Si des champs comme post_id ou cause_recrutement_id ou reason_creation_post_id dรฉpendent de tables รฉtrangรจres, assurez-vous que les donnรฉes existent dans la base avant dโ€™appeler cette route.
  • Pour requested_document_list, vous pouvez passer un tableau JSON dans le body.


Headers
Key Value Description
Accept application/json
Body
{ "post_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567883", "contract_type": "CDD", "duration":15, "cause_recruitment_id": "a73e3d8f-d097-4841-ab8f-09159160445a", "total_candidate_needed": 2, "recruitment_type": "Interne", "reason_creation_post_id": "6f312fd2-e370-4820-9407-a1a8f0cde426", "description": "", "application_close_date": "2025-09-19", "requested_document_list": ["2a11265a-f043-4bc9-bef1-3e9fcc322aea"] }
Headers
Key Value Description
Accept application/json
Content-Type application/json
Body
{ "candidate_ids": ["9b2dff8b-5f4c-431b-adc6-87992c3c5fa6"] }
Headers
Key Value Description
Accept application/json
Body
{ "employee_ids": ["6b7cf5f8-3942-4654-b614-a38070b11b6b"] }
Description

Recrutements : Rรฉcupรฉration dรฉtaillรฉe avec filtres

๐Ÿงญ Informations gรฉnรฉrales

  • Mรฉthode HTTP : GET
  • URL de lโ€™endpoint :
    • https://api.votre-domaine.com/api/recruitments
  • Authentification :
    • Type : Bearer Token (JWT)
    • Requis : โœ… Non
    • Exemple dโ€™entรชte :
      • Content-Type: application/json
  • Description :
    Cet endpoint permet de rรฉcupรฉrer la liste dรฉtaillรฉe des recrutements en fonction de diffรฉrents filtres de recherche. Il est conรงu pour supporter des requรชtes complexes, incluant la pagination, le tri et des filtres multiples afin de faciliter lโ€™analyse RH et la planification.
Nom du paramรจtre Type Obligatoire Par dรฉfaut Description
page entier โŒ 1 Numรฉro de la page ร  rรฉcupรฉrer (pour la pagination).
per_page entier โŒ 20 Nombre dโ€™รฉlรฉments par page.
status chaรฎne โŒ Non โ€” Filtre par statut du recrutement (ex. Ouvert, En traitement, Clรดturรฉ).
post_id chaรฎne โŒ Non โ€” Recherche par intitulรฉ ou mot-clรฉ dans le titre du recrutement.
contract_type enum (CDD, CDI, STAGE) โŒ Non โ€” Recherche par type du contact pour un recrutement donnรฉ
start_date date (ISO) โŒ Non โ€” Date de dรฉbut minimale (format : YYYY-MM-DD).
end_date date (ISO) โŒ โ€” Date de fin maximale (format : YYYY-MM-DD).
sort_by chaรฎne โŒ created_at Champ de tri (ex. post_id, status, created_at).
sort_order chaรฎne โŒ desc Ordre de tri : asc (croissant) ou desc (dรฉcroissant).

๐Ÿงช Exemple de requรชte Postman

๐ŸŸก Requรชte simple avec pagination et tri

GET https://api.votre-domaine.com/api/recruitments?page=1&per_page=10&sort_by=title&sort_order=asc
Authorization: Bearer "token"

๐ŸŸข Requรชte avec plusieurs filtres

GET https://api.votre-domaine.com/api/recruitments?status=Ouvert&post=ca7b5b72-1cea-4f25-92e4-23b923184486
Authorization: Bearer /api

๐Ÿ“ฌ Exemple de rรฉponse โ€” 200 OK

{
 "success": true,
 "message": "Liste des recrutements rรฉcupรฉrรฉe avec succรจs"
  "data": {
      "all_data": [
        {
             "id": "5af52a04-846e-4f27-b04b-813dfca94a28",
               "post_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567880",
                "contract_type": "CDD",
                "duration": 2,
                "cause_recruitment_id": "ca7b5b72-1cea-4f25-92e4-23b923184486",
                "total_candidate_needed": 2,
                "recruitment_type": "Externe",
                "reason_creation_post_id": "9c794bda-a153-4eba-a1f0-4137a37c4c12",
                "description": "akjjsakh",
                "application_close_date": "2025-10-06",
                "requested_document_list": [
                    "f93b9ee1-29dd-47c6-816e-73acb06d496f"
                ],
                "status": "Ouvert",
                "created_at": "2025-10-06T10:44:45.000000Z",
                "updated_at": "2025-10-06T10:50:34.000000Z",
                "candidates_count": 1,
                "selected_candidates_count": 1,
                "post": {
                    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567880",
                    "label": "Dรฉveloppeur Fullstack"
                },
                "cause_recruitment": {
                    "id": "ca7b5b72-1cea-4f25-92e4-23b923184486",
                    "label": "Crรฉation d'un poste"
                },
                "reason_creation_post": {
                    "id": "9c794bda-a153-4eba-a1f0-4137a37c4c12",
                    "label": "Remplacement dโ€™un agent"
                }
            }
    },
    {
      "id": "5af52a04-846e-4f27-b04b-813dfca94a30",
                "post_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567880",
                "contract_type": "CDI",
                "duration": 2,
                "cause_recruitment_id": "ca7b5b72-1cea-4f25-92e4-23b923184486",
                "total_candidate_needed": 2,
                "recruitment_type": "Externe",
                "reason_creation_post_id": "9c794bda-a153-4eba-a1f0-4137a37c4c12",
                "description": "akjjsakh",
                "application_close_date": "2025-10-06",
                "requested_document_list": [
                    "f93b9ee1-29dd-47c6-816e-73acb06d496f"
                ],
                "status": "Clรดturรฉ",
                "created_at": "2025-10-06T10:44:45.000000Z",
                "updated_at": "2025-10-06T10:50:34.000000Z",
                "candidates_count": 1,
                "selected_candidates_count": 1,
                "post": {
                    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567880",
                    "label": "Dรฉveloppeur Fullstack"
                },
                "cause_recruitment": {
                    "id": "ca7b5b72-1cea-4f25-92e4-23b923184486",
                    "label": "Crรฉation d'un poste"
                },
                "reason_creation_post": {
                    "id": "9c794bda-a153-4eba-a1f0-4137a37c4c12",
                    "label": "Remplacement dโ€™un agent"
                }
            }
  ],
  "paginated_data": {
    "current_page": 1,
    "prev_page_url": null,
    "to": 1,
    "per_page": 12,
    "total": 52,
    "last_page": 6
  }
}
}

โš ๏ธ Codes de rรฉponse

Code Signification Description
200 โœ… Requรชte rรฉussie Les donnรฉes ont รฉtรฉ rรฉcupรฉrรฉes avec succรจs.
400 โŒ Requรชte invalide Paramรจtre manquant ou mal formatรฉ.
401 ๐Ÿ”’ Non autorisรฉ Le token dโ€™accรจs est manquant ou expirรฉ.
403 โ›” Accรจs refusรฉ Lโ€™utilisateur nโ€™a pas les permissions nรฉcessaires pour consulter ces donnรฉes.
500 ๐Ÿ’ฅ Erreur interne du serveur Une erreur inattendue est survenue cรดtรฉ serveur.

๐Ÿ“ Remarques professionnelles

  • Pour garantir des performances optimales, limitez le per_page ร  100 maximum.
  • Les filtres sont combinables entre eux (ET logique).
  • Les dates doivent impรฉrativement respecter le format ISO (YYYY-MM-DD).
  • Cet endpoint est paginรฉ โ€” utilisez les mรฉtadonnรฉes paginated_data pour construire votre navigation cรดtรฉ client.
  • Pour des recherches en texte libre, privilรฉgiez le paramรจtre titre du poste avec des mots-clรฉs pertinents.

๐Ÿ“Œ Variables Postman conseillรฉes

Nom de variable Description Exemple
URL URL de base de lโ€™API https://api.votre-domaine.com
token Jeton JWT valide pour authentification eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...


Description

๐Ÿ“Œ Recrutements โ€“ Dรฉtails dโ€™un recrutement

๐Ÿ“ Description

Cette API permet de rรฉcupรฉrer toutes les informations dรฉtaillรฉes concernant un recrutement spรฉcifique :

  • Mรฉtadonnรฉes principales du recrutement (type, durรฉe, cause, statut, etc.)
  • Informations sur le poste concernรฉ
  • Liste des documents demandรฉs
  • Candidats associรฉs ร  ce recrutement

Cโ€™est une route couramment utilisรฉe pour afficher la fiche dรฉtaillรฉe dโ€™un recrutement dans un tableau de bord RH ou une application de gestion de recrutement.


๐Ÿ“ก Mรฉthode & URL

Mรฉthode URL dโ€™accรจs
GET /api/recruitments/{id}

๐Ÿ”‘ Authentification

Type Dรฉtail
Bearer Token Non Requise โŒ

Vous devez fournir un token JWT valide dans lโ€™en-tรชte Authorization.

๐Ÿงพ En-tรชtes requis

Nom Valeur exemple Obligatoire
Accept application/json โœ…
Authorization Bearer eyJhbGciOi... โŒ

๐Ÿ“ฅ Paramรจtres dโ€™entrรฉe

Nom Type Emplacement Description
id string (UUID) URL path Identifiant unique du recrutement dont on veut les dรฉtails

โœ… Exemple dโ€™URL

GET /api/recruitments/5af52a04-846e-4f27-b04b-813dfca94a28

๐Ÿ“ค Rรฉponse โ€“ 200 OK

โœ… Exemple de rรฉponse complรจte :

{
    "success": true,
    "data": {
        "id": "5af52a04-846e-4f27-b04b-813dfca94a28",
        "post_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567880",
        "contract_type": "CDD",
        "duration": 2,
        "cause_recruitment_id": "ca7b5b72-1cea-4f25-92e4-23b923184486",
        "total_candidate_needed": 2,
        "recruitment_type": "Externe",
        "reason_creation_post_id": "9c794bda-a153-4eba-a1f0-4137a37c4c12",
        "description": "akjjsakh",
        "application_close_date": "2025-10-06",
        "requested_document_list": [
            "f93b9ee1-29dd-47c6-816e-73acb06d496f"
        ],
        "status": "Clรดturรฉ",
        "created_at": "2025-10-06T10:44:45.000000Z",
        "updated_at": "2025-10-06T10:50:34.000000Z",
        "candidates_count": 1,
        "requested_document_detail": [
            {
                "id": "f93b9ee1-29dd-47c6-816e-73acb06d496f",
                "label": "Contrat de travail",
                "created_at": "2025-10-05T17:27:49.000000Z",
                "updated_at": "2025-10-05T17:27:49.000000Z"
            }
        ],
        "post": {
            "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567880",
            "label": "Dรฉveloppeur Fullstack"
        },
        "cause_recruitment": {
            "id": "ca7b5b72-1cea-4f25-92e4-23b923184486",
            "label": "Crรฉation d'un poste",
            "created_at": "2025-10-05T17:27:49.000000Z",
            "updated_at": "2025-10-05T17:27:49.000000Z"
        },
        "reason_creation_post": {
            "id": "9c794bda-a153-4eba-a1f0-4137a37c4c12",
            "label": "Remplacement dโ€™un agent",
            "created_at": "2025-10-05T17:27:49.000000Z",
            "updated_at": "2025-10-05T17:27:49.000000Z"
        },
        "candidates": [
            {
                "id": "6a5d09b4-660d-4039-a955-fb8b47f1db7b",
                "npi": "2938734987",
                "firstname": "GSHgv",
                "lastname": "AHSD",
                "sex": "M",
                "phone": "+2290156666666",
                "email": "eac12@gmail.com",
                "birth_date": "2025-10-01",
                "application_date": "2025-10-06T00:00:00.000000Z",
                "recruitment_id": "5af52a04-846e-4f27-b04b-813dfca94a28",
                "is_preselect": false,
                "status": "Sรฉlectionnรฉ",
                "created_at": "2025-10-06T10:47:40.000000Z",
                "updated_at": "2025-10-06T10:50:34.000000Z"
            }
        ]
    },
    "message": "Dรฉtails du recrutement rรฉcupรฉrรฉs avec succรจs"
}

๐Ÿ“š Structure des donnรฉes principales

Champ Type Description
id UUID Identifiant unique du recrutement
post Objet Informations sur le poste rattachรฉ
contract_type Chaรฎne Type de contrat (CDD, CDI, etc.)
duration Nombre Durรฉe du contrat en mois (si applicable)
cause_recruitment Objet Motif de recrutement (crรฉation de poste, etc.)
reason_creation_post Objet Raison de crรฉation (ex. remplacement dโ€™un agent)
requested_document_detail Tableau dโ€™objets Liste dรฉtaillรฉe des documents ร  fournir
candidates Tableau dโ€™objets Liste des candidats ayant postulรฉ ร  ce recrutement
status Chaรฎne Statut actuel du recrutement (Ouvert, Clรดturรฉ, En traitement.)

โš ๏ธ Codes de statut possibles

Code Signification
200 โœ… Requรชte rรฉussie
401 โŒ Non authentifiรฉ ou token expirรฉ
404 โŒ Recrutement non trouvรฉ
500 โŒ Erreur interne du serveur

๐Ÿงช Exemple Postman

  1. Mรฉthode : GET
  2. URL : /api/api/recruitments/5af52a04-846e-4f27-b04b-813dfca94a28
  3. Headers :
    • Accept: application/json
    • Authorization: Bearer /api
  4. Tests (facultatif) :
pm.test("Statut 200 OK", function () {
    pm.response.to.have.status(200);
});

pm.test("Contient les informations du poste", function () {
    const json = pm.response.json();
    pm.expect(json.data).to.have.property("post");
    pm.expect(json.data.post.label).to.eql("Dรฉveloppeur Fullstack");
});

๐Ÿ Bonnes pratiques

  • Toujours valider que success === true dans la rรฉponse.
  • Utiliser lโ€™ID en UUID provenant de la liste de recrutements pour รฉviter les erreurs 404.
  • Mettre en cache les libellรฉs statiques (post, cause_recruitment, etc.) pour รฉviter de multiples appels API.


Headers
Key Value Description
Accept application/json
Content-Type application/json

Candidat 4

Description

Candidats:Route pour ajouter un candidat pour un recrutement donnรฉ

-INFORMATIONS Gร‰NERALE

  • Mรฉthode: HTTP: POST
  • URL: https://{votre domaine}/api/candidates
  • Authentification:
    • Type: Bearer token
    • Requis: Non
    • Entรจte: multipart/form-data

-

Nom de l’attribut Type Obligatoire Description Contraintes / Valeurs autorisรฉes
recruitment_id uuid โœ… Identifiant unique du recrutement. Doit correspondre ร  un id existant dans la table recruitments.
npi numeric โœ… Numรฉro NPI du candidat. Doit รชtre unique pour ce recrutement.
firstname chaรฎne de caractรจre โœ… Prรฉnom du candidat. -
lastname chaรฎne de caractรจre โœ… Nom du candidat. -
sex chaรฎne de caractรจre โœ… Sexe du candidat. “M” ou “F”
phone numeric โœ… Numรฉro de tรฉlรฉphone du candidat. -
email chaรฎne de caractรจre โœ… Adresse email du candidat. Doit รชtre un email valide et unique pour ce recrutement.
birth_date date โœ… Date de naissance du candidat. Doit รชtre une date antรฉrieure ร  la date du jour.
application_date date โœ… Date de candidature. Doit รชtre une date antรฉrieure ou รฉgale ร  la date du jour et รฉgale ou postรฉrieure ร  la date de crรฉation du recrutement.
documents array โŒ Tableau d’objets document. Au moins un document est requis si ce tableau est fourni.
documents[*][file] file Conditionnel Fichier ร  uploader. Requis si un objet document est fourni. Types MIME autorisรฉs : pdf, jpg, jpeg, png.
documents[*][type_id] uuid Conditionnel Identifiant du type de document. Requis si un objet document est fourni. Doit exister et faire partie des types

๐Ÿงช Exemple de requรชte Postman

๐ŸŸก Requรชte POST avec des donnรฉes en multipart/form-data, y compris un fichier.

curl -X POST "https://{votre-domaine}/api/candidates" -H "Authorization: Bearer /api" -F "recruitment_id=5af52a04-846e-4f27-b04b-813dfca94a28" -F "npi=123456789" -F "firstname=Marie" -F "lastname=Durand" -F "sex=F" -F "phone=0612345678" -F "email=marie.durand@example.com" -F "birth_date=1990-01-15" -F "application_date=2025-10-09" -F "documents[0][file]=@/chemin/vers/cv_marie.pdf" -F "documents[0][type_id]=f93b9ee1-29dd-47c6-816e-73acb06d496f"

๐Ÿ“ฌ Exemple de rรฉponse โ€” 201 OK

{
    "success": true,
    "data": {
        "id": "81261fa4-2133-4eb5-9cd3-a12a33e3d583",
        "npi": "2345675658",
        "firstname": "Manden",
        "lastname": "ZINQUOU",
        "sex": "F",
        "phone": "2345679",
        "email": "pio@gmail.com",
        "birth_date": "2001-06-12",
        "application_date": "2025-10-10T00:00:00.000000Z",
        "recruitment_id": "52377fa1-deaf-4828-a72f-56f0e11f8889",
        "is_preselect": false,
        "status": "En attente",
        "created_at": "2025-10-10T09:02:57.000000Z",
        "updated_at": "2025-10-10T09:02:57.000000Z",
        "documents": []
    },
    "message": "Candidat crรฉรฉ avec succรจs"
}

๐Ÿ“ฌ Exemple de rรฉponse โ€” 422 (Erreur de validation)

{
    "success": false,
    "message": "Erreur de validation.",
    "data": {
        "application_date": [
            "La date de candidature doit รชtre รฉgale ou postรฉrieure ร  la date de crรฉation du recrutement."
        ]
    }
}

โš ๏ธ Codes de Rรฉponse

Cas d’erreur spรฉcifiques :

Code Signification Description et Exemple de Corps de Rรฉponse
201 โœ… Requete rรฉussir La ressource (candidat) a รฉtรฉ crรฉรฉe avec succรจs.
422 โŒErreur de validation Erreur de validation mรฉtier. Exemple : {"error": "Le numรฉro NPI est dรฉjร  utilisรฉ pour ce recrutement."}

๐Ÿ’กRemarques Professionnelles

  • Format des Fichiers : Les documents doivent รชtre dans les formats autorisรฉs (.pdf, .jpg, .jpeg, .png)
  • Cohรฉrence des Dates : La birth_date doit รชtre dans le passรฉ et l’application_date doit รชtre postรฉrieure ou รฉgale ร  la date de crรฉation du recrutement.
  • Intรฉgritรฉ des Donnรฉes : Le recruitment_id et les documents[\\\\*][type_id] doivent correspondre ร  des identifiants valides dans la base de donnรฉes. Le couple email/recruitment_id et npi/recruitment_id doit รชtre unique.


Headers
Key Value Description
Accept application/json
Body
Key Value Description
firstname Manden
lastname ZINQUOU
sex F
phone 2345679
email pio@gmail.com
application_date 2025-10-10
birth_date 12-06-2001
recruitment_id 52377fa1-deaf-4828-a72f-56f0e11f8889
npi 2345675658
Description

Candidats:Route pour lister et filtrer tout les candidats

-INFORMATIONS Gร‰NERALE

  • Mรฉthode: HTTP: GET
  • URL: https://{votre domaine}/api/candidates
  • Authentification:
    • Type: Bearer token
    • Requis: Non
    • Entรจte: application/json
Nom du paramรจtre Type Obligatoire Par dรฉfaut Description Contraintes / Valeurs autorisรฉes
page entier โŒ 1 Numรฉro de la page ร  rรฉcupรฉrer pour la pagination. Doit รชtre un entier positif โ‰ฅ 1
per_page entier โŒ 12 Nombre d’รฉlรฉments par page. Doit รชtre un entier entre 1 et 100 (limite maximale recommandรฉe)
recruitment_id UUID โŒ - Filtre par recrutement. Retourne les candidats associรฉs ร  un identifiant spรฉcifique. Doit correspondre ร  un UUID valide existant dans la table recruitments
firstname chaรฎne โŒ - Filtre par prรฉnom du candidat. Recherche partielle (contient la chaรฎne)
lastname chaรฎne โŒ - Filtre par nom du candidat. Recherche partielle (contient la chaรฎne)
npi numรฉrique โŒ - Filtre par NPI du candidat. Recherche exacte
sex chaรฎne โŒ - Filtre par sexe du candidat. “M” ou “F” (recherche exacte)
email chaรฎne โŒ - Filtre par adresse email du candidat. Recherche exacte
status chaรฎne โŒ - Filtre par statut de candidature. Valeurs autorisรฉes : “En attente”, “Recalรฉ”, “Sรฉlectionnรฉ”
application_date date โŒ - Filtre par date de candidature. Format : YYYY-MM-DD
sort_by chaรฎne โŒ created_at Champ de tri des rรฉsultats. Champs autorisรฉs : firstname, lastname, application_date, created_at, etc.
sort_order chaรฎne โŒ desc Ordre de tri des rรฉsultats. “asc” (croissant) ou “desc” (dรฉcroissant)

๐Ÿงช Exemple de requรชte Postman

๐ŸŸก Requรชte simple avec pagination et tri

curl -X GET "https://{votre-domaine}/api/candidates?page=1&per_page=5&lastname=Durand&status=En attente&sort_by=application_date&sort_order=desc" \
  -H "Authorization: Bearer /api"\-H "Content-Type: application/json"

๐Ÿ“ฌ Exemple de Rรฉponse โ€” 200 OK

{
    "success": true,
    "data": {
        "all_data": [
            {
                "id": "81261fa4-2133-4eb5-9cd3-a12a33e3d583",
                "npi": "2345675658",
                "firstname": "Manden",
                "lastname": "ZINQUOU",
                "sex": "F",
                "phone": "2345679",
                "email": "pio@gmail.com",
                "birth_date": "2001-06-12",
                "application_date": "2025-10-10T00:00:00.000000Z",
                "recruitment_id": "52377fa1-deaf-4828-a72f-56f0e11f8889",
                "status": "En attente",
                "documents": [],
                "recruitment": {
                    "id": "52377fa1-deaf-4828-a72f-56f0e11f8889",
                    "post_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567880",
                    "contract_type": "CDD",
                    "duration": 1,
                    "cause_recruitment_id": "40b6773b-6476-4447-97a2-2fc1e00e98ef",
                    "total_candidate_needed": 1,
                    "recruitment_type": "Externe",
                    "reason_creation_post_id": "181c8148-6563-4973-a79f-9de26270d397",
                    "description": "zdede",
                    "application_close_date": "2025-10-10",
                    "requested_document_list": [
                        "e5d1812f-e2e6-4254-90f0-8dc697a5ae46"
                    ],
                    "status": "Ouvert",
                    "created_at": "2025-10-10T08:48:54.000000Z",
                    "updated_at": "2025-10-10T08:48:54.000000Z"
                },
                "is_preselect": false,
                "max_retrying_date": "2061-06-12"
            }
        ],
        "paginated_data": {
            "current_page": 1,
            "data": [
                {
                    "id": "81261fa4-2133-4eb5-9cd3-a12a33e3d583",
                    "npi": "2345675658",
                    "firstname": "Manden",
                    "lastname": "ZINQUOU",
                    "sex": "F",
                    "phone": "2345679",
                    "email": "pio@gmail.com",
                    "birth_date": "2001-06-12",
                    "application_date": "2025-10-10T00:00:00.000000Z",
                    "recruitment_id": "52377fa1-deaf-4828-a72f-56f0e11f8889",
                    "is_preselect": false,
                    "status": "En attente",
                    "created_at": "2025-10-10T09:02:57.000000Z",
                    "updated_at": "2025-10-10T09:02:57.000000Z",
                    "documents": [],
                    "recruitment": {
                        "id": "52377fa1-deaf-4828-a72f-56f0e11f8889",
                        "post_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567880",
                        "contract_type": "CDD",
                        "duration": 1,
                        "cause_recruitment_id": "40b6773b-6476-4447-97a2-2fc1e00e98ef",
                        "total_candidate_needed": 1,
                        "recruitment_type": "Externe",
                        "reason_creation_post_id": "181c8148-6563-4973-a79f-9de26270d397",
                        "description": "zdede",
                        "application_close_date": "2025-10-10",
                        "requested_document_list": [
                            "e5d1812f-e2e6-4254-90f0-8dc697a5ae46"
                        ],
                        "status": "Ouvert",
                        "created_at": "2025-10-10T08:48:54.000000Z",
                        "updated_at": "2025-10-10T08:48:54.000000Z"
                    }
                }
            ],
            "first_page_url": "http://localhost:8000/api/candidates?page=1",
            "from": 1,
            "last_page": 1,
            "last_page_url": "http://localhost:8000/api/candidates?page=1",
            "links": [
                {
                    "url": null,
                    "label": "ยซ Previous",
                    "active": false
                },
                {
                    "url": "http://localhost:8000/api/candidates?page=1",
                    "label": "1",
                    "active": true
                },
                {
                    "url": null,
                    "label": "Next ยป",
                    "active": false
                }
            ],
            "next_page_url": null,
            "path": "http://localhost:8000/api/candidates",
            "per_page": 12,
            "prev_page_url": null,
            "to": 1,
            "total": 1
        }
    },
    "message": "Liste des candidats rรฉcupรฉrรฉe avec succรจs"
}

โš ๏ธ Codes de Rรฉponse

Code Signification Description
200 โœ… Succรจs La liste des candidats a รฉtรฉ rรฉcupรฉrรฉe avec succรจs.
400 โŒ Requรชte invalide Paramรจtre de requรชte manquant ou mal formatรฉ .
401 ๐Ÿ”’ Non autorisรฉ Le token d’accรจs est manquant ou expirรฉ .
500 ๐Ÿ’ฅ Erreur interne du serveur Une erreur inattendue est survenue cรดtรฉ serveur.

๐Ÿ’ก Remarques Professionnelles

  • Filtres combinables : Tous les filtres sont combinables entre eux avec une logique ET.
  • Format des dates : Les dates (comme application_date) doivent impรฉrativement respecter le format ISO 8601 (YYYY-MM-DD).
  • Navigation : Utilisez les mรฉtadonnรฉes de pagination (pagination) pour construire votre navigation cรดtรฉ client.


Body
Description

Candidats:Route pour modifier un candidats

-INFORMATIONS Gร‰NERALE

  • Mรฉthode: HTTP: GET

  • URL: https://{votre domaine}/api/candidates/{candidate_id}

  • Authentification:

    • Type: Bearer token
    • Requis: Non
    • Entรจte: application/json
Nom de l’attribut Type Obligatoire Description Contraintes / Valeurs autorisรฉes
firstname string โŒ Prรฉnom du candidat. -
lastname string โŒ Nom du candidat. -
sex string โŒ Sexe du candidat. “M” ou “F”
phone numeric โŒ Numรฉro de tรฉlรฉphone du candidat. -
email string โŒ Adresse email du candidat. Doit รชtre un email valide et doit rester unique pour le recrutement.
birth_date date โŒ Date de naissance du candidat. Doit รชtre une date antรฉrieure ร  la date du jour.
application_date date โŒ Date de candidature. Doit รชtre postรฉrieure ou รฉgale ร  la date de crรฉation du recrutement.
status string โŒ Statut de la candidature. “En attente”, “Recalรฉ”, “Sรฉlectionnรฉ”
npi numeric โŒ Numรฉro NPI du candidat. Doit rester unique pour le recrutement.
is_preselect boolean โŒ Prรฉ-sรฉlection du candidat. true ou false
documents array โŒ Tableau de documents ร  ajouter ou mettre ร  jour. -
documents[*][file] file โŒ Fichier document ร  uploader. Types MIME autorisรฉs : pdf, jpg, jpeg, png
documents[*][type_id] UUID โŒ Identifiant du type de document.

๐Ÿงช Exemple de Requรชte

๐ŸŸก Requรชte PUT avec mise ร  jour partielle

curl -X PUT "https://{votre-domaine}/api/candidates/81261fa4-2133-4eb5-9cd3-a12a33e3d583" \
  -H "Authorization: Bearer /api" \
  -H "Content-Type: application/json" \
  -d '{
        "firstname": "Manden",
        "lastname": "ZINQUOU",
        "phone": "2345679",
        "status": "Sรฉlectionnรฉ",
        "is_preselect": true
  }'

๐Ÿ“ฌ Exemple de Rรฉponse โ€” 200 OK

{
    "success": true,
    "data": {
        "id": "81261fa4-2133-4eb5-9cd3-a12a33e3d583",
        "npi": "2345675658",
        "firstname": "MICHEL",
        "lastname": "ZINQUOU",
        "sex": "F",
        "phone": "2345679",
        "email": "pio@gmail.com",
        "birth_date": "2001-06-12",
        "application_date": "2025-10-10T00:00:00.000000Z",
        "recruitment_id": "52377fa1-deaf-4828-a72f-56f0e11f8889",
        "is_preselect": false,
        "status": "En attente",
        "created_at": "2025-10-10T09:02:57.000000Z",
        "updated_at": "2025-10-10T10:34:17.000000Z"
    },
    "message": "Candidat mis ร  jour avec succรจs."
}

โš ๏ธ Codes de Rรฉponse

Code Signification Description
200 โœ… Succรจs Le candidat a รฉtรฉ modifiรฉ avec succรจs.
404 โŒ Non trouvรฉ Aucun candidat trouvรฉ avec l’id fourni.
422 โŒ Erreur de validation Erreur de validation mรฉtier (ex: application_date antรฉrieure ร  la crรฉation du recrutement).
500 ๐Ÿ’ฅ Erreur interne du serveur Une erreur inattendue est survenue cรดtรฉ serveur.

๐Ÿ’ก Remarques Professionnelles

  • Donnรฉes existantes : ร€ la diffรฉrence d’une crรฉation, pour une modification, seuls les champs envoyรฉs dans la requรชte sont mis ร  jour. Les autres conservent leur valeur actuelle.


Headers
Key Value Description
Accept application/json
Body
{ "firstname":"MICHEL" }
Description

Candidats:Route pour gรฉrer les documents des candidats

-INFORMATIONS Gร‰Nร‰RALES

  • Mรฉthode HTTP : POST
  • URL : https://{votre-domaine}/api/candidates/{candidate_id}/documents
  • Authentification :
    • Type : Bearer token
    • Requis : non
  • En-tรชte : multipart/form-data

-DESCRIPTION :

Cet endpoint permet de gรฉrer les documents d’un candidat de maniรจre indรฉpendante et en bloc. Il supporte trois opรฉrations principales : l’ajout de nouveaux documents, le remplacement de documents existants et la suppression de documents. Ces opรฉrations peuvent รชtre effectuรฉes sรฉparรฉment ou combinรฉes dans une seule requรชte.

Nom de l’attribut Type Obligatoire Description Contraintes / Valeurs autorisรฉes
documents_to_add tableau โŒ Tableau de nouveaux documents ร  ajouter. -
documents_to_add[\\\*][file] fichier โœ… (Conditionnel) Fichier ร  uploader. Types MIME autorisรฉs : pdf, jpg, jpeg, png. Requis si le tableau documents_to_add est utilisรฉ.
documents_to_add[\\\*][type_id] UUID โœ… (Conditionnel) Identifiant du type de document. Doit exister dans la table des types de documents. Requis si le tableau documents_to_add est utilisรฉ.
documents_to_replace tableau โŒ Tableau de documents existants ร  remplacer. -
documents_to_replace[\\\*][id] UUID โœ… (Conditionnel) ID du document existant ร  remplacer. Doit correspondre ร  un document existant du candidat. Requis si le tableau documents_to_replace est utilisรฉ.
documents_to_replace[\\\*][file] fichier โœ… (Conditionnel) Nouveau fichier de remplacement. Types MIME autorisรฉs : pdf, jpg, jpeg, png. Requis si le tableau documents_to_replace est utilisรฉ.
documents_to_replace[\\\*][type_id] UUID โŒ Nouveau type de document. Doit exister dans la table des types de documents. Si non fourni, le type existant est conservรฉ.
document_ids_to_delete tableau โŒ Liste des IDs de documents ร  supprimer. Doit contenir des UUID valides de documents appartenant au candidat.

๐Ÿงช EXEMPLE DE REQUรŠTE

๐ŸŸก Requรชte POST avec opรฉrations combinรฉes (cURL)

curl -X POST "https://{votre-domaine}/api/candidates/81261fa4-2133-4eb5-9cd3-a12a33e3d583/documents" \
  -H "Authorization: Bearer /api" \
  -F "documents_to_add[0][file]=@/chemin/vers/lettre_motivation.pdf" \
  -F "documents_to_add[0][type_id]=f93b9ee1-29dd-47c6-816e-73acb06d496f" \
  -F "documents_to_add[1][file]=@/chemin/vers/photo_identite.jpg" \
  -F "documents_to_add[1][type_id]=a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
  -F "documents_to_replace[0][id]=b2c3d4e5-f6g7-8901-hijk-lm1234567890" \
  -F "documents_to_replace[0][file]=@/chemin/vers/nouveau_cv.pdf" \
  -F "document_ids_to_delete[]=c3d4e5f6-g7h8-9012-ijkl-mn2345678901"

๐Ÿ“ฌ EXEMPLE DE Rร‰PONSE โ€” 200 OK

{
    "success": true,
    "data": {
        "id": "81261fa4-2133-4eb5-9cd3-a12a33e3d583",
        "npi": "2345675658",
        "firstname": "MICHEL",
        "lastname": "ZINQUOU",
        "sex": "F",
        "phone": "2345679",
        "email": "pio@gmail.com",
        "birth_date": "2001-06-12",
        "application_date": "2025-10-10T00:00:00.000000Z",
        "recruitment_id": "52377fa1-deaf-4828-a72f-56f0e11f8889",
        "status": "En attente",
        "documents": [
            {
                "id": "2e5f2b45-9563-45b3-952b-0d7fff1d695e",
                "label": "titreconges.pdf",
                "type": "e5d1812f-e2e6-4254-90f0-8dc697a5ae46",
                "type_label": "Note de services",
                "path": "candidaturesDoc/81261fa4-2133-4eb5-9cd3-a12a33e3d583/ed2d14c6-c3f6-4b7f-b023-9e656828d612.pdf",
                "url": "https://minio.waouhmonde.com:9000/applnb/candidaturesDoc/81261fa4-2133-4eb5-9cd3-a12a33e3d583/ed2d14c6-c3f6-4b7f-b023-9e656828d612.pdf",
                "candidate_id": "81261fa4-2133-4eb5-9cd3-a12a33e3d583",
                "contract_id": null,
                "employee_id": null,
                "training_id": null,
                "absenceslates_id": null,
                "justification_id": null,
                "employee_movement_id": null,
                "created_at": "2025-10-10T10:57:04.000000Z",
                "updated_at": "2025-10-10T10:57:04.000000Z"
            }
        ],
        "is_preselect": false,
        "max_retrying_date": "2061-06-12"
    },
    "message": "Documents du candidat mis ร  jour avec succรจs."
}

โš ๏ธ CODES DE Rร‰PONSE

Code Signification Description
200 โœ… Succรจs La mise ร  jour des documents a รฉtรฉ effectuรฉe avec succรจs.
400 โŒ Requรชte invalide Paramรจtre manquant ou mal formatรฉ (ex: UUID invalide).
404 โŒ Non trouvรฉ Candidat, document ร  remplacer ou type de document non trouvรฉ.
422 โŒ Entitรฉ non traitable Erreur de validation mรฉtier (ex: format de fichier non supportรฉ).
500 ๐Ÿ’ฅ Erreur interne du serveur Une erreur inattendue est survenue cรดtรฉ serveur.

๐Ÿ’ก REMARQUES PROFESSIONNELLES

  • Formats de fichiers : Les documents doivent รชtre dans les formats autorisรฉs : pdf, jpg, jpeg, png. Vรฉrifiez les limites de taille de fichier cรดtรฉ serveur avant l’envoi.
  • Gestion des erreurs : En cas d’erreur sur un รฉlรฉment d’un tableau (ex: type_id invalide dans documents_to_add[1]), l’ensemble de la requรชte รฉchoue.


Headers
Key Value Description
Accept application/json
Body
Key Value Description
documents_to_add[0][file]
documents_to_add[0][type_id] e5d1812f-e2e6-4254-90f0-8dc697a5ae46

Available Variables 2

Key Value Type
id 1
base_url https://postman-rest-api-learner.glitch.me/


*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&" parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\ /?>(?:<\ /\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0;}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+) /,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video" ;function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="
a" ,l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav>" !==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox" ,c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="" ,l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:l.htmlSerialize?[0,"",""]:[1,"X
","
"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+; /,ha=/r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?""!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h ]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1> ")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("