/******/
 (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId])
/******/ 			return installedModules[moduleId].exports;
/******/
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			exports: {},
/******/ 			id: moduleId,
/******/ 			loaded: false
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.loaded = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "/assets/";
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ({

/***/ 0:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	var _partner = __webpack_require__(1590);
	
	var _partner2 = _interopRequireDefault(_partner);
	
	var _life_edit = __webpack_require__(1600);
	
	var _life_edit2 = _interopRequireDefault(_life_edit);
	
	var _show = __webpack_require__(1615);
	
	var _show2 = _interopRequireDefault(_show);
	
	var _edit = __webpack_require__(1626);
	
	var _edit2 = _interopRequireDefault(_edit);
	
	var _campaignManagementUtils = __webpack_require__(1311);
	
	var _campaignManagementUtils2 = _interopRequireDefault(_campaignManagementUtils);
	
	var _redactor = __webpack_require__(653);
	
	var _redactor2 = _interopRequireDefault(_redactor);
	
	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
	
	(0, _campaignManagementUtils2.default)(angular);
	(0, _redactor2.default)(angular);
	
	(0, _partner2.default)(angular.module('profile.partner', ['header', 'footer', 'utils', 'indiegogo.components.redactor']));
	(0, _edit2.default)(angular.module('profile.edit', ['header', 'footer', 'ui.router', 'ngAnimate', 'utils']));
	(0, _show2.default)(angular.module('profile.show', ['header', 'footer', 'utils', 'indiegogo.campaignManagementUtils']));
	(0, _life_edit2.default)(angular.module('profile.lifeEdit', ['templates', 'header', 'footer', 'ui.router', 'ngAnimate', 'utils']));

/***/ },

/***/ 55:
/***/ function(module, exports) {

	"use strict";
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.activatePreOrderPrivateApiCampaignPath = activatePreOrderPrivateApiCampaignPath;
	exports.analyticsPrivateApiPaymentsContributionPath = analyticsPrivateApiPaymentsContributionPath;
	exports.approveProductStagePrivateApiAdminProjectPath = approveProductStagePrivateApiAdminProjectPath;
	exports.batchUpdatePrivateApiCampaignOrdersPath = batchUpdatePrivateApiCampaignOrdersPath;
	exports.campaignSharePrivateApiPaymentsContributionPath = campaignSharePrivateApiPaymentsContributionPath;
	exports.campaignsPrivateApiPartnerDashboardPath = campaignsPrivateApiPartnerDashboardPath;
	exports.canMessagePrivateApiProjectsCampaignMessagesPath = canMessagePrivateApiProjectsCampaignMessagesPath;
	exports.changeTopPerkPrivateApiCommandCenterPerkPath = changeTopPerkPrivateApiCommandCenterPerkPath;
	exports.clearTopPerkPrivateApiCommandCenterPerksPath = clearTopPerkPrivateApiCommandCenterPerksPath;
	exports.contributionsPrivateApiPartnerDashboardPath = contributionsPrivateApiPartnerDashboardPath;
	exports.createReplyPrivateApiCampaignCommentsPath = createReplyPrivateApiCampaignCommentsPath;
	exports.currentAccountFollowingPrivateApiCampaignCollectionPath = currentAccountFollowingPrivateApiCampaignCollectionPath;
	exports.deactivatePreOrderPrivateApiCampaignPath = deactivatePreOrderPrivateApiCampaignPath;
	exports.deleteReplyPrivateApiCampaignCommentsPath = deleteReplyPrivateApiCampaignCommentsPath;
	exports.demotePrivateApiPartnerTeamMemberPath = demotePrivateApiPartnerTeamMemberPath;
	exports.descriptionPrivateApiCampaignPath = descriptionPrivateApiCampaignPath;
	exports.disablePreviewPrivateApiCampaignPath = disablePreviewPrivateApiCampaignPath;
	exports.disinvitePrivateApiCampaignPath = disinvitePrivateApiCampaignPath;
	exports.editPrivateApiAccountPath = editPrivateApiAccountPath;
	exports.editPrivateApiExternalCampaignPath = editPrivateApiExternalCampaignPath;
	exports.editPrivateApiProjectsPath = editPrivateApiProjectsPath;
	exports.enablePreviewPrivateApiCampaignPath = enablePreviewPrivateApiCampaignPath;
	exports.exportPrivateApiCampaignContributionsPath = exportPrivateApiCampaignContributionsPath;
	exports.findPartnerNameByEinPrivateApiCampaignPath = findPartnerNameByEinPrivateApiCampaignPath;
	exports.followPrivateApiCampaignCollectionPath = followPrivateApiCampaignCollectionPath;
	exports.followPrivateApiProjectsPath = followPrivateApiProjectsPath;
	exports.fulfillmentPrivateApiPartnerDashboardPath = fulfillmentPrivateApiPartnerDashboardPath;
	exports.importPrivateApiExternalCampaignsPath = importPrivateApiExternalCampaignsPath;
	exports.invitePrivateApiCampaignPath = invitePrivateApiCampaignPath;
	exports.markRefundedPrivateApiCampaignContributionPath = markRefundedPrivateApiCampaignContributionPath;
	exports.mePrivateApiCredentialsPath = mePrivateApiCredentialsPath;
	exports.newPrivateApiAccountPath = newPrivateApiAccountPath;
	exports.newPrivateApiExternalCampaignPath = newPrivateApiExternalCampaignPath;
	exports.newPrivateApiProjectsPath = newPrivateApiProjectsPath;
	exports.previewPrivateApiCampaignUpdatesPath = previewPrivateApiCampaignUpdatesPath;
	exports.privateApiAccountPath = privateApiAccountPath;
	exports.privateApiAccountAddressPath = privateApiAccountAddressPath;
	exports.privateApiAccountAddressesPath = privateApiAccountAddressesPath;
	exports.privateApiAccountContributionPath = privateApiAccountContributionPath;
	exports.privateApiAccountCreditCardPath = privateApiAccountCreditCardPath;
	exports.privateApiAccountCreditCardsPath = privateApiAccountCreditCardsPath;
	exports.privateApiAccountsPath = privateApiAccountsPath;
	exports.privateApiAdminAccountRolePath = privateApiAdminAccountRolePath;
	exports.privateApiAdminCampaignStrategistPath = privateApiAdminCampaignStrategistPath;
	exports.privateApiAdminCampaignStrategistIndexPath = privateApiAdminCampaignStrategistIndexPath;
	exports.privateApiAdminProjectSponsorPath = privateApiAdminProjectSponsorPath;
	exports.privateApiAdminProjectSponsorsPath = privateApiAdminProjectSponsorsPath;
	exports.privateApiAdminSearchAnythingIndexPath = privateApiAdminSearchAnythingIndexPath;
	exports.privateApiAdminSponsorPath = privateApiAdminSponsorPath;
	exports.privateApiAdminSponsorLevelsPath = privateApiAdminSponsorLevelsPath;
	exports.privateApiAdminSponsorsPath = privateApiAdminSponsorsPath;
	exports.privateApiCampaignPath = privateApiCampaignPath;
	exports.privateApiCampaignBankAccountsPath = privateApiCampaignBankAccountsPath;
	exports.privateApiCampaignBankInfosPath = privateApiCampaignBankInfosPath;
	exports.privateApiCampaignCollectionPath = privateApiCampaignCollectionPath;
	exports.privateApiCampaignCollectionCampaignsPath = privateApiCampaignCollectionCampaignsPath;
	exports.privateApiCampaignCollectionsPath = privateApiCampaignCollectionsPath;
	exports.privateApiCampaignComingSoonPath = privateApiCampaignComingSoonPath;
	exports.privateApiCampaignCommentPath = privateApiCampaignCommentPath;
	exports.privateApiCampaignCommentsPath = privateApiCampaignCommentsPath;
	exports.privateApiCampaignContributionPath = privateApiCampaignContributionPath;
	exports.privateApiCampaignContributionsPath = privateApiCampaignContributionsPath;
	exports.privateApiCampaignDisbursementsPath = privateApiCampaignDisbursementsPath;
	exports.privateApiCampaignEditorPerkPath = privateApiCampaignEditorPerkPath;
	exports.privateApiCampaignEditorPerksPath = privateApiCampaignEditorPerksPath;
	exports.privateApiCampaignEmailSubscribersPath = privateApiCampaignEmailSubscribersPath;
	exports.privateApiCampaignFundsPath = privateApiCampaignFundsPath;
	exports.privateApiCampaignGalleryPath = privateApiCampaignGalleryPath;
	exports.privateApiCampaignIdentityVerificationPath = privateApiCampaignIdentityVerificationPath;
	exports.privateApiCampaignOrderPath = privateApiCampaignOrderPath;
	exports.privateApiCampaignOrdersPath = privateApiCampaignOrdersPath;
	exports.privateApiCampaignPayoutRecordsPath = privateApiCampaignPayoutRecordsPath;
	exports.privateApiCampaignPerkItemPath = privateApiCampaignPerkItemPath;
	exports.privateApiCampaignPerkItemsPath = privateApiCampaignPerkItemsPath;
	exports.privateApiCampaignPerksPath = privateApiCampaignPerksPath;
	exports.privateApiCampaignPledgesPath = privateApiCampaignPledgesPath;
	exports.privateApiCampaignSubscribePath = privateApiCampaignSubscribePath;
	exports.privateApiCampaignUpdatePath = privateApiCampaignUpdatePath;
	exports.privateApiCampaignUpdatesPath = privateApiCampaignUpdatesPath;
	exports.privateApiCampaignsPath = privateApiCampaignsPath;
	exports.privateApiCommandCenterAnalyticsPath = privateApiCommandCenterAnalyticsPath;
	exports.privateApiCommandCenterCountriesPath = privateApiCommandCenterCountriesPath;
	exports.privateApiCommandCenterDomainsPath = privateApiCommandCenterDomainsPath;
	exports.privateApiCommandCenterFundsPath = privateApiCommandCenterFundsPath;
	exports.privateApiCommandCenterPerksPath = privateApiCommandCenterPerksPath;
	exports.privateApiCommandCenterReferrersPath = privateApiCommandCenterReferrersPath;
	exports.privateApiCommandCenterStatsPath = privateApiCommandCenterStatsPath;
	exports.privateApiContactsPath = privateApiContactsPath;
	exports.privateApiEmailContactsPath = privateApiEmailContactsPath;
	exports.privateApiExperimentPath = privateApiExperimentPath;
	exports.privateApiExperimentsFetchAndUpdatePath = privateApiExperimentsFetchAndUpdatePath;
	exports.privateApiExplorePath = privateApiExplorePath;
	exports.privateApiExploreCollectionsPath = privateApiExploreCollectionsPath;
	exports.privateApiExploreStatsPath = privateApiExploreStatsPath;
	exports.privateApiExternalCampaignPath = privateApiExternalCampaignPath;
	exports.privateApiExternalCampaignsPath = privateApiExternalCampaignsPath;
	exports.privateApiFacebookCountPath = privateApiFacebookCountPath;
	exports.privateApiFbDynamicProductAdPath = privateApiFbDynamicProductAdPath;
	exports.privateApiFbDynamicProductAdsPath = privateApiFbDynamicProductAdsPath;
	exports.privateApiFundraiserDashboardDisbursementInfoPath = privateApiFundraiserDashboardDisbursementInfoPath;
	exports.privateApiHomePath = privateApiHomePath;
	exports.privateApiHomePerksPath = privateApiHomePerksPath;
	exports.privateApiHomeSlotsPath = privateApiHomeSlotsPath;
	exports.privateApiJobStatusPath = privateApiJobStatusPath;
	exports.privateApiPartnerTeamInvitationPath = privateApiPartnerTeamInvitationPath;
	exports.privateApiPartnerTeamInvitationsPath = privateApiPartnerTeamInvitationsPath;
	exports.privateApiPartnerTeamMemberPath = privateApiPartnerTeamMemberPath;
	exports.privateApiPaymentsCreditCardsNewPath = privateApiPaymentsCreditCardsNewPath;
	exports.privateApiPaymentsCreditCardsSavedPath = privateApiPaymentsCreditCardsSavedPath;
	exports.privateApiPaymentsGuestSignupsPath = privateApiPaymentsGuestSignupsPath;
	exports.privateApiPaymentsPaypalPath = privateApiPaymentsPaypalPath;
	exports.privateApiPaymentsProjectPath = privateApiPaymentsProjectPath;
	exports.privateApiProfilePath = privateApiProfilePath;
	exports.privateApiProfileCommentsPath = privateApiProfileCommentsPath;
	exports.privateApiProfileEmailPreferencesPath = privateApiProfileEmailPreferencesPath;
	exports.privateApiProfileFacebooksPath = privateApiProfileFacebooksPath;
	exports.privateApiProfileLinkedinsPath = privateApiProfileLinkedinsPath;
	exports.privateApiProjectsPath = privateApiProjectsPath;
	exports.privateApiProjectsAutomaticFacebookPostsPath = privateApiProjectsAutomaticFacebookPostsPath;
	exports.privateApiProjectsCampaignMessagesPath = privateApiProjectsCampaignMessagesPath;
	exports.privateApiSearchPath = privateApiSearchPath;
	exports.privateApiSimpleCampaignPath = privateApiSimpleCampaignPath;
	exports.productStagesPrivateApiAdminProjectPath = productStagesPrivateApiAdminProjectPath;
	exports.projectTodoItemsPrivateApiProjectsPath = projectTodoItemsPrivateApiProjectsPath;
	exports.promotePrivateApiPartnerTeamMemberPath = promotePrivateApiPartnerTeamMemberPath;
	exports.publishPrivateApiCampaignPath = publishPrivateApiCampaignPath;
	exports.publishPrivateApiExternalCampaignPath = publishPrivateApiExternalCampaignPath;
	exports.publishPrivateApiSimpleCampaignPath = publishPrivateApiSimpleCampaignPath;
	exports.recommendationsPrivateApiCampaignPath = recommendationsPrivateApiCampaignPath;
	exports.refundPrivateApiCampaignContributionPath = refundPrivateApiCampaignContributionPath;
	exports.resendConfirmationEmailPrivateApiAccountPath = resendConfirmationEmailPrivateApiAccountPath;
	exports.resendConfirmationEmailPrivateApiCampaignOrderPath = resendConfirmationEmailPrivateApiCampaignOrderPath;
	exports.resendPrivateApiPartnerTeamInvitationPath = resendPrivateApiPartnerTeamInvitationPath;
	exports.scheduleNextPostDatePrivateApiProjectsAutomaticFacebookPostsPath = scheduleNextPostDatePrivateApiProjectsAutomaticFacebookPostsPath;
	exports.searchPrivateApiTagsPath = searchPrivateApiTagsPath;
	exports.sendAllConfirmationEmailsPrivateApiCampaignOrdersPath = sendAllConfirmationEmailsPrivateApiCampaignOrdersPath;
	exports.sendEmailPrivateApiContactsPath = sendEmailPrivateApiContactsPath;
	exports.sendPreviewPrivateApiCampaignUpdatesPath = sendPreviewPrivateApiCampaignUpdatesPath;
	exports.setFeePrivateApiExternalCampaignPath = setFeePrivateApiExternalCampaignPath;
	exports.setTopPerkPrivateApiCampaignEditorPerksPath = setTopPerkPrivateApiCampaignEditorPerksPath;
	exports.splitBucketPrivateApiCampaignPath = splitBucketPrivateApiCampaignPath;
	exports.submitForApprovalPrivateApiCampaignPath = submitForApprovalPrivateApiCampaignPath;
	exports.toggleSpamPrivateApiCampaignCommentsPath = toggleSpamPrivateApiCampaignCommentsPath;
	exports.unfollowPrivateApiCampaignCollectionPath = unfollowPrivateApiCampaignCollectionPath;
	exports.unfollowPrivateApiProjectsPath = unfollowPrivateApiProjectsPath;
	exports.updateCloudinaryImagePrivateApiProfilePath = updateCloudinaryImagePrivateApiProfilePath;
	exports.updateDeadlinePrivateApiCampaignPath = updateDeadlinePrivateApiCampaignPath;
	exports.verifyPaypalPrivateApiCampaignPath = verifyPaypalPrivateApiCampaignPath;
	function activatePreOrderPrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/activate_pre_order";
	}
	function analyticsPrivateApiPaymentsContributionPath(args) {
	  return "/private_api/payments/contributions/" + args.id + "/analytics";
	}
	function approveProductStagePrivateApiAdminProjectPath(args) {
	  return "/private_api/admin/projects/" + args.id + "/approve_product_stage";
	}
	function batchUpdatePrivateApiCampaignOrdersPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/orders/batch_update";
	}
	function campaignSharePrivateApiPaymentsContributionPath(args) {
	  return "/private_api/payments/contributions/" + args.id + "/campaign_share";
	}
	function campaignsPrivateApiPartnerDashboardPath(args) {
	  return "/private_api/partners/" + args.partnerId + "/dashboard/campaigns";
	}
	function canMessagePrivateApiProjectsCampaignMessagesPath(args) {
	  return "/private_api/projects/" + args.id + "/campaign_messages/can_message";
	}
	function changeTopPerkPrivateApiCommandCenterPerkPath(args) {
	  return "/private_api/command_center/" + args.commandCenterId + "/perks/" + args.id + "/change_top_perk";
	}
	function clearTopPerkPrivateApiCommandCenterPerksPath(args) {
	  return "/private_api/command_center/" + args.commandCenterId + "/perks/clear_top_perk";
	}
	function contributionsPrivateApiPartnerDashboardPath(args) {
	  return "/private_api/partners/" + args.partnerId + "/dashboard/contributions";
	}
	function createReplyPrivateApiCampaignCommentsPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/comments/create_reply";
	}
	function currentAccountFollowingPrivateApiCampaignCollectionPath(args) {
	  return "/private_api/campaign_collections/" + args.id + "/current_account_following";
	}
	function deactivatePreOrderPrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/deactivate_pre_order";
	}
	function deleteReplyPrivateApiCampaignCommentsPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/comments/delete_reply";
	}
	function demotePrivateApiPartnerTeamMemberPath(args) {
	  return "/private_api/partners/" + args.partnerId + "/team_members/" + args.id + "/demote";
	}
	function descriptionPrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/description";
	}
	function disablePreviewPrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/disable_preview";
	}
	function disinvitePrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/disinvite";
	}
	function editPrivateApiAccountPath(args) {
	  return "/private_api/accounts/" + args.id + "/edit";
	}
	function editPrivateApiExternalCampaignPath(args) {
	  return "/private_api/external_campaigns/" + args.id + "/edit";
	}
	function editPrivateApiProjectsPath(args) {
	  return "/private_api/projects/" + args.id + "/edit";
	}
	function enablePreviewPrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/enable_preview";
	}
	function exportPrivateApiCampaignContributionsPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/contributions/export";
	}
	function findPartnerNameByEinPrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/find_partner_name_by_ein";
	}
	function followPrivateApiCampaignCollectionPath(args) {
	  return "/private_api/campaign_collections/" + args.id + "/follow";
	}
	function followPrivateApiProjectsPath(args) {
	  return "/private_api/projects/" + args.id + "/follow";
	}
	function fulfillmentPrivateApiPartnerDashboardPath(args) {
	  return "/private_api/partners/" + args.partnerId + "/dashboard/fulfillment";
	}
	function importPrivateApiExternalCampaignsPath() {
	  return "/private_api/external_campaigns/import";
	}
	function invitePrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/invite";
	}
	function markRefundedPrivateApiCampaignContributionPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/contributions/" + args.id + "/mark_refunded";
	}
	function mePrivateApiCredentialsPath() {
	  return "/private_api/me";
	}
	function newPrivateApiAccountPath() {
	  return "/private_api/accounts/new";
	}
	function newPrivateApiExternalCampaignPath() {
	  return "/private_api/external_campaigns/new";
	}
	function newPrivateApiProjectsPath(args) {
	  return "/private_api/projects/" + args.id + "/new";
	}
	function previewPrivateApiCampaignUpdatesPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/updates/preview";
	}
	function privateApiAccountPath(args) {
	  return "/private_api/accounts/" + args.id;
	}
	function privateApiAccountAddressPath(args) {
	  return "/private_api/accounts/" + args.accountId + "/addresses/" + args.id;
	}
	function privateApiAccountAddressesPath(args) {
	  return "/private_api/accounts/" + args.accountId + "/addresses";
	}
	function privateApiAccountContributionPath(args) {
	  return "/private_api/accounts/" + args.accountId + "/contributions/" + args.id;
	}
	function privateApiAccountCreditCardPath(args) {
	  return "/private_api/accounts/" + args.accountId + "/credit_cards/" + args.id;
	}
	function privateApiAccountCreditCardsPath(args) {
	  return "/private_api/accounts/" + args.accountId + "/credit_cards";
	}
	function privateApiAccountsPath() {
	  return "/private_api/accounts";
	}
	function privateApiAdminAccountRolePath(args) {
	  return "/private_api/admin/account_roles/" + args.id;
	}
	function privateApiAdminCampaignStrategistPath(args) {
	  return "/private_api/admin/campaign_strategist/" + args.id;
	}
	function privateApiAdminCampaignStrategistIndexPath() {
	  return "/private_api/admin/campaign_strategist";
	}
	function privateApiAdminProjectSponsorPath(args) {
	  return "/private_api/admin/projects/" + args.id + "/project_sponsors/" + args.projectSponsorId;
	}
	function privateApiAdminProjectSponsorsPath(args) {
	  return "/private_api/admin/projects/" + args.id + "/project_sponsors";
	}
	function privateApiAdminSearchAnythingIndexPath() {
	  return "/private_api/admin/search_anything";
	}
	function privateApiAdminSponsorPath(args) {
	  return "/private_api/admin/sponsors/" + args.id;
	}
	function privateApiAdminSponsorLevelsPath() {
	  return "/private_api/admin/sponsor_levels";
	}
	function privateApiAdminSponsorsPath() {
	  return "/private_api/admin/sponsors";
	}
	function privateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id;
	}
	function privateApiCampaignBankAccountsPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/bank_accounts";
	}
	function privateApiCampaignBankInfosPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/bank_infos";
	}
	function privateApiCampaignCollectionPath(args) {
	  return "/private_api/campaign_collections/" + args.id;
	}
	function privateApiCampaignCollectionCampaignsPath(args) {
	  return "/private_api/campaign_collections/" + args.campaignCollectionId + "/campaigns";
	}
	function privateApiCampaignCollectionsPath() {
	  return "/private_api/campaign_collections";
	}
	function privateApiCampaignComingSoonPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/coming_soon";
	}
	function privateApiCampaignCommentPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/comments/" + args.id;
	}
	function privateApiCampaignCommentsPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/comments";
	}
	function privateApiCampaignContributionPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/contributions/" + args.id;
	}
	function privateApiCampaignContributionsPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/contributions";
	}
	function privateApiCampaignDisbursementsPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/disbursements";
	}
	function privateApiCampaignEditorPerkPath(args) {
	  return "/private_api/campaign_editor/" + args.campaignEditorCampaignId + "/perks/" + args.id;
	}
	function privateApiCampaignEditorPerksPath(args) {
	  return "/private_api/campaign_editor/" + args.campaignEditorCampaignId + "/perks";
	}
	function privateApiCampaignEmailSubscribersPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/email_subscribers";
	}
	function privateApiCampaignFundsPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/funds";
	}
	function privateApiCampaignGalleryPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/gallery";
	}
	function privateApiCampaignIdentityVerificationPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/identity_verification";
	}
	function privateApiCampaignOrderPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/orders/" + args.id;
	}
	function privateApiCampaignOrdersPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/orders";
	}
	function privateApiCampaignPayoutRecordsPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/payout_records";
	}
	function privateApiCampaignPerkItemPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/perk_items/" + args.id;
	}
	function privateApiCampaignPerkItemsPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/perk_items";
	}
	function privateApiCampaignPerksPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/perks";
	}
	function privateApiCampaignPledgesPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/pledges";
	}
	function privateApiCampaignSubscribePath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/subscribe";
	}
	function privateApiCampaignUpdatePath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/updates/" + args.id;
	}
	function privateApiCampaignUpdatesPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/updates";
	}
	function privateApiCampaignsPath() {
	  return "/private_api/campaigns";
	}
	function privateApiCommandCenterAnalyticsPath(args) {
	  return "/private_api/command_center/" + args.commandCenterId + "/analytics";
	}
	function privateApiCommandCenterCountriesPath(args) {
	  return "/private_api/command_center/" + args.commandCenterId + "/countries";
	}
	function privateApiCommandCenterDomainsPath(args) {
	  return "/private_api/command_center/" + args.commandCenterId + "/domains";
	}
	function privateApiCommandCenterFundsPath(args) {
	  return "/private_api/command_center/" + args.commandCenterId + "/funds";
	}
	function privateApiCommandCenterPerksPath(args) {
	  return "/private_api/command_center/" + args.commandCenterId + "/perks";
	}
	function privateApiCommandCenterReferrersPath(args) {
	  return "/private_api/command_center/" + args.commandCenterId + "/referrers";
	}
	function privateApiCommandCenterStatsPath(args) {
	  return "/private_api/command_center/" + args.commandCenterId + "/stats";
	}
	function privateApiContactsPath() {
	  return "/private_api/contacts";
	}
	function privateApiEmailContactsPath() {
	  return "/private_api/email_contacts";
	}
	function privateApiExperimentPath(args) {
	  return "/private_api/experiments/" + args.id;
	}
	function privateApiExperimentsFetchAndUpdatePath() {
	  return "/private_api/experiments/fetch_and_update";
	}
	function privateApiExplorePath() {
	  return "/private_api/explore";
	}
	function privateApiExploreCollectionsPath() {
	  return "/private_api/explore/collections";
	}
	function privateApiExploreStatsPath() {
	  return "/private_api/explore/stats";
	}
	function privateApiExternalCampaignPath(args) {
	  return "/private_api/external_campaigns/" + args.id;
	}
	function privateApiExternalCampaignsPath() {
	  return "/private_api/external_campaigns";
	}
	function privateApiFacebookCountPath(args) {
	  return "/private_api/facebook_count/" + args.id;
	}
	function privateApiFbDynamicProductAdPath(args) {
	  return "/private_api/fb_dynamic_product_ads/" + args.id;
	}
	function privateApiFbDynamicProductAdsPath() {
	  return "/private_api/fb_dynamic_product_ads";
	}
	function privateApiFundraiserDashboardDisbursementInfoPath(args) {
	  return "/private_api/fundraiser/" + args.fundraiserId + "/dashboard/disbursement_info";
	}
	function privateApiHomePath() {
	  return "/private_api/home";
	}
	function privateApiHomePerksPath() {
	  return "/private_api/home/perks";
	}
	function privateApiHomeSlotsPath() {
	  return "/private_api/home/slots";
	}
	function privateApiJobStatusPath(args) {
	  return "/private_api/job_statuses/" + args.id;
	}
	function privateApiPartnerTeamInvitationPath(args) {
	  return "/private_api/partners/" + args.partnerId + "/team_invitations/" + args.id;
	}
	function privateApiPartnerTeamInvitationsPath(args) {
	  return "/private_api/partners/" + args.partnerId + "/team_invitations";
	}
	function privateApiPartnerTeamMemberPath(args) {
	  return "/private_api/partners/" + args.partnerId + "/team_members/" + args.id;
	}
	function privateApiPaymentsCreditCardsNewPath() {
	  return "/private_api/payments/credit_cards/new";
	}
	function privateApiPaymentsCreditCardsSavedPath() {
	  return "/private_api/payments/credit_cards/saved";
	}
	function privateApiPaymentsGuestSignupsPath() {
	  return "/private_api/payments/guest_signups";
	}
	function privateApiPaymentsPaypalPath() {
	  return "/private_api/payments/paypal";
	}
	function privateApiPaymentsProjectPath(args) {
	  return "/private_api/payments/projects/" + args.id;
	}
	function privateApiProfilePath(args) {
	  return "/private_api/profiles/" + args.id;
	}
	function privateApiProfileCommentsPath(args) {
	  return "/private_api/profiles/" + args.profileId + "/comments";
	}
	function privateApiProfileEmailPreferencesPath(args) {
	  return "/private_api/profiles/" + args.profileId + "/email_preferences";
	}
	function privateApiProfileFacebooksPath(args) {
	  return "/private_api/profiles/" + args.profileId + "/facebooks";
	}
	function privateApiProfileLinkedinsPath(args) {
	  return "/private_api/profiles/" + args.profileId + "/linkedins";
	}
	function privateApiProjectsPath(args) {
	  return "/private_api/projects/" + args.id;
	}
	function privateApiProjectsAutomaticFacebookPostsPath(args) {
	  return "/private_api/projects/" + args.id + "/automatic_facebook_posts";
	}
	function privateApiProjectsCampaignMessagesPath(args) {
	  return "/private_api/projects/" + args.id + "/campaign_messages";
	}
	function privateApiSearchPath() {
	  return "/private_api/search";
	}
	function privateApiSimpleCampaignPath(args) {
	  return "/private_api/simple_campaigns/" + args.id;
	}
	function productStagesPrivateApiAdminProjectPath(args) {
	  return "/private_api/admin/projects/" + args.id + "/product_stages";
	}
	function projectTodoItemsPrivateApiProjectsPath(args) {
	  return "/private_api/projects/" + args.id + "/todo_items/" + args.itemName;
	}
	function promotePrivateApiPartnerTeamMemberPath(args) {
	  return "/private_api/partners/" + args.partnerId + "/team_members/" + args.id + "/promote";
	}
	function publishPrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/publish";
	}
	function publishPrivateApiExternalCampaignPath(args) {
	  return "/private_api/external_campaigns/" + args.id + "/publish";
	}
	function publishPrivateApiSimpleCampaignPath(args) {
	  return "/private_api/simple_campaigns/" + args.id + "/publish";
	}
	function recommendationsPrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/recommendations";
	}
	function refundPrivateApiCampaignContributionPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/contributions/" + args.id + "/refund";
	}
	function resendConfirmationEmailPrivateApiAccountPath(args) {
	  return "/private_api/accounts/" + args.id + "/resend_confirmation_email";
	}
	function resendConfirmationEmailPrivateApiCampaignOrderPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/orders/" + args.id + "/resend_confirmation_email";
	}
	function resendPrivateApiPartnerTeamInvitationPath(args) {
	  return "/private_api/partners/" + args.partnerId + "/team_invitations/" + args.id + "/resend";
	}
	function scheduleNextPostDatePrivateApiProjectsAutomaticFacebookPostsPath(args) {
	  return "/private_api/projects/" + args.id + "/automatic_facebook_posts/schedule_next_post_date";
	}
	function searchPrivateApiTagsPath() {
	  return "/private_api/tags/search";
	}
	function sendAllConfirmationEmailsPrivateApiCampaignOrdersPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/orders/send_all_confirmation_emails";
	}
	function sendEmailPrivateApiContactsPath() {
	  return "/private_api/contacts/send_email";
	}
	function sendPreviewPrivateApiCampaignUpdatesPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/updates/send_preview";
	}
	function setFeePrivateApiExternalCampaignPath(args) {
	  return "/private_api/external_campaigns/" + args.id + "/set_fee";
	}
	function setTopPerkPrivateApiCampaignEditorPerksPath(args) {
	  return "/private_api/campaign_editor/" + args.campaignEditorCampaignId + "/perks/set_top_perk";
	}
	function splitBucketPrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/split_bucket";
	}
	function submitForApprovalPrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/submit_for_approval";
	}
	function toggleSpamPrivateApiCampaignCommentsPath(args) {
	  return "/private_api/campaigns/" + args.campaignId + "/comments/toggle_spam";
	}
	function unfollowPrivateApiCampaignCollectionPath(args) {
	  return "/private_api/campaign_collections/" + args.id + "/unfollow";
	}
	function unfollowPrivateApiProjectsPath(args) {
	  return "/private_api/projects/" + args.id + "/unfollow";
	}
	function updateCloudinaryImagePrivateApiProfilePath(args) {
	  return "/private_api/profiles/" + args.id + "/update_cloudinary_image";
	}
	function updateDeadlinePrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/update_deadline";
	}
	function verifyPaypalPrivateApiCampaignPath(args) {
	  return "/private_api/campaigns/" + args.id + "/verify_paypal";
	}

/***/ },

/***/ 174:
/***/ function(module, exports) {

	"use strict";
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.ckeditorUploadDialogImagePath = ckeditorUploadDialogImagePath;
	exports.ckeditorUploadImagePath = ckeditorUploadImagePath;
	exports.redactorEmbedPath = redactorEmbedPath;
	exports.redactorUploadImagePath = redactorUploadImagePath;
	function ckeditorUploadDialogImagePath() {
	  return "/ckeditor/upload_dialog_image";
	}
	function ckeditorUploadImagePath() {
	  return "/ckeditor/upload_image";
	}
	function redactorEmbedPath() {
	  return "/redactor/embed";
	}
	function redactorUploadImagePath() {
	  return "/redactor/upload_image";
	}

/***/ },

/***/ 653:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	
	exports.default = function (angular) {
	  var redactorModule = angular.module('indiegogo.components.redactor', ['utils']);
	  (0, _redactorDirectives2.default)(redactorModule);
	};
	
	__webpack_require__(654);
	
	var _redactorDirectives = __webpack_require__(655);
	
	var _redactorDirectives2 = _interopRequireDefault(_redactorDirectives);
	
	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/***/ },

/***/ 654:
/***/ function(module, exports) {

	'use strict';var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj;}; // jshint ignore: start
	// ignore file from linting for now
	/*
	    Redactor v8.2.2
	    Updated: January 17, 2013
	
	    http://redactorjs.com/
	
	    Copyright (c) 2009-2013, Imperavi Inc.
	    License: http://redactorjs.com/license/
	
	    Usage: $('#content').redactor();
	*/var rwindow,rdocument;if(typeof RELANG==='undefined'){var RELANG={};}var RLANG={html:'HTML',video:'Insert Video',image:'Insert Image',embedly:'Insert Embedly Link',table:'Table',link:'Link',link_insert:'Insert link',unlink:'Unlink',formatting:'Formatting',paragraph:'Paragraph',quote:'Quote',code:'Code',header1:'Header 1',header2:'Header 2',header3:'Header 3',header4:'Header 4',bold:'Bold',italic:'Italic',fontcolor:'Font Color',backcolor:'Back Color',unorderedlist:'Unordered List',orderedlist:'Ordered List',outdent:'Outdent',indent:'Indent',cancel:'Cancel',insert:'Insert',save:'Save',_delete:'Delete',insert_table:'Insert Table',insert_row_above:'Add Row Above',insert_row_below:'Add Row Below',insert_column_left:'Add Column Left',insert_column_right:'Add Column Right',delete_column:'Delete Column',delete_row:'Delete Row',delete_table:'Delete Table',rows:'Rows',columns:'Columns',add_head:'Add Head',delete_head:'Delete Head',title:'Title',image_position:'Position',none:'None',left:'Left',right:'Right',image_web_link:'Image Web Link',text:'Text',mailto:'Email',web:'URL',video_html_code:'Youtube or Vimeo Link',embedly_link:'Indiegogo supports some embed.ly providers.',file:'Insert File',upload:'Upload',download:'Download',choose:'Choose',or_choose:'Or choose',drop_file_here:'Drop file here',align_left:'Align text to the left',align_center:'Center text',align_right:'Align text to the right',align_justify:'Justify text',horizontalrule:'Insert Horizontal Rule',deleted:'Deleted',anchor:'Anchor',link_new_tab:'Open link in new tab',underline:'Underline',alignment:'Alignment'};(function($){ // Plugin
	jQuery.fn.redactor=function(option){return this.each(function(){var $obj=$(this);var data=$obj.data('redactor');if(!data){$obj.data('redactor',data=new Redactor(this,option));}});}; // Initialization
	var Redactor=function Redactor(element,options){ // Add authenticity token
	var authenticityToken=jQuery('meta[name=csrf-token]').attr('content');if(_typeof(options.uploadFields)!=='object'){options.uploadFields={};}options.uploadFields.authenticity_token=authenticityToken; // Element
	this.$el=$(element); // Lang
	if(typeof options!=='undefined'&&typeof options.lang!=='undefined'&&options.lang!=='en'&&typeof RELANG[options.lang]!=='undefined'){RLANG=RELANG[options.lang];} // Options
	this.opts=$.extend({iframe:false,css:false, // url
	lang:'en',direction:'ltr', // ltr or rtl
	callback:false, // function
	keyupCallback:false, // function
	keydownCallback:false, // function
	execCommandCallback:false, // function
	plugins:false,cleanup:true,focus:false,tabindex:false,autoresize:true,minHeight:false,fixed:false,fixedTop:0, // pixels
	fixedBox:false,source:true,shortcuts:true,mobile:true,air:false, // true or toolbar
	wym:false,convertLinks:true,convertDivs:true,protocol:'http://', // for links http or https or ftp or false
	autosave:false, // false or url
	autosaveCallback:false, // function
	interval:60, // seconds
	imageGetJson:false, // url (ex. /folder/images.json ) or false
	embedUrl:false, // url
	imageUpload:false, // url
	imageUploadCallback:false, // function
	imageUploadErrorCallback:false, // function
	fileUpload:false, // url
	fileUploadCallback:false, // function
	fileUploadErrorCallback:false, // function
	uploadCrossDomain:false,uploadFields:false,observeImages:true,overlay:true, // modal overlay
	allowedTags:["form","input","button","select","option","datalist","output","textarea","fieldset","legend","section","header","hgroup","aside","footer","article","details","nav","progress","time","canvas","code","span","div","label","a","br","p","b","i","del","strike","u","img","video","source","track","audio","iframe","object","embed","param","blockquote","mark","cite","small","ul","ol","li","hr","dl","dt","dd","sup","sub","big","pre","code","figure","figcaption","strong","em","table","tr","td","th","tbody","thead","tfoot","h1","h2","h3","h4","h5","h6"],toolbarExternal:false, // ID selector
	buttonsCustom:{},buttonsAdd:[],buttons:['html','|','formatting','|','bold','italic','deleted','|','unorderedlist','orderedlist','outdent','indent','|','image','video','file','table','link','embedly','|','fontcolor','backcolor','|','alignment','|','horizontalrule'], // 'underline', 'alignleft', 'aligncenter', 'alignright', 'justify'
	airButtons:['formatting','|','bold','italic','deleted','|','unorderedlist','orderedlist','outdent','indent','|','fontcolor','backcolor'],formattingTags:['p','blockquote','pre','h1','h2','h3','h4'],activeButtons:['deleted','italic','bold','underline','unorderedlist','orderedlist'], // 'alignleft', 'aligncenter', 'alignright', 'justify'
	activeButtonsStates:{b:'bold',strong:'bold',i:'italic',em:'italic',del:'deleted',strike:'deleted',ul:'unorderedlist',ol:'orderedlist',u:'underline'},colors:['#ffffff','#000000','#eeece1','#1f497d','#4f81bd','#c0504d','#9bbb59','#8064a2','#4bacc6','#f79646','#ffff00','#f2f2f2','#7f7f7f','#ddd9c3','#c6d9f0','#dbe5f1','#f2dcdb','#ebf1dd','#e5e0ec','#dbeef3','#fdeada','#fff2ca','#d8d8d8','#595959','#c4bd97','#8db3e2','#b8cce4','#e5b9b7','#d7e3bc','#ccc1d9','#b7dde8','#fbd5b5','#ffe694','#bfbfbf','#3f3f3f','#938953','#548dd4','#95b3d7','#d99694','#c3d69b','#b2a2c7','#b7dde8','#fac08f','#f2c314','#a5a5a5','#262626','#494429','#17365d','#366092','#953734','#76923c','#5f497a','#92cddc','#e36c09','#c09100','#7f7f7f','#0c0c0c','#1d1b10','#0f243e','#244061','#632423','#4f6128','#3f3151','#31859b','#974806','#7f6000'], // private
	emptyHtml:'<p><br /></p>',buffer:false,visual:true, // modal windows container
	modal_file:String()+'<div id="redactor_modal_content">'+'<form id="redactorUploadFileForm" method="post" action="" enctype="multipart/form-data">'+'<label>Name (optional)</label>'+'<input type="text" id="redactor_filename" class="redactor_input" />'+'<div style="margin-top: 7px;">'+'<input type="file" id="redactor_file" name="file" />'+'</div>'+'</form><br>'+'</div>',modal_image_edit:String()+'<div id="redactor_modal_content">'+'<label>'+RLANG.title+'</label>'+'<input id="redactor_file_alt" class="redactor_input" />'+'<label>'+RLANG.link+'</label>'+'<input id="redactor_file_link" class="redactor_input" />'+'<label>'+RLANG.image_position+'</label>'+'<select id="redactor_form_image_align">'+'<option value="none">'+RLANG.none+'</option>'+'<option value="left">'+RLANG.left+'</option>'+'<option value="right">'+RLANG.right+'</option>'+'</select>'+'</div>'+'<div id="redactor_modal_footer">'+'<a href="javascript:void(null);" id="redactor_image_delete_btn" class="redactor_modal_btn">'+RLANG._delete+'</a>&nbsp;&nbsp;&nbsp;'+'<a href="javascript:void(null);" class="redactor_modal_btn redactor_btn_modal_close">'+RLANG.cancel+'</a>'+'<input type="button" name="save" class="redactor_modal_btn" id="redactorSaveBtn" value="'+RLANG.save+'" />'+'</div>',modal_image:String()+'<div id="redactor_modal_content">'+'<div id="redactor_tabs">'+'<a href="javascript:void(null);" class="redactor_tabs_act">'+RLANG.upload+'</a>'+'<a href="javascript:void(null);">'+RLANG.choose+'</a>'+'<a href="javascript:void(null);">'+RLANG.link+'</a>'+'</div>'+'<form id="redactorInsertImageForm" method="post" action="" enctype="multipart/form-data">'+'<div id="redactor_tab1" class="redactor_tab">'+'<input type="file" id="redactor_file" name="file" />'+'</div>'+'<div id="redactor_tab2" class="redactor_tab" style="display: none;">'+'<div id="redactor_image_box"></div>'+'</div>'+'</form>'+'<div id="redactor_tab3" class="redactor_tab" style="display: none;">'+'<label>'+RLANG.image_web_link+'</label>'+'<input type="text" name="redactor_file_link" id="redactor_file_link" class="redactor_input"  />'+'</div>'+'</div>'+'<div id="redactor_modal_footer">'+'<a href="javascript:void(null);" class="redactor_modal_btn redactor_btn_modal_close">'+RLANG.cancel+'</a>'+'<input type="button" name="upload" class="redactor_modal_btn" id="redactor_upload_btn" value="'+RLANG.insert+'" />'+'</div>',modal_link:String()+'<div id="redactor_modal_content">'+'<form id="redactorInsertLinkForm" method="post" action="">'+'<div id="redactor_tabs">'+'<a href="javascript:void(null);" class="redactor_tabs_act">URL</a>'+'<a href="javascript:void(null);">Email</a>'+'<a href="javascript:void(null);">'+RLANG.anchor+'</a>'+'</div>'+'<input type="hidden" id="redactor_tab_selected" value="1" />'+'<div class="redactor_tab" id="redactor_tab1">'+'<label>URL</label><input type="text" id="redactor_link_url" class="redactor_input"  />'+'<label>'+RLANG.text+'</label><input type="text" class="redactor_input redactor_link_text" id="redactor_link_url_text" />'+'<label><input type="checkbox" id="redactor_link_blank"> '+RLANG.link_new_tab+'</label>'+'</div>'+'<div class="redactor_tab" id="redactor_tab2" style="display: none;">'+'<label>Email</label><input type="text" id="redactor_link_mailto" class="redactor_input" />'+'<label>'+RLANG.text+'</label><input type="text" class="redactor_input redactor_link_text" id="redactor_link_mailto_text" />'+'</div>'+'<div class="redactor_tab" id="redactor_tab3" style="display: none;">'+'<label>'+RLANG.anchor+'</label><input type="text" class="redactor_input" id="redactor_link_anchor"  />'+'<label>'+RLANG.text+'</label><input type="text" class="redactor_input redactor_link_text" id="redactor_link_anchor_text" />'+'</div>'+'</form>'+'</div>'+'<div id="redactor_modal_footer">'+'<a href="javascript:void(null);" class="redactor_modal_btn redactor_btn_modal_close">'+RLANG.cancel+'</a>'+'<input type="button" class="redactor_modal_btn" id="redactor_insert_link_btn" value="'+RLANG.insert+'" />'+'</div>',modal_table:String()+'<div id="redactor_modal_content">'+'<label>'+RLANG.rows+'</label>'+'<input type="text" size="5" value="2" id="redactor_table_rows" />'+'<label>'+RLANG.columns+'</label>'+'<input type="text" size="5" value="3" id="redactor_table_columns" />'+'</div>'+'<div id="redactor_modal_footer">'+'<a href="javascript:void(null);" class="redactor_modal_btn redactor_btn_modal_close">'+RLANG.cancel+'</a>'+'<input type="button" name="upload" class="redactor_modal_btn" id="redactor_insert_table_btn" value="'+RLANG.insert+'" />'+'</div>',modal_video:String()+'<div id="redactor_modal_content">'+'<form id="redactorInsertVideoForm">'+'<label>'+RLANG.video_html_code+'</label>'+'<input type="text" name="redactor_video_link" id="redactor_insert_video_area" class="redactor_input"  />'+'</form>'+'</div>'+'<div id="redactor_modal_footer">'+'<a href="javascript:void(null);" class="redactor_modal_btn redactor_btn_modal_close">'+RLANG.cancel+'</a>'+'<input type="button" class="redactor_modal_btn" id="redactor_insert_video_btn" value="'+RLANG.insert+'" />'+'<div id="video_saving" class="spinner-container" style="position:absolute;margin-left:170px;"></div>'+'</div>',modal_embedly:String()+'<div id="redactor_modal_content">'+'<form id="redactorInsertEmbedlyForm">'+'<label>'+RLANG.embedly_link+'</label>'+'<input type="text" name="redactor_embedly_link" id="redactor_insert_embedly_area" class="redactor_input"  />'+'</form>'+'</div>'+'<div id="redactor_modal_footer">'+'<a href="javascript:void(null);" class="redactor_modal_btn redactor_btn_modal_close">'+RLANG.cancel+'</a>'+'<input type="button" class="redactor_modal_btn" id="redactor_insert_embedly_btn" value="'+RLANG.insert+'" />'+'<div id="embedly_saving" class="spinner-container" style="position:absolute;margin-left:170px;"></div>'+'</div>',toolbar:{html:{title:RLANG.html,func:'toggle'},formatting:{title:RLANG.formatting,func:'show',dropdown:{p:{title:RLANG.paragraph,exec:'formatblock'},blockquote:{title:RLANG.quote,exec:'formatblock',className:'redactor_format_blockquote'},pre:{title:RLANG.code,exec:'formatblock',className:'redactor_format_pre'},h1:{title:RLANG.header1,exec:'formatblock',className:'redactor_format_h1'},h2:{title:RLANG.header2,exec:'formatblock',className:'redactor_format_h2'},h3:{title:RLANG.header3,exec:'formatblock',className:'redactor_format_h3'},h4:{title:RLANG.header4,exec:'formatblock',className:'redactor_format_h4'}}},bold:{title:RLANG.bold,exec:'bold'},italic:{title:RLANG.italic,exec:'italic'},deleted:{title:RLANG.deleted,exec:'strikethrough'},underline:{title:RLANG.underline,exec:'underline'},unorderedlist:{title:'&bull; '+RLANG.unorderedlist,exec:'insertunorderedlist'},orderedlist:{title:'1. '+RLANG.orderedlist,exec:'insertorderedlist'},outdent:{title:'< '+RLANG.outdent,exec:'outdent'},indent:{title:'> '+RLANG.indent,exec:'indent'},image:{title:RLANG.image,func:'showImage'},video:{title:RLANG.video,func:'showVideo'},embedly:{title:RLANG.embedly,func:'showEmbedly'},file:{title:RLANG.file,func:'showFile'},table:{title:RLANG.table,func:'show',dropdown:{insert_table:{title:RLANG.insert_table,func:'showTable'},separator_drop1:{name:'separator'},insert_row_above:{title:RLANG.insert_row_above,func:'insertRowAbove'},insert_row_below:{title:RLANG.insert_row_below,func:'insertRowBelow'},insert_column_left:{title:RLANG.insert_column_left,func:'insertColumnLeft'},insert_column_right:{title:RLANG.insert_column_right,func:'insertColumnRight'},separator_drop2:{name:'separator'},add_head:{title:RLANG.add_head,func:'addHead'},delete_head:{title:RLANG.delete_head,func:'deleteHead'},separator_drop3:{name:'separator'},delete_column:{title:RLANG.delete_column,func:'deleteColumn'},delete_row:{title:RLANG.delete_row,func:'deleteRow'},delete_table:{title:RLANG.delete_table,func:'deleteTable'}}},link:{title:RLANG.link,func:'show',dropdown:{link:{title:RLANG.link_insert,func:'showLink'},unlink:{title:RLANG.unlink,exec:'unlink'}}},fontcolor:{title:RLANG.fontcolor,func:'show'},backcolor:{title:RLANG.backcolor,func:'show'},alignment:{title:RLANG.alignment,func:'show',dropdown:{alignleft:{title:RLANG.align_left,exec:'JustifyLeft'},aligncenter:{title:RLANG.align_center,exec:'JustifyCenter'},alignright:{title:RLANG.align_right,exec:'JustifyRight'},justify:{title:RLANG.align_justify,exec:'JustifyFull'}}},alignleft:{exec:'JustifyLeft',title:RLANG.align_left},aligncenter:{exec:'JustifyCenter',title:RLANG.align_center},alignright:{exec:'JustifyRight',title:RLANG.align_right},justify:{exec:'JustifyFull',title:RLANG.align_justify},horizontalrule:{exec:'inserthorizontalrule',title:RLANG.horizontalrule}}},options,this.$el.data());this.dropdowns=[]; // Init
	this.init();}; // Functionality
	Redactor.prototype={ // Initialization
	init:function init(){ // get dimensions
	this.height=this.$el.css('height');this.width=this.$el.css('width');rdocument=this.document=document;rwindow=this.window=window; // mobile
	if(this.opts.mobile===false&&this.isMobile()){this.build(true);return false;} // iframe
	if(this.opts.iframe){this.opts.autoresize=false;} // extend buttons
	if(this.opts.air){this.opts.buttons=this.opts.airButtons;}else if(this.opts.toolbar!==false){$('.postUpdate-xpost').addClass('visible');if(this.opts.source===false){var index=this.opts.buttons.indexOf('html');var next=this.opts.buttons[index+1];this.opts.buttons.splice(index,1);if(typeof next!=='undefined'&&next==='|'){this.opts.buttons.splice(index,1);}}$.extend(this.opts.toolbar,this.opts.buttonsCustom);$.each(this.opts.buttonsAdd,$.proxy(function(i,s){this.opts.buttons.push(s);},this));} // formatting tags
	if(this.opts.toolbar!==false){$.each(this.opts.toolbar.formatting.dropdown,$.proxy(function(i,s){if($.inArray(i,this.opts.formattingTags)=='-1'){delete this.opts.toolbar.formatting.dropdown[i];}},this));}function afterBuild(){ // air enable
	this.enableAir(); // toolbar
	this.buildToolbar(); // PLUGINS
	if(_typeof(this.opts.plugins)==='object'){$.each(this.opts.plugins,$.proxy(function(i,s){if(typeof RedactorPlugins[s]!=='undefined'){$.extend(this,RedactorPlugins[s]);if(typeof RedactorPlugins[s].init!=='undefined'){this.init();}}},this));} // buttons response
	if(this.opts.activeButtons!==false&&this.opts.toolbar!==false){var observeFormatting=$.proxy(function(){this.observeFormatting();},this);this.$editor.click(observeFormatting).keyup(observeFormatting);} // paste
	var oldsafari=false;if(this.browser('webkit')&&navigator.userAgent.indexOf('Chrome')===-1){var arr=this.browser('version').split('.');if(arr[0]<536)oldsafari=true;}if(this.isMobile(true)===false&&oldsafari===false){this.$editor.bind('paste',$.proxy(function(e){if(this.opts.cleanup===false){return true;}this.pasteRunning=true;this.setBuffer();if(this.opts.autoresize===true){this.saveScroll=this.document.body.scrollTop;}else {this.saveScroll=this.$editor.scrollTop();}var frag=this.extractContent();setTimeout($.proxy(function(){var pastedFrag=this.extractContent();this.$editor.append(frag);this.restoreSelection();var html=this.getFragmentHtml(pastedFrag);this.pasteCleanUp(html);this.pasteRunning=false;},this),1);},this));} // key handlers
	this.keyup();this.keydown(); // autosave
	if(this.opts.autosave!==false){this.autoSave();} // observers
	setTimeout($.proxy(function(){this.observeImages();this.observeTables();},this),1); // FF fix
	if(this.browser('mozilla')){this.$editor.click($.proxy(function(){this.saveSelection();},this));try{this.document.execCommand('enableObjectResizing',false,false);this.document.execCommand('enableInlineTableEditing',false,false);}catch(e){}} // focus
	if(this.opts.focus){setTimeout($.proxy(function(){this.$editor.focus();},this),1);} // fixed
	if(this.opts.fixed){this.observeScroll();$(document).scroll($.proxy(this.observeScroll,this));} // callback
	if(typeof this.opts.callback==='function'){this.opts.callback(this);}if(this.opts.toolbar!==false){this.$toolbar.find('a').attr('tabindex','-1');}} // construct editor
	this.build(false,afterBuild);},shortcuts:function shortcuts(e,cmd){e.preventDefault();this.execCommand(cmd,false);},keyup:function keyup(){this.$editor.keyup($.proxy(function(e){var key=e.keyCode||e.which;if(this.browser('mozilla')&&!this.pasteRunning){this.saveSelection();} // callback as you type
	if(typeof this.opts.keyupCallback==='function'){this.opts.keyupCallback(this,e);} // if empty
	if(key===8||key===46){this.observeImages();return this.formatEmpty(e);} // new line p
	if(key===13&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey){if(this.browser('webkit')){this.formatNewLine(e);} // convert links
	if(this.opts.convertLinks){this.$editor.linkify();}}this.syncCode();},this));},keydown:function keydown(){this.$editor.keydown($.proxy(function(e){var key=e.keyCode||e.which;var parent=this.getParentNode();var current=this.getCurrentNode();var pre=false;var ctrl=e.ctrlKey||e.metaKey;if((parent||current)&&($(parent).get(0).tagName==='PRE'||$(current).get(0).tagName==='PRE')){pre=true;} // callback keydown
	if(typeof this.opts.keydownCallback==='function'){this.opts.keydownCallback(this,e);}if(ctrl&&this.opts.shortcuts){if(key===90){if(this.opts.buffer!==false){e.preventDefault();this.getBuffer();}else if(e.shiftKey){this.shortcuts(e,'redo'); // Ctrl + Shift + z
	}else {this.shortcuts(e,'undo'); // Ctrl + z
	}}else if(key===77){this.shortcuts(e,'removeFormat'); // Ctrl + m
	}else if(key===66){this.shortcuts(e,'bold'); // Ctrl + b
	}else if(key===73){this.shortcuts(e,'italic'); // Ctrl + i
	}else if(key===74){this.shortcuts(e,'insertunorderedlist'); // Ctrl + j
	}else if(key===75){this.shortcuts(e,'insertorderedlist'); // Ctrl + k
	}else if(key===76){this.shortcuts(e,'superscript'); // Ctrl + l
	}else if(key===72){this.shortcuts(e,'subscript'); // Ctrl + h
	}} // clear undo buffer
	if(!ctrl&&key!==90){this.opts.buffer=false;} // enter
	if(pre===true&&key===13){e.preventDefault();var html=$(current).parent().text();this.insertNodeAtCaret(this.document.createTextNode('\r\n'));if(html.search(/\s$/)==-1){this.insertNodeAtCaret(this.document.createTextNode('\r\n'));}this.syncCode();return false;} // safari shift key + enter
	if(this.browser('webkit')&&navigator.userAgent.indexOf('Chrome')===-1){return this.safariShiftKeyEnter(e,key);}},this));},build:function build(mobile,whendone){var _this=this;if(mobile!==true){var me;var classlist;var html;(function(){var initFrame=function initFrame(){this.$editor=this.$content.contents().find("body").attr('contenteditable',true).attr('dir',this.opts.direction);rdocument=this.document=this.$editor[0].ownerDocument;rwindow=this.window=this.document.defaultView||window;if(this.opts.css!==false){this.$content.contents().find('head').append('<link rel="stylesheet" href="'+this.opts.css+'" />');}this.$editor.html(html);if(whendone){whendone.call(this);whendone=null;}}; // editor
	// container
	_this.$box=$('<div class="redactor_box"></div>'); // air box
	if(_this.opts.air){_this.air=$('<div class="redactor_air" style="display: none;"></div>');}_this.$content=null;_this.textareamode=true;if(_this.$el.get(0).tagName==='TEXTAREA'){if(_this.opts.iframe){me=_this;_this.$content=$('<iframe style="width: 100%;" frameborder="0"></iframe>').load(function(){initFrame.call(me);});}else {_this.$content=_this.$editor=$('<div></div>');}classlist=_this.$el.get(0).className.split(/\s+/);$.each(classlist,$.proxy(function(i,s){this.$content.addClass('redactor_'+s);},_this));}else {_this.textareamode=false;_this.$content=_this.$editor=_this.$el;_this.$el=$('<textarea name="'+_this.$editor.attr('id')+'"></textarea>').css('height',_this.height);}if(_this.$editor){_this.$editor.addClass('redactor_editor').attr('contenteditable',true).attr('dir',_this.opts.direction);}if(_this.opts.tabindex!==false){_this.$content.attr('tabindex',_this.opts.tabindex);}if(_this.opts.minHeight!==false){_this.$content.css('min-height',_this.opts.minHeight+'px');}if(_this.opts.wym===true){_this.$content.addClass('redactor_editor_wym');}if(_this.opts.autoresize===false){_this.$content.css('height',_this.height);} // hide textarea
	_this.$el.hide(); // append box and frame
	html='';if(_this.textareamode){ // get html
	html=_this.$el.val();html=_this.savePreCode(html);_this.$box.insertAfter(_this.$el).append(_this.$content).append(_this.$el);}else { // get html
	html=_this.$editor.html();html=_this.savePreCode(html);_this.$box.insertAfter(_this.$content).append(_this.$el).append(_this.$editor);} // conver newlines to p
	html=_this.paragraphy(html); // enable
	if(_this.$editor){_this.$editor.html(html);}if(_this.textareamode===false){_this.syncCode();}})();}else {if(this.$el.get(0).tagName!=='TEXTAREA'){var html=this.$el.val();var textarea=$('<textarea name="'+this.$editor.attr('id')+'"></textarea>').css('height',this.height).val(html);this.$el.hide();this.$el.after(textarea);}}if(whendone&&this.$editor){whendone.call(this);}},enableAir:function enableAir(){if(this.opts.air===false){return false;}this.air.hide();this.$editor.bind('textselect',$.proxy(function(e){this.showAir(e);},this));this.$editor.bind('textunselect',$.proxy(function(){this.air.hide();},this));},showAir:function showAir(e){$('.redactor_air').hide();var width=this.air.innerWidth();var left=e.clientX;if($(this.document).width()<left+width){left=left-width;}var top=e.clientY+$(document).scrollTop()+14;if(this.opts.iframe===true){top=top+this.$box.position().top;left=left+this.$box.position().left;}this.air.css({left:left+'px',top:top+'px'}).show();},syncCode:function syncCode(){this.$el.val(this.$editor.html());}, // API functions
	setCode:function setCode(html){html=this.stripTags(html);this.$editor.html(html).focus();this.syncCode();},getCode:function getCode(){var html='';if(this.opts.visual){html=this.$editor.html();}else {html=this.$el.val();}return this.stripTags(html);},insertHtml:function insertHtml(html){this.$editor.focus();this.pasteHtmlAtCaret(html);this.observeImages();this.syncCode();},pasteHtmlAtCaret:function pasteHtmlAtCaret(html){var sel,range;if(this.document.getSelection){sel=this.window.getSelection();if(sel.getRangeAt&&sel.rangeCount){range=sel.getRangeAt(0);range.deleteContents();var el=this.document.createElement("div");el.innerHTML=html;var frag=this.document.createDocumentFragment(),node,lastNode;while(node=el.firstChild){lastNode=frag.appendChild(node);}range.insertNode(frag);if(lastNode){range=range.cloneRange();range.setStartAfter(lastNode);range.collapse(true);sel.removeAllRanges();sel.addRange(range);}}}else if(this.document.selection&&this.document.selection.type!="Control"){this.document.selection.createRange().pasteHTML(html);}},destroy:function destroy(){var html=this.getCode();if(this.textareamode){this.$box.after(this.$el);this.$box.remove();this.$el.height(this.height).val(html).show();}else {this.$box.after(this.$editor);this.$box.remove();this.$editor.removeClass('redactor_editor').removeClass('redactor_editor_wym').attr('contenteditable',false).html(html).show();}if(this.opts.toolbarExternal){$(this.opts.toolbarExternal).empty();}$('.redactor_air').remove();for(var i=0;i<this.dropdowns.length;i++){this.dropdowns[i].remove();delete this.dropdowns[i];}if(this.opts.autosave!==false){clearInterval(this.autosaveInterval);}}, // end API functions
	// OBSERVERS
	observeFormatting:function observeFormatting(){var parent=this.getCurrentNode();this.inactiveAllButtons();$.each(this.opts.activeButtonsStates,$.proxy(function(i,s){if($(parent).closest(i,this.$editor.get()[0]).length!=0){this.setBtnActive(s);}},this));var tag=$(parent).closest(['p','div','h1','h2','h3','h4','h5','h6','blockquote','td']);if(typeof tag[0]!=='undefined'&&typeof tag[0].elem!=='undefined'&&$(tag[0].elem).size()!=0){var align=$(tag[0].elem).css('text-align');switch(align){case 'right':this.setBtnActive('alignright');break;case 'center':this.setBtnActive('aligncenter');break;case 'justify':this.setBtnActive('justify');break;default:this.setBtnActive('alignleft');break;}}},observeImages:function observeImages(){if(this.opts.observeImages===false){return false;}this.$editor.find('img').each($.proxy(function(i,s){if(this.browser('msie')){$(s).attr('unselectable','on');}this.resizeImage(s);},this));},observeTables:function observeTables(){this.$editor.find('table').click($.proxy(this.tableObserver,this));},observeScroll:function observeScroll(){var scrolltop=$(this.document).scrollTop();var boxtop=this.$box.offset().top;var left=0;if(scrolltop>boxtop){var width='100%';if(this.opts.fixedBox){left=this.$box.offset().left;width=this.$box.innerWidth();}this.fixed=true;this.$toolbar.css({position:'fixed',width:width,zIndex:1005,top:this.opts.fixedTop+'px',left:left});}else {this.fixed=false;this.$toolbar.css({position:'relative',width:'auto',zIndex:1,top:0,left:left});}}, // BUFFER
	setBuffer:function setBuffer(){this.saveSelection();this.opts.buffer=this.$editor.html();},getBuffer:function getBuffer(){if(this.opts.buffer===false){return false;}this.$editor.html(this.opts.buffer);if(!this.browser('msie')){this.restoreSelection();}this.opts.buffer=false;}, // EXECCOMMAND
	execCommand:function execCommand(cmd,param){if(this.opts.visual==false){this.$el.focus();return false;}try{var parent;if(cmd==='inserthtml'){if(this.browser('msie')){this.$editor.focus();this.document.selection.createRange().pasteHTML(param);}else {this.pasteHtmlAtCaret(param); //this.execRun(cmd, param);
	}this.observeImages();}else if(cmd==='unlink'){parent=this.getParentNode();if($(parent).get(0).tagName==='A'){$(parent).replaceWith($(parent).text());}else {this.execRun(cmd,param);}}else if(cmd==='JustifyLeft'||cmd==='JustifyCenter'||cmd==='JustifyRight'||cmd==='JustifyFull'){parent=this.getCurrentNode();var tag=$(parent).get(0).tagName;if(this.opts.iframe===false&&$(parent).parents('.redactor_editor').size()==0){return false;}var tagsArray=['P','DIV','H1','H2','H3','H4','H5','H6','BLOCKQUOTE','TD'];if($.inArray(tag,tagsArray)!=-1){var align=false;if(cmd==='JustifyCenter'){align='center';}else if(cmd==='JustifyRight'){align='right';}else if(cmd==='JustifyFull'){align='justify';}if(align===false){$(parent).css('text-align','');}else {$(parent).css('text-align',align);}}else {this.execRun(cmd,param);}}else if(cmd==='formatblock'&&param==='blockquote'){parent=this.getCurrentNode();if($(parent).get(0).tagName==='BLOCKQUOTE'){if(this.browser('msie')){var node=$('<p>'+$(parent).html()+'</p>');$(parent).replaceWith(node);}else {this.execRun(cmd,'p');}}else if($(parent).get(0).tagName==='P'){var parent2=$(parent).parent();if($(parent2).get(0).tagName==='BLOCKQUOTE'){var node=$('<p>'+$(parent).html()+'</p>');$(parent2).replaceWith(node);this.setSelection(node[0],0,node[0],0);}else {if(this.browser('msie')){var node=$('<blockquote>'+$(parent).html()+'</blockquote>');$(parent).replaceWith(node);}else {this.execRun(cmd,param);}}}else {this.execRun(cmd,param);}}else if(cmd==='formatblock'&&(param==='pre'||param==='p')){parent=this.getParentNode();if($(parent).get(0).tagName==='PRE'){$(parent).replaceWith('<p>'+this.encodeEntities($(parent).text())+'</p>');}else {this.execRun(cmd,param);}}else {if(cmd==='inserthorizontalrule'&&this.browser('msie')){this.$editor.focus();}if(cmd==='formatblock'&&this.browser('mozilla')){this.$editor.focus();}this.execRun(cmd,param);}if(cmd==='inserthorizontalrule'){this.$editor.find('hr').removeAttr('id');}this.syncCode();if(this.oldIE()){this.$editor.focus();}if(typeof this.opts.execCommandCallback==='function'){this.opts.execCommandCallback(this,cmd);}if(this.opts.air){this.air.hide();}}catch(e){}},execRun:function execRun(cmd,param){if(cmd==='formatblock'&&this.browser('msie')){param='<'+param+'>';}this.document.execCommand(cmd,false,param);}, // FORMAT NEW LINE
	formatNewLine:function formatNewLine(e){var parent=this.getParentNode();if(parent.nodeName==='DIV'&&parent.className==='redactor_editor'){var element=$(this.getCurrentNode());if(element.get(0).tagName==='DIV'&&(element.html()===''||element.html()==='<br>')){var newElement=$('<p>').append(element.clone().get(0).childNodes);element.replaceWith(newElement);newElement.html('<br />');this.setSelection(newElement[0],0,newElement[0],0);}}}, // SAFARI SHIFT KEY + ENTER
	safariShiftKeyEnter:function safariShiftKeyEnter(e,key){if(e.shiftKey&&key===13){e.preventDefault();this.insertNodeAtCaret($('<span><br /></span>').get(0));this.syncCode();return false;}else {return true;}}, // FORMAT EMPTY
	formatEmpty:function formatEmpty(e){var html=$.trim(this.$editor.html());if(this.browser('mozilla')){html=html.replace(/<br>/i,'');}var thtml=html.replace(/<(?:.|\n)*?>/gm,'');if(html===''||thtml===''){e.preventDefault();var node=$(this.opts.emptyHtml).get(0);this.$editor.html(node);this.setSelection(node,0,node,0);this.syncCode();return false;}else {this.syncCode();}}, // PARAGRAPHY
	paragraphy:function paragraphy(str){str=$.trim(str);if(str===''||str==='<p></p>'){return this.opts.emptyHtml;} // convert div to p
	if(this.opts.convertDivs){str=str.replace(/<div(.*?)>([\w\W]*?)<\/div>/gi,'<p>$2</p>');} // inner functions
	var X=function X(x,a,b){return x.replace(new RegExp(a,'g'),b);};var R=function R(a,b){return X(str,a,b);}; // block elements
	var blocks='(table|thead|tfoot|caption|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|style|script|object|input|param|p|h[1-6])'; //str = '<p>' + str;
	str+='\n';R('<br />\\s*<br />','\n\n');R('(<'+blocks+'[^>]*>)','\n$1');R('(</'+blocks+'>)','$1\n\n');R('\r\n|\r','\n'); // newlines
	R('\n\n+','\n\n'); // remove duplicates
	R('\n?((.|\n)+?)$','<p>$1</p>\n'); // including one at the end
	R('<p>\\s*?</p>',''); // remove empty p
	R('<p>(<div[^>]*>\\s*)','$1<p>');R('<p>([^<]+)\\s*?(</(div|address|form)[^>]*>)','<p>$1</p>$2');R('<p>\\s*(</?'+blocks+'[^>]*>)\\s*</p>','$1');R('<p>(<li.+?)</p>','$1');R('<p>\\s*(</?'+blocks+'[^>]*>)','$1');R('(</?'+blocks+'[^>]*>)\\s*</p>','$1');R('(</?'+blocks+'[^>]*>)\\s*<br />','$1');R('<br />(\\s*</?(p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)','$1'); // pre
	if(str.indexOf('<pre')!=-1){R('(<pre(.|\n)*?>)((.|\n)*?)</pre>',function(m0,m1,m2,m3){return X(m1,'\\\\([\'\"\\\\])','$1')+X(X(X(m3,'<p>','\n'),'</p>|<br />',''),'\\\\([\'\"\\\\])','$1')+'</pre>';});}return R('\n</p>$','</p>');}, // REMOVE TAGS
	stripTags:function stripTags(html){var allowed=this.opts.allowedTags;var tags=/<\/?([a-z][a-z0-9]*)\b[^>]*>/gi;return html.replace(tags,function($0,$1){return $.inArray($1.toLowerCase(),allowed)>'-1'?$0:'';});},savePreCode:function savePreCode(html){var pre=html.match(/<pre(.*?)>([\w\W]*?)<\/pre>/gi);if(pre!==null){$.each(pre,$.proxy(function(i,s){var arr=s.match(/<pre(.*?)>([\w\W]*?)<\/pre>/i);arr[2]=this.encodeEntities(arr[2]);html=html.replace(s,'<pre'+arr[1]+'>'+arr[2]+'</pre>');},this));}return html;},encodeEntities:function encodeEntities(str){str=String(str).replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&quot;/g,'"');return String(str).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');},cleanupPre:function cleanupPre(s){s=s.replace(/<br>/gi,'\n');s=s.replace(/<\/p>/gi,'\n');s=s.replace(/<\/div>/gi,'\n');var tmp=this.document.createElement("div");tmp.innerHTML=s;return tmp.textContent||tmp.innerText;}, // PASTE CLEANUP
	pasteCleanUp:function pasteCleanUp(html){var parent=this.getParentNode(); // clean up pre
	if($(parent).get(0).tagName==='PRE'){html=this.cleanupPre(html);this.pasteCleanUpInsert(html);return true;} // remove comments and php tags
	html=html.replace(/<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi,''); // remove nbsp
	html=html.replace(/(&nbsp;){2,}/gi,'&nbsp;'); // remove google docs marker
	html=html.replace(/<b\sid="internal-source-marker(.*?)">([\w\W]*?)<\/b>/gi,"$2"); // strip tags
	html=this.stripTags(html); // prevert
	html=html.replace(/<td><\/td>/gi,'[td]');html=html.replace(/<td>&nbsp;<\/td>/gi,'[td]');html=html.replace(/<td><br><\/td>/gi,'[td]');html=html.replace(/<a(.*?)href="(.*?)"(.*?)>([\w\W]*?)<\/a>/gi,'[a href="$2"]$4[/a]');html=html.replace(/<iframe(.*?)>([\w\W]*?)<\/iframe>/gi,'[iframe$1]$2[/iframe]');html=html.replace(/<video(.*?)>([\w\W]*?)<\/video>/gi,'[video$1]$2[/video]');html=html.replace(/<audio(.*?)>([\w\W]*?)<\/audio>/gi,'[audio$1]$2[/audio]');html=html.replace(/<embed(.*?)>([\w\W]*?)<\/embed>/gi,'[embed$1]$2[/embed]');html=html.replace(/<object(.*?)>([\w\W]*?)<\/object>/gi,'[object$1]$2[/object]');html=html.replace(/<param(.*?)>/gi,'[param$1]');html=html.replace(/<img(.*?)style="(.*?)"(.*?)>/gi,'[img$1$3]'); // remove attributes
	html=html.replace(/<(\w+)([\w\W]*?)>/gi,'<$1>'); // remove empty
	html=html.replace(/<[^\/>][^>]*>(\s*|\t*|\n*|&nbsp;|<br>)<\/[^>]+>/gi,'');html=html.replace(/<[^\/>][^>]*>(\s*|\t*|\n*|&nbsp;|<br>)<\/[^>]+>/gi,''); // revert
	html=html.replace(/\[td\]/gi,'<td>&nbsp;</td>');html=html.replace(/\[a href="(.*?)"\]([\w\W]*?)\[\/a\]/gi,'<a href="$1">$2</a>');html=html.replace(/\[iframe(.*?)\]([\w\W]*?)\[\/iframe\]/gi,'<iframe$1>$2</iframe>');html=html.replace(/\[video(.*?)\]([\w\W]*?)\[\/video\]/gi,'<video$1>$2</video>');html=html.replace(/\[audio(.*?)\]([\w\W]*?)\[\/audio\]/gi,'<audio$1>$2</audio>');html=html.replace(/\[embed(.*?)\]([\w\W]*?)\[\/embed\]/gi,'<embed$1>$2</embed>');html=html.replace(/\[object(.*?)\]([\w\W]*?)\[\/object\]/gi,'<object$1>$2</object>');html=html.replace(/\[param(.*?)\]/gi,'<param$1>');html=html.replace(/\[img(.*?)\]/gi,'<img$1>'); // convert div to p
	if(this.opts.convertDivs){html=html.replace(/<div(.*?)>([\w\W]*?)<\/div>/gi,'<p>$2</p>');} // remove span
	html=html.replace(/<span>([\w\W]*?)<\/span>/gi,'$1');html=html.replace(/\n{3,}/gi,'\n'); // remove dirty p
	html=html.replace(/<p><p>/gi,'<p>');html=html.replace(/<\/p><\/p>/gi,'</p>'); // FF fix
	if(this.browser('mozilla')){html=html.replace(/<br>$/gi,'');}this.pasteCleanUpInsert(html);},pasteCleanUpInsert:function pasteCleanUpInsert(html){this.execCommand('inserthtml',html);if(this.opts.autoresize===true){$(this.document.body).scrollTop(this.saveScroll);}else {this.$editor.scrollTop(this.saveScroll);}}, // TEXTAREA CODE FORMATTING
	formattingRemove:function formattingRemove(html){ // save pre
	var prebuffer=[];var pre=html.match(/<pre(.*?)>([\w\W]*?)<\/pre>/gi);if(pre!==null){$.each(pre,function(i,s){html=html.replace(s,'prebuffer_'+i);prebuffer.push(s);});}html=html.replace(/\s{2,}/g,' ');html=html.replace(/\n/g,' ');html=html.replace(/[\t]*/g,'');html=html.replace(/\n\s*\n/g,"\n");html=html.replace(/^[\s\n]*/g,'');html=html.replace(/[\s\n]*$/g,'');html=html.replace(/>\s+</g,'><');if(prebuffer){$.each(prebuffer,function(i,s){html=html.replace('prebuffer_'+i,s);});prebuffer=[];}return html;},formattingIndenting:function formattingIndenting(html){html=html.replace(/<li/g,"\t<li");html=html.replace(/<tr/g,"\t<tr");html=html.replace(/<td/g,"\t\t<td");html=html.replace(/<\/tr>/g,"\t</tr>");return html;},formattingEmptyTags:function formattingEmptyTags(html){var etags=["<pre></pre>","<blockquote>\\s*</blockquote>","<em>\\s*</em>","<ul></ul>","<ol></ol>","<li></li>","<table></table>","<tr></tr>","<span>\\s*<span>","<span>&nbsp;<span>","<b>\\s*</b>","<b>&nbsp;</b>","<p>\\s*</p>","<p>&nbsp;</p>","<p>\\s*<br>\\s*</p>","<div>\\s*</div>","<div>\\s*<br>\\s*</div>"];for(var i=0;i<etags.length;++i){var bbb=etags[i];html=html.replace(new RegExp(bbb,'gi'),"");}return html;},formattingAddBefore:function formattingAddBefore(html){var lb='\r\n';var btags=["<p","<form","</ul>",'</ol>',"<fieldset","<legend","<object","<embed","<select","<option","<input","<textarea","<pre","<blockquote","<ul","<ol","<li","<dl","<dt","<dd","<table","<thead","<tbody","<caption","</caption>","<th","<tr","<td","<figure"];for(var i=0;i<btags.length;++i){var eee=btags[i];html=html.replace(new RegExp(eee,'gi'),lb+eee);}return html;},formattingAddAfter:function formattingAddAfter(html){var lb='\r\n';var atags=['</p>','</div>','</h1>','</h2>','</h3>','</h4>','</h5>','</h6>','<br>','<br />','</dl>','</dt>','</dd>','</form>','</blockquote>','</pre>','</legend>','</fieldset>','</object>','</embed>','</textarea>','</select>','</option>','</table>','</thead>','</tbody>','</tr>','</td>','</th>','</figure>'];for(var i=0;i<atags.length;++i){var aaa=atags[i];html=html.replace(new RegExp(aaa,'gi'),aaa+lb);}return html;},formatting:function formatting(html){html=this.formattingRemove(html); // empty tags
	html=this.formattingEmptyTags(html); // add formatting before
	html=this.formattingAddBefore(html); // add formatting after
	html=this.formattingAddAfter(html); // indenting
	html=this.formattingIndenting(html);return html;}, // TOGGLE
	toggle:function toggle(){var html;if(this.opts.visual){var height=this.$editor.innerHeight();this.$editor.hide();this.$content.hide();html=this.$editor.html(); //html = $.trim(this.formatting(html));
	this.$el.height(height).val(html).show().focus();this.setBtnActive('html');this.opts.visual=false;}else {this.$el.hide();var html=this.$el.val(); //html = this.savePreCode(html);
	// clean up
	//html = this.stripTags(html);
	// set code
	this.$editor.html(html).show();this.$content.show();if(this.$editor.html()===''){this.setCode(this.opts.emptyHtml);}this.$editor.focus();this.setBtnInactive('html');this.opts.visual=true;this.observeImages();this.observeTables();}}, // AUTOSAVE
	autoSave:function autoSave(){this.autosaveInterval=setInterval($.proxy(function(){$.ajax({url:this.opts.autosave,type:'post',data:this.$el.attr('name')+'='+escape(encodeURIComponent(this.getCode())),success:$.proxy(function(data){ // callback
	if(typeof this.opts.autosaveCallback==='function'){this.opts.autosaveCallback(data,this);}},this)});},this),this.opts.interval*1000);}, // TOOLBAR
	buildToolbar:function buildToolbar(){if(this.opts.toolbar===false){return false;}this.$toolbar=$('<ul>').addClass('redactor_toolbar');if(this.opts.air){$(this.air).append(this.$toolbar);$('body').append(this.air);}else {if(this.opts.toolbarExternal===false){this.$box.prepend(this.$toolbar);}else {$(this.opts.toolbarExternal).html(this.$toolbar);}}$.each(this.opts.buttons,$.proxy(function(i,key){if(key!=='|'&&typeof this.opts.toolbar[key]!=='undefined'){var s=this.opts.toolbar[key];if(this.opts.fileUpload===false&&key==='file'){return true;}this.$toolbar.append($('<li>').append(this.buildButton(key,s)));}if(key==='|'){this.$toolbar.append($('<li class="redactor_separator"></li>'));}},this));},buildButton:function buildButton(key,s){var button=$('<a href="javascript:void(null);" onClick="return false;" title="'+s.title+'" class="redactor_btn_'+key+'"></a>');if(typeof s.func==='undefined'){button.click($.proxy(function(){if($.inArray(key,this.opts.activeButtons)!=-1){this.inactiveAllButtons();this.setBtnActive(key);}if(this.browser('mozilla')){this.$editor.focus(); //this.restoreSelection();
	}this.execCommand(s.exec,key);},this));}else if(s.func!=='show'){button.click($.proxy(function(e){this[s.func](e);},this));}if(typeof s.callback!=='undefined'&&s.callback!==false){button.click($.proxy(function(e){s.callback(this,e,key);},this));} // dropdown
	if(key==='backcolor'||key==='fontcolor'||typeof s.dropdown!=='undefined'){var dropdown=$('<div class="redactor_dropdown" style="display: none;">');if(key==='backcolor'||key==='fontcolor'){dropdown=this.buildColorPicker(dropdown,key);}else {dropdown=this.buildDropdown(dropdown,s.dropdown);}this.dropdowns.push(dropdown.appendTo($(document.body))); // observing dropdown
	this.hdlShowDropDown=$.proxy(function(e){this.showDropDown(e,dropdown,key);},this);button.click(this.hdlShowDropDown);}return button;},buildDropdown:function buildDropdown(dropdown,obj){$.each(obj,$.proxy(function(x,d){if(typeof d.className==='undefined'){d.className='';}var drop_a;if(typeof d.name!=='undefined'&&d.name==='separator'){drop_a=$('<a class="redactor_separator_drop">');}else {drop_a=$('<a href="javascript:void(null);" onClick="return false;" class="'+d.className+'">'+d.title+'</a>');if(typeof d.callback==='function'){$(drop_a).click($.proxy(function(e){d.callback(this,e,x);},this));}else if(typeof d.func==='undefined'){$(drop_a).click($.proxy(function(){this.execCommand(d.exec,x);},this));}else {$(drop_a).click($.proxy(function(e){this[d.func](e);},this));}}$(dropdown).append(drop_a);},this));return dropdown;},buildColorPicker:function buildColorPicker(dropdown,key){var mode;if(key==='backcolor'){if(this.browser('msie')){mode='BackColor';}else {mode='hilitecolor';}}else {mode='forecolor';}$(dropdown).width(210);var len=this.opts.colors.length;for(var i=0;i<len;++i){var color=this.opts.colors[i];var swatch=$('<a rel="'+color+'" href="javascript:void(null);" class="redactor_color_link"></a>').css({'backgroundColor':color});$(dropdown).append(swatch);var _self=this;$(swatch).click(function(){_self.execCommand(mode,$(this).attr('rel'));if(mode==='forecolor'){_self.$editor.find('font').replaceWith(function(){return $('<span style="color: '+$(this).attr('color')+';">'+$(this).html()+'</span>');});}if(_self.browser('msie')&&mode==='BackColor'){_self.$editor.find('font').replaceWith(function(){return $('<span style="'+$(this).attr('style')+'">'+$(this).html()+'</span>');});}});}var elnone=$('<a href="javascript:void(null);" class="redactor_color_none"></a>').html(RLANG.none);if(key==='backcolor'){elnone.click($.proxy(this.setBackgroundNone,this));}else {elnone.click($.proxy(this.setColorNone,this));}$(dropdown).append(elnone);return dropdown;},setBackgroundNone:function setBackgroundNone(){$(this.getParentNode()).css('background-color','transparent');this.syncCode();},setColorNone:function setColorNone(){$(this.getParentNode()).attr('color','').css('color','');this.syncCode();}, // DROPDOWNS
	showDropDown:function showDropDown(e,dropdown,key){if(this.getBtn(key).hasClass('dropact')){this.hideAllDropDown();}else {this.hideAllDropDown();this.setBtnActive(key);this.getBtn(key).addClass('dropact');var left=this.getBtn(key).offset().left;if(this.opts.air){var air_top=this.air.offset().top;$(dropdown).css({position:'absolute',left:left+'px',top:air_top+30+'px'}).show();}else if(this.opts.fixed&&this.fixed){$(dropdown).css({position:'fixed',left:left+'px',top:'30px'}).show();}else {var top=this.$toolbar.offset().top+30;$(dropdown).css({position:'absolute',left:left+'px',top:top+'px'}).show();}}var hdlHideDropDown=$.proxy(function(e){this.hideDropDown(e,dropdown,key);},this);$(document).one('click',hdlHideDropDown);this.$editor.one('click',hdlHideDropDown);this.$content.one('click',hdlHideDropDown);e.stopPropagation();},hideAllDropDown:function hideAllDropDown(){this.$toolbar.find('a.dropact').removeClass('redactor_act').removeClass('dropact');$('.redactor_dropdown').hide();},hideDropDown:function hideDropDown(e,dropdown,key){if(!$(e.target).hasClass('dropact')){$(dropdown).removeClass('dropact');this.showedDropDown=false;this.hideAllDropDown();}}, // BUTTONS MANIPULATIONS
	getBtn:function getBtn(key){if(this.opts.toolbar===false){return false;}return $(this.$toolbar.find('a.redactor_btn_'+key));},setBtnActive:function setBtnActive(key){this.getBtn(key).addClass('redactor_act');},setBtnInactive:function setBtnInactive(key){this.getBtn(key).removeClass('redactor_act');},inactiveAllButtons:function inactiveAllButtons(){$.each(this.opts.activeButtons,$.proxy(function(i,s){this.setBtnInactive(s);},this));},changeBtnIcon:function changeBtnIcon(key,classname){this.getBtn(key).addClass('redactor_btn_'+classname);},removeBtnIcon:function removeBtnIcon(key,classname){this.getBtn(key).removeClass('redactor_btn_'+classname);},addBtnSeparator:function addBtnSeparator(){this.$toolbar.append($('<li class="redactor_separator"></li>'));},addBtnSeparatorAfter:function addBtnSeparatorAfter(key){var $btn=this.getBtn(key);$btn.parent().after($('<li class="redactor_separator"></li>'));},addBtnSeparatorBefore:function addBtnSeparatorBefore(key){var $btn=this.getBtn(key);$btn.parent().before($('<li class="redactor_separator"></li>'));},removeBtnSeparatorAfter:function removeBtnSeparatorAfter(key){var $btn=this.getBtn(key);$btn.parent().next().remove();},removeBtnSeparatorBefore:function removeBtnSeparatorBefore(key){var $btn=this.getBtn(key);$btn.parent().prev().remove();},setBtnRight:function setBtnRight(key){if(this.opts.toolbar===false){return false;}this.getBtn(key).parent().addClass('redactor_btn_right');},setBtnLeft:function setBtnLeft(key){if(this.opts.toolbar===false){return false;}this.getBtn(key).parent().removeClass('redactor_btn_right');},addBtn:function addBtn(key,title,callback,dropdown){if(this.opts.toolbar===false){return false;}var btn=this.buildButton(key,{title:title,callback:callback,dropdown:dropdown});this.$toolbar.append($('<li>').append(btn));},addBtnFirst:function addBtnFirst(key,title,callback,dropdown){if(this.opts.toolbar===false){return false;}var btn=this.buildButton(key,{title:title,callback:callback,dropdown:dropdown});this.$toolbar.prepend($('<li>').append(btn));},addBtnAfter:function addBtnAfter(afterkey,key,title,callback,dropdown){if(this.opts.toolbar===false){return false;}var btn=this.buildButton(key,{title:title,callback:callback,dropdown:dropdown});var $btn=this.getBtn(afterkey);$btn.parent().after($('<li>').append(btn));},addBtnBefore:function addBtnBefore(beforekey,key,title,callback,dropdown){if(this.opts.toolbar===false){return false;}var btn=this.buildButton(key,{title:title,callback:callback,dropdown:dropdown});var $btn=this.getBtn(beforekey);$btn.parent().before($('<li>').append(btn));},removeBtn:function removeBtn(key,separator){var $btn=this.getBtn(key);if(separator===true){$btn.parent().next().remove();}$btn.parent().removeClass('redactor_btn_right');$btn.remove();}, // SELECTION AND NODE MANIPULATION
	getFragmentHtml:function getFragmentHtml(fragment){var cloned=fragment.cloneNode(true);var div=this.document.createElement('div');div.appendChild(cloned);return div.innerHTML;},extractContent:function extractContent(){var node=this.$editor.get(0);var frag=this.document.createDocumentFragment(),child;while(child=node.firstChild){frag.appendChild(child);}return frag;}, // Save and Restore Selection
	saveSelection:function saveSelection(){this.$editor.focus();this.savedSel=this.getOrigin();this.savedSelObj=this.getFocus();},restoreSelection:function restoreSelection(){if(typeof this.savedSel!=='undefined'&&this.savedSel!==null&&this.savedSelObj!==null&&this.savedSel[0].tagName!=='BODY'){if(this.opts.iframe===false&&$(this.savedSel[0]).closest('.redactor_editor').size()==0){this.$editor.focus();}else {if(this.browser('opera')){this.$editor.focus();}this.setSelection(this.savedSel[0],this.savedSel[1],this.savedSelObj[0],this.savedSelObj[1]);if(this.browser('mozilla')){this.$editor.focus();}}}else {this.$editor.focus();}}, // Selection
	getSelection:function getSelection(){var doc=this.document;if(this.window.getSelection){return this.window.getSelection();}else if(doc.getSelection){return doc.getSelection();}else  // IE
	{return doc.selection.createRange();}return false;},hasSelection:function hasSelection(){if(!this.oldIE()){var sel;return (sel=this.getSelection())&&sel.focusNode!=null&&sel.anchorNode!=null;}else  // IE8
	{var node=this.$editor.get(0);var range;node.focus();if(!node.document.selection){return false;}range=node.document.selection.createRange();return range&&range.parentElement().document===node.document;}},getOrigin:function getOrigin(){if(!this.oldIE()){var sel;if(!((sel=this.getSelection())&&sel.anchorNode!=null)){return null;}return [sel.anchorNode,sel.anchorOffset];}else {var node=this.$editor.get(0);var range;node.focus();if(!this.hasSelection()){return null;}range=node.document.selection.createRange();return this._getBoundary(node.document,range,true);}},getFocus:function getFocus(){if(!this.oldIE()){var sel;if(!((sel=this.getSelection())&&sel.focusNode!=null)){return null;}return [sel.focusNode,sel.focusOffset];}else {var node=this.$editor.get(0);var range;node.focus();if(!this.hasSelection()){return null;}range=node.document.selection.createRange();return this._getBoundary(node.document,range,false);}},setSelection:function setSelection(orgn,orgo,focn,foco){if(focn==null){focn=orgn;}if(foco==null){foco=orgo;}if(!this.oldIE()){var sel=this.getSelection();if(!sel){return;}if(sel.collapse&&sel.extend){sel.collapse(orgn,orgo);sel.extend(focn,foco);}else  // IE9
	{r=this.document.createRange();r.setStart(orgn,orgo);r.setEnd(focn,foco);try{sel.removeAllRanges();}catch(e){}sel.addRange(r);}}else {var node=this.$editor.get(0);var range=node.document.body.createTextRange();this._moveBoundary(node.document,range,false,focn,foco);this._moveBoundary(node.document,range,true,orgn,orgo);return range.select();}}, // Get elements, html and text
	getCurrentNode:function getCurrentNode(){if(typeof this.window.getSelection!=='undefined'){return this.getSelectedNode().parentNode;}else if(typeof this.document.selection!=='undefined'){return this.getSelection().parentElement();}},getParentNode:function getParentNode(){return $(this.getCurrentNode()).parent()[0];},getSelectedNode:function getSelectedNode(){if(this.oldIE()){return this.getSelection().parentElement();}else if(typeof this.window.getSelection!=='undefined'){var s=this.window.getSelection();if(s.rangeCount>0){return this.getSelection().getRangeAt(0).commonAncestorContainer;}else {return false;}}else if(typeof this.document.selection!=='undefined'){return this.getSelection();}}, // IE8 specific selection
	_getBoundary:function _getBoundary(doc,textRange,bStart){var cursor,cursorNode,node,offset,parent;cursorNode=doc.createElement('a');cursor=textRange.duplicate();cursor.collapse(bStart);parent=cursor.parentElement();while(true){parent.insertBefore(cursorNode,cursorNode.previousSibling);cursor.moveToElementText(cursorNode);if(!(cursor.compareEndPoints(bStart?'StartToStart':'StartToEnd',textRange)>0&&cursorNode.previousSibling!=null)){break;}}if(cursor.compareEndPoints(bStart?'StartToStart':'StartToEnd',textRange)===-1&&cursorNode.nextSibling){cursor.setEndPoint(bStart?'EndToStart':'EndToEnd',textRange);node=cursorNode.nextSibling;offset=cursor.text.length;}else {node=cursorNode.parentNode;offset=this._getChildIndex(cursorNode);}cursorNode.parentNode.removeChild(cursorNode);return [node,offset];},_moveBoundary:function _moveBoundary(doc,textRange,bStart,node,offset){var anchorNode,anchorParent,cursor,cursorNode,textOffset;textOffset=0;anchorNode=this._isText(node)?node:node.childNodes[offset];anchorParent=this._isText(node)?node.parentNode:node;if(this._isText(node)){textOffset=offset;}cursorNode=doc.createElement('a');anchorParent.insertBefore(cursorNode,anchorNode||null);cursor=doc.body.createTextRange();cursor.moveToElementText(cursorNode);cursorNode.parentNode.removeChild(cursorNode);textRange.setEndPoint(bStart?'StartToStart':'EndToEnd',cursor);return textRange[bStart?'moveStart':'moveEnd']('character',textOffset);},_isText:function _isText(d){return d!=null?d.nodeType==3:false;},_getChildIndex:function _getChildIndex(e){var k=0;while(e=e.previousSibling){k++;}return k;},insertNodeAfterCaret:function insertNodeAfterCaret(node){this.saveSelection();this.insertNodeAtCaret(node);this.restoreSelection();},insertNodeAtCaret:function insertNodeAtCaret(node){if(this.window.getSelection){var sel=this.getSelection();if(sel.rangeCount){var range=sel.getRangeAt(0);range.collapse(false);range.insertNode(node);range=range.cloneRange();range.selectNodeContents(node);range.collapse(false);sel.removeAllRanges();sel.addRange(range);}}else if(this.document.selection){var html=node.nodeType===1?node.outerHTML:node.data;var id="marker_"+(""+Math.random()).slice(2);html+='<span id="'+id+'"></span>';var textRange=this.getSelection();textRange.collapse(false);textRange.pasteHTML(html);var markerSpan=this.document.getElementById(id);textRange.moveToElementText(markerSpan);textRange.select();markerSpan.parentNode.removeChild(markerSpan);}},getSelectedHtml:function getSelectedHtml(){var html='';if(this.window.getSelection){var sel=this.window.getSelection();if(sel.rangeCount){var container=this.document.createElement("div");for(var i=0,len=sel.rangeCount;i<len;++i){container.appendChild(sel.getRangeAt(i).cloneContents());}html=container.innerHTML;}}else if(this.document.selection){if(this.document.selection.type==="Text"){html=this.document.selection.createRange().htmlText;}}return html;}, // RESIZE IMAGES
	resizeImage:function resizeImage(resize){var clicked=false;var clicker=false;var start_x;var start_y;var ratio=$(resize).width()/$(resize).height();var min_w=10;var min_h=10;$(resize).off('hover mousedown mouseup click mousemove');$(resize).hover(function(){$(resize).css('cursor','nw-resize');},function(){$(resize).css('cursor','');clicked=false;});$(resize).mousedown(function(e){e.preventDefault();ratio=$(resize).width()/$(resize).height();clicked=true;clicker=true;start_x=Math.round(e.pageX-$(resize).eq(0).offset().left);start_y=Math.round(e.pageY-$(resize).eq(0).offset().top);});$(resize).mouseup($.proxy(function(e){clicked=false;$(resize).css('cursor','');this.syncCode();},this));$(resize).click($.proxy(function(e){if(clicker){ //this.imageEdit(e);
	}},this));$(resize).mousemove(function(e){if(clicked){clicker=false;var mouse_x=Math.round(e.pageX-$(this).eq(0).offset().left)-start_x;var mouse_y=Math.round(e.pageY-$(this).eq(0).offset().top)-start_y;var div_h=$(resize).height();var new_h=parseInt(div_h,10)+mouse_y;var new_w=new_h*ratio;if(new_w>min_w){$(resize).width(new_w);}if(new_h>min_h){$(resize).height(new_h);}start_x=Math.round(e.pageX-$(this).eq(0).offset().left);start_y=Math.round(e.pageY-$(this).eq(0).offset().top);}});}, // TABLE
	showTable:function showTable(){this.saveSelection();this.modalInit(RLANG.table,this.opts.modal_table,300,$.proxy(function(){$('#redactor_insert_table_btn').click($.proxy(this.insertTable,this));setTimeout(function(){$('#redactor_table_rows').focus();},200);},this));},insertTable:function insertTable(){var rows=$('#redactor_table_rows').val();var columns=$('#redactor_table_columns').val();var table_box=$('<div></div>');var tableid=Math.floor(Math.random()*99999);var table=$('<table id="table'+tableid+'"><tbody></tbody></table>');for(var i=0;i<rows;i++){var row=$('<tr></tr>');for(var z=0;z<columns;z++){var column=$('<td><br></td>');$(row).append(column);}$(table).append(row);}$(table_box).append(table);var html=$(table_box).html()+'<p></p>';this.restoreSelection();this.execCommand('inserthtml',html);this.modalClose();this.observeTables();},tableObserver:function tableObserver(e){this.$table=$(e.target).closest('table');this.$table_tr=this.$table.find('tr');this.$table_td=this.$table.find('td');this.$tbody=$(e.target).closest('tbody');this.$thead=$(this.$table).find('thead');this.$current_td=$(e.target);this.$current_tr=$(e.target).closest('tr');},deleteTable:function deleteTable(){$(this.$table).remove();this.$table=false;this.syncCode();},deleteRow:function deleteRow(){$(this.$current_tr).remove();this.syncCode();},deleteColumn:function deleteColumn(){var index=$(this.$current_td).get(0).cellIndex;$(this.$table).find('tr').each(function(){$(this).find('td').eq(index).remove();});this.syncCode();},addHead:function addHead(){if($(this.$table).find('thead').size()!==0){this.deleteHead();}else {var tr=$(this.$table).find('tr').first().clone();tr.find('td').html('&nbsp;');this.$thead=$('<thead></thead>');this.$thead.append(tr);$(this.$table).prepend(this.$thead);this.syncCode();}},deleteHead:function deleteHead(){$(this.$thead).remove();this.$thead=false;this.syncCode();},insertRowAbove:function insertRowAbove(){this.insertRow('before');},insertRowBelow:function insertRowBelow(){this.insertRow('after');},insertColumnLeft:function insertColumnLeft(){this.insertColumn('before');},insertColumnRight:function insertColumnRight(){this.insertColumn('after');},insertRow:function insertRow(type){var new_tr=$(this.$current_tr).clone();new_tr.find('td').html('&nbsp;');if(type==='after'){$(this.$current_tr).after(new_tr);}else {$(this.$current_tr).before(new_tr);}this.syncCode();},insertColumn:function insertColumn(type){var index=0;this.$current_tr.find('td').each($.proxy(function(i,s){if($(s)[0]===this.$current_td[0]){index=i;}},this));this.$table_tr.each(function(i,s){var current=$(s).find('td').eq(index);var td=current.clone();td.html('&nbsp;');if(type==='after'){$(current).after(td);}else {$(current).before(td);}});this.syncCode();}, // INSERT VIDEO
	showVideo:function showVideo(){this.saveSelection();this.modalInit(RLANG.video,this.opts.modal_video,600,$.proxy(function(){$('#redactor_insert_video_btn').click($.proxy(this.insertVideo,this));setTimeout(function(){$('#redactor_insert_video_area').focus();},200);},this));},insertVideo:function insertVideo(){this.startSpinner($('#redactor_insert_video_btn'),$('#video_saving'));$('#redactor_insert_video_btn').attr("disabled",true);var data=$('#redactor_insert_video_area').val();var that=this;$.ajax({url:this.opts.embedUrl,data:{url:data,width:'580px',frame:true}}).done(function(data){that.restoreSelection();that.execCommand('inserthtml',data.html);}).fail(function(xhr,textStatus,errorThrown){showFlashMessage({messageText:xhr.responseText,alertLevel:"error"});}).always(function(){$(".spinner-container").spin(false);$('#redactor_insert_video_btn').attr("disabled",false);that.modalClose();});},startSpinner:function startSpinner(onCtrl,spinnerCtrl){ ///* move the spinner div to the middle of the button */
	//spinnerCtrl.css('left', onCtrl.position().left - onCtrl.outerWidth()*2+'px');
	//spinnerCtrl.css('top', onCtrl.position().top + onCtrl.outerHeight()/2+'px');
	///* set the spinner options */
	//opt = {
	//  lines: 10, /* The number of lines to draw */
	//  length: 5, /* The length of each line */
	//  width: 4, /* The line thickness */
	//  radius: 6, /* The radius of the inner circle */
	//  color: '#fff', /* #rgb or #rrggbb */
	//  speed: 1, /* Rounds per second */
	//  trail: 100, /* Afterglow percentage */
	//  opacity: 1/4,
	//  fps: 20
	//};
	///* append the spinner to the div */
	//spinnerCtrl.append().spin(opt);
	}, // INSERT EMBEDLY
	showEmbedly:function showEmbedly(){this.saveSelection();this.modalInit(RLANG.embedly,this.opts.modal_embedly,600,$.proxy(function(){$('#redactor_insert_embedly_btn').click($.proxy(this.insertEmbedly,this));setTimeout(function(){$('#redactor_insert_embedly_area').focus();},200);},this));},insertEmbedly:function insertEmbedly(){this.startSpinner($('#redactor_insert_embedly_btn'),$('#embedly_saving'));$('#redactor_insert_embedly_btn').attr("disabled",true);var data=$('#redactor_insert_embedly_area').val();var that=this;$.ajax({url:this.opts.embedUrl,data:{url:data,width:'580px',frame:true}}).done(function(data){that.restoreSelection();that.execCommand('inserthtml',data.html);}).fail(function(xhr,textStatus,errorThrown){showFlashMessage({messageText:xhr.responseText,alertLevel:"error"});}).always(function(){$(".spinner-container").spin(false);$('#redactor_insert_video_btn').attr("disabled",false);that.modalClose();});}, // INSERT IMAGE
	imageEdit:function imageEdit(e){var $el=$(e.target);var parent=$el.parent();var callback=$.proxy(function(){$('#redactor_file_alt').val($el.attr('alt'));$('#redactor_image_edit_src').attr('href',$el.attr('src'));$('#redactor_form_image_align').val($el.css('float'));if($(parent).get(0).tagName==='A'){$('#redactor_file_link').val($(parent).attr('href'));}$('#redactor_image_delete_btn').click($.proxy(function(){this.imageDelete($el);},this));$('#redactorSaveBtn').click($.proxy(function(){this.imageSave($el);},this));},this);this.modalInit(RLANG.image,this.opts.modal_image_edit,380,callback);},imageDelete:function imageDelete(el){$(el).remove();this.modalClose();this.syncCode();},imageSave:function imageSave(el){var parent=$(el).parent();$(el).attr('alt',$('#redactor_file_alt').val());var floating=$('#redactor_form_image_align').val();if(floating==='left'){$(el).css({'float':'left',margin:'0 10px 10px 0'});}else if(floating==='right'){$(el).css({'float':'right',margin:'0 0 10px 10px'});}else {$(el).css({'float':'none',margin:'0'});} // as link
	var link=$.trim($('#redactor_file_link').val());if(link!==''){if($(parent).get(0).tagName!=='A'){$(el).replaceWith('<a href="'+link+'">'+this.outerHTML(el)+'</a>');}else {$(parent).attr('href',link);}}else {if($(parent).get(0).tagName==='A'){$(parent).replaceWith(this.outerHTML(el));}}this.modalClose();this.observeImages();this.syncCode();},showImage:function showImage(){this.saveSelection();var callback=$.proxy(function(){ // json
	if(this.opts.imageGetJson!==false){$.getJSON(this.opts.imageGetJson,$.proxy(function(data){var folders={};var z=0; // folders
	$.each(data,$.proxy(function(key,val){if(typeof val.folder!=='undefined'){z++;folders[val.folder]=z;}},this));var folderclass=false;$.each(data,$.proxy(function(key,val){ // title
	var thumbtitle='';if(typeof val.title!=='undefined'){thumbtitle=val.title;}var folderkey=0;if(!$.isEmptyObject(folders)&&typeof val.folder!=='undefined'){folderkey=folders[val.folder];if(folderclass===false){folderclass='.redactorfolder'+folderkey;}}var img=$('<img src="'+val.thumb+'" class="redactorfolder redactorfolder'+folderkey+'" rel="'+val.image+'" title="'+thumbtitle+'" />');$('#redactor_image_box').append(img);$(img).click($.proxy(this.imageSetThumb,this));},this)); // folders
	if(!$.isEmptyObject(folders)){$('.redactorfolder').hide();$(folderclass).show();var onchangeFunc=function onchangeFunc(e){$('.redactorfolder').hide();$('.redactorfolder'+$(e.target).val()).show();};var select=$('<select id="redactor_image_box_select">');$.each(folders,function(k,v){select.append($('<option value="'+v+'">'+k+'</option>'));});$('#redactor_image_box').before(select);select.change(onchangeFunc);}},this));}else {$('#redactor_tabs a').eq(1).remove();}if(this.opts.imageUpload!==false){ // dragupload
	if(this.opts.uploadCrossDomain===false&&this.isMobile()===false){if($('#redactor_file').size()!==0){$('#redactor_file').dragupload({url:this.opts.imageUpload,uploadFields:this.opts.uploadFields,success:$.proxy(this.imageUploadCallback,this),error:$.proxy(this.opts.imageUploadErrorCallback,this)});}} // ajax upload
	this.uploadInit('redactor_file',{auto:true,url:this.opts.imageUpload,success:$.proxy(this.imageUploadCallback,this),error:$.proxy(this.opts.imageUploadErrorCallback,this)});}else {$('.redactor_tab').hide();if(this.opts.imageGetJson===false){$('#redactor_tabs').remove();$('#redactor_tab3').show();}else {var tabs=$('#redactor_tabs a');tabs.eq(0).remove();tabs.eq(1).addClass('redactor_tabs_act');$('#redactor_tab2').show();}}$('#redactor_upload_btn').click($.proxy(this.imageUploadCallbackLink,this));if(this.opts.imageUpload===false&&this.opts.imageGetJson===false){setTimeout(function(){$('#redactor_file_link').focus();},200);}},this);this.modalInit(RLANG.image,this.opts.modal_image,610,callback);},imageSetThumb:function imageSetThumb(e){this._imageSet('<img src="'+$(e.target).attr('rel')+'" alt="'+$(e.target).attr('title')+'" />',true);},imageUploadCallbackLink:function imageUploadCallbackLink(){if($('#redactor_file_link').val()!==''){var data='<img src="'+$('#redactor_file_link').val()+'" />';this._imageSet(data,true);}else {this.modalClose();}},imageUploadCallback:function imageUploadCallback(data){this._imageSet(data);},_imageSet:function _imageSet(json,link){this.restoreSelection();if(json!==false){var html='';if(link!==true){html='<p><img src="'+json.filelink+'" /></p>';}else {html=json;}this.execCommand('inserthtml',html); // upload image callback
	if(link!==true&&typeof this.opts.imageUploadCallback==='function'){this.opts.imageUploadCallback(this,json);}}this.modalClose();this.observeImages();}, // INSERT LINK
	showLink:function showLink(){this.saveSelection();var callback=$.proxy(function(){this.insert_link_node=false;var sel=this.getSelection();var url='',text='',target='';if(this.browser('msie')){var parent=this.getParentNode();if(parent.nodeName==='A'){this.insert_link_node=$(parent);text=this.insert_link_node.text();url=this.insert_link_node.attr('href');target=this.insert_link_node.attr('target');}else {if(this.oldIE()){text=sel.text;}else {text=sel.toString();}}}else {if(sel&&sel.anchorNode&&sel.anchorNode.parentNode.tagName==='A'){url=sel.anchorNode.parentNode.href;text=sel.anchorNode.parentNode.text;target=sel.anchorNode.parentNode.target;if(sel.toString()===''){this.insert_link_node=sel.anchorNode.parentNode;}}else {text=sel.toString();}}$('.redactor_link_text').val(text);var thref=self.location.href.replace(/\/$/i,'');var turl=url.replace(thref,'');if(url.search('mailto:')===0){this.setModalTab(2);$('#redactor_tab_selected').val(2);$('#redactor_link_mailto').val(url.replace('mailto:',''));}else if(turl.search(/^#/gi)===0){this.setModalTab(3);$('#redactor_tab_selected').val(3);$('#redactor_link_anchor').val(turl.replace(/^#/gi,''));}else {$('#redactor_link_url').val(turl);}if(target==='_blank'){$('#redactor_link_blank').attr('checked',true);}$('#redactor_insert_link_btn').click($.proxy(this.insertLink,this));setTimeout(function(){$('#redactor_link_url').focus();},200);},this);this.modalInit(RLANG.link,this.opts.modal_link,460,callback);},insertLink:function insertLink(){var tab_selected=$('#redactor_tab_selected').val();var link='',text='',target='';if(tab_selected==='1') // url
	{link=$('#redactor_link_url').val();text=$('#redactor_link_url_text').val();if($('#redactor_link_blank').is(':checked')){target=' target="_blank"';} // test url
	var pattern='/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/'; //var pattern = '((xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}';
	var re=new RegExp('^(http|ftp|https)://'+pattern,'i');var re2=new RegExp('^'+pattern,'i');if(link.search(re)==-1&&link.search(re2)==0&&this.opts.protocol!==false){link=this.opts.protocol+link;}}else if(tab_selected==='2') // mailto
	{link='mailto:'+$('#redactor_link_mailto').val();text=$('#redactor_link_mailto_text').val();}else if(tab_selected==='3') // anchor
	{link='#'+$('#redactor_link_anchor').val();text=$('#redactor_link_anchor_text').val();}this._insertLink('<a href="'+link+'"'+target+'>'+text+'</a>',$.trim(text),link,target);},_insertLink:function _insertLink(a,text,link,target){this.$editor.focus();this.restoreSelection();if(text!==''){if(this.insert_link_node){$(this.insert_link_node).text(text);$(this.insert_link_node).attr('href',link);if(target!==''){$(this.insert_link_node).attr('target',target);}else {$(this.insert_link_node).removeAttr('target');}this.syncCode();}else {this.execCommand('inserthtml',a);}}this.modalClose();}, // INSERT FILE
	showFile:function showFile(){this.saveSelection();var callback=$.proxy(function(){var sel=this.getSelection();var text='';if(this.oldIE()){text=sel.text;}else {text=sel.toString();}$('#redactor_filename').val(text); // dragupload
	if(this.opts.uploadCrossDomain===false&&this.isMobile()===false){$('#redactor_file').dragupload({url:this.opts.fileUpload,uploadFields:this.opts.uploadFields,success:$.proxy(this.fileUploadCallback,this),error:$.proxy(this.opts.fileUploadErrorCallback,this)});}this.uploadInit('redactor_file',{auto:true,url:this.opts.fileUpload,success:$.proxy(this.fileUploadCallback,this),error:$.proxy(this.opts.fileUploadErrorCallback,this)});},this);this.modalInit(RLANG.file,this.opts.modal_file,500,callback);},fileUploadCallback:function fileUploadCallback(json){this.restoreSelection();if(json!==false){var text=$('#redactor_filename').val();if(text===''){text=json.filename;}var link='<a href="'+json.filelink+'">'+text+'</a>'; // chrome fix
	if(this.browser('webkit')&&!!this.window.chrome){link=link+'&nbsp;';}this.execCommand('inserthtml',link); // file upload callback
	if(typeof this.opts.fileUploadCallback==='function'){this.opts.fileUploadCallback(this,json);}}this.modalClose();}, // MODAL
	modalInit:function modalInit(title,content,width,callback){ // modal overlay
	if($('#redactor_modal_overlay').size()===0){this.overlay=$('<div id="redactor_modal_overlay" style="display: none;"></div>');$('body').prepend(this.overlay);}if(this.opts.overlay){$('#redactor_modal_overlay').show();$('#redactor_modal_overlay').click($.proxy(this.modalClose,this));}if($('#redactor_modal').size()===0){this.modal=$('<div id="redactor_modal" style="display: none;"><div id="redactor_modal_close">&times;</div><div id="redactor_modal_header"></div><div id="redactor_modal_inner"></div></div>');$('body').append(this.modal);}$('#redactor_modal_close').click($.proxy(this.modalClose,this));this.hdlModalClose=$.proxy(function(e){if(e.keyCode===27){this.modalClose();return false;}},this);$(document).keyup(this.hdlModalClose);this.$editor.keyup(this.hdlModalClose); // set content
	if(content.indexOf('#')==0){$('#redactor_modal_inner').empty().append($(content).html());}else {$('#redactor_modal_inner').empty().append(content);}$('#redactor_modal_header').html(title); // draggable
	if(typeof $.fn.draggable!=='undefined'){$('#redactor_modal').draggable({handle:'#redactor_modal_header'});$('#redactor_modal_header').css('cursor','move');} // tabs
	if($('#redactor_tabs').size()!==0){var that=this;$('#redactor_tabs a').each(function(i,s){i++;$(s).click(function(){$('#redactor_tabs a').removeClass('redactor_tabs_act');$(this).addClass('redactor_tabs_act');$('.redactor_tab').hide();$('#redactor_tab'+i).show();$('#redactor_tab_selected').val(i);if(that.isMobile()===false){var height=$('#redactor_modal').outerHeight();$('#redactor_modal').css('margin-top','-'+(height+10)/2+'px');}});});}$('#redactor_modal .redactor_btn_modal_close').click($.proxy(this.modalClose,this));if(this.isMobile()===false){$('#redactor_modal').css({position:'fixed',top:'-2000px',left:'50%',width:width+'px',marginLeft:'-'+(width+60)/2+'px'}).show();this.modalSaveBodyOveflow=$(document.body).css('overflow');$(document.body).css('overflow','hidden');}else {$('#redactor_modal').css({position:'fixed',width:'100%',height:'100%',top:'0',left:'0',margin:'0',minHeight:'300px'}).show();} // callback
	if(typeof callback==='function'){callback();}if(this.isMobile()===false){setTimeout(function(){var height=$('#redactor_modal').outerHeight();$('#redactor_modal').css({top:'50%',height:'auto',minHeight:'auto',marginTop:'-'+(height+10)/2+'px'});},20);}},modalClose:function modalClose(){$('#redactor_modal_close').unbind('click',this.modalClose);$('#redactor_modal').fadeOut('fast',$.proxy(function(){$('#redactor_modal_inner').html('');if(this.opts.overlay){$('#redactor_modal_overlay').hide();$('#redactor_modal_overlay').unbind('click',this.modalClose);}$(document).unbind('keyup',this.hdlModalClose);this.$editor.unbind('keyup',this.hdlModalClose);},this));if(this.isMobile()===false){$(document.body).css('overflow',this.modalSaveBodyOveflow?this.modalSaveBodyOveflow:'visible');}return false;},setModalTab:function setModalTab(num){$('.redactor_tab').hide();var tabs=$('#redactor_tabs a');tabs.removeClass('redactor_tabs_act');tabs.eq(num-1).addClass('redactor_tabs_act');$('#redactor_tab'+num).show();}, // UPLOAD
	uploadInit:function uploadInit(element,options){ // Upload Options
	this.uploadOptions={url:false,success:false,error:false,start:false,trigger:false,auto:false,input:false};$.extend(this.uploadOptions,options); // Test input or form
	if($('#'+element).size()!==0&&$('#'+element).get(0).tagName==='INPUT'){this.uploadOptions.input=$('#'+element);this.element=$($('#'+element).get(0).form);}else {this.element=$('#'+element);}this.element_action=this.element.attr('action'); // Auto or trigger
	if(this.uploadOptions.auto){$(this.uploadOptions.input).change($.proxy(function(){this.element.submit(function(e){return false;});this.uploadSubmit();},this));}else if(this.uploadOptions.trigger){$('#'+this.uploadOptions.trigger).click($.proxy(this.uploadSubmit,this));}},uploadSubmit:function uploadSubmit(){this.uploadForm(this.element,this.uploadFrame());},uploadFrame:function uploadFrame(){this.id='f'+Math.floor(Math.random()*99999);var d=this.document.createElement('div');var iframe='<iframe style="display:none" id="'+this.id+'" name="'+this.id+'"></iframe>';d.innerHTML=iframe;$(d).appendTo("body"); // Start
	if(this.uploadOptions.start){this.uploadOptions.start();}$('#'+this.id).load($.proxy(this.uploadLoaded,this));return this.id;},uploadForm:function uploadForm(f,name){if(this.uploadOptions.input){var formId='redactorUploadForm'+this.id;var fileId='redactorUploadFile'+this.id;this.form=$('<form  action="'+this.uploadOptions.url+'" method="POST" target="'+name+'" name="'+formId+'" id="'+formId+'" enctype="multipart/form-data"></form>'); // append hidden fields
	if(this.opts.uploadFields!==false&&_typeof(this.opts.uploadFields)==='object'){$.each(this.opts.uploadFields,$.proxy(function(k,v){if(v.toString().indexOf('#')===0){v=$(v).val();}var hidden=$('<input/>',{'type':"hidden",'name':k,'value':v});$(this.form).append(hidden);},this));}var oldElement=this.uploadOptions.input;var newElement=$(oldElement).clone();$(oldElement).attr('id',fileId);$(oldElement).before(newElement);$(oldElement).appendTo(this.form);$(this.form).css('position','absolute');$(this.form).css('top','-2000px');$(this.form).css('left','-2000px');$(this.form).appendTo('body');this.form.submit();}else {f.attr('target',name);f.attr('method','POST');f.attr('enctype','multipart/form-data');f.attr('action',this.uploadOptions.url);this.element.submit();}},uploadLoaded:function uploadLoaded(){var i=$('#'+this.id)[0];var d;if(i.contentDocument){d=i.contentDocument;}else if(i.contentWindow){d=i.contentWindow.document;}else {d=window.frames[this.id].document;} // Success
	if(this.uploadOptions.success){if(typeof d!=='undefined'){ // Remove bizarre <pre> tag wrappers around our json data:
	var rawString=d.body.innerHTML;var jsonString=rawString.match(/\{(.|\n)*\}/)[0];var json=$.parseJSON(jsonString);if(typeof json.error=='undefined'){this.uploadOptions.success(json);}else {this.uploadOptions.error(this,json);this.modalClose();}}else {alert('Upload failed!');this.modalClose();}}this.element.attr('action',this.element_action);this.element.attr('target','');}, // UTILITY
	browser:function browser(_browser){var ua=navigator.userAgent.toLowerCase();var match=/(chrome)[ \/]([\w.]+)/.exec(ua)||/(webkit)[ \/]([\w.]+)/.exec(ua)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua)||/(msie) ([\w.]+)/.exec(ua)||ua.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)||[];if(_browser=='version'){return match[2];}if(_browser=='webkit'){return match[1]=='chrome'||match[1]=='webkit';}return match[1]==_browser;},oldIE:function oldIE(){if(this.browser('msie')&&parseInt(this.browser('version'),10)<9){return true;}return false;},outerHTML:function outerHTML(s){return $("<p>").append($(s).eq(0).clone()).html();},normalize:function normalize(str){return parseInt(str.replace('px',''),10);},isMobile:function isMobile(ipad){if(ipad===true&&/(iPhone|iPod|iPad|BlackBerry|Android)/.test(navigator.userAgent)){return true;}else if(/(iPhone|iPod|BlackBerry|Android)/.test(navigator.userAgent)){return true;}else {return false;}}}; // API
	$.fn.getObject=function(){return this.data('redactor');};$.fn.getEditor=function(){return this.data('redactor').$editor;};$.fn.getCode=function(){return $.trim(this.data('redactor').getCode());};$.fn.getText=function(){return this.data('redactor').$editor.text();};$.fn.getSelected=function(){return this.data('redactor').getSelectedHtml();};$.fn.setCode=function(html){this.data('redactor').setCode(html);};$.fn.insertHtml=function(html){this.data('redactor').insertHtml(html);};$.fn.destroyEditor=function(){this.each(function(){if(typeof $(this).data('redactor')!='undefined'){$(this).data('redactor').destroy();$(this).removeData('redactor');}});};$.fn.setFocus=function(){this.data('redactor').$editor.focus();};$.fn.execCommand=function(cmd,param){this.data('redactor').execCommand(cmd,param);};})(jQuery); /*
	    Plugin Drag and drop Upload v1.0.2
	    http://imperavi.com/
	    Copyright 2012, Imperavi Inc.
	*/(function($){"use strict"; // Initialization
	$.fn.dragupload=function(options){return this.each(function(){var obj=new Construct(this,options);obj.init();});}; // Options and variables
	function Construct(el,options){this.opts=$.extend({url:false,success:false,error:false,preview:false,uploadFields:false,text:RLANG.drop_file_here,atext:RLANG.or_choose},options);this.$el=$(el);} // Functionality
	Construct.prototype={init:function init(){if(navigator.userAgent.search("MSIE")===-1){this.droparea=$('<div class="redactor_droparea"></div>');this.dropareabox=$('<div class="redactor_dropareabox">'+this.opts.text+'</div>');this.dropalternative=$('<div class="redactor_dropalternative">'+this.opts.atext+'</div>');this.droparea.append(this.dropareabox);this.$el.before(this.droparea);this.$el.before(this.dropalternative); // drag over
	this.dropareabox.bind('dragover',$.proxy(function(){return this.ondrag();},this)); // drag leave
	this.dropareabox.bind('dragleave',$.proxy(function(){return this.ondragleave();},this));var uploadProgress=$.proxy(function(e){var percent=parseInt(e.loaded/e.total*100,10);this.dropareabox.text('Loading '+percent+'%');},this);var xhr=jQuery.ajaxSettings.xhr();if(xhr.upload){xhr.upload.addEventListener('progress',uploadProgress,false);}var provider=function provider(){return xhr;}; // drop
	this.dropareabox.get(0).ondrop=$.proxy(function(event){event.preventDefault();this.dropareabox.removeClass('hover').addClass('drop');var file=event.dataTransfer.files[0];var fd=new FormData(); // append hidden fields
	if(this.opts.uploadFields!==false&&_typeof(this.opts.uploadFields)==='object'){$.each(this.opts.uploadFields,$.proxy(function(k,v){if(v.toString().indexOf('#')===0){v=$(v).val();}fd.append(k,v);},this));} // append file data
	fd.append('file',file);$.ajax({url:this.opts.url,dataType:'html',data:fd,xhr:provider,cache:false,contentType:false,processData:false,type:'POST',success:$.proxy(function(data){var json=$.parseJSON(data);if(typeof json.error=='undefined'){this.opts.success(json);}else {this.opts.error(this,json);this.opts.success(false);}},this)});},this);}},ondrag:function ondrag(){this.dropareabox.addClass('hover');return false;},ondragleave:function ondragleave(){this.dropareabox.removeClass('hover');return false;}};})(jQuery); // Define: Linkify plugin from stackoverflow
	(function($){"use strict";var protocol='http://';var url1=/(^|&lt;|\s)(www\..+?\..+?)(\s|&gt;|$)/g,url2=/(^|&lt;|\s)(((https?|ftp):\/\/|mailto:).+?)(\s|&gt;|$)/g,linkifyThis=function linkifyThis(){var childNodes=this.childNodes,i=childNodes.length;while(i--){var n=childNodes[i];if(n.nodeType===3){var html=n.nodeValue;if(html){html=html.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(url1,'$1<a href="'+protocol+'$2">$2</a>$3').replace(url2,'$1<a href="$2">$2</a>$5');$(n).after(html).remove();}}else if(n.nodeType===1&&!/^(a|button|textarea)$/i.test(n.tagName)){linkifyThis.call(n);}}};$.fn.linkify=function(){this.each(linkifyThis);};})(jQuery); /* jQuery plugin textselect
	 * version: 0.9
	 * author: Josef Moravec, josef.moravec@gmail.com
	 * updated: Imperavi Inc.
	 *
	 */eval(function(p,a,c,k,_e,d){_e=function e(c){return (c<a?'':_e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36));};if(!''.replace(/^/,String)){while(c--){d[_e(c)]=k[c]||_e(c);}k=[function(e){return d[e];}];_e=function _e(){return '\\w+';};c=1;};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+_e(c)+'\\b','g'),k[c]);}}return p;}('(5($){$.1.4.7={t:5(0,v){$(2).0("8",c);$(2).0("r",0);$(2).l(\'g\',$.1.4.7.b)},u:5(0){$(2).w(\'g\',$.1.4.7.b)},b:5(1){9 0=$(2).0("r");9 3=$.1.4.7.f(0).h();6(3!=\'\'){$(2).0("8",x);1.j="7";1.3=3;$.1.i.m(2,k)}},f:5(0){9 3=\'\';6(q.e){3=q.e()}o 6(d.e){3=d.e()}o 6(d.p){3=d.p.B().3}A 3}};$.1.4.a={t:5(0,v){$(2).0("n",0);$(2).0("8",c);$(2).l(\'g\',$.1.4.a.b);$(2).l(\'D\',$.1.4.a.s)},u:5(0){$(2).w(\'g\',$.1.4.a.b)},b:5(1){6($(2).0("8")){9 0=$(2).0("n");9 3=$.1.4.7.f(0).h();6(3==\'\'){$(2).0("8",c);1.j="a";$.1.i.m(2,k)}}},s:5(1){6($(2).0("8")){9 0=$(2).0("n");9 3=$.1.4.7.f(0).h();6((1.y=z)&&(3==\'\')){$(2).0("8",c);1.j="a";$.1.i.m(2,k)}}}}})(C);',40,40,'data|event|this|text|special|function|if|textselect|textselected|var|textunselect|handler|false|rdocument|getSelection|getSelectedText|mouseup|toString|handle|type|arguments|bind|apply|rttt|else|selection|rwindow|ttt|handlerKey|setup|teardown|namespaces|unbind|true|keyCode|27|return|createRange|jQuery|keyup'.split('|'),0,{}));

/***/ },

/***/ 655:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	
	exports.default = function (redactor) {
	
	  /**
	   * usage: <textarea ng-model="content" redactor></textarea>
	   *
	   *    additional options:
	   *      redactor: hash (pass in a redactor options hash)
	   *
	   */
	  redactor.factory('redactor', ['gon', function (gon) {
	
	    return {
	      redactorize: function redactorize(element, options) {
	        element.redactor(options);
	      },
	
	      editorElement: function editorElement(element) {
	        return $(element.siblings()[1]); // redactor element
	      }
	    };
	  }]).directive("redactor", ['redactor', function (redactor) {
	    return {
	      restrict: 'A',
	      require: "ngModel",
	      scope: {
	        focus: "@redactorFocus",
	        buttons: "@redactorButtons",
	        maxlength: "@redactorMaxlength",
	        minlength: "@redactorMinlength"
	      },
	      link: function link(scope, element, attrs, ngModel) {
	        var editor, charCounter;
	
	        var updateCharCounter = function updateCharCounter() {
	          if (charCounter) {
	            var html = $("<div>" + ngModel.$viewValue + "</div>").text();
	            var cleanedChars = html.replace(/\t+/g, " ").replace(/\n/g, "").replace(/^\s/g, '');
	            charCounter.text(cleanedChars.length + " / " + scope.maxlength);
	
	            scope.$emit('redactor:updatedCount', cleanedChars.length);
	            element.parent().toggleClass('redactor-hasError', cleanedChars.length > parseInt(scope.maxlength) || cleanedChars.length < parseInt(scope.minlength));
	          }
	        };
	
	        ngModel.$viewChangeListeners.push(updateCharCounter);
	        scope.$on('postUpdateFinished', function () {
	          ngModel.$setViewValue('');
	          ngModel.$render();
	        });
	
	        var updateModel = function updateModel(value) {
	          ngModel.$setViewValue(value.getCode());
	          scope.$apply();
	        };
	        var options = {
	          keyupCallback: updateModel,
	          execCommandCallback: updateModel,
	          imageUploadErrorCallback: function imageUploadErrorCallback(unusedRedactor, json) {
	            window.alert(json.error);
	          },
	          buttons: ['formatting', '|', 'bold', 'italic', 'deleted', '|', 'unorderedlist', 'orderedlist', '|', 'image', 'video', 'link', 'embedly', '|', 'alignment', '|', 'html']
	        };
	        var $_element = angular.element(element);
	        if (scope.buttons) {
	          options.buttons = scope.buttons.split(" ");
	        }
	
	        if (scope.focus) {
	          options.focus = scope.focus === "true";
	        }
	
	        /* setup urls */
	        options.embedUrl = (0, _metal.redactorEmbedPath)();
	        options.imageUpload = (0, _metal.redactorUploadImagePath)();
	
	        redactor.redactorize($_element, options);
	        editor = redactor.editorElement($_element);
	        ngModel.$render();
	
	        if (scope.maxlength) {
	          charCounter = $('<div class="redactor-charCounter"></div>');
	          charCounter.text("0 / " + scope.maxlength);
	          editor.parent().append(charCounter);
	        }
	
	        ngModel.$render = function () {
	          $_element.val(ngModel.$viewValue);
	          if (angular.isDefined(editor)) {
	            editor.html(ngModel.$viewValue || '');
	          }
	        };
	
	        scope.$on('updateRedactor', function () {
	          var text = ngModel.$modelValue;
	          editor.html(text);
	        });
	      }
	    };
	  }]);
	};
	
	var _metal = __webpack_require__(174);

/***/ },

/***/ 1035:
/***/ function(module, exports) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = RefundDisplayFactory;
	/* @ngInject */
	function RefundDisplayFactory() {
	  function RefundDisplay(contribution) {
	    this.contribution = contribution;
	  }
	
	  RefundDisplay.prototype.displayAsRefunded = function () {
	    return _.include(['refunded', 'chargeback_lost', 'off_platform_refunded'], this.contribution.status);
	  };
	
	  return RefundDisplay;
	}

/***/ },

/***/ 1036:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	contributionsApi.$inject = ["$http", "$interpolate", "$httpParamSerializer", "gon"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = contributionsApi;
	
	var _privateApi = __webpack_require__(55);
	
	/* @ngInject */
	function contributionsApi($http, $interpolate, $httpParamSerializer, gon) {
	  var urls = { index: null, indexCsv: null, show: null };
	
	  function validInteger(id) {
	    return !angular.isUndefined(id) && typeof id === 'number' && id > 0;
	  }
	
	  function requireUrl(key) {
	    if (!urls[key]) {
	      throw new Error(key + ' url is not defined');
	    }
	  }
	
	  return {
	    setUrls: function setUrls(newUrls) {
	      urls = newUrls;
	    },
	
	    getUrls: function getUrls() {
	      return urls;
	    },
	
	    getContributions: function getContributions(params) {
	      var url;
	      if (gon.campaign && gon.campaign.id) {
	        url = (0, _privateApi.privateApiCampaignContributionsPath)({ campaignId: gon.campaign.id });
	      } else {
	        requireUrl('index');
	        url = urls.index;
	      }
	
	      params = params || {};
	
	      if (angular.isUndefined(params.page)) {
	        params.page = 1;
	      }
	
	      return $http.get(url, { params: params });
	    },
	
	    getContribution: function getContribution(id) {
	      requireUrl('show');
	
	      var numericId = parseInt(id);
	      if (validInteger(numericId)) {
	        var url = $interpolate(urls.show)({ id: numericId });
	        return $http.get(url);
	      } else {
	        throw new Error('Invalid Pledge ID');
	      }
	    },
	
	    exportCsv: function exportCsv(params) {
	      // angular doesn't transform POST params using form-urlencoded properly, so transformation is needed
	      return $http({
	        method: 'POST',
	        url: urls.export,
	        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
	        data: $httpParamSerializer(params)
	      });
	    }
	  };
	}

/***/ },

/***/ 1311:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = campaignManagementUtilsModule;
	
	var _campaignMessageDirective = __webpack_require__(1312);
	
	var _campaignMessageDirective2 = _interopRequireDefault(_campaignMessageDirective);
	
	var _csvExportStatusDirective = __webpack_require__(1314);
	
	var _csvExportStatusDirective2 = _interopRequireDefault(_csvExportStatusDirective);
	
	var _shippingFormDirective = __webpack_require__(1316);
	
	var _shippingFormDirective2 = _interopRequireDefault(_shippingFormDirective);
	
	var _accountContributionsApiService = __webpack_require__(1318);
	
	var _accountContributionsApiService2 = _interopRequireDefault(_accountContributionsApiService);
	
	var _campaignMessagesApiService = __webpack_require__(1319);
	
	var _campaignMessagesApiService2 = _interopRequireDefault(_campaignMessagesApiService);
	
	var _contributionsApiService = __webpack_require__(1036);
	
	var _contributionsApiService2 = _interopRequireDefault(_contributionsApiService);
	
	var _ordersApiService = __webpack_require__(1320);
	
	var _ordersApiService2 = _interopRequireDefault(_ordersApiService);
	
	var _refundDisplayFactory = __webpack_require__(1035);
	
	var _refundDisplayFactory2 = _interopRequireDefault(_refundDisplayFactory);
	
	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
	
	function campaignManagementUtilsModule(angular) {
	  angular.module('indiegogo.campaignManagementUtils', ['utils']).directive('campaignMessage', _campaignMessageDirective2.default).directive('csvExportStatus', _csvExportStatusDirective2.default).directive('shippingForm', _shippingFormDirective2.default).factory('accountContributionsApi', _accountContributionsApiService2.default).factory('campaignMessagesApi', _campaignMessagesApiService2.default).factory('contributionsApi', _contributionsApiService2.default).factory('ordersApi', _ordersApiService2.default).factory('RefundDisplayFactory', _refundDisplayFactory2.default).run(['ordersApi', 'contributionsApi', 'accountContributionsApi', 'jobStatusApi', 'campaignMessagesApi', 'gon', function (ordersApi, contributionsApi, accountContributionsApi, jobStatusApi, campaignMessagesApi, gon) {
	    if (!angular.isUndefined(gon.contributionsUrls)) {
	      contributionsApi.setUrls(gon.contributionsUrls);
	    }
	
	    if (!angular.isUndefined(gon.orderUrls)) {
	      ordersApi.configureFromGon(gon);
	    }
	
	    if (!angular.isUndefined(gon.accountContributionsUrls)) {
	      accountContributionsApi.setUrls(gon.accountContributionsUrls);
	    }
	
	    if (!angular.isUndefined(gon.jobStatusUrls)) {
	      jobStatusApi.setUrls(gon.jobStatusUrls);
	    }
	
	    if (!angular.isUndefined(gon.campaignMessagesUrls)) {
	      campaignMessagesApi.setUrls(gon.campaignMessagesUrls);
	    }
	  }]);
	}

/***/ },

/***/ 1312:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	campaignMessage.$inject = ["i18n", "$rootScope", "$modal", "campaignMessagesApi", "vcRecaptchaService"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = campaignMessage;
	/*@ngInject*/
	function campaignMessage(i18n, $rootScope, $modal, campaignMessagesApi, vcRecaptchaService) {
	  return {
	    restrict: 'A',
	    scope: { member: '=', campaigns: '=', role: '@', captchaKey: '@', canMessage: '=' },
	    link: function link(scope, element) {
	      scope.showCaptcha = false;
	      scope.i18n = i18n;
	      scope.message = { text: '' };
	      scope.selected = { campaign: null };
	      scope.messageSent = false;
	      scope.messageFailed = false;
	      scope.showCaptchaError = false;
	
	      if (scope.campaigns.length === 1) {
	        scope.selected.campaign = scope.campaigns[0];
	      }
	
	      function openModal(e) {
	        e.preventDefault();
	
	        scope.message.text = '';
	        scope.messageSent = false;
	        scope.messageFailed = false;
	
	        scope.selected.campaign = null;
	        if (scope.campaigns.length == 1) {
	          scope.selected.campaign = scope.campaigns[0];
	        }
	
	        $modal({
	          template: __webpack_require__(1313),
	          scope: scope
	        });
	      }
	
	      function canMessage() {
	        var campaign = scope.campaigns[0];
	
	        campaignMessagesApi.canMessage(campaign.slug, scope.member.id).then(function (successResponse) {
	          scope.showCaptcha = false;
	        }, function (errorResponse) {
	          scope.showCaptcha = true;
	        });
	      }
	
	      scope.roleName = function () {
	        switch (scope.role) {
	          case 'contributor':
	            return i18n.t('command_center.contributor');
	          default:
	            return i18n.t('command_center.campaigner');
	        }
	      };
	
	      scope.sendMessage = function () {
	        var captchaResponse = null;
	        if (scope.showCaptcha) {
	          captchaResponse = vcRecaptchaService.getResponse();
	          if (!captchaResponse) {
	            scope.showCaptchaError = true;
	            return;
	          }
	        }
	        campaignMessagesApi.sendMessage(scope.selected.campaign.slug, scope.member.id, scope.message.text, captchaResponse).then(function (successResponse) {
	          scope.messageSent = true;
	        }, function (errorResponse) {
	          scope.messageFailed = true;
	        });
	      };
	
	      element.bind('click', openModal);
	      if (!scope.canMessage) {
	        canMessage();
	      }
	    }
	  };
	}

/***/ },

/***/ 1313:
/***/ function(module, exports) {

	module.exports = "<div class=\"i-campaign-message modal\">\n  <div class=\"modal-dialog\" ng-click=\"$event.stopPropagation()\">\n    <div class=\"modal-content i-campaign-message-modal-content\">\n      <div class=\"i-campaign-message-header i-musty-background\">\n\n        <div class=\"i-campaign-message-header-text\">\n          <h2>{{::i18n.t('contact')}}</h2>\n          <p>{{i18n.t('trust_passport.campaign_owner_will_be_able_to_reply_directly', { owner: member.name })}}</p>\n        </div>\n        <a class=\"modal-close\" href=\"\" ng-click=\"$hide()\"><svg><use xlink:href=\"#icon-icon-close\"></use></svg></a>\n      </div>\n\n      <div class=\"i-campaign-message-body\">\n        <div class=\"i-campaign-message-account\">\n          <div class=\"i-campaign-message-account-avatar\" individual-avatar=\"{{member.avatar_url}}\"></div>\n          <div class=\"i-campaign-message-account-profile\">\n            <h3>{{member.name}}</h3>\n            <div class=\"i-campaign-message-account-profile-role\">\n              {{roleName()}}\n            </div>\n          </div>\n        </div>\n\n        <div class=\"messageNotification messageNotification--error\" ng-if=\"messageFailed\">\n          <div class=\"messageNotification-header\">{{::i18n.t('trust_passport.sorry_somethings_wrong_on_our_end')}}</div>\n          {{::i18n.t('trust_passport.try_sending_your_message_in_a_few_minutes')}}\n        </div>\n\n        <div class=\"messageNotification messageNotification--success\" ng-if=\"messageSent\">\n          <div class=\"messageNotification-header\">{{::i18n.t('trust_passport.your_message_has_been_sent')}}</div>\n          {{::i18n.t('trust_passport.the_campaign_owner_has_received_your_message')}}\n        </div>\n\n        <ui-select ng-if=\"campaigns.length > 1 && !messageSent && !messageFailed\" search-enabled=\"false\" ng-model=\"selected.campaign\" theme=\"select2\" class=\"i-campaign-message-campaign-select js-campaign-message-campaign-select\">\n          <ui-select-match placeholder=\"{{i18n.t('select_campaign')}}\">{{ $select.selected.title }}</ui-select-match>\n          <ui-select-choices repeat=\"campaign in campaigns\">\n          <span class=\"js-campaign-message-campaign-item js-campaign-slug-{{campaign.slug}}\">{{campaign.title}}</span>\n          </ui-select-choices>\n        </ui-select>\n\n        <div class=\"i-campaign-message-contact\" ng-if=\"!messageSent && !messageFailed\">\n          <div class=\"i-campaign-message-contact-text\">\n            <textarea ng-model=\"message.text\" maxlength=\"500\" name=\"js-campaign-message-textarea\"></textarea>\n            <div class=\"i-campaign-message-contact-text-counter\">{{message.text | charCounter:500}}</div>\n          </div>\n          <div class=\"i-campaign-message-bottom\">\n            <span class=\"i-campaign-message-error\" ng-if=\"showCaptchaError\">{{::i18n.t('please_submit_captcha')}}</span>\n            <div ng-if=\"showCaptcha\" class=\"g-recaptcha\" vc-recaptcha key=\"captchaKey\"></div>\n            <!-- TODO EVENTS: id=aize4 fixtype=ga-event-dir subsystem=comms category=Trust action=ContactSend action-new=Contact.Send trigger=click name-new=TBD dom=button trigger=click . -->\n            <button class=\"i-cta-1\" ng-disabled=\"!selected.campaign || message.text.length == 0\"\n                    ng-click=\"sendMessage()\" ga-event-on=\"click\"\n                    ga-event-category=\"Trust\" ga-event-action=\"ContactSend\">\n              {{::i18n.t('send_message')}}\n            </button>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n";

/***/ },

/***/ 1314:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	csvExportStatus.$inject = ["i18n", "ga", "jobStatusPoller", "$timeout"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = csvExportStatus;
	/*@ngInject*/
	function csvExportStatus(i18n, ga, jobStatusPoller, $timeout) {
	  return {
	    scope: {},
	    template: __webpack_require__(1315),
	    link: function link(scope) {
	      scope.i18n = i18n;
	      scope.showExportStatus = false;
	
	      scope.STATE_COMPLETED = 'completed';
	      scope.STATE_QUEUED = 'queued';
	      scope.STATE_GENERATING = 'generating';
	      scope.STATE_ERROR = 'error';
	
	      scope.reset = function () {
	        scope.status = 0;
	        scope.state = scope.STATE_QUEUED;
	        scope.canceled = false;
	        scope.downloadUrl = '';
	        jobStatusPoller.reset();
	      };
	
	      scope.reset();
	
	      scope.$on('showExportStatus', function (event) {
	        scope.reset();
	        scope.showExportStatus = true;
	        // TODO EVENTS: id=fi8za fixtype=bare-ga subsystem=command-center category=Command.Center.Contributions.Tab action=Download.View.Appears name-new=TBD . review
	        ga('send', 'event', 'Command Center Contributions Tab', 'Download View Appears');
	      });
	
	      var POLL_PERIOD = 1000;
	
	      scope.$on('jobId', function (event, jobId) {
	
	        jobStatusPoller.poll(jobId, POLL_PERIOD, function (response) {
	          if (response && (response.data.status === 'working' || response.data.status === 'queued')) {
	            if (response.data.status === 'working') {
	              scope.state = scope.STATE_GENERATING;
	            }
	            if (response.data.num) {
	              scope.status = Math.floor(response.data.num / response.data.total * 100);
	            }
	          } else if (response && response.data.status === scope.STATE_COMPLETED) {
	            scope.state = scope.STATE_COMPLETED;
	            scope.downloadUrl = response.data.download_url;
	          } else {
	            scope.state = scope.STATE_ERROR;
	            // TODO EVENTS: id=ier5x subsystem=command-center category=Command.Center.Contributions.Tab action=Generate.CSV.Fails fixtype=bare-ga name-new=TBD . review
	            ga('send', 'event', 'Command Center Contributions Tab', 'Generate CSV Fails');
	          }
	        });
	      });
	
	      scope.download = function () {
	        scope.finish();
	        // TODO EVENTS: id=ec5ah subsystem=command-center fixtype=bare-ga category=Command.Center.Contributions.Tab action=Click.Download.Button fixtype=bare-ga name-new=TBD . review
	        ga('send', 'event', 'Command Center Contributions Tab', 'Click Download Button');
	      };
	
	      scope.failure = function () {
	        scope.finish();
	        // TODO EVENTS: id=ail7v subsystem=command-center fixtype=bare-ga category=Command.Center.Contributions.Tab action=User.Dismisses.on.CSV.Failure name-new=TBD . review
	        ga('send', 'event', 'Command Center Contributions Tab', 'User Dismisses on CSV Failure');
	      };
	
	      scope.finish = function () {
	        scope.$emit('enableExport');
	        scope.showExportStatus = false;
	      };
	
	      var CANCEL_DISMISS_TIMEOUT = 2500;
	
	      scope.closeOrCancel = function () {
	        if (scope.state === scope.STATE_COMPLETED || scope.canceled) {
	          scope.finish();
	        } else if (scope.state === scope.STATE_ERROR) {
	          scope.failure();
	        } else {
	          scope.$emit('enableExport');
	          // show canceled state
	          scope.canceled = true;
	          jobStatusPoller.cancel();
	          // canceled state fades away after specified timeout
	          $timeout(function () {
	            scope.showExportStatus = false;
	          }, CANCEL_DISMISS_TIMEOUT);
	        }
	      };
	    }
	  };
	}

/***/ },

/***/ 1315:
/***/ function(module, exports) {

	module.exports = "<div ng-class=\"{'am-fade': true, 'exportCsvStatus': true, 'exportCsvStatus-canceled': canceled, 'exportCsvStatus-error': state === STATE_ERROR}\" ng-if=\"showExportStatus\">\n  <div class=\"exportCsvStatus-statusBackground\" style=\"width: {{status}}%\" ng-if=\"state === STATE_GENERATING && !canceled\">\n  </div>\n  <svg class=\"exportCsvStatus-export\" ng-if=\"!canceled && (state === STATE_GENERATING || state === STATE_COMPLETED || state === STATE_QUEUED)\"><use xlink:href=\"#export\"></use></svg>\n  <svg class=\"exportCsvStatus-exclamation\" ng-if=\"!canceled && state === STATE_ERROR\"><use xlink:href=\"#icon-icon-exclamation\"></use></svg>\n  <div class=\"exportCsvStatus-text\" ng-if=\"!canceled\">\n    <div class=\"exportCsvStatus-title\">\n      {{i18n.t('command_center.csv_export_status.' + state + '.title')}}\n      <span ng-if=\"state === STATE_GENERATING\" class=\"exportCsvStatus-percentage\">{{status}}%</span>\n    </div>\n    <div class=\"exportCsvStatus-subtitle\">\n      {{i18n.t('command_center.csv_export_status.' + state + '.subtitle')}}\n    </div>\n  </div>\n\n  <div class=\"exportCsvStatus-text\" ng-if=\"canceled\">\n    {{::i18n.t('command_center.csv_export_status.canceled')}}\n  </div>\n\n  <a href=\"{{downloadUrl}}\" class=\"i-cta-1\" ng-if=\"state === STATE_COMPLETED && !canceled\" ng-click=\"download()\">{{::i18n.t('command_center.csv_export_status.completed.button_label')}}</a>\n\n  <a href=\"\" class=\"i-cta-1\" ng-if=\"state === STATE_ERROR && !canceled\" ng-click=\"failure()\">{{::i18n.t('command_center.csv_export_status.error.button_label')}}</a>\n\n  <a href=\"\" class=\"exportCsvStatus-close\" ng-click=\"closeOrCancel()\"><svg><use xlink:href=\"#icon-icon-close\"></use></svg></a>\n</div>\n";

/***/ },

/***/ 1316:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	shippingForm.$inject = ["i18n", "regions", "countriesService", "typeaheadUtils"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = shippingForm;
	/* @ngInject */
	function shippingForm(i18n, regions, countriesService, typeaheadUtils) {
	  return {
	    restrict: 'A',
	    scope: { order: '=' },
	    transclude: false,
	    replace: false,
	    template: __webpack_require__(1317),
	    link: function link(scope) {
	      scope.i18n = i18n;
	
	      scope.stateOptions = regions.getStates();
	      scope.provinceOptions = regions.getProvinces();
	      scope.$watch('order.shipping.country', function (newVal) {
	        scope.shippingCountry = countriesService.findByTwoLetterCode(newVal);
	      });
	
	      scope.typeaheadUtils = typeaheadUtils;
	
	      scope.typeaheads = { regionText: '' };
	      if (scope.order && scope.order.shipping && scope.order.shipping.state) {
	        var region = regions.byTwoLetterCode(scope.order.shipping.state);
	        scope.typeaheads.regionText = region ? region.text : '';
	      }
	      scope.$watch('order.shipping.state', function (newVal, oldVal) {
	        var region = regions.byTwoLetterCode(newVal);
	        if (region && angular.isUndefined(oldVal)) {
	          scope.typeaheads.regionText = region ? region.text : '';
	        }
	      });
	
	      scope.$watch('typeaheads.regionText', function (newValue, oldValue) {
	        if (newValue !== oldValue) {
	          var region = regions.byText(newValue);
	          scope.order.shipping.state = region ? region.two_letter : '';
	        }
	      });
	    }
	  };
	}

/***/ },

/***/ 1317:
/***/ function(module, exports) {

	module.exports = "<form name=\"orderShippingForm\">\n  <div class=\"i-shipping-fields\">\n    <div>\n      <label for=\"order_shipping_name\">{{::i18n.t('name')}}</label>\n      <input id=\"order_shipping_name\" name=\"shippingName\" class=\"i-text-field\" type=\"text\" ng-model=\"order.shipping.name\" required/>\n      <span class=\"i-shipping-form-error\" ng-if=\"orderShippingForm.shippingName.$error.required && orderShippingForm.shippingName.$dirty\">{{::i18n.t('login_modal.this_field_is_required')}}</span>\n    </div>\n    <div>\n      <label for=\"order_shipping_address\">{{::i18n.t('address')}}</label>\n      <input id=\"order_shipping_address\" name=\"shippingAddress\" class=\"i-text-field\" type=\"text\" ng-model=\"order.shipping.address\" required/>\n      <span class=\"i-shipping-form-error\" ng-if=\"orderShippingForm.shippingAddress.$error.required && orderShippingForm.shippingAddress.$dirty\">{{::i18n.t('login_modal.this_field_is_required')}}</span>\n    </div>\n    <div>\n      <label for=\"order_shipping_address\">{{::i18n.t('address_line_2')}}</label>\n      <input id=\"order_shipping_address2\" class=\"i-text-field\" type=\"text\" ng-model=\"order.shipping.address2\"/>\n    </div>\n    <div>\n      <label for=\"order_shipping_city\">{{::i18n.t('city')}}</label>\n      <input id=\"order_shipping_city\" name=\"shippingCity\" class=\"i-text-field\" type=\"text\" ng-model=\"order.shipping.city\" required/>\n      <span class=\"i-shipping-form-error\" ng-if=\"orderShippingForm.shippingCity.$error.required && orderShippingForm.shippingCity.$dirty\">{{::i18n.t('login_modal.this_field_is_required')}}</span>\n    </div>\n\n    <div class=\"order_shipping_region_container\" ng-if=\"order.shipping.country === 'US'\">\n      <label for=\"order_shipping_state\">{{::i18n.t('state')}}</label>\n      <input id=\"order_shipping_state\" type=\"text\" class=\"i-text-field\"\n             ng-model=\"typeaheads.regionText\"\n             data-comparator=\"typeaheadUtils.startsWith.region\"\n             data-auto-select=\"true\"\n             bs-options=\"region.text as region.text for region in stateOptions\"\n             bs-typeahead />\n    </div>\n    <div class=\"order_shipping_region_container\" ng-if=\"order.shipping.country === 'CA'\">\n      <label for=\"order_shipping_province\">{{::i18n.t('province')}}</label>\n      <input id=\"order_shipping_province\" type=\"text\" class=\"i-text-field\"\n             ng-model=\"typeaheads.regionText\"\n             data-comparator=\"typeaheadUtils.startsWith.region\"\n             data-auto-select=\"true\"\n             bs-options=\"region.text as region.text for region in provinceOptions\"\n             bs-typeahead />\n    </div>\n\n    <div class=\"order_shipping_zipcode_container\">\n      <label for=\"order_shipping_zipcode\">{{::i18n.t('zipcode')}}</label>\n      <input id=\"order_shipping_zipcode\" name=\"shippingZip\" class=\"i-text-field\" type=\"text\" ng-model=\"order.shipping.zipcode\" required/>\n      <span class=\"i-shipping-form-error\" ng-if=\"orderShippingForm.shippingZip.$error.required && orderShippingForm.shippingZip.$dirty\">{{::i18n.t('login_modal.this_field_is_required')}}</span>\n    </div>\n\n    <div>\n      <label for=\"order_shipping_country\">{{::i18n.t('country')}}</label>\n      <input type=\"text\" class=\"i-text-field\" id=\"order_shipping_country\" ng-disabled=\"true\" ng-model=\"shippingCountry.text\" />\n    </div>\n  </div>\n\n  <div class=\"cta-4 cta-4-secondary cta-4-secondary--purple cta-4-secondary--medium js-cancel-shipping-update\"\n    ng-click=\"$emit('shippingFormEditCanceled')\">{{i18n.t('cancel') }}</div>\n  <input type=\"submit\" class=\"cta-4 cta-4--purple cta-4--medium js-save-shipping-update\"\n    ng-value=\"i18n.t('save')\"\n    ng-click=\"$emit('shippingFormSubmitted')\"\n    ng-disabled=\"!orderShippingForm.$valid && orderShippingForm.$dirty\" />\n</form>\n";

/***/ },

/***/ 1318:
/***/ function(module, exports) {

	'use strict';
	
	accountContributionsApi.$inject = ["$http"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = accountContributionsApi;
	/* @ngInject */
	function accountContributionsApi($http) {
	  var urls = { show: null };
	
	  function validInteger(id) {
	    return !angular.isUndefined(id) && typeof id === 'number' && id > 0;
	  }
	
	  function requireUrl(key) {
	    if (!urls[key]) {
	      throw new Error(key + ' url is not defined');
	    }
	  }
	
	  return {
	    setUrls: function setUrls(newUrls) {
	      urls = newUrls;
	    },
	
	    getUrls: function getUrls() {
	      return urls;
	    },
	
	    getContribution: function getContribution(id) {
	      requireUrl('show');
	
	      var numericId = parseInt(id);
	      if (validInteger(numericId)) {
	        return $http.get(urls.show);
	      } else {
	        throw new Error('Invalid Pledge ID');
	      }
	    }
	  };
	}

/***/ },

/***/ 1319:
/***/ function(module, exports) {

	'use strict';
	
	campaignMessagesApi.$inject = ["$http", "$interpolate"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = campaignMessagesApi;
	/* @ngInject */
	function campaignMessagesApi($http, $interpolate) {
	  var urls = { create: null, canMessage: null };
	
	  function requireUrl(key) {
	    if (!urls[key]) {
	      throw new Error(key + ' url is not defined');
	    }
	  }
	
	  return {
	    setUrls: function setUrls(newUrls) {
	      urls = newUrls;
	    },
	
	    getUrls: function getUrls() {
	      return urls;
	    },
	
	    sendMessage: function sendMessage(campaignId, accountId, message, grecaptcha) {
	      requireUrl('create');
	
	      var url = '';
	      var body = '';
	
	      url = $interpolate(urls.create)({ id: campaignId });
	      url += '?account_id=' + accountId;
	      if (grecaptcha) {
	        url += '&grecaptcha=' + grecaptcha;
	      }
	      body = { comment: { text: message } };
	
	      return $http.post(url, body);
	    },
	
	    canMessage: function canMessage(campaignId, accountId) {
	      requireUrl('canMessage');
	      var url = '';
	
	      url = $interpolate(urls.canMessage)({ id: campaignId });
	      url += '?account_id=' + accountId;
	
	      return $http.get(url);
	    }
	  };
	}

/***/ },

/***/ 1320:
/***/ function(module, exports) {

	'use strict';
	
	ordersApi.$inject = ["$http", "$httpParamSerializer", "$interpolate"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = ordersApi;
	/* @ngInject */
	function ordersApi($http, $httpParamSerializer, $interpolate) {
	  var urls = { index: null, show: null, update: null };
	
	  function validId(id) {
	    return !angular.isUndefined(id) && typeof id === 'number' && id > 0;
	  }
	
	  function hasPresentProperty(object, key) {
	    return object.hasOwnProperty(key) && !angular.isUndefined(object[key]) && object[key] !== null;
	  }
	
	  function paramsFromOrder(order) {
	    var params = {};
	    var undesirable_keys = ['id', 'sequence_number', 'state', 'perk', 'perk_items', 'contribution', 'shipping', 'shipping_address_editable'];
	
	    for (var key in order) {
	      // undesirable_keys contains the attributes we don't want to submit
	      if (hasPresentProperty(order, key) && undesirable_keys.indexOf(key) < 0) {
	        params[key] = order[key];
	      }
	    }
	
	    if (order.shipping) {
	      params.shipping_name = order.shipping.name;
	      params.shipping_address = order.shipping.address;
	      params.shipping_address2 = order.shipping.address2;
	      params.shipping_city = order.shipping.city;
	      params.shipping_state = order.shipping.state;
	      params.shipping_zipcode = order.shipping.zipcode;
	      params.shipping_country = order.shipping.country;
	    }
	
	    return params;
	  }
	
	  function requireUrl(key) {
	    if (!urls[key]) {
	      throw new Error(key + ' url is not defined');
	    }
	  }
	
	  return {
	    configureFromGon: function configureFromGon(configuration) {
	      this.setUrls(configuration.orderUrls);
	    },
	
	    setUrls: function setUrls(newUrls) {
	      urls = newUrls;
	    },
	
	    getUrls: function getUrls() {
	      return urls;
	    },
	
	    getOrders: function getOrders(page, state) {
	      requireUrl('index');
	      return $http({
	        method: "GET",
	        url: urls.index,
	        params: { page: page, state: state }
	      });
	    },
	
	    getOrder: function getOrder(id, orderToken) {
	      requireUrl('show');
	
	      if (!validId(id)) {
	        throw new Error('id is invalid');
	      }
	
	      var url = $interpolate(urls.show)({ id: id });
	      return $http({
	        method: "GET",
	        url: url
	      });
	    },
	
	    updateOrder: function updateOrder(order, confirmOrder, orderToken) {
	      requireUrl('update');
	
	      if (angular.isUndefined(order) || !validId(order.id)) {
	        throw new Error("order.id is invalid");
	      }
	
	      var url = $interpolate(urls.update)({ id: order.id });
	      return $http.put(url, { order: paramsFromOrder(order), confirm_order: !!confirmOrder });
	    },
	
	    cancelOrder: function cancelOrder(order) {
	      requireUrl('cancel');
	
	      if (angular.isUndefined(order) || !validId(order.id)) {
	        throw new Error("order.id is invalid");
	      }
	
	      var url = $interpolate(urls.cancel)({ id: order.id });
	      return $http.put(url);
	    },
	
	    sendAllConfirmationEmails: function sendAllConfirmationEmails() {
	      requireUrl('sendAllConfirmationEmails');
	      return $http.post(urls.sendAllConfirmationEmails);
	    },
	
	    resendConfirmationEmail: function resendConfirmationEmail(orderId, orderToken) {
	      requireUrl('resendConfirmationEmail');
	      var url = $interpolate(urls.resendConfirmationEmail)({ id: orderId });
	      return $http({
	        method: "POST",
	        url: url
	      });
	    },
	
	    batchUpdate: function batchUpdate(orderIds, newState) {
	      requireUrl('batchUpdate');
	      return $http.put(urls.batchUpdate, { id: orderIds, new_state: newState });
	    },
	
	    batchUpdateAll: function batchUpdateAll(oldState, newState, filters) {
	      requireUrl('batchUpdate');
	      var params = _.extend({ all_orders: true, old_state: oldState, new_state: newState }, filters);
	      return $http({
	        method: 'PUT',
	        url: urls.batchUpdate,
	        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
	        data: $httpParamSerializer(params)
	      });
	    }
	  };
	}

/***/ },

/***/ 1590:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = partner;
	
	var _aboutPartnershipFormSectionDirective = __webpack_require__(1591);
	
	var _aboutPartnershipFormSectionDirective2 = _interopRequireDefault(_aboutPartnershipFormSectionDirective);
	
	var _generateLinkFormDirective = __webpack_require__(1593);
	
	var _generateLinkFormDirective2 = _interopRequireDefault(_generateLinkFormDirective);
	
	var _organizationFormSectionDirective = __webpack_require__(1595);
	
	var _organizationFormSectionDirective2 = _interopRequireDefault(_organizationFormSectionDirective);
	
	var _partnerTabsDirective = __webpack_require__(1597);
	
	var _partnerTabsDirective2 = _interopRequireDefault(_partnerTabsDirective);
	
	var _partnerTeamDirective = __webpack_require__(1598);
	
	var _partnerTeamDirective2 = _interopRequireDefault(_partnerTeamDirective);
	
	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
	
	function partner(parent) {
	  parent.directive('aboutPartnershipFormSection', _aboutPartnershipFormSectionDirective2.default).directive('generateLinkForm', _generateLinkFormDirective2.default).directive('organizationFormSection', _organizationFormSectionDirective2.default).directive('partnerTabs', _partnerTabsDirective2.default).directive('partnerTeam', _partnerTeamDirective2.default);
	}

/***/ },

/***/ 1591:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	about.$inject = ["gon", "i18n", "categories", "currencies"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = about;
	/*@ngInject*/
	function about(gon, i18n, categories, currencies) {
	  return {
	    template: __webpack_require__(1592),
	    scope: {},
	    link: function link(scope) {
	      scope.categoryOptions = categories.asOptions();
	      scope.currencyOptions = currencies.all();
	      scope.i18n = i18n;
	      scope.partner = gon.partner;
	    }
	  };
	}

/***/ },

/***/ 1592:
/***/ function(module, exports) {

	module.exports = "<h3>{{::i18n.t('about_our_partnership')}}</h3>\n\n<div class=\"i-field-row i-part-width\">\n  <label for=\"partner_name\" class=\"i-block-label\">Name of your Organization</label>\n  <input id=\"partner_name\" name=\"partner[name]\" class=\"i-text-field\" ng-model=\"partner.name\" />\n</div>\n\n<div class=\"i-field-row\">\n  <label for=\"partner_shortname\" class=\"i-block-label\">Link for your partner page</label>\n  <div class=\"i-shortname\">\n    <em>indiegogo.com/partners/</em>\n    <input id=\"partner_shortname\" name=\"partner[shortname]\" class=\"i-text-field\" ng-model=\"partner.shortname\" />\n    <span class=\"partner-url-char\">{{partner.shortname | charCounter:40}}</span>\n  </div>\n</div>\n\n<div class=\"i-field-row\">\n  <label for=\"partner_blurb\" class=\"i-block-label\">Description</label>\n  <textarea id=\"partner_blurb\" name=\"partner[blurb]\" ng-model=\"partner.blurb\"\n            redactor redactor-buttons=\"bold italic link\" redactor-maxlength=\"400\"></textarea>\n</div>\n\n<div class=\"i-field-row\">\n  <div class=\"i-block-label\">\n    <label for=\"partner_more_info\">More Info</label>\n    <span class=\"i-note\">(optional)</span>\n  </div>\n  <div>\n    <textarea id=\"partner_more_info\" name=\"partner[more_info]\" ng-model=\"partner.more_info\"\n            redactor redactor-buttons=\"bold italic link\" redactor-maxlength=\"400\"></textarea>\n  </div>\n</div>\n\n<div class=\"i-field-row i-image-uploader\" ng-if=\"partner.photo_update_url\">\n  <div class=\"i-block-label\">\n    <label>Gallery Image</label>\n    <span igg-popover close-delay>\n      The gallery image is the large image on your Partner Page.\n      See the sunglasses image as an example of a good gallery image\n      <a href=\"/partners/indiegogoteam\" target=\"_blank\">here</a>.\n      This image should be beautiful and represent your organization because it will also be used if you are\n      featured in the <a href=\"/partners\" target=\"_blank\">Partner Gallery</a>.<br/><br/>\n      Image Size: 460x285 pixels. Use a large image because your image will be resized and cropped.\n    </span>\n  </div>\n  <div simple-image-upload\n       attribute=\"gallery_image\"\n       update-image-path=\"{{partner.photo_update_url}}\"\n       attr=\"gallery_image\"\n       image-public-id=\"{{partner.gallery_image_public_id}}\"\n       width=\"460\" height=\"285\" crop=\"fill\">\n  </div>\n</div>\n\n<div class=\"i-field-row i-image-uploader\" ng-if=\"partner.photo_update_url\">\n  <div class=\"i-block-label\">\n    <label>Square Logo</label>\n    <span igg-popover close-delay>\n      The square logo appears on your partner page next to the name of your organization.\n      See the Indiegogo logo as an example of a square logo\n      <a href=\"/partners/indiegogoteam\" target=\"_blank\">here</a>.<br/><br/>\n      Image Size: 90x90 pixels. Your logo will be resized and cropped.\n    </span>\n  </div>\n  <div simple-image-upload\n       update-image-path=\"{{partner.photo_update_url}}\"\n       attr=\"square_logo\"\n       image-public-id=\"{{partner.square_logo_public_id}}\"\n       width=\"90\" height=\"90\" crop=\"fill\"></div>\n</div>\n\n<div class=\"i-field-row i-part-width accept-category\">\n  <label class=\"i-block-label\">Which category best describes the majority of your campaigns?</label>\n  <ui-select ng-model=\"partner.category_id\" search-enabled=\"false\" theme=\"select2\">\n    <ui-select-match placeholder=\"{{::i18n.t('campaign_editor.misc.please_select')}}\">{{$select.selected.text}}</ui-select-match>\n    <ui-select-choices repeat=\"option.value as option in categoryOptions | filter: $select.search\">{{option.text}}</ui-select-choices>\n  </ui-select>\n  <input type=\"hidden\" name=\"partner[category_id]\" value=\"{{partner.category_id}}\" />\n</div>\n\n<div class=\"i-field-row i-part-width accept-currency\">\n  <label class=\"i-block-label\">Which currency are the majority of your campaigns using?</label>\n  <ui-select ng-model=\"partner.currency_iso_num\" search-enabled=\"false\" id=\"partner-currency-dropdown\" theme=\"select2\">\n    <ui-select-match>{{$select.selected.iso_code}} ({{$select.selected.symbol}})</ui-select-match>\n    <ui-select-choices repeat=\"currency.iso_num as currency in currencyOptions | filter: $select.search\">{{currency.iso_code}} ({{currency.symbol}})</ui-select-choices>\n  </ui-select>\n  <input type=\"hidden\" name=\"partner[currency_iso_num]\" value=\"{{partner.currency_iso_num}}\" />\n</div>\n\n<div class=\"i-field-row\">\n  <label class=\"i-block-label\">Do you want to approve your campaigns before they go live?</label>\n  <div class=\"styledRadio-row\">\n    <label class=\"styledRadio styledRadio--inline\">\n      <input type=\"radio\" class=\"styledRadio-input\" ng-model=\"partner.requires_approval\" ng-value=\"true\" />\n      <svg class=\"styledRadio-button styledRadio-button--selected\"><use xlink:href=\"#icon-radiobutton-selected\"></use></svg>\n      <span class=\"styledRadio-button styledRadio-button--unselected\"></span>\n      <span class=\"styledRadio-label\">Yes</span>\n    </label>\n    <label class=\"styledRadio styledRadio--inline\">\n      <input type=\"radio\" class=\"styledRadio-input\" ng-model=\"partner.requires_approval\" ng-value=\"false\" />\n      <svg class=\"styledRadio-button styledRadio-button--selected\"><use xlink:href=\"#icon-radiobutton-selected\"></use></svg>\n      <span class=\"styledRadio-button styledRadio-button--unselected\"></span>\n      <span class=\"styledRadio-label\">No</span>\n    </label>\n  </div>\n  <input type=\"hidden\" name=\"partner[requires_approval]\" value=\"{{partner.requires_approval}}\" />\n</div>\n";

/***/ },

/***/ 1593:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	generateLinkForm.$inject = ["$http"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = generateLinkForm;
	/*@ngInject*/
	function generateLinkForm($http) {
	  return {
	    template: __webpack_require__(1594),
	    scope: {
	      url: '@url',
	      shortname: '@shortname'
	    },
	    link: function link(scope) {
	      scope.optinLink = {
	        partner_shortname: scope.shortname
	      };
	      scope.optinLinkText = '{enter the reference code and click the generate button}';
	      scope.generateLink = function () {
	        $http.put(scope.url, { partner_optin_link: scope.optinLink }).success(function (data) {
	          scope.optinLinkText = data.optin_url;
	        }).error(function (data) {
	          scope.failWhaleText = data;
	        });
	      };
	    }
	  };
	}

/***/ },

/***/ 1594:
/***/ function(module, exports) {

	module.exports = "<div ng-if=\"failWhaleText\" class=\"messageNotification messageNotification--error\">\n  <span><span>{{failWhaleText}}</span></span>\n</div>\n\n<div class=\"i-form-section\">\n  <h3>Pre-campaign creation opt-in link</h3>\n  <div class=\"i-field-row\">\n    <label for=\"partner_code\" class=\"i-block-label\">Reference code</label>\n    <input id=\"partner_code\" type=\"text\" class=\"i-text-field\" ng-model=\"optinLink.code\" />\n  </div>\n  <div class=\"i-field-row\">\n    <div class=\"i-block-label\">\n      <label for=\"partner_description\">Reference description</label>\n      <span class=\"i-note\">(optional)</span>\n    </div>\n    <textarea id=\"partner_description\" ng-model=\"optinLink.description\"></textarea>\n  </div>\n  <div class=\"i-field-row\">\n    <label for=\"optin_link\" class=\"i-block-label\">Optin link</label>\n    <div id=\"optin_link\">{{optinLinkText}}</div>\n  </div>\n  <div class=\"i-field-row\">\n    <a href=\"\" ng-click=\"generateLink()\" class=\"i-cta-1\">Generate</a>\n  </div>\n</div>\n";

/***/ },

/***/ 1595:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	organizationForm.$inject = ["gon", "i18n", "countriesService", "regions", "typeaheadUtils"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = organizationForm;
	/*@ngInject*/
	function organizationForm(gon, i18n, countriesService, regions, typeaheadUtils) {
	  var countries = countriesService;
	  return {
	    template: __webpack_require__(1596),
	    scope: {},
	    link: function link(scope) {
	      scope.i18n = i18n;
	      scope.partner = gon.partner;
	      scope.countryOptions = countries.asUiSelectItems({ grouped: true });
	      scope.stateOptions = regions.statesAsOptions();
	      scope.provinceOptions = regions.provincesAsOptions();
	      scope.zipCodeLabel = i18n.t(countries.zipCodeLabelKey(scope.partner.contact_country));
	
	      scope.typeaheadUtils = typeaheadUtils;
	
	      scope.typeaheads = {};
	      var country = countriesService.findByCode(scope.partner.contact_country);
	      scope.typeaheads.countryText = country ? country.text : '';
	      var region = regions.byCode(scope.partner.contact_state);
	      scope.typeaheads.regionText = region ? region.text : '';
	
	      scope.$watch('typeaheads.countryText', function (newValue, oldValue) {
	        if (newValue !== oldValue) {
	          var country = countriesService.findByText(newValue);
	          scope.partner.contact_country = country ? country.country_code : null;
	          scope.zipCodeLabel = i18n.t(countries.zipCodeLabelKey(scope.partner.contact_country));
	          scope.typeaheads.regionText = '';
	        }
	      });
	
	      scope.$watch('typeaheads.regionText', function (newValue, oldValue) {
	        if (newValue !== oldValue) {
	          var region = regions.byText(newValue);
	          scope.partner.contact_state = region ? region.code : '';
	        }
	      });
	    }
	  };
	}

/***/ },

/***/ 1596:
/***/ function(module, exports) {

	module.exports = "<h3>Organization Information</h3>\n\n<p>This information is used by Indiegogo to contact you and will not be shared publicly.</p>\n\n<div class=\"i-field-row i-part-width\">\n  <label class=\"i-block-label\" for=\"partnerCountry\">{{::i18n.t('country')}}</label>\n  <input type=\"text\" class=\"i-text-field\" id=\"partnerCountry\" bs-typeahead\n         ng-model=\"typeaheads.countryText\"\n         data-comparator=\"typeaheadUtils.startsWith.country\"\n         data-auto-select=\"true\"\n         bs-options=\"country.text as country.text for country in countryOptions\" />\n  <input type=\"hidden\" name=\"partner[contact_country]\" value=\"{{partner.contact_country}}\" />\n</div>\n\n<div class=\"i-field-row i-part-width\">\n  <label for=\"partner_contact_street\" class=\"i-block-label\">{{::i18n.t('address_line_1')}}</label>\n  <input id=\"partner_contact_street\" name=\"partner[contact_street]\" type=\"text\" class=\"i-text-field\" ng-model=\"partner.contact_street\" />\n</div>\n\n<div class=\"i-field-row\">\n  <div class=\"i-field-cell i-part-width\">\n    <label for=\"partner_contact_city\" class=\"i-block-label\">{{::i18n.t('city')}}</label>\n    <input id=\"partner_contact_city\" name=\"partner[contact_city]\" type=\"text\" class=\"i-text-field\" ng-model=\"partner.contact_city\" />\n  </div>\n  <div class=\"i-field-cell i-state-width\" ng-if=\"partner.contact_country === 'CTRY_US'\">\n    <label class=\"i-block-label\" for=\"partnerState\">{{::i18n.t('state')}}</label>\n    <input type=\"text\" class=\"i-text-field\" id=\"partnerState\" bs-typeahead\n           ng-model=\"typeaheads.regionText\"\n           data-comparator=\"typeaheadUtils.startsWith.region\"\n           data-auto-select=\"true\"\n           bs-options=\"region.text as region.text for region in stateOptions\" />\n  </div>\n  <div class=\"i-field-cell i-province-width\" ng-if=\"partner.contact_country === 'CTRY_CA'\">\n    <label class=\"i-block-label\" for=\"partnerProvince\">{{::i18n.t('province')}}</label>\n    <input type=\"text\" id=\"partnerProvince\" bs-typeahead\n           ng-model=\"typeaheads.regionText\"\n           data-comparator=\"typeaheadUtils.startsWith.region\"\n           data-auto-select=\"true\"\n           bs-options=\"region.text as region.text for region in provinceOptions\" />\n  </div>\n  <div class=\"i-field-cell i-zip-width\">\n    <label for=\"partner_contact_zip\" class=\"i-block-label\">{{zipCodeLabel}}</label>\n    <input id=\"partner_contact_zip\" name=\"partner[contact_zip]\" type=\"text\" class=\"i-text-field\" ng-model=\"partner.contact_zip\" />\n  </div>\n</div>\n<input type=\"hidden\" name=\"partner[contact_state]\" value=\"{{partner.contact_state}}\" />\n\n<div class=\"i-field-row i-part-width\">\n  <label for=\"partner_contact_name\" class=\"i-block-label\">{{::i18n.t('name')}}</label>\n  <input id=\"partner_contact_name\" name=\"partner[contact_name]\" type=\"text\" class=\"i-text-field\" ng-model=\"partner.contact_name\" />\n</div>\n<div class=\"i-field-row i-part-width\">\n  <label for=\"partner_contact_email\" class=\"i-block-label\">{{::i18n.t('email_caps')}}</label>\n  <input id=\"partner_contact_email\" name=\"partner[contact_email]\" type=\"text\" class=\"i-text-field\" ng-model=\"partner.contact_email\" />\n</div>\n<div class=\"i-field-row i-part-width\">\n  <label for=\"partner_contact_phone\" class=\"i-block-label\">{{::i18n.t('phone')}}</label>\n  <input id=\"partner_contact_phone\" name=\"partner[contact_phone]\" type=\"text\" class=\"i-text-field\" ng-model=\"partner.contact_phone\" />\n</div>\n";

/***/ },

/***/ 1597:
/***/ function(module, exports) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = partnerTabs;
	/*@ngInject*/
	function partnerTabs() {
	  return {
	    scope: true, /* this directive mucks with the root scope so we can just use server-side ng directives */
	    link: function link(scope, element, attrs) {
	      scope.currentPartnerTab = attrs.initialTab;
	      element.find('.i-content').removeClass('hidden');
	    }
	  };
	}

/***/ },

/***/ 1598:
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	
	partnerTeam.$inject = ["gon", "$http", "i18n"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = partnerTeam;
	/*@ngInject*/
	function partnerTeam(gon, $http, i18n) {
	  return {
	    template: __webpack_require__(1599),
	    scope: {},
	    link: function link(scope) {
	      scope.i18n = i18n;
	
	      var team = gon.team_info || {};
	      scope.owners = team.owners || [];
	      scope.editors = team.editors || [];
	      scope.viewers = team.viewers || [];
	      scope.pendingInvitations = team.pending_invitations || [];
	      scope.createInviteUrl = gon.create_invite_url;
	      scope.newInvite = {};
	
	      scope.promote = function (account) {
	        $http.put(account.manage_url + "/promote").then(function (response) {
	          scope.viewers = _.without(scope.viewers, account);
	          scope.editors.push(account);
	        });
	      };
	
	      scope.demote = function (account) {
	        $http.put(account.manage_url + "/demote").then(function (response) {
	          scope.editors = _.without(scope.editors, account);
	          scope.viewers.push(account);
	        });
	      };
	
	      scope.removeTeamMember = function (account) {
	        $http.delete(account.manage_url).then(function () {
	          scope.editors = _.without(scope.editors, account);
	          scope.viewers = _.without(scope.viewers, account);
	        });
	      };
	
	      scope.removeInvite = function (invite) {
	        $http.delete(invite.manage_url).then(function () {
	          scope.pendingInvitations = _.without(scope.pendingInvitations, invite);
	        });
	      };
	
	      scope.resendInvite = function (invite) {
	        $http.put(invite.manage_url + '/resend');
	      };
	
	      scope.createInvitation = function () {
	        $http.post(scope.createInviteUrl, { invitation: scope.newInvite }).then(function (response) {
	          if (!_.find(scope.pendingInvitations, { id: response.data.id })) {
	            scope.pendingInvitations.push(response.data);
	          }
	          scope.newInvite = {};
	        });
	      };
	    }
	  };
	}

/***/ },

/***/ 1599:
/***/ function(module, exports) {

	module.exports = "\n<div ng-if=\"owners.length > 0\">\n  <h3>{{::i18n.t('owner')}}</h3>\n  <ul class=\"i-team-members\">\n    <li ng-repeat=\"account in owners track by account.id\">\n      <a class=\"i-photo\" ng-href=\"{{::account.profile_url}}\"><img ng-src=\"{{::account.avatar_url}}\" /></a>\n      <div class=\"i-info\">\n        <a class=\"i-name\" ng-href=\"{{::account.profile_url}}\">{{::account.name}}</a>\n        <div class=\"i-email\">{{::i18n.t('email_caps')}}: <a ng-href=\"{{::'mailto:' + account.email}}\">{{::account.email}}</a></div>\n      </div>\n    </li>\n  </ul>\n</div>\n\n<div ng-if=\"editors.length > 0\">\n  <h3>{{::i18n.t('editors')}}</h3>\n  <ul class=\"i-team-members\">\n    <li ng-repeat=\"account in editors track by account.id\">\n      <a class=\"i-photo\" ng-href=\"{{::account.profile_url}}\"><img ng-src=\"{{::account.avatar_url}}\" /></a>\n      <div class=\"i-info\">\n        <a class=\"i-name\" ng-href=\"{{::account.profile_url}}\">{{::account.name}}</a>\n        <div class=\"i-email\">{{::i18n.t('email_caps')}}: <a ng-href=\"{{::'mailto:' + account.email}}\">{{::account.email}}</a></div>\n      </div>\n      <div class=\"i-make-editor\" ng-if=\"::account.manage_url\">\n        <input type=\"checkbox\" checked ng-click=\"demote(account)\" id=\"{{::'team-account-' + account.id}}\" />\n        <label for=\"{{::'team-account-' + account.id}}\" class=\"i-editor-checkbox\">{{::i18n.t('make_editor')}}</label>\n      </div>\n      <a href=\"\" ng-if=\"::account.manage_url\" ng-click=\"removeTeamMember(account)\" class=\"i-button-to-link i-remove-member\">{{::i18n.t('remove_team_member')}}</a>\n    </li>\n  </ul>\n</div>\n\n<div ng-if=\"viewers.length > 0\">\n  <h3>{{::i18n.t('members')}}</h3>\n  <ul class=\"i-team-members\">\n    <li ng-repeat=\"account in viewers track by account.id\">\n      <a class=\"i-photo\" ng-href=\"{{::account.profile_url}}\"><img ng-src=\"{{::account.avatar_url}}\" /></a>\n      <div class=\"i-info\">\n        <a class=\"i-name\" ng-href=\"{{::account.profile_url}}\">{{::account.name}}</a>\n        <div class=\"i-email\">{{::i18n.t('email_caps')}}: <a ng-href=\"{{::'mailto:' + account.email}}\">{{::account.email}}</a></div>\n      </div>\n      <div class=\"i-make-editor\" ng-if=\"::account.manage_url\">\n        <input type=\"checkbox\" ng-click=\"promote(account)\" id=\"{{::'team-account-' + account.id}}\" />\n        <label for=\"{{::'team-account-' + account.id}}\" class=\"i-editor-checkbox\">{{::i18n.t('make_editor')}}</label>\n      </div>\n      <a href=\"\" ng-if=\"::account.manage_url\" ng-click=\"removeTeamMember(account)\" class=\"i-button-to-link i-remove-member\">{{::i18n.t('remove_team_member')}}</a>\n    </li>\n  </ul>\n</div>\n\n<div ng-if=\"pendingInvitations.length > 0\">\n  <h3>{{::i18n.t('pending_invitations')}}</h3>\n  <ul class=\"i-team-members\">\n    <li ng-repeat=\"invitation in pendingInvitations track by invitation.id\">\n      <div class=\"i-photo\">\n        <img ng-src=\"{{::invitation.avatar_url}}\" />\n      </div>\n\n      <div class=\"i-info\">\n        <div class=\"i-email\">{{::i18n.t('email_caps')}}:\n          <a ng-href=\"mailto:{{::invitation.email}}\">{{::invitation.email}}</a>\n        </div>\n      </div>\n\n      <a href=\"\" ng-click=\"resendInvite(invitation)\" class=\"i-button-to-link i-resend-invite\">{{::i18n.t('resend_invite')}}</a>\n      <a href=\"\" ng-click=\"removeInvite(invitation)\" class=\"i-button-to-link i-remove-member\">{{::i18n.t('remove_team_member')}}</a>\n    </li>\n  </ul>\n</div>\n\n<form class=\"i-invite-more\"\n     ng-submit=\"createInvitation()\"\n     ng-if=\"::createInviteUrl\">\n  <h2>{{::i18n.t('invite_teammembers')}}</h2>\n\n  <div class=\"i-email-field\">\n    <label for=\"emailInvite\">{{::i18n.t('email_caps')}}</label>\n    <input type=\"email\" id=\"emailInvite\" ng-model=\"newInvite.email\" class=\"i-text-field\" />\n  </div>\n\n  <div>\n    <input type=\"checkbox\" id=\"makeEditor\" ng-model=\"newInvite.editor\" />\n    <label for=\"makeEditor\">{{::i18n.t('make_editor')}}</label>\n  </div>\n\n  <input type=\"submit\" class=\"i-cta-1 i-send-invitation-button\" value=\"{{::i18n.t('send_invitation')}}\" />\n</form>\n\n";

/***/ },

/***/ 1600:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = life_edit;
	
	var _profileDonationsFactory = __webpack_require__(1601);
	
	var _profileDonationsFactory2 = _interopRequireDefault(_profileDonationsFactory);
	
	var _profileDonationsTabDirective = __webpack_require__(1602);
	
	var _profileDonationsTabDirective2 = _interopRequireDefault(_profileDonationsTabDirective);
	
	var _profileEditPageDirective = __webpack_require__(1604);
	
	var _profileEditPageDirective2 = _interopRequireDefault(_profileEditPageDirective);
	
	var _profileFundraisersFactory = __webpack_require__(1606);
	
	var _profileFundraisersFactory2 = _interopRequireDefault(_profileFundraisersFactory);
	
	var _profileFundraisersTabDirective = __webpack_require__(1607);
	
	var _profileFundraisersTabDirective2 = _interopRequireDefault(_profileFundraisersTabDirective);
	
	var _donationAppearanceSelectorDirective = __webpack_require__(1611);
	
	var _donationAppearanceSelectorDirective2 = _interopRequireDefault(_donationAppearanceSelectorDirective);
	
	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
	
	function life_edit(parent) {
	  parent.directive('donationAppearanceSelector', _donationAppearanceSelectorDirective2.default).factory('profileDonations', _profileDonationsFactory2.default).directive('profileDonationsTab', _profileDonationsTabDirective2.default).directive('profileEditPage', _profileEditPageDirective2.default).factory('profileFundraisers', _profileFundraisersFactory2.default).directive('profileFundraisersTab', _profileFundraisersTabDirective2.default);
	  parent.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
	    // For any unmatched url, redirect to /fundraisers
	    $urlRouterProvider.otherwise('/fundraisers');
	    //
	    // Now set up the states
	    $stateProvider.state('fundraisers', {
	      url: '/fundraisers',
	      template: __webpack_require__(1613)
	    }).state('donations', {
	      url: '/donations',
	      template: __webpack_require__(1614)
	    });
	  }]);
	}

/***/ },

/***/ 1601:
/***/ function(module, exports) {

	"use strict";
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	
	exports.default = function ($http, gon) {
	  var donations = gon.donations;
	
	  var service = {
	    donations: donations,
	    changeAppearance: function changeAppearance(donation, newAppearance) {
	      return $http.put(donation.urls.appearance, { appearance: newAppearance });
	    }
	  };
	
	  service.refresh = function () {
	    donations = gon.donations;
	    service.donations = donations;
	  };
	
	  return service;
	};

/***/ },

/***/ 1602:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	profileDonationsTab.$inject = ["i18n", "profileDonations"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = profileDonationsTab;
	/*@ngInject*/
	function profileDonationsTab(i18n, profileDonations) {
	  return {
	    restrict: 'A',
	    scope: {},
	    template: __webpack_require__(1603),
	    link: function link(scope) {
	      scope.i18n = i18n;
	      scope.donations = profileDonations.donations;
	    }
	  };
	}

/***/ },

/***/ 1603:
/***/ function(module, exports) {

	module.exports = "<div class=\"i-dont-worry\">{{ i18n.t('tab_only_visible_to_you') }}</div>\n<table class=\"i-table\">\n  <thead>\n  <tr>\n    <th>{{ i18n.t('individual_profile.date') }}</th>\n    <th>{{ i18n.t('generosity.fundraiser') }}</th>\n    <th>{{ i18n.t('individual_profile.amount') }}</th>\n    <th>{{ i18n.t('visibility') }}</th>\n  </tr>\n  </thead>\n  <tbody>\n  <tr ng-repeat=\"donation in donations\" ng-class=\"{'pc-donation-changed': donation.appearanceChanged}\">\n    <td>{{ donation.pledge_date }}</td>\n    <td><a ng-href=\"{{donation.urls.fundraiser}}\">{{donation.campaign_title}}</a></td>\n    <td ng-bind-html=\"donation.amt_gross | iggCurrency:donation.currency_iso_num:'html'\"></td>\n    <td donation-appearance-selector donation=\"donation\"></td>\n  </tr>\n  </tbody>\n</table>\n";

/***/ },

/***/ 1604:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	profileEditPage.$inject = ["$state", "i18n", "profileFundraisers", "profileDonations"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = profileEditPage;
	/*@ngInject*/
	function profileEditPage($state, i18n, profileFundraisers, profileDonations) {
	  return {
	    restrict: 'A',
	    scope: {},
	    template: __webpack_require__(1605),
	    link: function link(scope) {
	      scope.$state = $state;
	      scope.i18n = i18n;
	      scope.fundraisers = profileFundraisers.fundraisers;
	      scope.donations = profileDonations.donations;
	    }
	  };
	}

/***/ },

/***/ 1605:
/***/ function(module, exports) {

	module.exports = "<div class=\"i-float-tab-links\">\n<span class=\"i-tab\" ng-class=\"{'i-selected': $state.current.name === 'fundraisers'}\"><span>\n  <a href=\"\" ui-sref=\"fundraisers\">{{::i18n.t(\"generosity.fundraisers\")}}</a> <span class=\"i-count\">{{fundraisers.length}}</span>\n</span></span>\n<span class=\"i-tab\" ng-class=\"{'i-selected': $state.current.name === 'donations'}\"><span>\n  <a href=\"\" ui-sref=\"donations\">{{::i18n.t(\"generosity.donations\")}}</a> <span class=\"i-count\">{{donations.length}}</span>\n</span></span>\n</div>\n\n<div class=\"i-profile-container\" ui-view></div>\n\n";

/***/ },

/***/ 1606:
/***/ function(module, exports) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	
	exports.default = function ($http, flash, i18n, gon) {
	
	  var fundraisers = _.clone(gon.fundraisers);
	
	  var service = {
	    fundraisers: fundraisers,
	    hide: function hide(fundraiser) {
	      return $http.put(fundraiser.urls.hide).then(function (response) {
	        var campaign = response.data.campaign;
	        var campaignIndex = _.findIndex(fundraisers, { id: campaign.id });
	        fundraisers[campaignIndex] = campaign;
	        flash.addMessage('notice', i18n.t('hide_success', { project_title: fundraiser.title }));
	      }, function () {
	        flash.addMessage('error', i18n.t('hide_failure', { project_title: fundraiser.title }));
	      });
	    },
	    destroy: function destroy(fundraiser) {
	      return $http.delete(fundraiser.urls.destroy).then(function (response) {
	        var campaign = response.data.campaign;
	        var campaignIndex = _.findIndex(fundraisers, { id: campaign.id });
	        fundraisers.splice(campaignIndex, 1);
	        flash.addMessage('notice', i18n.t('delete_fundraiser_success'));
	      }, function () {
	        flash.addMessage('error', i18n.t('delete_fundraiser_failure'));
	      });
	    }
	  };
	
	  service.refresh = function () {
	    fundraisers = gon.fundraisers;
	    service.fundraisers = fundraisers;
	  };
	
	  return service;
	};

/***/ },

/***/ 1607:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	profileFundraisersTab.$inject = ["i18n", "$modal", "profileFundraisers"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = profileFundraisersTab;
	/*@ngInject*/
	function profileFundraisersTab(i18n, $modal, profileFundraisers) {
	  return {
	    restrict: 'A',
	    scope: {},
	    template: __webpack_require__(1608),
	    link: function link(scope) {
	      scope.i18n = i18n;
	      scope.fundraisers = profileFundraisers.fundraisers;
	
	      var draftModal = null;
	      scope.openDraftModal = function (fundraiser) {
	        var modalScope = scope.$new();
	        modalScope.fundraiser = fundraiser;
	
	        draftModal = $modal({
	          template: __webpack_require__(1609),
	          scope: modalScope
	        });
	      };
	
	      scope.returnToDraft = function (fundraiser) {
	        profileFundraisers.hide(fundraiser).then(function () {
	          draftModal.hide();
	        });
	      };
	
	      var deleteModal = null;
	      scope.openDeleteModal = function (fundraiser) {
	        var modalScope = scope.$new();
	        modalScope.fundraiser = fundraiser;
	
	        deleteModal = $modal({
	          template: __webpack_require__(1610),
	          scope: modalScope
	        });
	      };
	
	      scope.deleteFundraiser = function (fundraiser) {
	        profileFundraisers.destroy(fundraiser).then(function () {
	          deleteModal.hide();
	        });
	      };
	
	      scope.returnPillClass = function (fundraiserStatus) {
	        if (fundraiserStatus === 'published') {
	          return 'i-pill-happy';
	        } else if (fundraiserStatus === 'ended') {
	          return 'i-pill-ended';
	        } else {
	          return 'i-pill-pending';
	        }
	      };
	
	      scope.returnMainUrl = function (fundraiser) {
	        var status = fundraiser.status;
	        var urls = fundraiser.urls;
	        if (status === 'draft') {
	          return urls.edit;
	        } else {
	          return urls.dashboard;
	        }
	      };
	    }
	  };
	}

/***/ },

/***/ 1608:
/***/ function(module, exports) {

	module.exports = "<h3>{{ i18n.t('generosity.my_fundraisers_tab.fundraisers_im_on') }}</h3>\n<p ng-if=\"fundraisers.length === 0\">{{::i18n.t('generosity.my_fundraisers_tab.no_fundraisers')}}</p>\n<ul ng-if=\"fundraisers.length > 0\">\n  <li ng-repeat=\"fundraiser in fundraisers\" class=\"i-profile-list-item\">\n    <a ng-href=\"{{returnMainUrl(fundraiser)}}\" class=\"i-primary-image\">\n      <img cl-image background=\"#FFF\" placeholder-path=\"\" width=\"200\" height=\"200\" crop=\"fill\" public-id=\"fundraiser.image_data.public_id\" />\n    </a>\n    <a ng-href=\"{{returnMainUrl(fundraiser)}}\" class=\"fundraiserImage\">\n      <img cl-image background=\"#FFF\" placeholder-path=\"\" width=\"300\" height=\"200\" crop=\"fill\" public-id=\"fundraiser.image_data.public_id\" />\n    </a>\n\n    <div class=\"i-content\">\n      <div class=\"i-profile-actions dropdown\">\n        <a class=\"i-select\" href=\"\" bs-dropdown>\n          <span class=\"i-text\">{{ i18n.t('actions') }}</span>\n          <svg-icon icon=\"down-caret\"></svg-icon>\n        </a>\n        <ul class=\"dropdown-menu i-actions-items\" role=\"menu\">\n          <li>\n            <a class=\"profileEditFundraiserLink\" ng-href=\"{{fundraiser.urls.edit}}\">{{::i18n.t('generosity.my_fundraisers_tab.edit')}}</a>\n          </li>\n          <li ng-if=\"fundraiser.balance === 0 && fundraiser.visible_to_public && fundraiser.status === 'published'\">\n            <a class=\"profileDraftFundraiserLink\" href=\"\" ng-click=\"openDraftModal(fundraiser)\">{{::i18n.t('return_to_draft')}}</a>\n          </li>\n          <li ng-if=\"fundraiser.balance === 0 && (!fundraiser.visible_to_public || fundraiser.status === 'ended')\">\n            <a class=\"profileDeleteFundraiserLink\" href=\"\" ng-click=\"openDeleteModal(fundraiser)\">{{::i18n.t('generosity.my_fundraisers_tab.delete')}}</a>\n          </li>\n        </ul>\n      </div>\n\n      <div class=\"i-campaign\">\n        <a ng-href=\"{{returnMainUrl(fundraiser)}}\">{{fundraiser.title}}</a>\n        <span class=\"i-annotation-pill {{returnPillClass(fundraiser.status)}}\">{{fundraiser.status === 'published' ? 'live' : fundraiser.status}}</span>\n      </div>\n      <div class=\"i-author\">\n        {{i18n.t('by_x', {x: fundraiser.owner_name})}}\n      </div>\n    </div>\n\n  </li>\n</ul>\n";

/***/ },

/***/ 1609:
/***/ function(module, exports) {

	module.exports = "<div class=\"modal\">\n  <div class=\"modal-dialog lifeModal-dialog\">\n    <div class=\"modal-content lifeModal-content lifeModal-content--shady\">\n      <a class=\"lifeModal-close\" ng-click=\"$hide()\"><svg-icon icon=\"icon-icon-close\"></svg-icon></a>\n      <div class=\"lifeModal-container\">\n        <div class=\"lifeModal-headerText\">{{::i18n.t(\"generosity.return_to_draft_modal.question\")}}</div>\n        <div class=\"lifeModal-bodyText\">{{::i18n.t(\"generosity.return_to_draft_modal.warning\", {title: fundraiser.title}) }}</div>\n        <div class=\"lifeModal-buttons\">\n          <a href=\"\" class=\"lifeModal-button lifeModal-button--cancel\" ng-click=\"$hide()\">{{::i18n.t(\"cancel\")}}</a>\n          <a href=\"\" class=\"lifeModal-button pc-cta\" ng-click=\"returnToDraft(fundraiser)\">{{::i18n.t(\"return_to_draft\")}}</a>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n";

/***/ },

/***/ 1610:
/***/ function(module, exports) {

	module.exports = "<div class=\"modal\">\n  <div class=\"modal-dialog lifeModal-dialog\">\n    <div class=\"modal-content lifeModal-content lifeModal-content--shady\">\n      <a class=\"lifeModal-close\" ng-click=\"$hide()\"><svg-icon icon=\"icon-icon-close\"></svg-icon></a>\n      <div class=\"lifeModal-container\">\n        <div class=\"lifeModal-headerText\">{{::i18n.t(\"generosity.delete_fundraiser_modal.are_you_sure\") }}</div>\n        <div class=\"lifeModal-bodyText\">{{::i18n.t(\"generosity.delete_fundraiser_modal.warning\", {title: fundraiser.title}) }}</div>\n        <div class=\"lifeModal-buttons\">\n          <a href=\"\" class=\"lifeModal-button lifeModal-button--cancel\" ng-click=\"$hide()\">{{::i18n.t(\"cancel\")}}</a>\n          <a href=\"\" class=\"lifeModal-button pc-cta\" ng-click=\"deleteFundraiser(fundraiser)\">{{::i18n.t(\"generosity.delete_fundraiser\")}}</a>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n";

/***/ },

/***/ 1611:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	donationAppearanceSelector.$inject = ["i18n", "profileDonations", "$timeout"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = donationAppearanceSelector;
	/*@ngInject*/
	function donationAppearanceSelector(i18n, profileDonations, $timeout) {
	  return {
	    restrict: 'A',
	    scope: {
	      donation: "="
	    },
	    template: __webpack_require__(1612),
	    link: function link(scope) {
	      scope.appearances = [{ label: i18n.t('name_and_amount'), value: 'STAP_VSBL' }, { label: i18n.t('name_only'), value: 'STAP_IDNT' }, { label: i18n.t('appearance_anonymous'), value: 'STAP_AMNT' }];
	      scope.changeAppearance = function (newAppearance) {
	        profileDonations.changeAppearance(scope.donation, newAppearance.value).then(function () {
	          scope.donation.appearanceChanged = true;
	          $timeout(function () {
	            scope.donation.appearanceChanged = false;
	          }, 1000);
	        });
	      };
	    }
	  };
	}

/***/ },

/***/ 1612:
/***/ function(module, exports) {

	module.exports = "<label ng-repeat=\"appearance in appearances\" class=\"styledRadio\">\n  <input ng-change=\"changeAppearance(appearance)\" class=\"styledRadio-input\" ng-model=\"donation.appearance\" type=\"radio\" name=\"{{ 'appearance_' + donation.id }}\" id=\"{{ 'appearance_' + donation.id + '_' + appearance.value }}\" value=\"{{ appearance.value }}\" />\n  <svg class=\"styledRadio-button styledRadio-button--selected\"><use xlink:href=\"#icon-radiobutton-selected\"></use></svg>\n  <span class=\"styledRadio-button styledRadio-button--unselected\"></span>\n  <span class=\"styledRadio-label\">{{ appearance.label }}</span>\n</label>\n";

/***/ },

/***/ 1613:
/***/ function(module, exports) {

	module.exports = "<div class=\"i-profile-campaigns-section\" profile-fundraisers-tab>\n</div>\n";

/***/ },

/***/ 1614:
/***/ function(module, exports) {

	module.exports = "<div class=\"i-profile-campaigns-section\" profile-donations-tab>\n</div>\n";

/***/ },

/***/ 1615:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = show;
	
	var _appearanceRadioButtonsDirective = __webpack_require__(1616);
	
	var _appearanceRadioButtonsDirective2 = _interopRequireDefault(_appearanceRadioButtonsDirective);
	
	var _commentEditLinkDirective = __webpack_require__(1618);
	
	var _commentEditLinkDirective2 = _interopRequireDefault(_commentEditLinkDirective);
	
	var _contactUserButtonDirective = __webpack_require__(1620);
	
	var _contactUserButtonDirective2 = _interopRequireDefault(_contactUserButtonDirective);
	
	var _deleteCampaignButtonDirective = __webpack_require__(1622);
	
	var _deleteCampaignButtonDirective2 = _interopRequireDefault(_deleteCampaignButtonDirective);
	
	var _hideContributionDirective = __webpack_require__(1624);
	
	var _hideContributionDirective2 = _interopRequireDefault(_hideContributionDirective);
	
	var _lameDropdownDirective = __webpack_require__(1625);
	
	var _lameDropdownDirective2 = _interopRequireDefault(_lameDropdownDirective);
	
	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
	
	function show(profile) {
	  profile.directive('hideContribution', _hideContributionDirective2.default).directive('deleteCampaignButton', _deleteCampaignButtonDirective2.default).directive('contactUserButton', _contactUserButtonDirective2.default).directive('commentEditLink', _commentEditLinkDirective2.default).directive('lameDropdown', _lameDropdownDirective2.default).directive('appearanceRadioButtons', _appearanceRadioButtonsDirective2.default);
	}

/***/ },

/***/ 1616:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	appearanceRadioButtons.$inject = ["i18n", "$http"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = appearanceRadioButtons;
	/*@ngInject*/
	function appearanceRadioButtons(i18n, $http) {
	  return {
	    scope: {
	      idPrefix: '@idPrefix'
	    },
	    template: __webpack_require__(1617),
	    link: function link(scope, element, attrs) {
	      scope.i18n = i18n;
	      scope.pledge = { appearance: attrs.appearance };
	      scope.appearanceOptions = [{ value: 'STAP_VSBL', text: i18n.t('name_and_amount') }, { value: 'STAP_IDNT', text: i18n.t('name_only') }, { value: 'STAP_AMNT', text: i18n.t('appearance_anonymous') }];
	      scope.changeAppearance = function (newAppearance) {
	        $http.put(attrs.appearanceUrl, { pledge: { appearance: newAppearance } });
	      };
	    }
	  };
	}

/***/ },

/***/ 1617:
/***/ function(module, exports) {

	module.exports = "<label ng-repeat=\"appearanceOption in appearanceOptions\" class=\"styledRadio\">\n  <input type=\"radio\" class=\"styledRadio-input\" name=\"{{::idPrefix}}\" value=\"{{::appearanceOption.value}}\" ng-model=\"pledge.appearance\" ng-change=\"changeAppearance(appearanceOption.value)\" />\n  <svg class=\"styledRadio-button styledRadio-button--selected\"><use xlink:href=\"#icon-radiobutton-selected\"></use></svg>\n  <span class=\"styledRadio-button styledRadio-button--unselected\"></span>\n  <span class=\"styledRadio-label\">{{::appearanceOption.text}}</span>\n</label>\n";

/***/ },

/***/ 1618:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	commentEditLink.$inject = ["ga", "$modal", "i18n", "$http", "flash"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = commentEditLink;
	/*@ngInject*/
	function commentEditLink(ga, $modal, i18n, $http, flash) {
	  return {
	    scope: {},
	    link: function link(scope, element, attrs) {
	      scope.i18n = i18n;
	      scope.comment = { comment: '' };
	
	      var modal;
	
	      var openModal = function openModal() {
	        $http.get(attrs.commentUrl).then(function (response) {
	          scope.comment.comment = response.data.comment;
	        });
	        modal = $modal({
	          template: __webpack_require__(1619),
	          scope: scope
	        });
	      };
	
	      scope.submitUpdate = function () {
	        $http.put(attrs.commentUrl, { comment: scope.comment }).then(function (response) {
	          modal.hide();
	          element.closest('.i-profile-list-item').find('.i-description').text(scope.comment.comment);
	          flash.addMessage('info', response.data.message);
	        }, function (response) {
	          modal.hide();
	          flash.addMessage('error', response.data.error);
	        });
	      };
	
	      element.bind('click', openModal);
	    }
	  };
	}

/***/ },

/***/ 1619:
/***/ function(module, exports) {

	module.exports = "<div class=\"modal i-modal\">\n  <div class=\"modal-dialog\">\n    <div class=\"modal-content\">\n      <a class=\"modal-close\" href=\"\" ng-click=\"$hide()\" aria-hidden=\"true\"><svg><use xlink:href=\"#icon-icon-close\"></use></svg></a>\n\n      <h2>{{::i18n.t('edit_comment_below')}}</h2>\n      <textarea rows=\"10\" maxlength=\"500\" ng-model=\"comment.comment\"></textarea>\n      <div class=\"i-button-row\">\n        <div class=\"pull-left i-counter\">{{comment.comment|charCounter:500}}</div>\n        <a class=\"i-cta-1 i-cta-1--ghost\" href=\"\" ng-click=\"$hide()\">{{::i18n.t('cancel')}}</a>\n        <a class=\"i-cta-1\" href=\"\" ng-click=\"submitUpdate()\">{{::i18n.t('campaign_page_updates.update')}}</a>\n      </div>\n    </div>\n  </div>\n</div>\n";

/***/ },

/***/ 1620:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	contactUserButton.$inject = ["ga", "$modal", "i18n", "$http", "flash"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = contactUserButton;
	/*@ngInject*/
	function contactUserButton(ga, $modal, i18n, $http, flash) {
	  return {
	    scope: {},
	    link: function link(scope, element, attrs) {
	      scope.i18n = i18n;
	      scope.campaignOwnerName = attrs.userName;
	      scope.comment = { text: '' };
	
	      var modal;
	
	      var openModal = function openModal() {
	        // TODO EVENTS: id=ee9mo subsystem=profile fixtype=bare-ga category=Trust2 action=ProfileContact action=Profile.Contact name-new=TBD . review
	        ga('send', 'event', 'Trust2', 'ProfileContact');
	        modal = $modal({
	          template: __webpack_require__(1621),
	          scope: scope
	        });
	      };
	
	      scope.submitMessage = function () {
	        // TODO EVENTS: id=ee9mp subsystem=profile fixtype=bare-ga category=Trust2 action=ProfileSend action=Profile.Send name-new=TBD . review
	        ga('send', 'event', 'Trust2', 'ProfileSend');
	        $http.post(attrs.contactUrl, { comment: scope.comment }).then(function (response) {
	          modal.hide();
	          flash.addMessage('info', response.data.message);
	        }, function (response) {
	          modal.hide();
	          flash.addMessage('error', response.data.error);
	        });
	      };
	
	      element.bind('click', openModal);
	    }
	  };
	}

/***/ },

/***/ 1621:
/***/ function(module, exports) {

	module.exports = "<div class=\"modal i-modal\">\n  <div class=\"modal-dialog\">\n    <div class=\"modal-content\">\n      <a class=\"modal-close\" href=\"\" ng-click=\"$hide()\" aria-hidden=\"true\"><svg><use xlink:href=\"#icon-icon-close\"></use></svg></a>\n\n      <h2>{{::i18n.t('contact_campaign_owner', {campaign_owner: campaignOwnerName})}}</h2>\n      <p>{{::i18n.t('message_will_be_sent_to_users_account')}}</p>\n      <textarea ng-model=\"comment.text\" rows=\"5\" maxlength=\"500\"></textarea>\n      <div class=\"i-button-row\">\n        <div class=\"pull-left i-counter\">{{comment.text | charCounter:500}}</div>\n        <a class=\"i-cta-1  i-cta-1--ghost\" href=\"\" ng-click=\"$hide()\">{{::i18n.t('cancel')}}</a>\n        <a href=\"\" ng-click=\"submitMessage()\" class=\"i-cta-1\">{{::i18n.t('send_message')}}</a>\n      </div>\n    </div>\n  </div>\n</div>\n";

/***/ },

/***/ 1622:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	deleteCampaignButton.$inject = ["$modal", "i18n", "$http", "flash"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = deleteCampaignButton;
	/*@ngInject*/
	function deleteCampaignButton($modal, i18n, $http, flash) {
	  return {
	    scope: {},
	    link: function link(scope, element, attrs) {
	      scope.i18n = i18n;
	
	      var modal;
	
	      var openModal = function openModal() {
	        modal = $modal({
	          template: __webpack_require__(1623),
	          scope: scope
	        });
	      };
	
	      scope.confirmDelete = function () {
	        $http.delete(attrs.deleteUrl).then(function (response) {
	          modal.hide();
	          element.closest('.i-profile-list-item').remove();
	          flash.addMessage('info', response.data.message);
	        }, function (response) {
	          modal.hide();
	          flash.addMessage('error', response.data.error);
	        });
	      };
	
	      element.bind('click', openModal);
	    }
	  };
	}

/***/ },

/***/ 1623:
/***/ function(module, exports) {

	module.exports = "<div class=\"modal i-modal\">\n  <div class=\"modal-dialog\">\n    <div class=\"modal-content\">\n      <a class=\"modal-close\" href=\"\" ng-click=\"$hide()\" aria-hidden=\"true\"><svg><use xlink:href=\"#icon-icon-close\"></use></svg></a>\n\n      <h2>{{::i18n.t('deleting_campaign_cannot_be_undone') }}</h2>\n\n      <p>{{::i18n.t('are_you_sure_you_want_to_continue') }}</p>\n\n      <div class=\"i-button-row\">\n        <a class=\"i-cta-1 i-cta-1--ghost\" href=\"\" ng-click=\"$hide()\">{{::i18n.t('cancel') }}</a>\n        <a class=\"i-cta-1\" href=\"\" ng-click=\"confirmDelete()\">{{::i18n.t('delete')}}</a>\n      </div>\n    </div>\n  </div>\n</div>\n";

/***/ },

/***/ 1624:
/***/ function(module, exports) {

	'use strict';
	
	hideContribution.$inject = ["i18n", "$http", "flash"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = hideContribution;
	/*@ngInject*/
	function hideContribution(i18n, $http, flash) {
	  return {
	    link: function link(scope, element, attrs) {
	      element.bind('click', function () {
	        $http.put(attrs.hideUrl, { pledge: { appearance: 'STAP_AMNT' } }).then(function () {
	          flash.addMessage('info', i18n.t('your_contribution_was_successfully_hidden'));
	          element.closest('.i-profile-list-item').remove();
	        });
	      });
	    }
	  };
	}

/***/ },

/***/ 1625:
/***/ function(module, exports) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = lameDropdown;
	function lameDropdown() {
	  // Simplified version of bs-dropdown that
	  // does not exhibit the bug with the contact owner modal
	  // not binding to ng-model.
	
	  return {
	    scope: {},
	    link: function link(scope, element) {
	      element.bind('click', function () {
	        element.parent('.dropdown').toggleClass('open');
	        element.siblings('.dropdown-menu').toggle(element.parent('.dropdown').hasClass('open'));
	      });
	    }
	  };
	}

/***/ },

/***/ 1626:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = edit;
	
	var _profileEmailSectionDirective = __webpack_require__(1627);
	
	var _profileEmailSectionDirective2 = _interopRequireDefault(_profileEmailSectionDirective);
	
	var _profileSocialSectionDirective = __webpack_require__(1630);
	
	var _profileSocialSectionDirective2 = _interopRequireDefault(_profileSocialSectionDirective);
	
	var _wwwProfileEditPageDirective = __webpack_require__(1633);
	
	var _wwwProfileEditPageDirective2 = _interopRequireDefault(_wwwProfileEditPageDirective);
	
	var _wwwProfileFactory = __webpack_require__(1635);
	
	var _wwwProfileFactory2 = _interopRequireDefault(_wwwProfileFactory);
	
	var _wwwProfileSettingsPageDirective = __webpack_require__(1636);
	
	var _wwwProfileSettingsPageDirective2 = _interopRequireDefault(_wwwProfileSettingsPageDirective);
	
	var _wwwProfileSubscriptionsPageDirective = __webpack_require__(1638);
	
	var _wwwProfileSubscriptionsPageDirective2 = _interopRequireDefault(_wwwProfileSubscriptionsPageDirective);
	
	var _weeklyEmailPreferencesDirective = __webpack_require__(1640);
	
	var _weeklyEmailPreferencesDirective2 = _interopRequireDefault(_weeklyEmailPreferencesDirective);
	
	var _followingEmailPreferencesDirective = __webpack_require__(1642);
	
	var _followingEmailPreferencesDirective2 = _interopRequireDefault(_followingEmailPreferencesDirective);
	
	var _emailPreferencesService = __webpack_require__(1644);
	
	var _emailPreferencesService2 = _interopRequireDefault(_emailPreferencesService);
	
	var _followableEmailFactory = __webpack_require__(1645);
	
	var _followableEmailFactory2 = _interopRequireDefault(_followableEmailFactory);
	
	var _weeklyEmailFactory = __webpack_require__(1646);
	
	var _weeklyEmailFactory2 = _interopRequireDefault(_weeklyEmailFactory);
	
	var _slideDownAnimation = __webpack_require__(1647);
	
	var _slideDownAnimation2 = _interopRequireDefault(_slideDownAnimation);
	
	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
	
	function edit(parent) {
	  parent.directive('profileEmailSection', _profileEmailSectionDirective2.default).directive('profileSocialSection', _profileSocialSectionDirective2.default).directive('wwwProfileEditPage', _wwwProfileEditPageDirective2.default).animation('.slideDown300', (0, _slideDownAnimation2.default)(300)).factory('wwwProfile', _wwwProfileFactory2.default).directive('wwwProfileSettingsPage', _wwwProfileSettingsPageDirective2.default).directive('wwwProfileSubscriptionsPage', _wwwProfileSubscriptionsPageDirective2.default).directive('weeklyEmailPreferences', _weeklyEmailPreferencesDirective2.default).directive('followingEmailPreferences', _followingEmailPreferencesDirective2.default).service('emailPreferencesService', _emailPreferencesService2.default).factory('followableEmail', _followableEmailFactory2.default).factory('weeklyEmail', _weeklyEmailFactory2.default).config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
	    $urlRouterProvider.otherwise(function ($injector, $location) {
	      var path = $location.path();
	      if (path.lastIndexOf('_=_') >= 0) {
	        // Special Facebook connect hash mangling
	        return '/settings';
	      } else {
	        return '/profile';
	      }
	    });
	    //
	    // Now set up the states
	    $stateProvider.state('profile', {
	      url: '/profile',
	      template: __webpack_require__(1648)
	    }).state('settings', {
	      url: '/settings',
	      template: __webpack_require__(1649)
	    }).state('subscriptions', {
	      url: '/subscriptions',
	      template: __webpack_require__(1650)
	    });
	  }]);
	}

/***/ },

/***/ 1627:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	
	exports.default = function (gon, wwwProfile, i18n, $http, flash, browser) {
	  return {
	    scope: {},
	    template: function template() {
	      if (gon.domain === 'generosity') {
	        return __webpack_require__(1628);
	      } else {
	        return __webpack_require__(1629);
	      }
	    },
	    link: function link(scope) {
	      scope.i18n = i18n;
	      scope.profile = wwwProfile.profile;
	      scope.inEditMode = false;
	
	      scope.changeEmail = function () {
	        $http.put(gon.urls.update_account, {
	          control: {
	            account_id: scope.profile.account_id
	          },
	          account: {
	            form: 'change_email',
	            email: scope.profile.email,
	            current_password: scope.profile.email_current_password,
	            confirmation_pending: true
	          }
	        }).then(function () {
	          flash.addMessage('info', i18n.t('account_updated_verify_email', { email: scope.profile.email }));
	          scope.profile.email_verification_status = 'awaiting_verification';
	          scope.inEditMode = false;
	        }, function (response) {
	          flash.addMessage('error', response.data.error);
	        });
	      };
	
	      scope.logoutAndReset = function () {
	        $http.post(gon.urls.logout_and_reset_path, {}).then(function () {
	          browser.redirectTo(gon.urls.reset_password_path);
	        });
	      };
	    }
	  };
	};

/***/ },

/***/ 1628:
/***/ function(module, exports) {

	module.exports = "<div class=\"profileSettingsSection\">\n  <h3 class=\"profileSettingsSection-header profileEmail-header\">\n    <span>{{::i18n.t('update_email')}}</span>\n    <span ng-if=\"profile.email_verification_status === 'verified'\" class=\"i-annotation-pill i-pill-happy\">{{::i18n.t('email_verified')}}</span>\n    <span ng-if=\"profile.email_verification_status === 'awaiting_verification'\" class=\"i-annotation-pill\">{{::i18n.t('awaiting_verification')}}</span>\n  </h3>\n\n  <div class=\"row\">\n    <div class=\"col-xs-12 col-sm-8 col-md-6 col-lg-5\">\n      <div class=\"i-field-row\">\n        <label for=\"email\" class=\"i-block-label\">{{::i18n.t('individual_profile.email_address')}}</label>\n        <input id=\"email\" type=\"text\" size=\"30\" ng-model=\"profile.email\" ng-click=\"inEditMode = true\"\n               class=\"i-text-field\" ng-class=\"{'i-text-field--nonEditable': !inEditMode}\" />\n        <a href=\"\" ng-click=\"inEditMode = true\" ng-hide=\"inEditMode\" class=\"profileEmail-editLink\">edit</a>\n      </div>\n      <div ng-if=\"inEditMode\">\n        <div class=\"i-field-row\">\n          <div class=\"i-block-label splitApart\">\n            <label for=\"email_password\">{{::i18n.t('current_password')}}</label>\n            <a href=\"\" ng-click=\"logoutAndReset()\" class=\"profileEmail-resetPasswordLink\">{{::i18n.t('reset_your_password')}}</a>\n          </div>\n          <input id=\"email_password\" type=\"password\" class=\"i-text-field\" autocomplete=\"off\" ng-model=\"profile.email_current_password\" />\n        </div>\n        <div>\n          <a class=\"primary-cta\" href=\"\" ng-click=\"changeEmail()\">{{::i18n.t('verify')}}</a>\n        </div>\n      </div>\n      <div ng-show=\"profile.email_verification_status === 'awaiting_verification' && !inEditMode\">\n        <a class=\"primary-cta\" href=\"\" ng-click=\"changeEmail()\">{{::i18n.t('resend_verification')}}</a>\n      </div>\n    </div>\n  </div>\n</div>\n";

/***/ },

/***/ 1629:
/***/ function(module, exports) {

	module.exports = "<div class=\"i-musty-background i-profile-email-section\">\n  <h3>\n    <span>{{::i18n.t('update_email')}}</span>\n    <span ng-if=\"profile.email_verification_status === 'verified'\" class=\"i-annotation-pill i-pill-happy\">{{::i18n.t('email_verified')}}</span>\n    <span ng-if=\"profile.email_verification_status === 'awaiting_verification'\" class=\"i-annotation-pill\">{{::i18n.t('awaiting_verification')}}</span>\n  </h3>\n\n  <div class=\"row\">\n    <div class=\"col-xs-12 col-sm-8 col-md-6 col-lg-5\">\n      <label for=\"email\" class=\"i-block-label\">{{::i18n.t('individual_profile.email_address')}}</label>\n      <input id=\"email\" type=\"text\" size=\"30\" ng-model=\"profile.email\" ng-click=\"inEditMode = true\"\n             class=\"i-text-field\" ng-class=\"{'i-noneditable-text-field': !inEditMode}\" />\n      <a href=\"\" ng-click=\"inEditMode = true\" ng-hide=\"inEditMode\" class=\"i-edit-link\">edit</a>\n\n      <div ng-show=\"inEditMode\">\n        <label for=\"email_password\" class=\"i-block-label\">\n          {{::i18n.t('current_password')}} <a href=\"\" ng-click=\"logoutAndReset()\" class=\"i-aqua-link i-forgot-password-link\">{{::i18n.t('reset_your_password')}}</a>\n        </label>\n        <input id=\"email_password\" type=\"password\" class=\"i-text-field\" autocomplete=\"off\" ng-model=\"profile.email_current_password\" />\n        <div>\n          <a class=\"i-cta-1 i-form-cta-1\" href=\"\" ng-click=\"changeEmail()\">{{::i18n.t('verify')}}</a>\n        </div>\n      </div>\n      <div ng-show=\"profile.email_verification_status === 'awaiting_verification' && !inEditMode\">\n        <a class=\"i-cta-1 i-form-cta-1\" href=\"\" ng-click=\"changeEmail()\">{{::i18n.t('resend_verification')}}</a>\n      </div>\n    </div>\n  </div>\n</div>\n";

/***/ },

/***/ 1630:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	
	exports.default = function (gon, wwwProfile, i18n, $http, flash, $filter) {
	  return {
	    scope: {},
	    template: function template() {
	      if (gon.domain === 'generosity') {
	        return __webpack_require__(1631);
	      } else {
	        return __webpack_require__(1632);
	      }
	    },
	    link: function link(scope) {
	      scope.i18n = i18n;
	      scope.profile = wwwProfile.profile;
	      scope.urls = gon.urls;
	
	      if (gon.profile.facebook_friends_count === 1) {
	        scope.facebookFriendsCountText = i18n.t('friend_count.one', { count: 1 });
	      } else {
	        var formattedCount = $filter('number')(gon.profile.facebook_friends_count);
	        scope.facebookFriendsCountText = i18n.t('friend_count.other', { count: formattedCount });
	      }
	
	      scope.disconnectFacebook = function () {
	        $http.delete(gon.urls.facebook_disconnect).then(function (response) {
	          scope.profile.facebook_verified = false;
	          flash.addMessage('info', i18n.t('account_facebook_detached'));
	        }, function (response) {
	          flash.addMessage('error', response.data.error);
	        });
	      };
	
	      scope.disconnectLinkedIn = function () {
	        $http.delete(gon.urls.linkedin_disconnect).then(function (response) {
	          scope.profile.linkedin_verified = false;
	          flash.addMessage('info', i18n.t('account_linkedin_detached'));
	        }, function (response) {
	          flash.addMessage('error', response.data.error);
	        });
	      };
	    }
	  };
	};

/***/ },

/***/ 1631:
/***/ function(module, exports) {

	module.exports = "<div class=\"profileSettingsSection\">\n  <h3 class=\"profileSettingsSection-header\">{{::i18n.t('social_connections')}}</h3>\n\n  <div class=\"profileSocial\" ng-if=\"profile.facebook_verified\">\n    <img ng-src=\"{{::profile.facebook_image_url}}\" />\n    <p>{{::profile.facebook_profile_name}}</p>\n    <p ng-if=\"::profile.facebook_friends_count > 0\">{{::facebookFriendsCountText}}</p>\n    <a class=\"i-cta-1 i-cta-1--facebook\" href=\"\" ng-click=\"disconnectFacebook()\">{{::i18n.t('disconnect_facebook')}}</a>\n  </div>\n  <div class=\"profileSocial\" ng-if=\"!profile.facebook_verified\">\n    <label class=\"i-block-label\">{{::i18n.t('see_what_friends_funding_share')}}</label>\n    <a class=\"i-cta-1 i-cta-1--facebook\" ng-href=\"{{::urls.facebook_connect}}\">{{::i18n.t('connect_with_facebook')}}</a>\n  </div>\n\n  <div class=\"profileSocial\" ng-if=\"profile.linkedin_verified\">\n    <p>{{::profile.linkedin_profile_name}} - LinkedIn Verified</p>\n    <a class=\"i-cta-1 i-cta-1--linkedin\" href=\"\" ng-click=\"disconnectLinkedIn()\">{{::i18n.t('disconnect_linkedin')}}</a>\n  </div>\n  <div class=\"profileSocial\" ng-if=\"!profile.linkedin_verified\">\n    <label class=\"i-block-label\">{{::i18n.t('linkedin_confidence')}}</label>\n    <a class=\"i-cta-1 i-cta-1--linkedin\" ng-href=\"{{::urls.linkedin_connect}}\">{{::i18n.t('connect_with_linkedin')}}</a>\n  </div>\n</div>\n";

/***/ },

/***/ 1632:
/***/ function(module, exports) {

	module.exports = "<div class=\"i-musty-background i-profile-social-section\">\n  <h3>{{::i18n.t('social_connections')}}</h3>\n\n  <div ng-if=\"profile.facebook_verified\">\n    <img ng-src=\"{{::profile.facebook_image_url}}\" />\n    <p>{{::profile.facebook_profile_name}}</p>\n    <p ng-if=\"::profile.facebook_friends_count > 0\">{{::facebookFriendsCountText}}</p>\n    <a class=\"i-cta-1 i-cta-1--iconed i-cta-1--facebook\" href=\"\" ng-click=\"disconnectFacebook()\">\n      <svg class=\"i-cta-1-icon\"><use xlink:href=\"#icon-icon-facebook\"></use></svg>\n      <span>{{::i18n.t('disconnect_facebook')}}</span>\n    </a>\n  </div>\n  <div ng-if=\"!profile.facebook_verified\">\n    <label class=\"i-block-label\">{{::i18n.t('see_what_friends_funding_share')}}</label>\n    <a class=\"i-cta-1 i-cta-1--iconed i-cta-1--facebook\" ng-href=\"{{::urls.facebook_connect}}\">\n      <svg class=\"i-cta-1-icon\"><use xlink:href=\"#icon-icon-facebook\"></use></svg>\n      <span>{{::i18n.t('connect_with_facebook')}}</span>\n    </a>\n  </div>\n\n  <div ng-if=\"profile.linkedin_verified\">\n    <p><br/>{{::profile.linkedin_profile_name}} - LinkedIn Verified</p>\n    <a class=\"i-cta-1 i-cta-1--iconed i-cta-1--linkedin\" href=\"\" ng-click=\"disconnectLinkedIn()\">\n      <svg class=\"i-cta-1-icon\"><use xlink:href=\"#icon-icon-linkedin\"></use></svg>\n      <span>{{::i18n.t('disconnect_linkedin')}}</span>\n    </a>\n  </div>\n  <div ng-if=\"!profile.linkedin_verified\">\n    <label class=\"i-block-label\">{{::i18n.t('linkedin_confidence')}}</label>\n    <a class=\"i-cta-1 i-cta-1--iconed i-cta-1--linkedin\" ng-href=\"{{::urls.linkedin_connect}}\">\n      <svg class=\"i-cta-1-icon\"><use xlink:href=\"#icon-icon-linkedin\"></use></svg>\n      <span>{{::i18n.t('connect_with_linkedin')}}</span>\n    </a>\n  </div>\n</div>\n";

/***/ },

/***/ 1633:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	
	exports.default = function (i18n, $http, gon, countriesService, regions, flash, startsWith, wwwProfile, typeaheadUtils) {
	  var countries = countriesService;
	  return {
	    scope: {},
	    template: __webpack_require__(1634),
	    link: function link(scope) {
	      var linksChanged = false;
	      scope.i18n = i18n;
	      scope.typeaheadUtils = typeaheadUtils;
	      scope.profile = wwwProfile.profile;
	      scope.typeaheads = {
	        countryText: scope.profile.country ? countries.findByCode(scope.profile.country).text : '',
	        regionText: scope.profile.state ? regions.byCode(scope.profile.state).text : ''
	      };
	
	      scope.urls = gon.urls;
	      scope.countryOptions = countries.asUiSelectItems({ grouped: true });
	      scope.stateOptions = regions.statesAsOptions();
	      scope.provinceOptions = regions.provincesAsOptions();
	      scope.zipCodeLabel = i18n.t(countries.zipCodeLabelKey(scope.profile.country));
	
	      scope.$watch('typeaheads.countryText', function (newVal, oldVal) {
	        if (newVal !== oldVal) {
	          var newCountry = countriesService.findByText(newVal);
	          scope.profile.country = newCountry ? newCountry.country_code : null;
	          scope.zipCodeLabel = i18n.t(countries.zipCodeLabelKey(scope.profile.country));
	          scope.profile.state = '';
	        }
	      });
	
	      scope.$watch('typeaheads.regionText', function (newVal, oldVal) {
	        if (newVal !== oldVal) {
	          var newRegion = regions.byText(newVal);
	          scope.profile.state = newRegion ? newRegion.code : null;
	        }
	      });
	
	      scope.addCustomLink = function () {
	        scope.profile.links.unshift({ title: '', link: '' });
	        linksChanged = true;
	      };
	
	      scope.removeLink = function (link) {
	        scope.profile.links = _.without(scope.profile.links, link);
	        linksChanged = true;
	      };
	
	      scope.markLinksChanged = function () {
	        linksChanged = true;
	      };
	
	      scope.startsWith = startsWith;
	
	      scope.saveProfileChanges = function () {
	        var profileParams = _.pick(scope.profile, 'status', 'state', 'firstname', 'lastname', 'country', 'city', 'zipcode', 'tagline', 'description_html', 'facebook_url', 'youtube_url', 'imdb_url', 'website_url', 'twitter_url');
	        if (linksChanged) {
	          profileParams.links = _.map(scope.profile.links, function (link) {
	            return _.pick(link, 'title', 'link');
	          });
	        }
	        $http.put(gon.urls.update_profile, { profile: profileParams }).then(function () {
	          flash.addMessage('info', i18n.t('save_success'));
	        });
	      };
	    }
	  };
	};

/***/ },

/***/ 1634:
/***/ function(module, exports) {

	module.exports = "<form ng-submit=\"saveProfileChanges()\" id=\"edit_individual\">\n  <div class=\"i-musty-background i-profile-basic\">\n    <h3>{{::i18n.t('basic_info')}}</h3>\n    <div class=\"row\">\n      <div class=\"col-lg-6\">\n        <label for=\"profile_firstname\" class=\"i-block-label\">{{::i18n.t('first_name')}}</label>\n        <input type=\"text\" id=\"profile_firstname\" class=\"i-text-field\" ng-model=\"profile.firstname\" />\n\n        <label for=\"profile_lastname\" class=\"i-block-label\">{{::i18n.t('last_name')}}</label>\n        <input type=\"text\" id=\"profile_lastname\" class=\"i-text-field\" ng-model=\"profile.lastname\" />\n\n        <div class=\"js-country\">\n          <label class=\"i-block-label\" for=\"profile_country\">{{::i18n.t('country')}}</label>\n          <input type=\"text\" id=\"profile_country\" class=\"i-text-field\"\n                 ng-model=\"typeaheads.countryText\"\n                 data-comparator=\"typeaheadUtils.startsWith.country\"\n                 data-auto-select=\"true\"\n                 bs-options=\"country.text as country.text for country in countryOptions\" bs-typeahead />\n        </div>\n      </div>\n    </div>\n    <div class=\"row\">\n      <div class=\"col-lg-4\">\n        <label for=\"profile_city\" class=\"i-block-label\">{{::i18n.t('city')}}</label>\n        <input type=\"text\" id=\"profile_city\" class=\"i-text-field\" ng-model=\"profile.city\" />\n      </div>\n      <div class=\"col-lg-3 js-state\" ng-if=\"profile.country === 'CTRY_US'\">\n        <label class=\"i-block-label\" for=\"profile_state\">{{::i18n.t('state')}}</label>\n        <input type=\"text\" id=\"profile_state\" class=\"i-text-field\"\n               ng-model=\"typeaheads.regionText\"\n               data-comparator=\"typeaheadUtils.startsWith.region\"\n               data-auto-select=\"true\"\n               bs-options=\"region.text as region.text for region in stateOptions\" bs-typeahead />\n      </div>\n      <div class=\"col-lg-3\" ng-if=\"profile.country === 'CTRY_CA'\">\n        <label class=\"i-block-label\" for=\"profile_province\">{{::i18n.t('province')}}</label>\n        <input type=\"text\" id=\"profile_province\" class=\"i-text-field\"\n               ng-model=\"typeaheads.regionText\"\n               data-comparator=\"typeaheadUtils.startsWith.region\"\n               data-auto-select=\"true\"\n               bs-options=\"region.text as region.text for region in provinceOptions\" bs-typeahead />\n      </div>\n      <div class=\"col-lg-3\">\n        <label for=\"profile_zipcode\" class=\"i-block-label\">{{zipCodeLabel}}</label>\n        <input id=\"profile_zipcode\" type=\"text\" class=\"i-text-field\" ng-model=\"profile.zipcode\" />\n      </div>\n    </div>\n  </div>\n\n  <div class=\"i-musty-background i-profile-story\">\n    <h3>{{ ::i18n.t('your_story') }}</h3>\n    <div class=\"row\">\n      <div class=\"col-lg-9\">\n        <label for=\"profile_tagline\" class=\"i-block-label\">{{::i18n.t('tagline')}}</label>\n        <input type=\"text\" id=\"profile_tagline\" class=\"i-text-field\" ng-model=\"profile.tagline\" />\n\n        <label for=\"profile_description_html\" class=\"i-block-label\">{{::i18n.t('about_me')}}</label>\n        <textarea id=\"profile_description_html\" maxlength=\"500\" rows=\"20\" cols=\"80\" class=\"i-text-area\" ng-model=\"profile.description_html\"></textarea>\n        <p class=\"char-counter\">{{profile.description_html | charCounter:500}}</p>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"i-musty-background i-profile-photo\">\n    <h3>{{::i18n.t('your_photos') }}</h3>\n    <div class=\"i-block-label\">\n      <label>{{::i18n.t('profile_image')}}</label>\n      <span igg-popover>{{::i18n.t('profile_image_info_line1')}}<br/><br/>\n        {{::i18n.t('profile_image_info_line2')}}\n      </span>\n    </div>\n    <div class=\"profile-picture-container i-profile-show-content\">\n      <div simple-image-upload\n           update-image-path=\"{{::urls.update_image}}\"\n           attr=\"profile_image\"\n           placeholder-path=\"{{::urls.placeholder_profile}}\"\n           image-public-id=\"{{profile.profile_public_id}}\"\n           width=\"460\" height=\"285\" crop=\"fill\"></div>\n    </div>\n\n    <div class=\"i-block-label\">\n      <label>{{::i18n.t('avatar')}}</label>\n      <span igg-popover>{{::i18n.t('profile_avatar_info_line1')}}<br/><br/>\n        {{::i18n.t('profile_avatar_info_line2')}}</span>\n    </div>\n    <div class=\"picture-container\">\n      <div simple-image-upload\n           update-image-path=\"{{::urls.update_image}}\"\n           attr=\"avatar\"\n           placeholder-path=\"{{::urls.placeholder_avatar}}\"\n           image-public-id=\"{{profile.avatar_public_id}}\"\n           width=\"90\" height=\"90\" crop=\"fill\"></div>\n    </div>\n  </div>\n\n  <div class=\"i-musty-background i-profile-links\">\n    <h3>{{::i18n.t('outside_links')}}</h3>\n    <div class=\"row\">\n      <div class=\"col-lg-9\">\n        <label for=\"profile_facebook_url\" class=\"i-block-label\">{{::i18n.t('facebook_link')}}</label>\n        <input type=\"url\" class=\"i-text-field\" id=\"profile_facebook_url\" placeholder=\"{{::i18n.t('facebook_link_placeholder')}}\" ng-model=\"profile.facebook_url\" />\n\n        <label for=\"profile_twitter_url\" class=\"i-block-label\">{{::i18n.t('twitter_link')}}</label>\n        <input type=\"url\" class=\"i-text-field\" id=\"profile_twitter_url\" placeholder=\"{{::i18n.t('twitter_link_placeholder')}}\" ng-model=\"profile.twitter_url\" />\n\n        <label for=\"profile_youtube_url\" class=\"i-block-label\">{{::i18n.t('youtube_link')}}</label>\n        <input type=\"url\" class=\"i-text-field\" id=\"profile_youtube_url\" placeholder=\"{{::i18n.t('youtube_link_placeholder')}}\" ng-model=\"profile.youtube_url\" />\n\n        <label for=\"profile_imdb_url\" class=\"i-block-label\">{{::i18n.t('imdb_link')}}</label>\n        <input type=\"url\" class=\"i-text-field\" id=\"profile_imdb_url\" placeholder=\"{{::i18n.t('imdb_link_placeholder')}}\" ng-model=\"profile.imdb_url\" />\n\n        <label for=\"profile_website_url\" class=\"i-block-label\">{{::i18n.t('your_website')}}</label>\n        <input type=\"url\" class=\"i-text-field\" id=\"profile_website_url\" placeholder=\"{{::i18n.t('website_placeholder')}}\" ng-model=\"profile.website_url\" />\n\n        <a href=\"\" ng-click=\"addCustomLink()\" class=\"i-cta-1 i-add-custom-link\">{{::i18n.t('add_custom_link')}}</a>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"i-musty-background i-custom-links\" ng-repeat=\"link in profile.links\">\n    <h3>{{::i18n.t('custom_link')}}</h3>\n    <div class=\"i-remove-link-positioner\"><a href=\"\" ng-click=\"removeLink(link)\" class=\"remove-link\">{{::i18n.t('remove_link')}}</a></div>\n    <div class=\"row\">\n      <div class=\"col-lg-9\">\n        <label for=\"{{::'link_link_' + $index}}\" class=\"i-block-label\">{{::i18n.t('link')}}</label>\n        <input type=\"url\" placeholder=\"http://my.custom-site.com/\" id=\"{{::'link_link_' + $index}}\" required class=\"i-text-field\"\n               ng-model=\"link.link\" ng-change=\"markLinksChanged()\" />\n        <label for=\"{{::'link_title_' + $index}}\" class=\"i-block-label\">{{::i18n.t('title')}}</label>\n        <input type=\"text\" id=\"{{::'link_title_' + $index}}\" required class=\"i-text-field\" ng-model=\"link.title\" ng-change=\"markLinksChanged()\" />\n      </div>\n    </div>\n  </div>\n\n  <input type=\"submit\" class=\"pull-right i-cta-1\" id=\"save_profile\" value=\"{{::i18n.t('save_no_arrow')}}\" />\n</form>\n";

/***/ },

/***/ 1635:
/***/ function(module, exports) {

	"use strict";
	
	wwwProfile.$inject = ["gon"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = wwwProfile;
	/*@ngInject*/
	function wwwProfile(gon) {
	  return {
	    profile: _.clone(gon.profile)
	  };
	}

/***/ },

/***/ 1636:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	
	exports.default = function (i18n, $http, gon, ga, flash, browser, $filter, wwwProfile, $window) {
	  return {
	    scope: {},
	    template: __webpack_require__(1637),
	    link: function link(scope, element, attrs) {
	      scope.i18n = i18n;
	      scope.profile = wwwProfile.profile;
	      scope.urls = gon.urls;
	      scope.languageOptions = [{ value: 'en', text: "English" }, { value: 'de', text: 'Deutsch' }, { value: 'fr', text: 'Français' }, { value: 'es', text: 'Español' }];
	
	      scope.confirmDelete = function () {
	        if ($window.confirm(i18n.t('are_you_sure'))) {
	          $http.delete(gon.urls.update_profile).then(function () {
	            browser.redirectTo('/');
	          });
	        }
	      };
	
	      scope.changePassword = function () {
	        $http.put(gon.urls.update_account, {
	          control: {
	            account_id: scope.profile.account_id
	          },
	          account: {
	            form: 'change_password',
	            current_password: scope.profile.current_password,
	            password: scope.profile.password,
	            password_confirmation: scope.profile.password_confirmation
	          }
	        }).then(function () {
	          flash.addMessage('info', i18n.t('account_change_password_success'));
	        }, function (response) {
	          flash.addMessage('error', response.data.error);
	        });
	      };
	
	      scope.changeLanguage = function () {
	        $http.put(gon.urls.update_account, {
	          control: {
	            account_id: scope.profile.account_id
	          },
	          account: {
	            form: 'change_language',
	            locale: scope.profile.locale
	          }
	        }).then(function () {
	          flash.addMessage('info', i18n.t('account_successfully_updated'));
	        }, function (response) {
	          flash.addMessage('error', response.data.error);
	        });
	      };
	    }
	  };
	};

/***/ },

/***/ 1637:
/***/ function(module, exports) {

	module.exports = "<profile-social-section></profile-social-section>\n<profile-email-section></profile-email-section>\n\n<div class=\"i-musty-background profileSettingsSection i-update-password\">\n  <h3>{{::i18n.t('update_your_password')}}</h3>\n\n  <div class=\"row\">\n    <div class=\"col-xs-12 col-sm-8 col-md-6 col-lg-5\">\n      <div class=\"i-field-row\">\n        <label for=\"current_password\" class=\"i-block-label\">{{::i18n.t('current_password')}}</label>\n        <input id=\"current_password\" ng-model=\"profile.current_password\" class=\"i-text-field\" type=\"password\" autocomplete=\"off\">\n      </div>\n\n      <div class=\"i-field-row\">\n        <label for=\"new_password\" class=\"i-block-label\">{{::i18n.t('new_password')}}</label>\n        <input id=\"new_password\" ng-model=\"profile.password\" class=\"i-text-field\" type=\"password\" autocomplete=\"off\">\n      </div>\n\n      <div class=\"i-field-row\">\n        <label for=\"password_confirmation\" class=\"i-block-label\">{{::i18n.t('password_confirmation')}}</label>\n        <input id=\"password_confirmation\" ng-model=\"profile.password_confirmation\" class=\"i-text-field\" type=\"password\" autocomplete=\"off\">\n      </div>\n\n      <div>\n        <a class=\"i-cta-1 i-form-cta-1\" href=\"\" ng-click=\"changePassword()\">{{::i18n.t('save')}}</a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"i-musty-background profileSettingsSection i-set-language\">\n  <h3>{{::i18n.t('set_language')}}</h3>\n\n  <div class=\"row\">\n    <div class=\"col-xs-12 col-sm-8 col-md-6 col-lg-5\">\n      <div class=\"i-field-row\">\n        <label class=\"i-block-label\">{{::i18n.t('language')}}</label>\n        <ui-select id=\"profile_locale\" search-enabled=\"false\" ng-model=\"profile.locale\" theme=\"select2\">\n          <ui-select-match placeholder=\" \">{{$select.selected.text}}</ui-select-match>\n          <ui-select-choices repeat=\"option.value as option in languageOptions | filter:{text: $select.search}\">{{option.text}}</ui-select-choices>\n        </ui-select>\n      </div>\n      <div>\n        <a class=\"i-cta-1 i-form-cta-1\" href=\"\" ng-click=\"changeLanguage()\">{{::i18n.t('save')}}</a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"i-musty-background profileSettingsSection\">\n  <h3>{{::i18n.t('delete_your_account')}}</h3>\n\n  <p ng-if=\"::!profile.allowed_to_delete\">{{::i18n.pt('individual_profile.account_has_at_least_one_active_campaign')}}</p>\n  <p ng-if=\"::profile.allowed_to_delete\" ng-bind-html=\"::i18n.t('this_is_permanent_youll_lose_all_info_html')\"></p>\n  <a ng-if=\"::profile.allowed_to_delete\" href=\"\" ng-click=\"confirmDelete()\" class=\"i-cta-1\">{{::i18n.t('delete')}}</a>\n</div>\n";

/***/ },

/***/ 1638:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	
	exports.default = function (gon, i18n, ga, flash, browser, emailPreferencesService) {
	  return {
	    scope: {},
	    template: __webpack_require__(1639),
	    link: function link(scope) {
	      scope.i18n = i18n;
	      scope.preferencesService = emailPreferencesService;
	      scope.socialIcons = gon.email_preference_center.social_icons;
	
	      scope.clickSocialLink = function (socialIcon) {
	        // TODO EVENTS: id=nu2da subsystem=profile fixtype=bare-ga category=Email.Preference.Center action=Click.Indiegogo.Social.Link label=dynamic name-new=TBD . review
	        ga('send', 'event', 'Email Preference Center', 'Click Indiegogo Social Link', socialIcon.url);
	      };
	
	      scope.submitChanges = function () {
	        emailPreferencesService.submitEmailPreferenceChanges().then(function () {
	          if (gon.urls.success_url) {
	            browser.redirectTo(gon.urls.success_url);
	          } else {
	            flash.addMessage('info', i18n.t('preference_center.optouts_saved'));
	          }
	        });
	      };
	    }
	  };
	};

/***/ },

/***/ 1639:
/***/ function(module, exports) {

	module.exports = "<div class=\"emailPrefSection\" ng-repeat=\"checkboxCategory in preferencesService.checkboxCategories\">\n  <h3 class=\"i-lined-header\">{{::i18n.t(\"preference_center.\" + checkboxCategory.code) }}</h3>\n  <div class=\"row i-email-group\" ng-repeat=\"subcategory in checkboxCategory.subcategories\">\n    <div ng-if=\"$index > 0\" class=\"i-email-section\"></div>\n\n    <div class=\"col-md-3 i-email-summary\">{{::i18n.t('preference_center.' + subcategory.code)}}</div>\n\n    <div class=\"col-md-9\">\n      <weekly-email-preferences ng-if=\"::!preferencesService.isFollowableEmail(subcategory.code)\" email-category=\"{{checkboxCategory.code}}\" email-subcategory=\"{{subcategory.code}}\"></weekly-email-preferences>\n      <following-email-preferences ng-if=\"::preferencesService.isFollowableEmail(subcategory.code)\" email-category=\"{{subcategory.code}}\"></following-email-preferences>\n    </div>\n  </div>\n</div>\n\n<div class=\"i-optout-all i-email-checkbox\">\n  <input id=\"preferences_optout_all\" type=\"checkbox\" ng-model=\"preferencesService.optoutAll\" ng-change=\"preferencesService.optoutAllChanged()\" />\n  <label for=\"preferences_optout_all\">{{::i18n.t('preference_center.optout_all')}}</label>\n</div>\n<div class='i-optout-subtext'>{{::i18n.t('preference_center.optout_subtext') }}</div>\n\n<div class=\"i-optout-share emailPrefSection\" ng-class=\"{slideDown300: preferencesService.optoutAll}\">\n  {{::i18n.t('preference_center.optout_share')}}\n  <div class=\"preferenceSocialIcons\">\n    <a ng-repeat=\"socialIcon in socialIcons\"\n       ng-href=\"{{::socialIcon.url}}\"\n       ng-click=\"clickSocialLink(socialIcon)\"\n       target=\"_blank\"\n       class=\"preferenceSocialIcons-icon\">\n      <svg class=\"socialSquare socialSquare--prefCenter\"\n           ng-class=\"'socialSquare--' + socialIcon.variant\">\n        <use xlink:href=\"{{'#' + socialIcon.icon}}\"></use>\n      </svg>\n    </a>\n  </div>\n</div>\n\n<div class=\"i-save-email-prefs\">\n  <input type=\"submit\" class=\"i-cta-1\" ng-click=\"submitChanges()\" value=\"{{::i18n.t('preference_center.save')}}\" />\n</div>\n";

/***/ },

/***/ 1640:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	
	exports.default = function (gon, i18n, emailPreferencesService, weeklyEmail) {
	  return {
	    scope: {
	      emailCategory: '@',
	      emailSubcategory: '@'
	    },
	    template: __webpack_require__(1641),
	    link: function link(scope) {
	      scope.i18n = i18n;
	      scope.connectToFacebookUrl = gon.urls.facebook_connect;
	      scope.facebookVerified = gon.profile.facebook_verified;
	
	      scope.weeklyEmailGroup = weeklyEmail.forCategorySubcategory(scope.emailCategory, scope.emailSubcategory);
	
	      scope.emailPrefChanged = function () {
	        emailPreferencesService.optoutAll = false;
	      };
	    }
	  };
	};

/***/ },

/***/ 1641:
/***/ function(module, exports) {

	module.exports = "<div class=\"generalEmails\" ng-repeat=\"(email, subscribed) in weeklyEmailGroup.emails\">\n  <div class=\"i-email-checkbox\" ng-class=\"::{'i-email-checkbox--last':$last}\" ng-if=\"::email !== 'connect_facebook' || facebookVerified\">\n    <input type=\"checkbox\" id=\"{{::'preferences_' + email}}\" ng-model=\"weeklyEmailGroup.emails[email]\" ng-change=\"emailPrefChanged()\" />\n    <label for=\"{{::'preferences_' + email}}\">{{::i18n.t('preference_center.' + email)}}</label>\n  </div>\n\n  <div class=\"i-email-checkbox\" ng-class=\"::{'i-email-checkbox--last':$last}\" ng-if=\"::email === 'connect_facebook' && !facebookVerified\">\n    <a ng-href=\"{{::connectToFacebookUrl}}\" id=\"{{::'preferences_' + email}}\" class=\"i-cta-1 i-cta-1--iconed i-cta-1--facebook i-connect-facebook\">\n      <svg class=\"i-cta-1-icon\"><use xlink:href=\"#icon-icon-facebook\"></use></svg>\n      <span>{{::i18n.t('connect_facebook')}}</span>\n    </a>\n    <label for=\"{{::'preferences_' + email}}\">{{::i18n.t('preference_center.' + email)}}</label>\n  </div>\n</div>\n";

/***/ },

/***/ 1642:
/***/ function(module, exports, __webpack_require__) {

	'use strict';
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	
	exports.default = function (i18n, emailPreferencesService, followableEmail, gon, $location, flash) {
	  return {
	    scope: {
	      emailCategory: '@'
	    },
	    template: __webpack_require__(1643),
	    link: function link(scope) {
	      scope.i18n = i18n;
	      scope.sessionModalStatus = { open: false };
	      scope.followableEmail = followableEmail.followableEmailForCategory(scope.emailCategory);
	      scope.loggedIn = gon.logged_in;
	
	      if ($location.search()[scope.followableEmail.emailTranslationKey]) {
	        scope.followableEmail.emails[$location.search()[scope.followableEmail.emailTranslationKey]].opted_in = false;
	        emailPreferencesService.submitEmailPreferenceChanges().then(function () {
	          flash.addMessage('info', i18n.t('preference_center.optouts_saved'));
	          scope.showAll = true;
	        });
	      }
	
	      scope.emailPrefChanged = function () {
	        emailPreferencesService.optoutAll = false;
	      };
	
	      scope.openSessionModal = function () {
	        scope.sessionModalStatus.open = true;
	      };
	
	      scope.toggleShowAll = function () {
	        scope.showAll = !scope.showAll;
	      };
	    }
	  };
	};

/***/ },

/***/ 1643:
/***/ function(module, exports) {

	module.exports = "<div class=\"followableEmails\">\n  <div class=\"i-email-checkbox\" ng-class=\"::{'i-email-checkbox--last':$last}\">\n    <input type=\"checkbox\" id=\"{{::'preferences_' + followableEmail.emailTranslationKey}}\" ng-model=\"followableEmail.optInAll\" ng-change=\"followableEmail.updateAllChanged()\" />\n    <label for=\"{{::'preferences_' + followableEmail.emailTranslationKey}}\">{{::i18n.t('preference_center.' + followableEmail.emailTranslationKey)}}</label>\n  </div>\n\n  <div ng-class=\"{slideDown300: showAll}\" class=\"i-followed-emails\">\n    <div class=\"i-email-checkbox\" ng-repeat=\"(emailId, email) in followableEmail.emails\">\n      <input type=\"checkbox\" id=\"{{::emailCategory + '_' + email.id}}\" ng-model=\"email.opted_in\" ng-change=\"emailPrefChanged()\" />\n      <label for=\"{{::emailCategory + '_' + email.id}}\">{{::email.title}}</label>\n    </div>\n  </div>\n\n  <div ng-if=\"followableEmail.count > 0\">\n    <div ng-click=\"loggedIn ? toggleShowAll() : openSessionModal()\" class=\"i-manage-emails\">\n      {{::i18n.t('preference_center.' + followableEmail.manageTranslationKey, {count: followableEmail.count})}}\n    </div>\n  </div>\n</div>\n<session-modal status=\"sessionModalStatus\"></session-modal>\n";

/***/ },

/***/ 1644:
/***/ function(module, exports) {

	"use strict";
	
	emailPreferencesService.$inject = ["gon", "$http", "followableEmail", "weeklyEmail"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = emailPreferencesService;
	/* jshint expr: true */
	/*@ngInject*/
	
	function emailPreferencesService(gon, $http, followableEmail, weeklyEmail) {
	  function allEmailGroups() {
	    return _.tap([], function (groups) {
	      _.forEach(weeklyEmail.allWeeklyEmailGroups, function (weeklyEmail) {
	        groups.push(weeklyEmail);
	      });
	      _.forEach(followableEmail.allFollowableEmails, function (weeklyEmail) {
	        groups.push(weeklyEmail);
	      });
	    });
	  }
	
	  function setAllPreferences(preference) {
	    _.forEach(allEmailGroups(), function (weeklyEmailGroup) {
	      weeklyEmailGroup.setAll(preference);
	    });
	  }
	
	  var emailPreferencesService = {
	    email_preferences: gon.email_preference_center.email_preferences,
	    checkboxCategories: gon.email_preference_center.layout,
	    optoutAll: gon.email_preference_center.optout_all,
	    isFollowableEmail: function isFollowableEmail(emailName) {
	      return followableEmail.isFollowableEmail(emailName);
	    }
	  };
	
	  emailPreferencesService.submitEmailPreferenceChanges = function () {
	    var params = {
	      preferences: _.tap({ optout_all: emailPreferencesService.optoutAll }, function (paramValues) {
	        _.forEach(weeklyEmail.allWeeklyEmailGroups, function (emailGroup) {
	          _.merge(paramValues, emailGroup.emails);
	        });
	      })
	    };
	    _.forEach(followableEmail.allFollowableEmails, function (followableEmail) {
	      params[followableEmail.emailTranslationKey] = followableEmail.requestFormat();
	      params.preferences[followableEmail.emailTranslationKey] = followableEmail.optInAll;
	    });
	    if (gon.urls.success_url) {
	      params.from_email = true;
	    }
	    return $http.put(gon.urls.update_email_prefs, params);
	  };
	
	  var snapshot = {
	    hasSnapshot: false,
	    takeSnapshot: function takeSnapshot() {
	      _.forEach(allEmailGroups(), function (weeklyEmailGroup) {
	        weeklyEmailGroup.takeSnapshot();
	      });
	      this.hasSnapshot = true;
	    },
	    resetToSnapshot: function resetToSnapshot() {
	      _.forEach(allEmailGroups(), function (weeklyEmailGroup) {
	        weeklyEmailGroup.resetToSnapshot();
	      });
	    }
	  };
	
	  emailPreferencesService.optoutAllChanged = function () {
	    if (emailPreferencesService.optoutAll) {
	      snapshot.takeSnapshot();
	      setAllPreferences(false);
	    } else {
	      if (snapshot.hasSnapshot) {
	        snapshot.resetToSnapshot();
	      } else {
	        setAllPreferences(true);
	      }
	    }
	  };
	
	  return emailPreferencesService;
	}

/***/ },

/***/ 1645:
/***/ function(module, exports) {

	"use strict";
	
	followableEmail.$inject = ["gon"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = followableEmail;
	/*@ngInject*/
	
	function followableEmail(gon) {
	  var followableEmails = _.clone(gon.email_preference_center.followable_emails);
	
	  function updateFollowableEmailOptIns(followableEmail) {
	    _.forEach(followableEmail.emails, function (email) {
	      email.opted_in = followableEmail.optInAll;
	    });
	  }
	
	  function forEmail(followableEmail) {
	    return {
	      count: followableEmail.count,
	      emailTranslationKey: followableEmail.email_translation_key,
	      manageTranslationKey: followableEmail.manage_translation_key,
	      emails: followableEmail.emails,
	      optInAll: _.all(followableEmail.emails, function (email) {
	        return email.opted_in;
	      }),
	      setAll: function setAll(preference) {
	        this.optInAll = preference;
	        updateFollowableEmailOptIns(this);
	      },
	      updateAllChanged: function updateAllChanged() {
	        updateFollowableEmailOptIns(this);
	      },
	      requestFormat: function requestFormat() {
	        var emails = this.emails;
	        return _.tap({}, function (emailSetting) {
	          _.forEach(emails, function (email) {
	            emailSetting[email.id] = email.opted_in;
	          });
	        });
	      },
	      snapshot: null,
	      takeSnapshot: function takeSnapshot() {
	        this.snapshot = {
	          emails: _.mapValues(this.emails, function (email) {
	            return _.clone(email);
	          }),
	          optInAll: this.optInAll
	        };
	      },
	      resetToSnapshot: function resetToSnapshot() {
	        this.emails = this.snapshot.emails;
	        this.optInAll = this.snapshot.optInAll;
	      }
	    };
	  }
	
	  var allFollowableEmails = _.tap({}, function (emailObjects) {
	    _.forEach(followableEmails, function (email, emailType) {
	      emailObjects[emailType] = forEmail(email);
	    });
	  });
	
	  return {
	    allFollowableEmails: allFollowableEmails,
	    isFollowableEmail: function isFollowableEmail(emailName) {
	      return !!followableEmails[emailName];
	    },
	    followableEmailForCategory: function followableEmailForCategory(category) {
	      return allFollowableEmails[category];
	    }
	  };
	}

/***/ },

/***/ 1646:
/***/ function(module, exports) {

	"use strict";
	
	weeklyEmail.$inject = ["gon"];
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = weeklyEmail;
	/*@ngInject*/
	
	function weeklyEmail(gon) {
	  var preferencesByCategory = gon.email_preference_center.email_preferences_by_category;
	  var allWeeklyEmailGroups = {};
	
	  function createEmailGroupForCategorySubcategory(category, subcategory) {
	    return {
	      emails: preferencesByCategory[category][subcategory],
	      shapshot: null,
	      takeSnapshot: function takeSnapshot() {
	        this.snapshot = _.clone(this.emails);
	      },
	      resetToSnapshot: function resetToSnapshot() {
	        this.emails = this.snapshot;
	      },
	      setAll: function setAll(opt_out) {
	        var emails = this.emails;
	        _.forEach(emails, function (origValue, key) {
	          emails[key] = opt_out;
	        });
	      }
	    };
	  }
	
	  function emailGroupForCategorySubcategory(category, subcategory) {
	    if (allWeeklyEmailGroups[category + subcategory]) {
	      return allWeeklyEmailGroups[category + subcategory];
	    } else {
	      allWeeklyEmailGroups[category + subcategory] = createEmailGroupForCategorySubcategory(category, subcategory);
	      return allWeeklyEmailGroups[category + subcategory];
	    }
	  }
	
	  return {
	    forCategorySubcategory: emailGroupForCategorySubcategory,
	    allWeeklyEmailGroups: allWeeklyEmailGroups
	  };
	}

/***/ },

/***/ 1647:
/***/ function(module, exports) {

	"use strict";
	
	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	exports.default = slideDownAnimation;
	function slideDownAnimation(timeMillis) {
	  return function () {
	    return {
	      addClass: function addClass(element, className, done) {
	        element.slideDown(timeMillis, done);
	      },
	      removeClass: function removeClass(element, className, done) {
	        element.slideUp(timeMillis, done);
	      }
	    };
	  };
	}

/***/ },

/***/ 1648:
/***/ function(module, exports) {

	module.exports = "<div www-profile-edit-page class=\"content i-profile-edit\"></div>\n";

/***/ },

/***/ 1649:
/***/ function(module, exports) {

	module.exports = "<div www-profile-settings-page class=\"content i-profile-settings\"></div>\n";

/***/ },

/***/ 1650:
/***/ function(module, exports) {

	module.exports = "<div www-profile-subscriptions-page class=\"content i-email-preference-center\"></div>\n";

/***/ }

/******/ });
//# sourceMappingURL=profile.js.map
